@adaas/a-utils 0.1.13 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -7
- package/dist/index.d.mts +421 -8
- package/dist/index.d.ts +421 -8
- package/dist/index.js +332 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +333 -31
- package/dist/index.mjs.map +1 -1
- package/examples/channel-examples.ts +518 -0
- package/package.json +1 -1
- package/src/lib/A-Channel/A-Channel.component.ts +516 -34
- package/src/lib/A-Channel/A-Channel.constants.ts +76 -0
- package/src/lib/A-Channel/A-Channel.error.ts +42 -1
- package/src/lib/A-Channel/A-Channel.types.ts +11 -0
- package/src/lib/A-Channel/A-ChannelRequest.context.ts +91 -0
- package/src/lib/A-Channel/README.md +864 -0
- package/tests/A-Channel.test.ts +483 -5
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/A-Channel/A-Channel.error.ts","../src/lib/A-Channel/A-Channel.component.ts","../src/lib/A-Command/A-Command.constants.ts","../src/lib/A-Memory/A-Memory.context.ts","../src/lib/A-Command/A-Command.error.ts","../src/lib/A-Command/A-Command.entity.ts","../src/lib/A-Config/A-Config.constants.ts","../src/lib/A-Config/A-Config.context.ts","../src/lib/A-Logger/A-Logger.component.ts","../src/lib/A-Polyfill/classes/A-FS-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Crypto-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Http-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Https-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Path-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Url-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Buffer-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Process-Polyfill.class.ts","../src/lib/A-Polyfill/A-Polyfill.component.ts","../src/lib/A-Config/A-Config.error.ts","../src/lib/A-Config/components/ConfigReader.component.ts","../src/lib/A-Config/components/FileConfigReader.component.ts","../src/lib/A-Config/components/ENVConfigReader.component.ts","../src/lib/A-Config/A-Config.container.ts","../src/lib/A-Config/A-Config.types.ts","../src/lib/A-Manifest/A-Manifest.error.ts","../src/lib/A-Manifest/classes/A-ManifestChecker.class.ts","../src/lib/A-Manifest/A-Manifest.context.ts","../src/lib/A-Schedule/A-Deferred.class.ts","../src/lib/A-Schedule/A-ScheduleObject.class.ts","../src/lib/A-Schedule/A-Schedule.component.ts"],"names":["A_TYPES__CommandMetaKey","A_CONSTANTS__A_Command_Status","A_CONSTANTS_A_Command_Features","A_Error","A_Fragment","property","value","A_Component","A_Scope","A_Context","crypto","A_Inject","A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY","A_Concept","A_Feature","A_FormatterHelper","A_Container","A_TYPES__ConfigFeature","A_TypeGuards"],"mappings":"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","file":"index.mjs","sourcesContent":["import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_ChannelError extends A_Error {\n\n static readonly MethodNotImplemented = 'A-Channel Method Not Implemented';\n\n}","import { A_Component, A_Feature } from \"@adaas/a-concept\";\nimport { A_ChannelError } from \"./A-Channel.error\";\n\n\n\nexport class A_Channel extends A_Component {\n\n /**\n * Indicates whether the channel is processing requests\n */\n protected _processing: boolean = false;\n /**\n * Indicates whether the channel is connected\n */\n protected _initialized?: Promise<void>;\n\n /**\n * Indicates whether the channel is processing requests\n */\n get processing(): boolean {\n return this._processing;\n }\n /**\n * Indicates whether the channel is connected\n */\n get initialize(): Promise<void> {\n if (!this._initialized) {\n this._initialized = this.connect();\n }\n return this._initialized;\n }\n\n\n @A_Feature.Define()\n /**\n * Initializes the channel before use\n */\n async connect() {\n throw new A_ChannelError(\n A_ChannelError.MethodNotImplemented,\n `The connect method is not implemented in ${this.constructor.name} channel. This method is required to initialize the channel before use. So please implement it in the derived class.`\n );\n }\n\n\n @A_Feature.Define()\n /**\n * Allows to send a request through the channel\n *\n * @param req - The request parameters\n * @returns The response from the channel\n */\n async request(params: any): Promise<any> {\n throw new A_ChannelError(\n A_ChannelError.MethodNotImplemented,\n `The request method is not implemented in ${this.constructor.name} channel.`\n );\n }\n\n\n\n @A_Feature.Define()\n /**\n * Uses for Fire-and-Forget messaging through the channel\n * \n * @param message - can be of any type depending on the channel implementation\n */\n async send(message: any): Promise<void> {\n throw new A_ChannelError(\n A_ChannelError.MethodNotImplemented,\n `The send method is not implemented in ${this.constructor.name} channel.`\n );\n }\n\n}\n\n","export enum A_TYPES__CommandMetaKey {\n EXTENSIONS = 'a-command-extensions',\n FEATURES = 'a-command-features',\n ABSTRACTIONS = 'a-command-abstractions',\n}\n\nexport enum A_CONSTANTS__A_Command_Status {\n CREATED = 'CREATED',\n INITIALIZATION = 'INITIALIZATION',\n INITIALIZED = 'INITIALIZED',\n COMPILATION = 'COMPILATION',\n COMPILED = 'COMPILED',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n}\n\n/**\n * A-Command Lifecycle Features\n */\nexport enum A_CONSTANTS_A_Command_Features {\n INIT = 'init',\n COMPLIED = 'complied',\n EXECUTE = 'execute',\n COMPLETE = 'complete',\n FAIL = 'fail',\n}\n\n\n\n\nexport type A_CONSTANTS__A_Command_Event = 'init' | 'compile' | 'execute' | 'complete' | 'fail';\n\n\n\n","import { A_Error, A_Fragment } from \"@adaas/a-concept\";\n\n\nexport class A_Memory<\n _MemoryType extends Record<string, any> = Record<string, any>,\n _SerializedType extends Record<string, any> = Record<string, any>\n> extends A_Fragment {\n\n\n /**\n * Internal storage of all intermediate values\n */\n protected _memory: Map<keyof _MemoryType, _MemoryType[keyof _MemoryType]>;\n /**\n * Errors encountered during the execution\n */\n protected _errors: Set<A_Error>;\n\n\n\n /**\n * Memory object that allows to store intermediate values and errors\n * \n * @param initialValues \n */\n constructor(initialValues?: _MemoryType) {\n super();\n this._memory = new Map(Object.entries(initialValues || {}));\n this._errors = new Set();\n }\n\n\n get Errors(): Set<A_Error> | undefined {\n return this._errors.size > 0 ? this._errors : undefined;\n }\n\n\n /**\n * Verifies that all required keys are present in the proxy values\n * \n * @param requiredKeys \n * @returns \n */\n async verifyPrerequisites(\n requiredKeys: Array<keyof _MemoryType>\n ): Promise<boolean> {\n return requiredKeys.every(key => this._memory.has(key));\n }\n\n /**\n * Adds an error to the context\n * \n * @param error \n */\n async error(error: A_Error): Promise<void> {\n this._errors.add(error);\n }\n\n /**\n * Retrieves a value from the context memory\n * \n * @param key \n * @returns \n */\n get<K extends keyof _MemoryType>(\n /**\n * Key to retrieve the value for\n */\n key: K\n ): _MemoryType[K] | undefined {\n return this._memory.get(key);\n }\n\n /**\n * Saves a value in the context memory\n * \n * @param key \n * @param value \n */\n async set<K extends keyof _MemoryType>(\n /**\n * Key to save the value under\n */\n key: K,\n /**\n * Value to save\n */\n value: _MemoryType[K]\n ): Promise<void> {\n this._memory.set(key, value);\n }\n\n\n /**\n * Removes a value from the context memory by key\n * \n * @param key \n */\n async drop(key: keyof _MemoryType): Promise<void> {\n this._memory.delete(key);\n }\n\n /**\n * Clears all stored values in the context memory\n */\n async clear(): Promise<void> {\n this._memory.clear();\n }\n\n\n /**\n * Converts all stored values to a plain object\n * \n * [!] By default uses all saved in memory values \n * \n * @returns \n */\n toJSON(): _SerializedType {\n const obj: Record<string, any> = {};\n\n this._memory.forEach((value, key) => {\n obj[key as string] =\n typeof value === 'object' && value !== null && 'toJSON' in value && typeof value.toJSON === 'function'\n ? value.toJSON()\n : value;\n });\n\n return obj as _SerializedType;\n }\n}","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_CommandError extends A_Error {\n\n\n static readonly CommandScopeBindingError = 'A-Command Scope Binding Error';\n}","import {\n A_TYPES__Command_Init,\n A_TYPES__Command_Listener,\n A_TYPES__Command_Serialized\n} from \"./A-Command.types\";\nimport {\n A_CONSTANTS__A_Command_Event,\n A_CONSTANTS__A_Command_Status\n} from \"./A-Command.constants\";\nimport { A_Context, A_Entity, A_Error, A_Scope } from \"@adaas/a-concept\";\nimport { A_Memory } from \"../A-Memory/A-Memory.context\";\nimport { A_CommandError } from \"./A-Command.error\";\n\n\nexport class A_Command<\n InvokeType extends A_TYPES__Command_Init = A_TYPES__Command_Init,\n ResultType extends Record<string, any> = Record<string, any>,\n LifecycleEvents extends string | A_CONSTANTS__A_Command_Event = A_CONSTANTS__A_Command_Event\n> extends A_Entity<InvokeType, A_TYPES__Command_Serialized<InvokeType, ResultType>> {\n\n // ====================================================================\n // ================== Static A-Command Information ====================\n // ====================================================================\n\n /**\n * Command Identifier that corresponds to the class name\n */\n static get code(): string {\n return super.entity;\n }\n\n // ====================================================================\n // ================ Instance A-Command Information ====================\n // ====================================================================\n protected _result?: ResultType;\n protected _executionScope!: A_Scope;\n protected _errors?: Set<A_Error>;\n\n protected _params!: InvokeType;\n protected _status!: A_CONSTANTS__A_Command_Status\n\n protected _listeners: Map<\n // the name of the event\n LifecycleEvents | A_CONSTANTS__A_Command_Event,\n // the listeners for the event\n Set<A_TYPES__Command_Listener<InvokeType, ResultType, LifecycleEvents>>\n > = new Map();\n\n protected _startTime?: Date;\n protected _endTime?: Date\n\n /**\n * Execution Duration in milliseconds\n */\n get duration() {\n return this._endTime && this._startTime\n ? this._endTime.getTime() - this._startTime.getTime()\n : this._startTime\n ? new Date().getTime() - this._startTime.getTime()\n : undefined;\n }\n /**\n * A shared scope between all features of the command during its execution\n */\n get scope(): A_Scope {\n return this._executionScope;\n }\n /**\n * Unique code identifying the command type\n * Example: 'user.create', 'task.complete', etc.\n * \n */\n get code(): string {\n return (this.constructor as typeof A_Command).code;\n }\n /**\n * Current status of the command\n */\n get status(): A_CONSTANTS__A_Command_Status {\n return this._status;\n }\n /**\n * Start time of the command execution\n */\n get startedAt(): Date | undefined {\n return this._startTime;\n }\n /**\n * End time of the command execution\n */\n get endedAt(): Date | undefined {\n return this._endTime;\n }\n /**\n * Result of the command execution stored in the context\n */\n get result(): ResultType | undefined {\n return this._result;\n }\n /**\n * Errors encountered during the command execution stored in the context\n */\n get errors(): Set<A_Error> | undefined {\n return this._errors;\n }\n /**\n * Parameters used to invoke the command\n */\n get params(): InvokeType {\n return this._params;\n }\n /**\n * Indicates if the command has failed\n */\n get isFailed(): boolean {\n return this._status === A_CONSTANTS__A_Command_Status.FAILED;\n }\n /**\n * Indicates if the command has completed successfully\n */\n get isCompleted(): boolean {\n return this._status === A_CONSTANTS__A_Command_Status.COMPLETED;\n }\n\n /**\n * \n * A-Command represents an executable command with a specific code and parameters.\n * It can be executed within a given scope and stores execution results and errors.\n * \n * \n * A-Command should be context independent and execution logic should be based on attached components \n * \n * @param code \n * @param params \n */\n constructor(\n /**\n * Command invocation parameters\n */\n params: InvokeType | A_TYPES__Command_Serialized<InvokeType, ResultType> | string\n ) {\n super(params as any)\n }\n\n\n // --------------------------------------------------------------------------\n // A-Command Lifecycle Methods\n // --------------------------------------------------------------------------\n\n // should create a new Task in DB with basic records\n async init(): Promise<void> {\n // first check statuis if it passed then - skip\n if (this._status !== A_CONSTANTS__A_Command_Status.CREATED) {\n return;\n }\n\n this._status = A_CONSTANTS__A_Command_Status.INITIALIZATION;\n this._startTime = new Date();\n\n this.checkScopeInheritance();\n\n this.emit('init');\n await this.call('init', this.scope);\n this._status = A_CONSTANTS__A_Command_Status.INITIALIZED;\n }\n\n // Should compile everything before execution\n async compile() {\n if (this._status !== A_CONSTANTS__A_Command_Status.INITIALIZED) {\n return;\n }\n\n this.checkScopeInheritance();\n\n this._status = A_CONSTANTS__A_Command_Status.COMPILATION;\n this.emit('compile');\n await this.call('compile', this.scope);\n this._status = A_CONSTANTS__A_Command_Status.COMPILED;\n }\n\n /**\n * Processes the command execution\n * \n * @returns \n */\n async process() {\n if (this._status !== A_CONSTANTS__A_Command_Status.COMPILED)\n return;\n\n this._status = A_CONSTANTS__A_Command_Status.IN_PROGRESS;\n\n this.checkScopeInheritance();\n\n this.emit('execute');\n\n await this.call('execute', this.scope);\n }\n\n /**\n * Executes the command logic.\n */\n async execute(): Promise<any> {\n this.checkScopeInheritance();\n\n try {\n await this.init();\n await this.compile();\n await this.process();\n await this.complete();\n\n } catch (error) {\n await this.fail();\n }\n }\n\n /**\n * Marks the command as completed\n */\n async complete() {\n this.checkScopeInheritance();\n\n this._status = A_CONSTANTS__A_Command_Status.COMPLETED;\n this._endTime = new Date();\n this._result = this.scope.resolve(A_Memory).toJSON() as ResultType;\n\n this.emit('complete');\n return await this.call('complete', this.scope);\n }\n\n\n /**\n * Marks the command as failed\n */\n async fail() {\n this.checkScopeInheritance();\n\n this._status = A_CONSTANTS__A_Command_Status.FAILED;\n this._endTime = new Date();\n this._errors = this.scope.resolve(A_Memory).Errors;\n\n this.emit('fail');\n return await this.call('fail', this.scope);\n }\n\n\n // -------------------------------------------------------------------------- \n // A-Command Event-Emitter methods\n // --------------------------------------------------------------------------\n\n /**\n * Registers an event listener for a specific event\n * \n * @param event \n * @param listener \n */\n on(event: LifecycleEvents | A_CONSTANTS__A_Command_Event, listener: A_TYPES__Command_Listener<InvokeType, ResultType, LifecycleEvents>) {\n if (!this._listeners.has(event)) {\n this._listeners.set(event, new Set());\n }\n this._listeners.get(event)!.add(listener);\n }\n /**\n * Removes an event listener for a specific event\n * \n * @param event \n * @param listener \n */\n off(event: LifecycleEvents | A_CONSTANTS__A_Command_Event, listener: A_TYPES__Command_Listener<InvokeType, ResultType, LifecycleEvents>) {\n this._listeners.get(event)?.delete(listener);\n }\n /**\n * Emits an event to all registered listeners\n * \n * @param event \n */\n emit(event: LifecycleEvents | A_CONSTANTS__A_Command_Event) {\n this._listeners.get(event)?.forEach(listener => {\n listener(this);\n });\n }\n\n\n // --------------------------------------------------------------------------\n // A-Entity Base Class Overrides\n // --------------------------------------------------------------------------\n // Serialization / Deserialization\n // -------------------------------------------------------------------------\n\n\n /**\n * Allows to create a Command instance from new data\n * \n * @param newEntity \n */\n fromNew(newEntity: InvokeType): void {\n super.fromNew(newEntity);\n\n this._executionScope = new A_Scope();\n\n this._executionScope.register(new A_Memory<ResultType>());\n\n this._params = newEntity;\n\n this._status = A_CONSTANTS__A_Command_Status.CREATED;\n }\n\n\n\n /**\n * Allows to convert serialized data to Command instance\n * \n * [!] By default it omits params as they are not stored in the serialized data\n * \n * @param serialized \n */\n fromJSON(serialized: A_TYPES__Command_Serialized<InvokeType, ResultType>): void {\n super.fromJSON(serialized);\n\n this._executionScope = new A_Scope();\n\n const memory = new A_Memory<ResultType>();\n\n this._executionScope.register(memory);\n\n if (serialized.startedAt) this._startTime = new Date(serialized.startedAt);\n if (serialized.endedAt) this._endTime = new Date(serialized.endedAt);\n\n\n // Restore result and errors in the memory\n if (serialized.result) {\n Object.entries(serialized.result).forEach(([key, value]) => {\n memory.set(key, value);\n });\n }\n\n if (serialized.errors) {\n serialized.errors.forEach(err => {\n memory.error(new A_Error(err));\n });\n }\n\n this._params = serialized.params\n\n this._status = serialized.status || A_CONSTANTS__A_Command_Status.CREATED;\n\n }\n\n\n /**\n * Converts the Command instance to a plain object\n * \n * @returns \n */\n toJSON(): A_TYPES__Command_Serialized<InvokeType, ResultType> {\n return {\n ...super.toJSON(),\n code: this.code,\n status: this._status,\n params: this._params,\n startedAt: this._startTime ? this._startTime.toISOString() : undefined,\n endedAt: this._endTime ? this._endTime.toISOString() : undefined,\n duration: this.duration,\n result: this.result,\n errors: this.errors ? Array.from(this.errors).map(err => err.toJSON()) : undefined\n }\n };\n\n\n protected checkScopeInheritance(): void {\n let attachedScope: A_Scope;\n try {\n attachedScope = A_Context.scope(this);\n } catch (error) {\n throw new A_CommandError({\n title: A_CommandError.CommandScopeBindingError,\n description: `Command ${this.code} is not bound to any context scope. Ensure the command is properly registered within a context before execution.`,\n originalError: error\n });\n }\n\n if (!this.scope.isInheritedFrom(A_Context.scope(this))) {\n this.scope.inherit(A_Context.scope(this));\n }\n }\n\n}","export const A_CONSTANTS__CONFIG_ENV_VARIABLES = {\n\n} as const\n\n\n//should be an array\nexport type A_TYPES__ConfigENVVariables = (typeof A_CONSTANTS__CONFIG_ENV_VARIABLES)[keyof typeof A_CONSTANTS__CONFIG_ENV_VARIABLES][];\n\n\nexport const A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY = [\n\n] as const;\n\n","import { A_CommonHelper, A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY, A_FormatterHelper, A_Fragment, A_TYPES__ConceptENVVariables } from \"@adaas/a-concept\";\nimport { A_TYPES__ConfigContainerConstructor } from \"./A-Config.types\";\nimport { A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY } from \"./A-Config.constants\";\n\n\nexport class A_Config<\n T extends Array<string | A_TYPES__ConceptENVVariables[number]> = any[]\n> extends A_Fragment {\n\n config: A_TYPES__ConfigContainerConstructor<T>;\n\n\n private VARIABLES: Map<T[number], any> = new Map<T[number], any>();\n\n CONFIG_PROPERTIES!: T;\n\n protected DEFAULT_ALLOWED_TO_READ_PROPERTIES = [\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ];\n\n\n constructor(\n config: Partial<A_TYPES__ConfigContainerConstructor<T>>\n ) {\n super({\n name: 'A_Config'\n });\n\n this.config = A_CommonHelper.deepCloneAndMerge<A_TYPES__ConfigContainerConstructor<T>>(config as any, {\n strict: false,\n defaults: {},\n variables: A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY as any as T\n } as any);\n\n this.CONFIG_PROPERTIES = this.config.variables ? this.config.variables : [] as any as T;\n\n this.config.variables.forEach((variable) => {\n this.VARIABLES.set(\n A_FormatterHelper.toUpperSnakeCase(variable),\n this.config.defaults[variable]\n );\n });\n }\n\n\n /** \n * This method is used to get the configuration property by name\n * \n * @param property \n * @returns \n */\n get<_OutType = any>(\n property: T[number] | typeof this.DEFAULT_ALLOWED_TO_READ_PROPERTIES[number]\n ): _OutType {\n if (this.CONFIG_PROPERTIES.includes(property as any)\n || this.DEFAULT_ALLOWED_TO_READ_PROPERTIES.includes(property as any)\n || !(this.config.strict)\n )\n return this.VARIABLES.get(A_FormatterHelper.toUpperSnakeCase(property)) as _OutType;\n\n throw new Error('Property not exists or not allowed to read') as never;\n // return this.concept.Errors.throw(A_SDK_CONSTANTS__ERROR_CODES.CONFIGURATION_PROPERTY_NOT_EXISTS_OR_NOT_ALLOWED_TO_READ) as never;\n }\n\n\n\n /**\n * \n * This method is used to set the configuration property by name\n * OR set multiple properties at once by passing an array of objects\n * \n * @param variables \n */\n set(\n variables: Array<{\n property: T[number] | A_TYPES__ConceptENVVariables[number],\n value: any\n }>\n )\n set(\n variables: Partial<Record<T[number] | A_TYPES__ConceptENVVariables[number], any>>\n )\n set(\n property: T[number] | A_TYPES__ConceptENVVariables[number],\n value: any\n )\n set(\n property: T[number] | A_TYPES__ConceptENVVariables[number] | Array<{\n property: T[number] | A_TYPES__ConceptENVVariables[number],\n value: any\n }> | Partial<Record<T[number] | A_TYPES__ConceptENVVariables[number], any>>,\n value?: any\n ) {\n const array = Array.isArray(property)\n ? property\n : typeof property === 'string'\n ? [{ property, value }]\n : Object\n .keys(property)\n .map((key) => ({\n property: key,\n value: property[key]\n }));\n\n for (const { property, value } of array) {\n\n let targetValue = value\n ? value\n : this.config?.defaults\n ? this.config.defaults[property as T[number]]\n : undefined;\n\n this.VARIABLES.set(A_FormatterHelper.toUpperSnakeCase(property), targetValue);\n }\n }\n}","import { A_Component, A_Error, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_Config } from \"../A-Config/A-Config.context\";\n\n\n\nexport class A_Logger extends A_Component {\n\n protected config?: A_Config<any>\n\n constructor(\n @A_Inject(A_Scope) protected scope: A_Scope,\n ) {\n super();\n\n this.config = this.scope.has(A_Config)\n ? this.scope.resolve<A_Config<any>>(A_Config)\n : undefined;\n }\n\n readonly colors = {\n green: '32',\n blue: '34',\n red: '31',\n yellow: '33',\n gray: '90',\n magenta: '35',\n cyan: '36',\n white: '37',\n pink: '95',\n } as const\n\n\n get scopeLength() {\n return this.scope.name.length;\n }\n\n\n compile(\n color: keyof typeof this.colors,\n ...args: any[]\n ): Array<string> {\n\n return [\n `\\x1b[${this.colors[color]}m[${this.scope.name}] |${this.getTime()}|`,\n (\n args.length > 1\n ? '\\n' + `${' '.repeat(this.scopeLength + 3)}|-------------------------------`\n : ''\n\n ),\n ...(args\n .map((arg, i) => {\n\n\n switch (true) {\n case arg instanceof A_Error:\n return this.compile_A_Error(arg);\n\n case arg instanceof Error:\n return this.compile_Error(arg);\n\n case typeof arg === 'object':\n return JSON.stringify(arg, null, 2)\n .replace(/\\n/g, '\\n' + `${' '.repeat(this.scopeLength + 3)}| `);\n\n default:\n return String(\n ((i > 0 || args.length > 1) ? '\\n' : '')\n + arg)\n .replace(/\\n/g, '\\n' + `${' '.repeat(this.scopeLength + 3)}| `)\n }\n })),\n (\n args.length > 1\n ? '\\n' + `${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`\n : '\\x1b[0m'\n )\n ]\n }\n\n protected get allowedToLog() {\n return this.config\n ? this.config.get('CONFIG_VERBOSE') !== undefined\n && this.config.get('CONFIG_VERBOSE') !== 'false'\n && this.config.get('CONFIG_VERBOSE') !== false\n : true;\n }\n\n\n log(\n color: keyof typeof this.colors,\n ...args: any[]\n )\n log(\n ...args: any[]\n )\n log(\n param1: any,\n ...args: any[]\n ) {\n if (!this.allowedToLog)\n return;\n\n if (typeof param1 === 'string' && this.colors[param1]) {\n console.log(...this.compile(param1 as keyof typeof this.colors, ...args));\n return;\n }\n else {\n console.log(...this.compile('blue', param1, ...args));\n }\n }\n\n warning(...args) {\n if (!this.allowedToLog)\n return;\n\n console.log(...this.compile('yellow', ...args));\n }\n\n error(...args) {\n if (this.config && this.config.get('CONFIG_IGNORE_ERRORS'))\n return;\n\n return console.log(...this.compile('red', ...args));\n }\n\n\n protected log_A_Error(error: A_Error) {\n const time = this.getTime();\n\n console.log(`\\x1b[31m[${this.scope.name}] |${time}| ERROR ${error.code}\n${' '.repeat(this.scopeLength + 3)}| ${error.message}\n${' '.repeat(this.scopeLength + 3)}| ${error.description} \n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n\\x1b[0m`\n + (error.originalError ? `\\x1b[31m${' '.repeat(this.scopeLength + 3)}| Wrapped From ${error.originalError.message}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.originalError.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n\\x1b[0m`: '')\n + (error.link ? `\\x1b[31m${' '.repeat(this.scopeLength + 3)}| Read in docs: ${error.link}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n\\x1b[0m`: ''));\n\n }\n\n protected compile_A_Error(error: A_Error): string {\n const time = this.getTime();\n\n return '\\n' +\n\n `${' '.repeat(this.scopeLength + 3)}|-------------------------------` +\n '\\n' +\n `${' '.repeat(this.scopeLength + 3)}| Error: | ${error.code}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}|${' '.repeat(10)}| ${error.message}\n${' '.repeat(this.scopeLength + 3)}|${' '.repeat(10)}| ${error.description} \n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------`\n +\n (error.originalError ? `${' '.repeat(this.scopeLength + 3)}| Wrapped From ${error.originalError.message}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.originalError.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------` : '')\n +\n (error.link ? `${' '.repeat(this.scopeLength + 3)}| Read in docs: ${error.link}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------` : '');\n\n }\n\n\n protected compile_Error(error: Error): string {\n return JSON.stringify({\n name: error.name,\n message: error.message,\n stack: error.stack?.split('\\n')\n .map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`)\n .join('\\n')\n\n }, null, 2)\n .replace(/\\n/g, '\\n' + `${' '.repeat(this.scopeLength + 3)}| `)\n .replace(/\\\\n/g, '\\n')\n }\n\n\n\n protected getTime() {\n const now = new Date();\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n const milliseconds = String(now.getMilliseconds()).padStart(4, '0');\n return `${minutes}:${seconds}:${milliseconds}`;\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { Ifspolyfill } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_FSPolyfillClass {\n private _fs!: Ifspolyfill;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n\n async get(): Promise<Ifspolyfill> {\n if (!this._initialized) {\n await this.init();\n }\n return this._fs;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment=== 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n this._fs = await import('fs') as Ifspolyfill;\n }\n\n private initBrowser(): void {\n this._fs = {\n readFileSync: (path: string, encoding: string) => {\n this.logger.warning('fs.readFileSync not available in browser environment');\n return '';\n },\n existsSync: (path: string) => {\n this.logger.warning('fs.existsSync not available in browser environment');\n return false;\n },\n createReadStream: (path: string) => {\n this.logger.warning('fs.createReadStream not available in browser environment');\n return null;\n }\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IcryptoInterface, Ifspolyfill } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_CryptoPolyfillClass {\n private _crypto!: IcryptoInterface;\n private _initialized: boolean = false;\n private _fsPolyfill?: Ifspolyfill;\n\n constructor(\n protected logger: A_Logger\n ) {\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n async get(fsPolyfill?: Ifspolyfill): Promise<IcryptoInterface> {\n if (!this._initialized) {\n this._fsPolyfill = fsPolyfill;\n await this.init();\n }\n return this._crypto;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const crypto = await import('crypto');\n this._crypto = {\n createTextHash: (text: string, algorithm: string = 'sha384') => Promise.resolve(\n `${algorithm}-${crypto.createHash(algorithm).update(text).digest('base64')}`\n ),\n createFileHash: (filePath: string, algorithm: string = 'sha384') => new Promise(async (resolve, reject) => {\n try {\n if (!this._fsPolyfill) {\n throw new Error('FS polyfill is required for file hashing');\n }\n const hash = crypto.createHash(algorithm);\n const fileStream = this._fsPolyfill.createReadStream(filePath);\n fileStream.on('data', (data: any) => hash.update(data));\n fileStream.on('end', () => resolve(`${algorithm}-${hash.digest('base64')}`));\n fileStream.on('error', (err: any) => reject(err));\n } catch (error) {\n reject(error);\n }\n })\n };\n }\n\n private initBrowser(): void {\n this._crypto = {\n createFileHash: () => {\n this.logger.warning('File hash not available in browser environment');\n return Promise.resolve('');\n },\n createTextHash: (text: string, algorithm: string = 'SHA-384') => new Promise<string>(async (resolve, reject) => {\n try {\n if (!crypto.subtle) {\n throw new Error('SubtleCrypto not available');\n }\n const encoder = new TextEncoder();\n const data = encoder.encode(text);\n const hashBuffer = await crypto.subtle.digest(algorithm, data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashBase64 = btoa(String.fromCharCode(...hashArray));\n resolve(`${algorithm}-${hashBase64}`);\n } catch (error) {\n reject(error);\n }\n })\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IhttpInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_HttpPolyfillClass {\n private _http!: IhttpInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n async get(): Promise<IhttpInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._http;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const httpModule = await import('http');\n this._http = {\n request: httpModule.request,\n get: httpModule.get,\n createServer: httpModule.createServer\n };\n }\n\n private initBrowser(): void {\n this._http = {\n request: (options: any, callback?: (res: any) => void) => {\n this.logger.warning('http.request not available in browser/test environment, use fetch instead');\n return this.createMockRequest(options, callback, false);\n },\n get: (url: string | any, callback?: (res: any) => void) => {\n this.logger.warning('http.get not available in browser/test environment, use fetch instead');\n return this.createMockRequest(typeof url === 'string' ? { hostname: url } : url, callback, false);\n },\n createServer: () => {\n this.logger.error('http.createServer not available in browser/test environment');\n return null;\n }\n };\n }\n\n private createMockRequest(options: any, callback?: (res: any) => void, isHttps: boolean = false) {\n // Return a mock request that doesn't make real network calls\n const request = {\n end: () => {\n // Mock response for all environments\n if (callback) {\n const mockResponse = {\n statusCode: 200,\n headers: {},\n on: (event: string, handler: Function) => {\n if (event === 'data') {\n setTimeout(() => handler('mock data'), 0);\n } else if (event === 'end') {\n setTimeout(() => handler(), 0);\n }\n },\n pipe: (dest: any) => {\n if (dest.write) dest.write('mock data');\n if (dest.end) dest.end();\n }\n };\n setTimeout(() => callback(mockResponse), 0);\n }\n },\n write: (data: any) => {\n // Mock write\n },\n on: (event: string, handler: Function) => {\n // Mock event handling\n }\n };\n\n return request;\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IhttpsInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_HttpsPolyfillClass {\n private _https!: IhttpsInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n async get(): Promise<IhttpsInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._https;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const httpsModule = await import('https');\n this._https = {\n request: httpsModule.request,\n get: httpsModule.get,\n createServer: httpsModule.createServer\n };\n }\n\n private initBrowser(): void {\n this._https = {\n request: (options: any, callback?: (res: any) => void) => {\n this.logger.warning('https.request not available in browser/test environment, use fetch instead');\n return this.createMockRequest(options, callback, true);\n },\n get: (url: string | any, callback?: (res: any) => void) => {\n this.logger.warning('https.get not available in browser/test environment, use fetch instead');\n return this.createMockRequest(typeof url === 'string' ? { hostname: url } : url, callback, true);\n },\n createServer: () => {\n this.logger.error('https.createServer not available in browser/test environment');\n return null;\n }\n };\n }\n\n private createMockRequest(options: any, callback?: (res: any) => void, isHttps: boolean = true) {\n // Return a mock request that doesn't make real network calls\n const request = {\n end: () => {\n // Mock response for all environments\n if (callback) {\n const mockResponse = {\n statusCode: 200,\n headers: {},\n on: (event: string, handler: Function) => {\n if (event === 'data') {\n setTimeout(() => handler('mock data'), 0);\n } else if (event === 'end') {\n setTimeout(() => handler(), 0);\n }\n },\n pipe: (dest: any) => {\n if (dest.write) dest.write('mock data');\n if (dest.end) dest.end();\n }\n };\n setTimeout(() => callback(mockResponse), 0);\n }\n },\n write: (data: any) => {\n // Mock write\n },\n on: (event: string, handler: Function) => {\n // Mock event handling\n }\n };\n\n return request;\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IpathInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_PathPolyfillClass {\n private _path!: IpathInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n\n async get(): Promise<IpathInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._path;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n this._path = await import('path') as IpathInterface;\n }\n\n private initBrowser(): void {\n this._path = {\n join: (...paths: string[]) => {\n return paths.join('/').replace(/\\/+/g, '/');\n },\n resolve: (...paths: string[]) => {\n let resolvedPath = '';\n for (const path of paths) {\n if (path.startsWith('/')) {\n resolvedPath = path;\n } else {\n resolvedPath = this._path.join(resolvedPath, path);\n }\n }\n return resolvedPath || '/';\n },\n dirname: (path: string) => {\n const parts = path.split('/');\n return parts.slice(0, -1).join('/') || '/';\n },\n basename: (path: string, ext?: string) => {\n const base = path.split('/').pop() || '';\n return ext && base.endsWith(ext) ? base.slice(0, -ext.length) : base;\n },\n extname: (path: string) => {\n const parts = path.split('.');\n return parts.length > 1 ? '.' + parts.pop() : '';\n },\n relative: (from: string, to: string) => {\n // Simplified relative path calculation\n return to.replace(from, '').replace(/^\\//, '');\n },\n normalize: (path: string) => {\n return path.replace(/\\/+/g, '/').replace(/\\/$/, '') || '/';\n },\n isAbsolute: (path: string) => {\n return path.startsWith('/') || /^[a-zA-Z]:/.test(path);\n },\n parse: (path: string) => {\n const ext = this._path.extname(path);\n const base = this._path.basename(path);\n const name = this._path.basename(path, ext);\n const dir = this._path.dirname(path);\n return { root: '/', dir, base, ext, name };\n },\n format: (pathObject: any) => {\n return this._path.join(pathObject.dir || '', pathObject.base || '');\n },\n sep: '/',\n delimiter: ':'\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IurlInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_UrlPolyfillClass {\n private _url!: IurlInterface;\n private _initialized: boolean = false;\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n async get(): Promise<IurlInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._url;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const urlModule = await import('url');\n this._url = {\n parse: urlModule.parse,\n format: urlModule.format,\n resolve: urlModule.resolve,\n URL: (urlModule.URL || globalThis.URL) as any,\n URLSearchParams: (urlModule.URLSearchParams || globalThis.URLSearchParams) as any\n };\n }\n\n private initBrowser(): void {\n this._url = {\n parse: (urlString: string) => {\n try {\n const url = new URL(urlString);\n return {\n protocol: url.protocol,\n hostname: url.hostname,\n port: url.port,\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n host: url.host,\n href: url.href\n };\n } catch {\n return {};\n }\n },\n format: (urlObject: any) => {\n try {\n return new URL('', urlObject.href || `${urlObject.protocol}//${urlObject.host}${urlObject.pathname}${urlObject.search}${urlObject.hash}`).href;\n } catch {\n return '';\n }\n },\n resolve: (from: string, to: string) => {\n try {\n return new URL(to, from).href;\n } catch {\n return to;\n }\n },\n URL: globalThis.URL,\n URLSearchParams: globalThis.URLSearchParams\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IbufferInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_BufferPolyfillClass {\n private _buffer!: IbufferInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n\n async get(): Promise<IbufferInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._buffer;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const bufferModule = await import('buffer');\n this._buffer = {\n from: bufferModule.Buffer.from,\n alloc: bufferModule.Buffer.alloc,\n allocUnsafe: bufferModule.Buffer.allocUnsafe,\n isBuffer: bufferModule.Buffer.isBuffer,\n concat: bufferModule.Buffer.concat\n };\n }\n\n private initBrowser(): void {\n this._buffer = {\n from: (data: any, encoding?: string) => {\n if (typeof data === 'string') {\n return new TextEncoder().encode(data);\n }\n return new Uint8Array(data);\n },\n alloc: (size: number, fill?: any) => {\n const buffer = new Uint8Array(size);\n if (fill !== undefined) {\n buffer.fill(fill);\n }\n return buffer;\n },\n allocUnsafe: (size: number) => {\n return new Uint8Array(size);\n },\n isBuffer: (obj: any) => {\n return obj instanceof Uint8Array || obj instanceof ArrayBuffer;\n },\n concat: (list: any[], totalLength?: number) => {\n const length = totalLength || list.reduce((sum, buf) => sum + buf.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const buf of list) {\n result.set(buf, offset);\n offset += buf.length;\n }\n return result;\n }\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IprocessInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_ProcessPolyfillClass {\n private _process!: IprocessInterface;\n private _initialized: boolean = false;\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n async get(): Promise<IprocessInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._process;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private initServer(): void {\n this._process = {\n env: process.env as Record<string, string>,\n argv: process.argv,\n platform: process.platform,\n version: process.version,\n versions: process.versions as Record<string, string>,\n cwd: process.cwd,\n exit: process.exit,\n nextTick: process.nextTick\n };\n }\n\n private initBrowser(): void {\n this._process = {\n env: {\n NODE_ENV: 'browser',\n ...((globalThis as any).process?.env || {})\n },\n argv: ['browser'],\n platform: 'browser',\n version: 'browser',\n versions: { node: 'browser' },\n cwd: () => '/',\n exit: (code?: number) => {\n this.logger.warning('process.exit not available in browser');\n throw new Error(`Process exit with code ${code}`);\n },\n nextTick: (callback: Function, ...args: any[]) => {\n setTimeout(() => callback(...args), 0);\n }\n };\n }\n}","import { A_Component, A_Concept, A_Context, A_Inject } from \"@adaas/a-concept\";\nimport { A_Logger } from \"../A-Logger/A-Logger.component\";\nimport { A_FSPolyfillClass } from \"./classes/A-FS-Polyfill.class\";\nimport { A_CryptoPolyfillClass } from \"./classes/A-Crypto-Polyfill.class\";\nimport { A_HttpPolyfillClass } from \"./classes/A-Http-Polyfill.class\";\nimport { A_HttpsPolyfillClass } from \"./classes/A-Https-Polyfill.class\";\nimport { A_PathPolyfillClass } from \"./classes/A-Path-Polyfill.class\";\nimport { A_UrlPolyfillClass } from \"./classes/A-Url-Polyfill.class\";\nimport { A_BufferPolyfillClass } from \"./classes/A-Buffer-Polyfill.class\";\nimport { A_ProcessPolyfillClass } from \"./classes/A-Process-Polyfill.class\";\n\nexport class A_Polyfill extends A_Component {\n\n protected _fsPolyfill!: A_FSPolyfillClass;\n protected _cryptoPolyfill!: A_CryptoPolyfillClass;\n protected _httpPolyfill!: A_HttpPolyfillClass;\n protected _httpsPolyfill!: A_HttpsPolyfillClass;\n protected _pathPolyfill!: A_PathPolyfillClass;\n protected _urlPolyfill!: A_UrlPolyfillClass;\n protected _bufferPolyfill!: A_BufferPolyfillClass;\n protected _processPolyfill!: A_ProcessPolyfillClass;\n\n protected _initializing: Promise<void> | null = null;\n /**\n * Indicates whether the channel is connected\n */\n protected _initialized?: Promise<void>;\n\n\n constructor(\n @A_Inject(A_Logger) protected logger: A_Logger\n ) {\n super();\n }\n\n /**\n * Indicates whether the channel is connected\n */\n get ready(): Promise<void> {\n if (!this._initialized) {\n this._initialized = this._loadInternal();\n }\n return this._initialized;\n }\n\n\n\n @A_Concept.Load()\n async load() {\n await this.ready;\n }\n\n @A_Concept.Load()\n async attachToWindow() {\n if (A_Context.environment !== 'browser') return;\n\n\n (globalThis as any).A_Polyfill = this;\n // attach env variables\n (globalThis as any).process = { env: { NODE_ENV: 'production' }, cwd: () => \"/\" };\n (globalThis as any).__dirname = \"/\";\n\n }\n\n\n protected async _loadInternal() {\n\n this._fsPolyfill = new A_FSPolyfillClass(this.logger);\n this._cryptoPolyfill = new A_CryptoPolyfillClass(this.logger);\n this._httpPolyfill = new A_HttpPolyfillClass(this.logger);\n this._httpsPolyfill = new A_HttpsPolyfillClass(this.logger);\n this._pathPolyfill = new A_PathPolyfillClass(this.logger);\n this._urlPolyfill = new A_UrlPolyfillClass(this.logger);\n this._bufferPolyfill = new A_BufferPolyfillClass(this.logger);\n this._processPolyfill = new A_ProcessPolyfillClass(this.logger);\n\n // Initialize all polyfills to ensure they're ready\n await this._fsPolyfill.get();\n await this._cryptoPolyfill.get(await this._fsPolyfill.get());\n await this._httpPolyfill.get();\n await this._httpsPolyfill.get();\n await this._pathPolyfill.get();\n await this._urlPolyfill.get();\n await this._bufferPolyfill.get();\n await this._processPolyfill.get();\n }\n\n /**\n * Allows to use the 'fs' polyfill methods regardless of the environment\n * This method loads the 'fs' polyfill and returns its instance\n * \n * @returns \n */\n async fs() {\n await this.ready;\n\n return await this._fsPolyfill.get();\n }\n\n /**\n * Allows to use the 'crypto' polyfill methods regardless of the environment\n * This method loads the 'crypto' polyfill and returns its instance\n * \n * @returns \n */\n async crypto() {\n await this.ready;\n\n return await this._cryptoPolyfill.get();\n }\n\n /**\n * Allows to use the 'http' polyfill methods regardless of the environment\n * This method loads the 'http' polyfill and returns its instance\n * \n * @returns \n */\n async http() {\n await this.ready;\n\n return await this._httpPolyfill.get();\n }\n\n /**\n * Allows to use the 'https' polyfill methods regardless of the environment\n * This method loads the 'https' polyfill and returns its instance\n * \n * @returns \n */\n async https() {\n await this.ready;\n\n return await this._httpsPolyfill.get();\n }\n\n /**\n * Allows to use the 'path' polyfill methods regardless of the environment\n * This method loads the 'path' polyfill and returns its instance\n * \n * @returns \n */\n async path() {\n await this.ready;\n\n return await this._pathPolyfill.get();\n }\n\n /**\n * Allows to use the 'url' polyfill methods regardless of the environment\n * This method loads the 'url' polyfill and returns its instance\n * \n * @returns \n */\n async url() {\n await this.ready;\n\n return await this._urlPolyfill.get();\n }\n\n /**\n * Allows to use the 'buffer' polyfill methods regardless of the environment\n * This method loads the 'buffer' polyfill and returns its instance\n * \n * @returns \n */\n async buffer() {\n await this.ready;\n\n return await this._bufferPolyfill.get();\n }\n\n /**\n * Allows to use the 'process' polyfill methods regardless of the environment\n * This method loads the 'process' polyfill and returns its instance\n * \n * @returns \n */\n async process() {\n await this.ready;\n\n return await this._processPolyfill.get();\n }\n}","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_ConfigError extends A_Error {\n\n static readonly InitializationError = 'A-Config Initialization Error';\n}","import { A_Component, A_Concept, A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY, A_Container, A_Feature, A_Inject } from \"@adaas/a-concept\";\nimport { A_Config } from \"../A-Config.context\";\nimport { A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY } from \"../A-Config.constants\";\nimport { A_Polyfill } from \"../../A-Polyfill/A-Polyfill.component\";\n\n/**\n * Config Reader\n */\nexport class ConfigReader extends A_Component {\n\n constructor(\n @A_Inject(A_Polyfill) protected polyfill: A_Polyfill,\n ) {\n super();\n }\n\n @A_Concept.Load()\n async attachContext(\n @A_Inject(A_Container) container: A_Container,\n @A_Inject(A_Feature) feature: A_Feature,\n ) {\n if (!container.scope.has(A_Config)) {\n const newConfig = new A_Config({\n variables: [\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ] as const,\n defaults: {}\n });\n\n container.scope.register(newConfig);\n }\n\n\n const config = container.scope.resolve<A_Config>(A_Config);\n\n const rootDir = await this.getProjectRoot();\n\n config.set('A_CONCEPT_ROOT_FOLDER', rootDir);\n }\n\n @A_Concept.Load()\n async initialize(\n @A_Inject(A_Config) config: A_Config,\n ) {\n const data = await this.read([\n ...config.CONFIG_PROPERTIES,\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ]);\n\n config.set(data);\n }\n\n\n\n /**\n * Get the configuration property by Name\n * @param property \n */\n resolve<_ReturnType = any>(property: string): _ReturnType {\n return property as _ReturnType;\n }\n\n /**\n * This method reads the configuration and sets the values to the context\n * \n * @returns \n */\n async read<T extends string>(\n variables: Array<T> = []\n ): Promise<Record<T, any>> {\n return {} as Record<T, any>;\n }\n\n\n /**\n * Finds the root directory of the project by locating the folder containing package.json\n * \n * @param {string} startPath - The initial directory to start searching from (default is __dirname)\n * @returns {string|null} - The path to the root directory or null if package.json is not found\n */\n protected async getProjectRoot(startPath = __dirname) {\n return process.cwd();\n }\n}","import { A_Context, A_FormatterHelper } from \"@adaas/a-concept\";\nimport { ConfigReader } from \"./ConfigReader.component\";\n\nexport class FileConfigReader extends ConfigReader {\n\n private FileData: Map<string, any> = new Map<string, any>();\n\n /**\n * Get the configuration property Name\n * @param property \n */\n getConfigurationProperty_File_Alias(property: string): string {\n return A_FormatterHelper.toCamelCase(property);\n }\n\n\n resolve<_ReturnType = any>(property: string): _ReturnType {\n return this.FileData.get(this.getConfigurationProperty_File_Alias(property)) as _ReturnType;\n }\n\n\n async read<T extends string>(\n variables?: Array<T>\n ): Promise<Record<T, any>> {\n\n const fs = await this.polyfill.fs();\n\n try {\n const data = fs.readFileSync(`${A_Context.concept}.conf.json`, 'utf8');\n\n const config: Record<T, any> = JSON.parse(data);\n\n this.FileData = new Map(Object.entries(config));\n\n return config;\n\n } catch (error) {\n // this.context.Logger.error(error);\n return {} as Record<T, any>;\n }\n }\n}\n","import { A_Concept, A_Feature, A_FormatterHelper, A_Inject, A_TYPES__ConceptENVVariables } from \"@adaas/a-concept\";\nimport { ConfigReader } from \"./ConfigReader.component\";\nimport { A_Config } from \"../A-Config.context\";\nimport { A_Polyfill } from \"../../A-Polyfill/A-Polyfill.component\";\n\n\nexport class ENVConfigReader extends ConfigReader {\n\n\n @A_Concept.Load({\n before: ['ENVConfigReader.initialize']\n })\n async readEnvFile(\n @A_Inject(A_Config) config: A_Config<A_TYPES__ConceptENVVariables>,\n @A_Inject(A_Polyfill) polyfill: A_Polyfill,\n @A_Inject(A_Feature) feature: A_Feature,\n\n ) {\n const fs = await polyfill.fs();\n\n if (fs.existsSync('.env'))\n fs.readFileSync(`${config.get('A_CONCEPT_ROOT_FOLDER')}/.env`, 'utf-8').split('\\n').forEach(line => {\n const [key, value] = line.split('=');\n if (key && value) {\n process.env[key.trim()] = value.trim();\n }\n });\n }\n\n\n /**\n * Get the configuration property Name \n * @param property \n */\n getConfigurationProperty_ENV_Alias(property: string): string {\n return A_FormatterHelper.toUpperSnakeCase(property);\n }\n\n\n resolve<_ReturnType = any>(property: string): _ReturnType {\n return process.env[this.getConfigurationProperty_ENV_Alias(property)] as _ReturnType;\n }\n\n\n async read<T extends string>(variables: Array<T> = []): Promise<Record<T, any>> {\n const allVariables = [\n ...variables,\n ...Object.keys(process.env),\n ]\n\n const config: Record<T, any> = {} as Record<T, any>;\n\n allVariables.forEach(variable => {\n config[variable] = this.resolve(variable);\n });\n\n return config;\n }\n} ","import { A_Caller, A_Concept, A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY, A_Container, A_Context, A_Inject, A_Scope, A_ScopeError } from \"@adaas/a-concept\";\nimport { ConfigReader } from \"./components/ConfigReader.component\";\nimport { A_Config } from \"./A-Config.context\";\nimport { A_Polyfill } from \"../A-Polyfill/A-Polyfill.component\";\nimport { A_ConfigError } from \"./A-Config.error\";\nimport { FileConfigReader } from \"./components/FileConfigReader.component\";\nimport { ENVConfigReader } from \"./components/ENVConfigReader.component\";\nimport { A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY } from \"./A-Config.constants\";\n\n\nexport class A_ConfigLoader extends A_Container {\n\n private reader!: ConfigReader\n\n\n @A_Concept.Load({\n before: /.*/\n })\n async prepare(\n @A_Inject(A_Polyfill) polyfill: A_Polyfill\n ) {\n if (!this.scope.has(A_Config)) {\n const newConfig = new A_Config({\n variables: [\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ] as const,\n defaults: {}\n });\n\n this.scope.register(newConfig);\n }\n\n\n const fs = await polyfill.fs();\n\n try {\n switch (true) {\n\n case A_Context.environment === 'server' && !!fs.existsSync(`${A_Context.concept}.conf.json`):\n this.reader = this.scope.resolve<ConfigReader>(FileConfigReader);\n break;\n\n case A_Context.environment === 'server' && !fs.existsSync(`${A_Context.concept}.conf.json`):\n this.reader = this.scope.resolve<ConfigReader>(ENVConfigReader);\n break;\n\n case A_Context.environment === 'browser':\n this.reader = this.scope.resolve<ConfigReader>(ENVConfigReader);\n break;\n\n default:\n throw new A_ConfigError(\n A_ConfigError.InitializationError,\n `Environment ${A_Context.environment} is not supported`\n );\n }\n } catch (error) {\n if (error instanceof A_ScopeError) {\n throw new A_ConfigError({\n title: A_ConfigError.InitializationError,\n description: `Failed to initialize A_ConfigLoader. Reader not found for environment ${A_Context.environment}`,\n originalError: error,\n })\n }\n }\n }\n}","import { A_TYPES__ConceptENVVariables, A_TYPES__Fragment_Constructor } from \"@adaas/a-concept\";\n\nexport enum A_TYPES__ConfigFeature {\n\n}\n\n\nexport type A_TYPES__ConfigContainerConstructor<T extends Array<string | A_TYPES__ConceptENVVariables[number]>> = {\n\n /**\n * If set to true, the SDK will throw an error if the variable is not defined OR not presented in the defaults\n */\n strict: boolean\n\n /**\n * Allows to define the names of variable to be loaded\n */\n variables: T\n\n /**\n * Allows to set the default values for the variables\n */\n defaults: {\n [key in T[number]]?: any\n }\n} & A_TYPES__Fragment_Constructor;\n","import { A_Error } from \"@adaas/a-concept\";\n\nexport class A_ManifestError extends A_Error {\n\n static readonly ManifestInitializationError = 'A-Manifest Initialization Error';\n\n}\n","import { A_TYPES__Component_Constructor } from \"@adaas/a-concept\";\nimport { A_Manifest } from \"../A-Manifest.context\";\nimport { A_UTILS_TYPES__Manifest_AllowedComponents } from \"../A-Manifest.types\";\n\n/**\n * Fluent API for checking manifest permissions\n */\nexport class A_ManifestChecker {\n constructor(\n private manifest: A_Manifest,\n private component: A_TYPES__Component_Constructor,\n private method: string,\n private checkExclusion: boolean = false\n ) {}\n\n for(target: A_UTILS_TYPES__Manifest_AllowedComponents): boolean {\n const result = this.manifest.internal_checkAccess({\n component: this.component,\n method: this.method,\n target: target\n });\n\n return this.checkExclusion ? !result : result;\n }\n}","import { A_Component, A_Fragment, A_TypeGuards, A_TYPES__Component_Constructor } from \"@adaas/a-concept\";\nimport { A_UTILS_TYPES__Manifest_Init, A_UTILS_TYPES__Manifest_ComponentLevelConfig, A_UTILS_TYPES__Manifest_AllowedComponents, A_UTILS_TYPES__ManifestRule, A_UTILS_TYPES__ManifestQuery } from \"./A-Manifest.types\";\nimport { A_ManifestError } from \"./A-Manifest.error\";\nimport { A_ManifestChecker } from \"./classes/A-ManifestChecker.class\";\n\n\n\n\n\nexport class A_Manifest extends A_Fragment {\n\n private rules: A_UTILS_TYPES__ManifestRule[] = [];\n\n /**\n * A-Manifest is a configuration set that allows to include or exclude component application for the particular methods.\n *\n * For example, if A-Scope provides polymorphic A-Component that applies for All A-Entities in it but you have another component that should be used for only One particular Entity, you can use A-Manifest to specify this behavior.\n * \n * \n * By default if Component is provided in the scope - it applies for all entities in it. However, if you want to exclude some entities or include only some entities for the particular component - you can use A-Manifest to define this behavior.\n * \n * @param config - Array of component configurations\n */\n constructor(config: A_UTILS_TYPES__Manifest_Init = []) {\n super({\n name: 'A-Manifest',\n });\n\n this.prepare(config);\n }\n\n\n /**\n * Should convert received configuration into internal Regexp applicable for internal storage\n */\n protected prepare(config: A_UTILS_TYPES__Manifest_Init) {\n if (!A_TypeGuards.isArray(config))\n throw new A_ManifestError(\n A_ManifestError.ManifestInitializationError,\n `A-Manifest configuration should be an array of configurations`\n );\n\n for (const item of config) {\n this.processConfigItem(item);\n }\n }\n\n /**\n * Process a single configuration item and convert it to internal rules\n */\n private processConfigItem(item: A_UTILS_TYPES__Manifest_ComponentLevelConfig) {\n if (!A_TypeGuards.isComponentConstructor(item.component))\n throw new A_ManifestError(\n A_ManifestError.ManifestInitializationError,\n `A-Manifest configuration item should be a A-Component constructor`\n );\n\n const componentRegex = this.constructorToRegex(item.component);\n\n // Always add component-level rule first (applies to all methods)\n if (item.apply || item.exclude) {\n const methodRegex = /.*/; // Match all methods\n\n this.rules.push({\n componentRegex,\n methodRegex,\n applyRegex: item.apply ? this.allowedComponentsToRegex(item.apply) : undefined,\n excludeRegex: item.exclude ? this.allowedComponentsToRegex(item.exclude) : undefined,\n });\n }\n\n // Then add method-level configurations (these will override component-level)\n if (item.methods && item.methods.length > 0) {\n for (const methodConfig of item.methods) {\n const methodRegex = this.methodToRegex(methodConfig.method);\n\n this.rules.push({\n componentRegex,\n methodRegex,\n applyRegex: methodConfig.apply ? this.allowedComponentsToRegex(methodConfig.apply) : undefined,\n excludeRegex: methodConfig.exclude ? this.allowedComponentsToRegex(methodConfig.exclude) : undefined,\n });\n }\n }\n }\n\n\n\n /**\n * Convert a constructor to a regex pattern\n */\n private constructorToRegex(ctor: A_TYPES__Component_Constructor): RegExp {\n return new RegExp(`^${this.escapeRegex(ctor.name)}$`);\n }\n\n /**\n * Convert a method name or regex to a regex pattern\n */\n private methodToRegex(method: string | RegExp): RegExp {\n if (method instanceof RegExp) {\n return method;\n }\n return new RegExp(`^${this.escapeRegex(method as string)}$`);\n }\n\n /**\n * Convert allowed components array or regex to a single regex\n */\n private allowedComponentsToRegex(components: A_UTILS_TYPES__Manifest_AllowedComponents[] | RegExp): RegExp {\n if (components instanceof RegExp) {\n return components;\n }\n\n const patterns = components.map(ctor => this.escapeRegex(ctor.name));\n return new RegExp(`^(${patterns.join('|')})$`);\n }\n\n /**\n * Escape special regex characters in a string\n */\n private escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n protected configItemToRegexp(item: A_TYPES__Component_Constructor): RegExp {\n return this.constructorToRegex(item);\n }\n\n\n protected ID(component: A_TYPES__Component_Constructor, method: string) {\n return `${component.name}.${method}`;\n }\n\n /**\n * Check if a component and method combination is allowed for a target\n */\n isAllowed<T extends A_Component>(\n ctor: T | A_TYPES__Component_Constructor<T>,\n method: string\n ): A_ManifestChecker {\n const componentCtor = typeof ctor === 'function' ? ctor : ctor.constructor as A_TYPES__Component_Constructor;\n return new A_ManifestChecker(this, componentCtor, method);\n }\n\n /**\n * Internal method to check if access is allowed\n */\n internal_checkAccess(query: A_UTILS_TYPES__ManifestQuery): boolean {\n const componentName = query.component.name;\n const methodName = query.method;\n const targetName = query.target.name;\n\n // Find matching rules, sorted by specificity (method-specific rules first)\n const matchingRules = this.rules\n .filter(rule =>\n rule.componentRegex.test(componentName) &&\n rule.methodRegex.test(methodName)\n )\n .sort((a, b) => {\n // Method-specific rules (not .* pattern) should come before general rules\n const aIsGeneral = a.methodRegex.source === '.*';\n const bIsGeneral = b.methodRegex.source === '.*';\n\n if (aIsGeneral && !bIsGeneral) return 1; // b comes first\n if (!aIsGeneral && bIsGeneral) return -1; // a comes first\n return 0; // same priority\n });\n\n // If no rules match, allow by default\n if (matchingRules.length === 0) {\n return true;\n }\n\n // Process rules in order of specificity (most specific first)\n for (const rule of matchingRules) {\n // If this rule has an exclusion that matches, deny access\n if (rule.excludeRegex && rule.excludeRegex.test(targetName)) {\n return false;\n }\n\n // If this rule has an apply list, check if target is in it\n if (rule.applyRegex) {\n return rule.applyRegex.test(targetName);\n }\n }\n\n // If we have rules but no specific apply/exclude, allow by default\n return true;\n }\n\n isExcluded<T extends A_Component>(\n ctor: T | A_TYPES__Component_Constructor<T>,\n method: string\n ): A_ManifestChecker {\n const componentCtor = typeof ctor === 'function' ? ctor : ctor.constructor as A_TYPES__Component_Constructor;\n return new A_ManifestChecker(this, componentCtor, method, true);\n }\n}\n","export class A_Deferred<T> {\n public promise: Promise<T>;\n private resolveFn!: (value: T | PromiseLike<T>) => void;\n private rejectFn!: (reason?: any) => void;\n\n /**\n * Creates a deferred promise\n * @returns A promise that can be resolved or rejected later\n */\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolveFn = resolve;\n this.rejectFn = reject;\n });\n }\n\n resolve(value: T | PromiseLike<T>): void {\n this.resolveFn(value);\n }\n\n reject(reason?: any): void {\n this.rejectFn(reason);\n }\n}","import { A_Deferred } from \"./A-Deferred.class\";\nimport { A_Error } from \"@adaas/a-concept\";\nimport { A_UTILS_TYPES__ScheduleObjectCallback, A_UTILS_TYPES__ScheduleObjectConfig } from \"./A-Schedule.types\";\n\nexport class A_ScheduleObject<T extends any = any> {\n\n private timeout!: NodeJS.Timeout;\n private deferred!: A_Deferred<T>;\n\n private config: A_UTILS_TYPES__ScheduleObjectConfig = {\n /**\n * If the timeout is cleared, should the promise resolve or reject?\n * BY Default it rejects\n * \n * !!!NOTE: If the property is set to true, the promise will resolve with undefined\n */\n resolveOnClear: false\n };\n\n\n /**\n * Creates a scheduled object that will execute the action after specified milliseconds\n * \n * \n * @param ms - milliseconds to wait before executing the action\n * @param action - the action to execute\n * @param config - configuration options for the schedule object\n */\n constructor(\n /**\n * Milliseconds to wait before executing the action\n */\n ms: number,\n /**\n * The action to execute after the specified milliseconds\n */\n action: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ) {\n if (config)\n this.config = { ...this.config, ...config };\n\n this.deferred = new A_Deferred<T>();\n\n this.timeout = setTimeout(\n () => action()\n .then((...args) => this.deferred.resolve(...args))\n .catch((...args) => this.deferred.reject(...args)),\n ms\n );\n }\n\n get promise(): Promise<T> {\n return this.deferred.promise;\n }\n\n clear(): void {\n if (this.timeout) {\n clearTimeout(this.timeout);\n\n if (this.config.resolveOnClear)\n this.deferred.resolve(undefined as T);\n else\n this.deferred.reject(new A_Error(\"Timeout Cleared\"));\n }\n }\n}\n\n","import { A_Component, A_TypeGuards } from \"@adaas/a-concept\";\nimport { A_ScheduleObject } from \"./A-ScheduleObject.class\";\nimport { A_UTILS_TYPES__ScheduleObjectCallback, A_UTILS_TYPES__ScheduleObjectConfig } from \"./A-Schedule.types\";\n\n\n\nexport class A_Schedule extends A_Component {\n\n /**\n * Allows to schedule a callback for particular time in the future\n * \n * @param timestamp - Unix timestamp in milliseconds\n * @param callback - The callback to execute\n * @returns A promise that resolves to the schedule object\n */\n async schedule<T extends any = any>(\n /**\n * Unix timestamp in milliseconds\n */\n timestamp: number,\n /**\n * The callback to execute\n */\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>>\n async schedule<T extends any = any>(\n /**\n * ISO date string representing the date and time to schedule the callback for\n */\n date: string,\n /**\n * The callback to execute\n */\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>>\n async schedule<T extends any = any>(\n date: string | number,\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>> {\n\n const timestamp = A_TypeGuards.isString(date)\n ? (new Date(date)).getTime()\n : date;\n\n return new A_ScheduleObject<T>(\n timestamp - Date.now(),\n callback,\n config\n );\n }\n\n\n\n /**\n * Allows to execute callback after particular delay in milliseconds\n * So the callback will be executed after the specified delay\n * \n * @param ms \n */\n async delay<T extends any = any>(\n /**\n * Delay in milliseconds\n */\n ms: number,\n /**\n * The callback to execute after the delay\n */\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>> {\n return new A_ScheduleObject<T>(\n ms,\n callback,\n config\n );\n }\n}"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/A-Channel/A-ChannelRequest.context.ts","../src/lib/A-Channel/A-Channel.error.ts","../src/lib/A-Channel/A-Channel.component.ts","../src/lib/A-Command/A-Command.constants.ts","../src/lib/A-Memory/A-Memory.context.ts","../src/lib/A-Command/A-Command.error.ts","../src/lib/A-Command/A-Command.entity.ts","../src/lib/A-Config/A-Config.constants.ts","../src/lib/A-Config/A-Config.context.ts","../src/lib/A-Logger/A-Logger.component.ts","../src/lib/A-Polyfill/classes/A-FS-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Crypto-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Http-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Https-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Path-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Url-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Buffer-Polyfill.class.ts","../src/lib/A-Polyfill/classes/A-Process-Polyfill.class.ts","../src/lib/A-Polyfill/A-Polyfill.component.ts","../src/lib/A-Config/A-Config.error.ts","../src/lib/A-Config/components/ConfigReader.component.ts","../src/lib/A-Config/components/FileConfigReader.component.ts","../src/lib/A-Config/components/ENVConfigReader.component.ts","../src/lib/A-Config/A-Config.container.ts","../src/lib/A-Config/A-Config.types.ts","../src/lib/A-Manifest/A-Manifest.error.ts","../src/lib/A-Manifest/classes/A-ManifestChecker.class.ts","../src/lib/A-Manifest/A-Manifest.context.ts","../src/lib/A-Schedule/A-Deferred.class.ts","../src/lib/A-Schedule/A-ScheduleObject.class.ts","../src/lib/A-Schedule/A-Schedule.component.ts"],"names":["A_Error","A_TYPES__CommandMetaKey","A_CONSTANTS__A_Command_Status","A_CONSTANTS_A_Command_Features","A_Fragment","A_Scope","A_Context","property","value","A_Component","A_Inject","crypto","A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY","A_Concept","A_Feature","A_FormatterHelper","A_Container","A_TYPES__ConfigFeature","A_TypeGuards"],"mappings":"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","file":"index.mjs","sourcesContent":["import { A_Error, A_Fragment } from \"@adaas/a-concept\";\nimport { A_ChannelRequestStatuses } from \"./A-Channel.constants\";\nimport { A_ChannelRequestContext_Serialized } from \"./A-Channel.types\";\n\n\nexport class A_ChannelRequestContext<\n _ParamsType extends Record<string, any> = Record<string, any>,\n _ResultType extends Record<string, any> = Record<string, any>,\n> extends A_Fragment {\n\n\n protected _params: _ParamsType;\n protected _result?: _ResultType;\n protected _errors: Set<Error> = new Set();\n\n protected _status: A_ChannelRequestStatuses = A_ChannelRequestStatuses.PENDING;\n\n\n constructor(\n params: Partial<_ParamsType> = {}\n ) {\n super();\n this._params = params as _ParamsType;\n }\n\n /**\n * Returns the status of the request\n */\n get status(): A_ChannelRequestStatuses {\n return this._status;\n }\n\n /**\n * Returns the parameters of the request\n */\n get failed(): boolean {\n return this._errors.size > 0;\n }\n /**\n * Returns the Params of the Request\n */\n get params() {\n return this._params;\n }\n /**\n * Returns the Result of the Request\n */\n get data() {\n return this._result;\n }\n\n get errors(): Set<Error> | undefined {\n return this._errors.size > 0 ? this._errors : undefined;\n }\n\n // ==========================================================\n // ==================== Mutations ===========================\n // ==========================================================\n /**\n * Adds an error to the context\n * \n * @param error \n */\n fail(error: A_Error) {\n this._status = A_ChannelRequestStatuses.FAILED;\n this._errors.add(error);\n }\n /**\n * Sets the result of the request\n * \n * @param result \n */\n succeed(result: _ResultType) {\n this._status = A_ChannelRequestStatuses.SUCCESS;\n this._result = result;\n }\n\n /**\n * Serializes the context to a JSON object\n * \n * @returns \n */\n toJSON(): A_ChannelRequestContext_Serialized<_ParamsType, _ResultType> {\n return {\n params: this._params,\n result: this._result,\n status: this._status,\n errors: this.errors ? Array.from(this._errors).map(err => err.toString()) : undefined,\n }\n }\n}","import { A_Error, A_TypeGuards } from \"@adaas/a-concept\";\nimport { A_ChannelRequestContext } from \"./A-ChannelRequest.context\";\n\n\nexport class A_ChannelError extends A_Error {\n\n // ==========================================================\n // ==================== Error Types =========================\n // ==========================================================\n\n\n static readonly MethodNotImplemented = 'A-Channel Method Not Implemented';\n\n // ==========================================================\n // ==================== Properties ==========================\n // ==========================================================\n\n protected _context?: A_ChannelRequestContext\n\n\n /**\n * Channel Error allows to keep track of errors within a channel if something goes wrong\n * \n * \n * @param originalError \n * @param context \n */\n constructor(\n originalError: string | A_Error | Error | any,\n context?: A_ChannelRequestContext | string\n ) {\n if (A_TypeGuards.isString(context))\n super(originalError, context);\n else\n super(originalError);\n\n if (context instanceof A_ChannelRequestContext)\n this._context = context\n }\n\n /***\n * Returns Context of the error\n */\n get context(): A_ChannelRequestContext | undefined {\n return this._context\n }\n\n\n}","import { A_Component, A_Context, A_Error, A_Feature, A_IdentityHelper, A_Inject, A_Scope, A_TYPES__InjectableConstructors, A_TYPES__InjectableTargets } from \"@adaas/a-concept\";\nimport { A_ChannelError } from \"./A-Channel.error\";\nimport { A_ChannelFeatures } from \"./A-Channel.constants\";\nimport { A_ChannelRequestContext } from \"./A-ChannelRequest.context\";\n\n/**\n * A-Channel - A powerful, extensible communication channel component\n * \n * A-Channel provides a structured approach to implementing various communication patterns\n * such as HTTP clients, WebSocket connections, message queues, and other messaging systems.\n * It offers a complete lifecycle management system with extensible hooks for custom behavior.\n * \n * ## Key Features:\n * - 🔄 **Lifecycle Management** - Complete connection and processing lifecycle with hooks\n * - 📡 **Multiple Communication Patterns** - Request/Response and Fire-and-Forget messaging \n * - 🛡️ **Error Handling** - Comprehensive error capture and management\n * - 🎯 **Type Safety** - Full TypeScript support with generic types\n * - 🔧 **Extensible** - Component-based architecture for custom behavior\n * - ⚡ **Concurrent Processing** - Handle multiple requests simultaneously\n * \n * ## Basic Usage:\n * ```typescript\n * const channel = new A_Channel();\n * A_Context.root.register(channel);\n * \n * // Request/Response pattern\n * const response = await channel.request({ action: 'getData', id: 123 });\n * \n * // Fire-and-forget pattern \n * await channel.send({ type: 'notification', message: 'Hello World' });\n * ```\n * \n * ## Custom Implementation:\n * ```typescript\n * class HttpChannel extends A_Channel {}\n * \n * class HttpProcessor extends A_Component {\n * @A_Feature.Extend({ scope: [HttpChannel] })\n * async [A_ChannelFeatures.onRequest](\n * @A_Inject(A_ChannelRequestContext) context: A_ChannelRequestContext\n * ) {\n * const response = await fetch(context.params.url);\n * (context as any)._result = await response.json();\n * }\n * }\n * ```\n * \n * @see {@link ./README.md} For complete documentation and examples\n */\nexport class A_Channel extends A_Component {\n\n /**\n * Indicates whether the channel is currently processing requests.\n * This flag is managed automatically during request/send operations.\n * \n * @readonly\n */\n protected _processing: boolean = false;\n\n /**\n * Promise that resolves when the channel initialization is complete.\n * Ensures that onConnect lifecycle hook has been executed before\n * any communication operations.\n * \n * @private\n */\n protected _initialized?: Promise<void>;\n\n /**\n * Internal cache storage for channel-specific data.\n * Can be used by custom implementations for caching responses,\n * connection pools, or other channel-specific state.\n * \n * @protected\n */\n protected _cache: Map<string, any> = new Map();\n\n /**\n * Creates a new A_Channel instance.\n * \n * The channel must be registered with A_Context before use:\n * ```typescript\n * const channel = new A_Channel();\n * A_Context.root.register(channel);\n * ```\n */\n constructor() {\n super();\n }\n\n /**\n * Indicates whether the channel is currently processing requests.\n * \n * @returns {boolean} True if channel is processing, false otherwise\n */\n get processing(): boolean {\n return this._processing;\n }\n\n /**\n * Promise that resolves when the channel is fully initialized.\n * \n * Automatically calls the onConnect lifecycle hook if not already called.\n * This ensures the channel is ready for communication operations.\n * \n * @returns {Promise<void>} Promise that resolves when initialization is complete\n */\n get initialize(): Promise<void> {\n if (!this._initialized) {\n this._initialized = this.connect();\n }\n return this._initialized;\n }\n\n // ==========================================================\n // ================ Lifecycle Extension Points =============\n // ==========================================================\n\n /**\n * Connection lifecycle hook - called during channel initialization.\n * \n * Override this method in custom components to implement connection logic:\n * - Initialize network connections\n * - Load configuration\n * - Validate environment\n * - Set up connection pools\n * \n * @example\n * ```typescript\n * class DatabaseChannel extends A_Channel {}\n * \n * class DatabaseConnector extends A_Component {\n * @A_Feature.Extend({ scope: [DatabaseChannel] })\n * async [A_ChannelFeatures.onConnect]() {\n * await this.initializeDatabase();\n * console.log('Database channel connected');\n * }\n * }\n * ```\n */\n @A_Feature.Extend({\n name: A_ChannelFeatures.onConnect\n })\n async onConnect(...args: any[]) {\n // Default implementation - no operation\n // Override in custom implementations\n }\n\n /**\n * Disconnection lifecycle hook - called during channel cleanup.\n * \n * Override this method in custom components to implement cleanup logic:\n * - Close network connections\n * - Save state\n * - Release resources\n * - Clear caches\n * \n * @example\n * ```typescript\n * @A_Feature.Extend({ scope: [DatabaseChannel] })\n * async [A_ChannelFeatures.onDisconnect]() {\n * await this.closeConnections();\n * console.log('Database channel disconnected');\n * }\n * ```\n */\n @A_Feature.Extend({\n name: A_ChannelFeatures.onDisconnect\n })\n async onDisconnect(...args: any[]) {\n // Default implementation - no operation\n // Override in custom implementations\n }\n\n /**\n * Pre-request processing hook - called before main request processing.\n * \n * Use this hook for:\n * - Request validation\n * - Authentication\n * - Rate limiting\n * - Logging\n * - Request transformation\n * \n * @example\n * ```typescript\n * @A_Feature.Extend({ scope: [HttpChannel] })\n * async [A_ChannelFeatures.onBeforeRequest](\n * @A_Inject(A_ChannelRequestContext) context: A_ChannelRequestContext\n * ) {\n * // Validate required parameters\n * if (!context.params.url) {\n * throw new Error('URL is required');\n * }\n * }\n * ```\n */\n @A_Feature.Extend({\n name: A_ChannelFeatures.onBeforeRequest\n })\n async onBeforeRequest(...args: any[]) {\n // Default implementation - no operation\n // Override in custom implementations\n }\n\n /**\n * Main request processing hook - core business logic goes here.\n * \n * This is where the main communication logic should be implemented:\n * - Make HTTP requests\n * - Send messages to queues\n * - Execute database queries\n * - Process business logic\n * \n * Set the result in the context: `(context as any)._result = yourResult;`\n * \n * @example\n * ```typescript\n * @A_Feature.Extend({ scope: [HttpChannel] })\n * async [A_ChannelFeatures.onRequest](\n * @A_Inject(A_ChannelRequestContext) context: A_ChannelRequestContext\n * ) {\n * const response = await fetch(context.params.url);\n * (context as any)._result = await response.json();\n * }\n * ```\n */\n @A_Feature.Extend({\n name: A_ChannelFeatures.onRequest\n })\n async onRequest(...args: any[]) {\n // Default implementation - no operation\n // Override in custom implementations\n }\n\n /**\n * Post-request processing hook - called after successful request processing.\n * \n * Use this hook for:\n * - Response transformation\n * - Logging\n * - Analytics\n * - Caching results\n * - Cleanup\n * \n * @example\n * ```typescript\n * @A_Feature.Extend({ scope: [HttpChannel] })\n * async [A_ChannelFeatures.onAfterRequest](\n * @A_Inject(A_ChannelRequestContext) context: A_ChannelRequestContext\n * ) {\n * console.log(`Request completed in ${Date.now() - context.startTime}ms`);\n * await this.cacheResponse(context.params, context.data);\n * }\n * ```\n */\n @A_Feature.Extend({\n name: A_ChannelFeatures.onAfterRequest\n })\n async onAfterRequest(...args: any[]) {\n // Default implementation - no operation\n // Override in custom implementations\n }\n\n /**\n * Error handling hook - called when any operation fails.\n * \n * Use this hook for:\n * - Error logging\n * - Error transformation\n * - Alerting\n * - Retry logic\n * - Fallback mechanisms\n * \n * @example\n * ```typescript\n * @A_Feature.Extend({ scope: [HttpChannel] })\n * async [A_ChannelFeatures.onError](\n * @A_Inject(A_ChannelRequestContext) context: A_ChannelRequestContext\n * ) {\n * console.error('Request failed:', context.params, context.failed);\n * await this.logError(context);\n * await this.sendAlert(context);\n * }\n * ```\n */\n @A_Feature.Extend({\n name: A_ChannelFeatures.onError\n })\n async onError(...args: any[]) {\n // Default implementation - no operation\n // Override in custom implementations\n }\n\n /**\n * Send operation hook - called for fire-and-forget messaging.\n * \n * Use this hook for:\n * - Message broadcasting\n * - Event publishing\n * - Notification sending\n * - Queue operations\n * \n * @example\n * ```typescript\n * @A_Feature.Extend({ scope: [EventChannel] })\n * async [A_ChannelFeatures.onSend](\n * @A_Inject(A_ChannelRequestContext) context: A_ChannelRequestContext\n * ) {\n * const { eventType, payload } = context.params;\n * await this.publishEvent(eventType, payload);\n * }\n * ```\n */\n @A_Feature.Extend({\n name: A_ChannelFeatures.onSend\n })\n async onSend(...args: any[]) {\n // Default implementation - no operation\n // Override in custom implementations\n }\n\n // ==========================================================\n // ================= Public API Methods ===================\n // ==========================================================\n\n /**\n * Initializes the channel by calling the onConnect lifecycle hook.\n * \n * This method is called automatically when accessing the `initialize` property.\n * You can also call it manually if needed.\n * \n * @returns {Promise<void>} Promise that resolves when connection is established\n */\n async connect() {\n await this.call(A_ChannelFeatures.onConnect);\n }\n\n /**\n * Disconnects the channel by calling the onDisconnect lifecycle hook.\n * \n * Use this method to properly cleanup resources when the channel is no longer needed.\n * \n * @returns {Promise<void>} Promise that resolves when cleanup is complete\n */\n async disconnect() {\n await this.call(A_ChannelFeatures.onDisconnect);\n }\n\n /**\n * Sends a request and waits for a response (Request/Response pattern).\n * \n * This method follows the complete request lifecycle:\n * 1. Ensures channel is initialized\n * 2. Creates request scope and context\n * 3. Calls onBeforeRequest hook\n * 4. Calls onRequest hook (main processing)\n * 5. Calls onAfterRequest hook\n * 6. Returns the response context\n * \n * If any step fails, the onError hook is called and the error is captured\n * in the returned context.\n * \n * @template _ParamsType The type of request parameters\n * @template _ResultType The type of response data\n * @param params The request parameters\n * @returns {Promise<A_ChannelRequestContext<_ParamsType, _ResultType>>} Request context with response\n * \n * @example\n * ```typescript\n * // Basic usage\n * const response = await channel.request({ action: 'getData', id: 123 });\n * \n * // Typed usage\n * interface UserRequest { userId: string; }\n * interface UserResponse { name: string; email: string; }\n * \n * const userResponse = await channel.request<UserRequest, UserResponse>({\n * userId: 'user-123'\n * });\n * \n * if (!userResponse.failed) {\n * console.log('User:', userResponse.data.name);\n * }\n * ```\n */\n async request<\n _ParamsType extends Record<string, any> = Record<string, any>,\n _ResultType extends Record<string, any> = Record<string, any>,\n >(params: _ParamsType): Promise<A_ChannelRequestContext<_ParamsType, _ResultType>> {\n // Ensure channel is initialized before processing\n await this.initialize;\n\n // Set processing flag\n this._processing = true;\n\n // Create isolated scope for this request\n const requestScope = new A_Scope({ \n name: `a-channel@scope:request:${A_IdentityHelper.generateTimeId()}` \n });\n\n // Create request context\n const context = new A_ChannelRequestContext<_ParamsType, _ResultType>(params);\n\n try {\n // Set up dependency injection scope\n requestScope.inherit(A_Context.scope(this));\n requestScope.register(context);\n\n // Execute request lifecycle\n await this.call(A_ChannelFeatures.onBeforeRequest, requestScope);\n await this.call(A_ChannelFeatures.onRequest, requestScope);\n await this.call(A_ChannelFeatures.onAfterRequest, requestScope);\n\n this._processing = false;\n return context;\n\n } catch (error) {\n this._processing = false;\n\n // Create channel-specific error\n const channelError = new A_ChannelError(error);\n context.fail(channelError);\n\n // Call error handling hook\n await this.call(A_ChannelFeatures.onError, requestScope);\n\n return context;\n }\n }\n\n /**\n * Sends a fire-and-forget message (Send pattern).\n * \n * This method is used for one-way communication where no response is expected:\n * - Event broadcasting\n * - Notification sending\n * - Message queuing\n * - Logging operations\n * \n * The method follows this lifecycle:\n * 1. Ensures channel is initialized\n * 2. Creates send scope and context\n * 3. Calls onSend hook\n * 4. Completes without returning data\n * \n * If the operation fails, the onError hook is called but no error is thrown\n * to the caller (fire-and-forget semantics).\n * \n * @template _ParamsType The type of message parameters\n * @param message The message to send\n * @returns {Promise<void>} Promise that resolves when send is complete\n * \n * @example\n * ```typescript\n * // Send notification\n * await channel.send({\n * type: 'user.login',\n * userId: 'user-123',\n * timestamp: new Date().toISOString()\n * });\n * \n * // Send to message queue\n * await channel.send({\n * queue: 'email-queue',\n * payload: {\n * to: 'user@example.com',\n * subject: 'Welcome!',\n * body: 'Welcome to our service!'\n * }\n * });\n * ```\n */\n async send<_ParamsType extends Record<string, any> = Record<string, any>>(\n message: _ParamsType\n ): Promise<void> {\n // Ensure channel is initialized before processing\n await this.initialize;\n\n // Set processing flag\n this._processing = true;\n\n // Create isolated scope for this send operation\n const requestScope = new A_Scope({ \n name: `a-channel@scope:send:${A_IdentityHelper.generateTimeId()}` \n });\n\n // Create request context for the message\n const context = new A_ChannelRequestContext<_ParamsType>(message);\n\n try {\n // Set up dependency injection scope\n requestScope.inherit(A_Context.scope(this));\n requestScope.register(context);\n\n // Execute send operation\n await this.call(A_ChannelFeatures.onSend, requestScope);\n\n this._processing = false;\n\n } catch (error) {\n this._processing = false;\n\n // Create channel-specific error\n const channelError = new A_ChannelError(error);\n context.fail(channelError);\n\n // Call error handling hook\n await this.call(A_ChannelFeatures.onError, requestScope);\n\n // Note: We don't re-throw the error for fire-and-forget operations\n // The error is handled by the onError hook\n }\n }\n\n /**\n * @deprecated This method is deprecated and will be removed in future versions.\n * Use request() or send() methods instead depending on your communication pattern.\n * \n * For request/response pattern: Use request()\n * For fire-and-forget pattern: Use send()\n * For consumer patterns: Implement custom consumer logic using request() in a loop\n */\n async consume<T extends Record<string, any> = Record<string, any>>(): Promise<A_ChannelRequestContext<any, T>> {\n await this.initialize;\n\n this._processing = true;\n\n const requestScope = new A_Scope({ name: `a-channel@scope:consume:${A_IdentityHelper.generateTimeId()}` });\n\n const context = new A_ChannelRequestContext<any, T>();\n\n try {\n requestScope.inherit(A_Context.scope(this));\n requestScope.register(context);\n\n\n await this.call(A_ChannelFeatures.onConsume, requestScope);\n\n this._processing = false;\n\n return context\n\n } catch (error) {\n\n this._processing = false;\n\n const channelError = new A_ChannelError(error)\n\n context.fail(channelError);\n\n await this.call(A_ChannelFeatures.onError, requestScope);\n\n return context;\n }\n }\n\n}","export enum A_TYPES__CommandMetaKey {\n EXTENSIONS = 'a-command-extensions',\n FEATURES = 'a-command-features',\n ABSTRACTIONS = 'a-command-abstractions',\n}\n\nexport enum A_CONSTANTS__A_Command_Status {\n CREATED = 'CREATED',\n INITIALIZATION = 'INITIALIZATION',\n INITIALIZED = 'INITIALIZED',\n COMPILATION = 'COMPILATION',\n COMPILED = 'COMPILED',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n}\n\n/**\n * A-Command Lifecycle Features\n */\nexport enum A_CONSTANTS_A_Command_Features {\n INIT = 'init',\n COMPLIED = 'complied',\n EXECUTE = 'execute',\n COMPLETE = 'complete',\n FAIL = 'fail',\n}\n\n\n\n\nexport type A_CONSTANTS__A_Command_Event = 'init' | 'compile' | 'execute' | 'complete' | 'fail';\n\n\n\n","import { A_Error, A_Fragment } from \"@adaas/a-concept\";\n\n\nexport class A_Memory<\n _MemoryType extends Record<string, any> = Record<string, any>,\n _SerializedType extends Record<string, any> = Record<string, any>\n> extends A_Fragment {\n\n\n /**\n * Internal storage of all intermediate values\n */\n protected _memory: Map<keyof _MemoryType, _MemoryType[keyof _MemoryType]>;\n /**\n * Errors encountered during the execution\n */\n protected _errors: Set<A_Error>;\n\n\n\n /**\n * Memory object that allows to store intermediate values and errors\n * \n * @param initialValues \n */\n constructor(initialValues?: _MemoryType) {\n super();\n this._memory = new Map(Object.entries(initialValues || {}));\n this._errors = new Set();\n }\n\n\n get Errors(): Set<A_Error> | undefined {\n return this._errors.size > 0 ? this._errors : undefined;\n }\n\n\n /**\n * Verifies that all required keys are present in the proxy values\n * \n * @param requiredKeys \n * @returns \n */\n async verifyPrerequisites(\n requiredKeys: Array<keyof _MemoryType>\n ): Promise<boolean> {\n return requiredKeys.every(key => this._memory.has(key));\n }\n\n /**\n * Adds an error to the context\n * \n * @param error \n */\n async error(error: A_Error): Promise<void> {\n this._errors.add(error);\n }\n\n /**\n * Retrieves a value from the context memory\n * \n * @param key \n * @returns \n */\n get<K extends keyof _MemoryType>(\n /**\n * Key to retrieve the value for\n */\n key: K\n ): _MemoryType[K] | undefined {\n return this._memory.get(key);\n }\n\n /**\n * Saves a value in the context memory\n * \n * @param key \n * @param value \n */\n async set<K extends keyof _MemoryType>(\n /**\n * Key to save the value under\n */\n key: K,\n /**\n * Value to save\n */\n value: _MemoryType[K]\n ): Promise<void> {\n this._memory.set(key, value);\n }\n\n\n /**\n * Removes a value from the context memory by key\n * \n * @param key \n */\n async drop(key: keyof _MemoryType): Promise<void> {\n this._memory.delete(key);\n }\n\n /**\n * Clears all stored values in the context memory\n */\n async clear(): Promise<void> {\n this._memory.clear();\n }\n\n\n /**\n * Converts all stored values to a plain object\n * \n * [!] By default uses all saved in memory values \n * \n * @returns \n */\n toJSON(): _SerializedType {\n const obj: Record<string, any> = {};\n\n this._memory.forEach((value, key) => {\n obj[key as string] =\n typeof value === 'object' && value !== null && 'toJSON' in value && typeof value.toJSON === 'function'\n ? value.toJSON()\n : value;\n });\n\n return obj as _SerializedType;\n }\n}","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_CommandError extends A_Error {\n\n\n static readonly CommandScopeBindingError = 'A-Command Scope Binding Error';\n}","import {\n A_TYPES__Command_Init,\n A_TYPES__Command_Listener,\n A_TYPES__Command_Serialized\n} from \"./A-Command.types\";\nimport {\n A_CONSTANTS__A_Command_Event,\n A_CONSTANTS__A_Command_Status\n} from \"./A-Command.constants\";\nimport { A_Context, A_Entity, A_Error, A_Scope } from \"@adaas/a-concept\";\nimport { A_Memory } from \"../A-Memory/A-Memory.context\";\nimport { A_CommandError } from \"./A-Command.error\";\n\n\nexport class A_Command<\n InvokeType extends A_TYPES__Command_Init = A_TYPES__Command_Init,\n ResultType extends Record<string, any> = Record<string, any>,\n LifecycleEvents extends string | A_CONSTANTS__A_Command_Event = A_CONSTANTS__A_Command_Event\n> extends A_Entity<InvokeType, A_TYPES__Command_Serialized<InvokeType, ResultType>> {\n\n // ====================================================================\n // ================== Static A-Command Information ====================\n // ====================================================================\n\n /**\n * Command Identifier that corresponds to the class name\n */\n static get code(): string {\n return super.entity;\n }\n\n // ====================================================================\n // ================ Instance A-Command Information ====================\n // ====================================================================\n protected _result?: ResultType;\n protected _executionScope!: A_Scope;\n protected _errors?: Set<A_Error>;\n\n protected _params!: InvokeType;\n protected _status!: A_CONSTANTS__A_Command_Status\n\n protected _listeners: Map<\n // the name of the event\n LifecycleEvents | A_CONSTANTS__A_Command_Event,\n // the listeners for the event\n Set<A_TYPES__Command_Listener<InvokeType, ResultType, LifecycleEvents>>\n > = new Map();\n\n protected _startTime?: Date;\n protected _endTime?: Date\n\n /**\n * Execution Duration in milliseconds\n */\n get duration() {\n return this._endTime && this._startTime\n ? this._endTime.getTime() - this._startTime.getTime()\n : this._startTime\n ? new Date().getTime() - this._startTime.getTime()\n : undefined;\n }\n /**\n * A shared scope between all features of the command during its execution\n */\n get scope(): A_Scope {\n return this._executionScope;\n }\n /**\n * Unique code identifying the command type\n * Example: 'user.create', 'task.complete', etc.\n * \n */\n get code(): string {\n return (this.constructor as typeof A_Command).code;\n }\n /**\n * Current status of the command\n */\n get status(): A_CONSTANTS__A_Command_Status {\n return this._status;\n }\n /**\n * Start time of the command execution\n */\n get startedAt(): Date | undefined {\n return this._startTime;\n }\n /**\n * End time of the command execution\n */\n get endedAt(): Date | undefined {\n return this._endTime;\n }\n /**\n * Result of the command execution stored in the context\n */\n get result(): ResultType | undefined {\n return this._result;\n }\n /**\n * Errors encountered during the command execution stored in the context\n */\n get errors(): Set<A_Error> | undefined {\n return this._errors;\n }\n /**\n * Parameters used to invoke the command\n */\n get params(): InvokeType {\n return this._params;\n }\n /**\n * Indicates if the command has failed\n */\n get isFailed(): boolean {\n return this._status === A_CONSTANTS__A_Command_Status.FAILED;\n }\n /**\n * Indicates if the command has completed successfully\n */\n get isCompleted(): boolean {\n return this._status === A_CONSTANTS__A_Command_Status.COMPLETED;\n }\n\n /**\n * \n * A-Command represents an executable command with a specific code and parameters.\n * It can be executed within a given scope and stores execution results and errors.\n * \n * \n * A-Command should be context independent and execution logic should be based on attached components \n * \n * @param code \n * @param params \n */\n constructor(\n /**\n * Command invocation parameters\n */\n params: InvokeType | A_TYPES__Command_Serialized<InvokeType, ResultType> | string\n ) {\n super(params as any)\n }\n\n\n // --------------------------------------------------------------------------\n // A-Command Lifecycle Methods\n // --------------------------------------------------------------------------\n\n // should create a new Task in DB with basic records\n async init(): Promise<void> {\n // first check statuis if it passed then - skip\n if (this._status !== A_CONSTANTS__A_Command_Status.CREATED) {\n return;\n }\n\n this._status = A_CONSTANTS__A_Command_Status.INITIALIZATION;\n this._startTime = new Date();\n\n this.checkScopeInheritance();\n\n this.emit('init');\n await this.call('init', this.scope);\n this._status = A_CONSTANTS__A_Command_Status.INITIALIZED;\n }\n\n // Should compile everything before execution\n async compile() {\n if (this._status !== A_CONSTANTS__A_Command_Status.INITIALIZED) {\n return;\n }\n\n this.checkScopeInheritance();\n\n this._status = A_CONSTANTS__A_Command_Status.COMPILATION;\n this.emit('compile');\n await this.call('compile', this.scope);\n this._status = A_CONSTANTS__A_Command_Status.COMPILED;\n }\n\n /**\n * Processes the command execution\n * \n * @returns \n */\n async process() {\n if (this._status !== A_CONSTANTS__A_Command_Status.COMPILED)\n return;\n\n this._status = A_CONSTANTS__A_Command_Status.IN_PROGRESS;\n\n this.checkScopeInheritance();\n\n this.emit('execute');\n\n await this.call('execute', this.scope);\n }\n\n /**\n * Executes the command logic.\n */\n async execute(): Promise<any> {\n this.checkScopeInheritance();\n\n try {\n await this.init();\n await this.compile();\n await this.process();\n await this.complete();\n\n } catch (error) {\n await this.fail();\n }\n }\n\n /**\n * Marks the command as completed\n */\n async complete() {\n this.checkScopeInheritance();\n\n this._status = A_CONSTANTS__A_Command_Status.COMPLETED;\n this._endTime = new Date();\n this._result = this.scope.resolve(A_Memory).toJSON() as ResultType;\n\n this.emit('complete');\n return await this.call('complete', this.scope);\n }\n\n\n /**\n * Marks the command as failed\n */\n async fail() {\n this.checkScopeInheritance();\n\n this._status = A_CONSTANTS__A_Command_Status.FAILED;\n this._endTime = new Date();\n this._errors = this.scope.resolve(A_Memory).Errors;\n\n this.emit('fail');\n return await this.call('fail', this.scope);\n }\n\n\n // -------------------------------------------------------------------------- \n // A-Command Event-Emitter methods\n // --------------------------------------------------------------------------\n\n /**\n * Registers an event listener for a specific event\n * \n * @param event \n * @param listener \n */\n on(event: LifecycleEvents | A_CONSTANTS__A_Command_Event, listener: A_TYPES__Command_Listener<InvokeType, ResultType, LifecycleEvents>) {\n if (!this._listeners.has(event)) {\n this._listeners.set(event, new Set());\n }\n this._listeners.get(event)!.add(listener);\n }\n /**\n * Removes an event listener for a specific event\n * \n * @param event \n * @param listener \n */\n off(event: LifecycleEvents | A_CONSTANTS__A_Command_Event, listener: A_TYPES__Command_Listener<InvokeType, ResultType, LifecycleEvents>) {\n this._listeners.get(event)?.delete(listener);\n }\n /**\n * Emits an event to all registered listeners\n * \n * @param event \n */\n emit(event: LifecycleEvents | A_CONSTANTS__A_Command_Event) {\n this._listeners.get(event)?.forEach(listener => {\n listener(this);\n });\n }\n\n\n // --------------------------------------------------------------------------\n // A-Entity Base Class Overrides\n // --------------------------------------------------------------------------\n // Serialization / Deserialization\n // -------------------------------------------------------------------------\n\n\n /**\n * Allows to create a Command instance from new data\n * \n * @param newEntity \n */\n fromNew(newEntity: InvokeType): void {\n super.fromNew(newEntity);\n\n this._executionScope = new A_Scope();\n\n this._executionScope.register(new A_Memory<ResultType>());\n\n this._params = newEntity;\n\n this._status = A_CONSTANTS__A_Command_Status.CREATED;\n }\n\n\n\n /**\n * Allows to convert serialized data to Command instance\n * \n * [!] By default it omits params as they are not stored in the serialized data\n * \n * @param serialized \n */\n fromJSON(serialized: A_TYPES__Command_Serialized<InvokeType, ResultType>): void {\n super.fromJSON(serialized);\n\n this._executionScope = new A_Scope();\n\n const memory = new A_Memory<ResultType>();\n\n this._executionScope.register(memory);\n\n if (serialized.startedAt) this._startTime = new Date(serialized.startedAt);\n if (serialized.endedAt) this._endTime = new Date(serialized.endedAt);\n\n\n // Restore result and errors in the memory\n if (serialized.result) {\n Object.entries(serialized.result).forEach(([key, value]) => {\n memory.set(key, value);\n });\n }\n\n if (serialized.errors) {\n serialized.errors.forEach(err => {\n memory.error(new A_Error(err));\n });\n }\n\n this._params = serialized.params\n\n this._status = serialized.status || A_CONSTANTS__A_Command_Status.CREATED;\n\n }\n\n\n /**\n * Converts the Command instance to a plain object\n * \n * @returns \n */\n toJSON(): A_TYPES__Command_Serialized<InvokeType, ResultType> {\n return {\n ...super.toJSON(),\n code: this.code,\n status: this._status,\n params: this._params,\n startedAt: this._startTime ? this._startTime.toISOString() : undefined,\n endedAt: this._endTime ? this._endTime.toISOString() : undefined,\n duration: this.duration,\n result: this.result,\n errors: this.errors ? Array.from(this.errors).map(err => err.toJSON()) : undefined\n }\n };\n\n\n protected checkScopeInheritance(): void {\n let attachedScope: A_Scope;\n try {\n attachedScope = A_Context.scope(this);\n } catch (error) {\n throw new A_CommandError({\n title: A_CommandError.CommandScopeBindingError,\n description: `Command ${this.code} is not bound to any context scope. Ensure the command is properly registered within a context before execution.`,\n originalError: error\n });\n }\n\n if (!this.scope.isInheritedFrom(A_Context.scope(this))) {\n this.scope.inherit(A_Context.scope(this));\n }\n }\n\n}","export const A_CONSTANTS__CONFIG_ENV_VARIABLES = {\n\n} as const\n\n\n//should be an array\nexport type A_TYPES__ConfigENVVariables = (typeof A_CONSTANTS__CONFIG_ENV_VARIABLES)[keyof typeof A_CONSTANTS__CONFIG_ENV_VARIABLES][];\n\n\nexport const A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY = [\n\n] as const;\n\n","import { A_CommonHelper, A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY, A_FormatterHelper, A_Fragment, A_TYPES__ConceptENVVariables } from \"@adaas/a-concept\";\nimport { A_TYPES__ConfigContainerConstructor } from \"./A-Config.types\";\nimport { A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY } from \"./A-Config.constants\";\n\n\nexport class A_Config<\n T extends Array<string | A_TYPES__ConceptENVVariables[number]> = any[]\n> extends A_Fragment {\n\n config: A_TYPES__ConfigContainerConstructor<T>;\n\n\n private VARIABLES: Map<T[number], any> = new Map<T[number], any>();\n\n CONFIG_PROPERTIES!: T;\n\n protected DEFAULT_ALLOWED_TO_READ_PROPERTIES = [\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ];\n\n\n constructor(\n config: Partial<A_TYPES__ConfigContainerConstructor<T>>\n ) {\n super({\n name: 'A_Config'\n });\n\n this.config = A_CommonHelper.deepCloneAndMerge<A_TYPES__ConfigContainerConstructor<T>>(config as any, {\n strict: false,\n defaults: {},\n variables: A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY as any as T\n } as any);\n\n this.CONFIG_PROPERTIES = this.config.variables ? this.config.variables : [] as any as T;\n\n this.config.variables.forEach((variable) => {\n this.VARIABLES.set(\n A_FormatterHelper.toUpperSnakeCase(variable),\n this.config.defaults[variable]\n );\n });\n }\n\n\n /** \n * This method is used to get the configuration property by name\n * \n * @param property \n * @returns \n */\n get<_OutType = any>(\n property: T[number] | typeof this.DEFAULT_ALLOWED_TO_READ_PROPERTIES[number]\n ): _OutType {\n if (this.CONFIG_PROPERTIES.includes(property as any)\n || this.DEFAULT_ALLOWED_TO_READ_PROPERTIES.includes(property as any)\n || !(this.config.strict)\n )\n return this.VARIABLES.get(A_FormatterHelper.toUpperSnakeCase(property)) as _OutType;\n\n throw new Error('Property not exists or not allowed to read') as never;\n // return this.concept.Errors.throw(A_SDK_CONSTANTS__ERROR_CODES.CONFIGURATION_PROPERTY_NOT_EXISTS_OR_NOT_ALLOWED_TO_READ) as never;\n }\n\n\n\n /**\n * \n * This method is used to set the configuration property by name\n * OR set multiple properties at once by passing an array of objects\n * \n * @param variables \n */\n set(\n variables: Array<{\n property: T[number] | A_TYPES__ConceptENVVariables[number],\n value: any\n }>\n )\n set(\n variables: Partial<Record<T[number] | A_TYPES__ConceptENVVariables[number], any>>\n )\n set(\n property: T[number] | A_TYPES__ConceptENVVariables[number],\n value: any\n )\n set(\n property: T[number] | A_TYPES__ConceptENVVariables[number] | Array<{\n property: T[number] | A_TYPES__ConceptENVVariables[number],\n value: any\n }> | Partial<Record<T[number] | A_TYPES__ConceptENVVariables[number], any>>,\n value?: any\n ) {\n const array = Array.isArray(property)\n ? property\n : typeof property === 'string'\n ? [{ property, value }]\n : Object\n .keys(property)\n .map((key) => ({\n property: key,\n value: property[key]\n }));\n\n for (const { property, value } of array) {\n\n let targetValue = value\n ? value\n : this.config?.defaults\n ? this.config.defaults[property as T[number]]\n : undefined;\n\n this.VARIABLES.set(A_FormatterHelper.toUpperSnakeCase(property), targetValue);\n }\n }\n}","import { A_Component, A_Error, A_Inject, A_Scope } from \"@adaas/a-concept\";\nimport { A_Config } from \"../A-Config/A-Config.context\";\n\n\n\nexport class A_Logger extends A_Component {\n\n protected config?: A_Config<any>\n\n constructor(\n @A_Inject(A_Scope) protected scope: A_Scope,\n ) {\n super();\n\n this.config = this.scope.has(A_Config)\n ? this.scope.resolve<A_Config<any>>(A_Config)\n : undefined;\n }\n\n readonly colors = {\n green: '32',\n blue: '34',\n red: '31',\n yellow: '33',\n gray: '90',\n magenta: '35',\n cyan: '36',\n white: '37',\n pink: '95',\n } as const\n\n\n get scopeLength() {\n return this.scope.name.length;\n }\n\n\n compile(\n color: keyof typeof this.colors,\n ...args: any[]\n ): Array<string> {\n\n return [\n `\\x1b[${this.colors[color]}m[${this.scope.name}] |${this.getTime()}|`,\n (\n args.length > 1\n ? '\\n' + `${' '.repeat(this.scopeLength + 3)}|-------------------------------`\n : ''\n\n ),\n ...(args\n .map((arg, i) => {\n\n\n switch (true) {\n case arg instanceof A_Error:\n return this.compile_A_Error(arg);\n\n case arg instanceof Error:\n return this.compile_Error(arg);\n\n case typeof arg === 'object':\n return JSON.stringify(arg, null, 2)\n .replace(/\\n/g, '\\n' + `${' '.repeat(this.scopeLength + 3)}| `);\n\n default:\n return String(\n ((i > 0 || args.length > 1) ? '\\n' : '')\n + arg)\n .replace(/\\n/g, '\\n' + `${' '.repeat(this.scopeLength + 3)}| `)\n }\n })),\n (\n args.length > 1\n ? '\\n' + `${' '.repeat(this.scopeLength + 3)}|-------------------------------\\x1b[0m`\n : '\\x1b[0m'\n )\n ]\n }\n\n protected get allowedToLog() {\n return this.config\n ? this.config.get('CONFIG_VERBOSE') !== undefined\n && this.config.get('CONFIG_VERBOSE') !== 'false'\n && this.config.get('CONFIG_VERBOSE') !== false\n : true;\n }\n\n\n log(\n color: keyof typeof this.colors,\n ...args: any[]\n )\n log(\n ...args: any[]\n )\n log(\n param1: any,\n ...args: any[]\n ) {\n if (!this.allowedToLog)\n return;\n\n if (typeof param1 === 'string' && this.colors[param1]) {\n console.log(...this.compile(param1 as keyof typeof this.colors, ...args));\n return;\n }\n else {\n console.log(...this.compile('blue', param1, ...args));\n }\n }\n\n warning(...args) {\n if (!this.allowedToLog)\n return;\n\n console.log(...this.compile('yellow', ...args));\n }\n\n error(...args) {\n if (this.config && this.config.get('CONFIG_IGNORE_ERRORS'))\n return;\n\n return console.log(...this.compile('red', ...args));\n }\n\n\n protected log_A_Error(error: A_Error) {\n const time = this.getTime();\n\n console.log(`\\x1b[31m[${this.scope.name}] |${time}| ERROR ${error.code}\n${' '.repeat(this.scopeLength + 3)}| ${error.message}\n${' '.repeat(this.scopeLength + 3)}| ${error.description} \n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n\\x1b[0m`\n + (error.originalError ? `\\x1b[31m${' '.repeat(this.scopeLength + 3)}| Wrapped From ${error.originalError.message}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.originalError.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n\\x1b[0m`: '')\n + (error.link ? `\\x1b[31m${' '.repeat(this.scopeLength + 3)}| Read in docs: ${error.link}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n\\x1b[0m`: ''));\n\n }\n\n protected compile_A_Error(error: A_Error): string {\n const time = this.getTime();\n\n return '\\n' +\n\n `${' '.repeat(this.scopeLength + 3)}|-------------------------------` +\n '\\n' +\n `${' '.repeat(this.scopeLength + 3)}| Error: | ${error.code}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}|${' '.repeat(10)}| ${error.message}\n${' '.repeat(this.scopeLength + 3)}|${' '.repeat(10)}| ${error.description} \n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------`\n +\n (error.originalError ? `${' '.repeat(this.scopeLength + 3)}| Wrapped From ${error.originalError.message}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------\n${' '.repeat(this.scopeLength + 3)}| ${error.originalError.stack?.split('\\n').map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`).join('\\n') || 'No stack trace'}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------` : '')\n +\n (error.link ? `${' '.repeat(this.scopeLength + 3)}| Read in docs: ${error.link}\n${' '.repeat(this.scopeLength + 3)}|-------------------------------` : '');\n\n }\n\n\n protected compile_Error(error: Error): string {\n return JSON.stringify({\n name: error.name,\n message: error.message,\n stack: error.stack?.split('\\n')\n .map((line, index) => index === 0 ? line : `${' '.repeat(this.scopeLength + 3)}| ${line}`)\n .join('\\n')\n\n }, null, 2)\n .replace(/\\n/g, '\\n' + `${' '.repeat(this.scopeLength + 3)}| `)\n .replace(/\\\\n/g, '\\n')\n }\n\n\n\n protected getTime() {\n const now = new Date();\n const minutes = String(now.getMinutes()).padStart(2, '0');\n const seconds = String(now.getSeconds()).padStart(2, '0');\n const milliseconds = String(now.getMilliseconds()).padStart(4, '0');\n return `${minutes}:${seconds}:${milliseconds}`;\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { Ifspolyfill } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_FSPolyfillClass {\n private _fs!: Ifspolyfill;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n\n async get(): Promise<Ifspolyfill> {\n if (!this._initialized) {\n await this.init();\n }\n return this._fs;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment=== 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n this._fs = await import('fs') as Ifspolyfill;\n }\n\n private initBrowser(): void {\n this._fs = {\n readFileSync: (path: string, encoding: string) => {\n this.logger.warning('fs.readFileSync not available in browser environment');\n return '';\n },\n existsSync: (path: string) => {\n this.logger.warning('fs.existsSync not available in browser environment');\n return false;\n },\n createReadStream: (path: string) => {\n this.logger.warning('fs.createReadStream not available in browser environment');\n return null;\n }\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IcryptoInterface, Ifspolyfill } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_CryptoPolyfillClass {\n private _crypto!: IcryptoInterface;\n private _initialized: boolean = false;\n private _fsPolyfill?: Ifspolyfill;\n\n constructor(\n protected logger: A_Logger\n ) {\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n async get(fsPolyfill?: Ifspolyfill): Promise<IcryptoInterface> {\n if (!this._initialized) {\n this._fsPolyfill = fsPolyfill;\n await this.init();\n }\n return this._crypto;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const crypto = await import('crypto');\n this._crypto = {\n createTextHash: (text: string, algorithm: string = 'sha384') => Promise.resolve(\n `${algorithm}-${crypto.createHash(algorithm).update(text).digest('base64')}`\n ),\n createFileHash: (filePath: string, algorithm: string = 'sha384') => new Promise(async (resolve, reject) => {\n try {\n if (!this._fsPolyfill) {\n throw new Error('FS polyfill is required for file hashing');\n }\n const hash = crypto.createHash(algorithm);\n const fileStream = this._fsPolyfill.createReadStream(filePath);\n fileStream.on('data', (data: any) => hash.update(data));\n fileStream.on('end', () => resolve(`${algorithm}-${hash.digest('base64')}`));\n fileStream.on('error', (err: any) => reject(err));\n } catch (error) {\n reject(error);\n }\n })\n };\n }\n\n private initBrowser(): void {\n this._crypto = {\n createFileHash: () => {\n this.logger.warning('File hash not available in browser environment');\n return Promise.resolve('');\n },\n createTextHash: (text: string, algorithm: string = 'SHA-384') => new Promise<string>(async (resolve, reject) => {\n try {\n if (!crypto.subtle) {\n throw new Error('SubtleCrypto not available');\n }\n const encoder = new TextEncoder();\n const data = encoder.encode(text);\n const hashBuffer = await crypto.subtle.digest(algorithm, data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashBase64 = btoa(String.fromCharCode(...hashArray));\n resolve(`${algorithm}-${hashBase64}`);\n } catch (error) {\n reject(error);\n }\n })\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IhttpInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_HttpPolyfillClass {\n private _http!: IhttpInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n async get(): Promise<IhttpInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._http;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const httpModule = await import('http');\n this._http = {\n request: httpModule.request,\n get: httpModule.get,\n createServer: httpModule.createServer\n };\n }\n\n private initBrowser(): void {\n this._http = {\n request: (options: any, callback?: (res: any) => void) => {\n this.logger.warning('http.request not available in browser/test environment, use fetch instead');\n return this.createMockRequest(options, callback, false);\n },\n get: (url: string | any, callback?: (res: any) => void) => {\n this.logger.warning('http.get not available in browser/test environment, use fetch instead');\n return this.createMockRequest(typeof url === 'string' ? { hostname: url } : url, callback, false);\n },\n createServer: () => {\n this.logger.error('http.createServer not available in browser/test environment');\n return null;\n }\n };\n }\n\n private createMockRequest(options: any, callback?: (res: any) => void, isHttps: boolean = false) {\n // Return a mock request that doesn't make real network calls\n const request = {\n end: () => {\n // Mock response for all environments\n if (callback) {\n const mockResponse = {\n statusCode: 200,\n headers: {},\n on: (event: string, handler: Function) => {\n if (event === 'data') {\n setTimeout(() => handler('mock data'), 0);\n } else if (event === 'end') {\n setTimeout(() => handler(), 0);\n }\n },\n pipe: (dest: any) => {\n if (dest.write) dest.write('mock data');\n if (dest.end) dest.end();\n }\n };\n setTimeout(() => callback(mockResponse), 0);\n }\n },\n write: (data: any) => {\n // Mock write\n },\n on: (event: string, handler: Function) => {\n // Mock event handling\n }\n };\n\n return request;\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IhttpsInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_HttpsPolyfillClass {\n private _https!: IhttpsInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n async get(): Promise<IhttpsInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._https;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const httpsModule = await import('https');\n this._https = {\n request: httpsModule.request,\n get: httpsModule.get,\n createServer: httpsModule.createServer\n };\n }\n\n private initBrowser(): void {\n this._https = {\n request: (options: any, callback?: (res: any) => void) => {\n this.logger.warning('https.request not available in browser/test environment, use fetch instead');\n return this.createMockRequest(options, callback, true);\n },\n get: (url: string | any, callback?: (res: any) => void) => {\n this.logger.warning('https.get not available in browser/test environment, use fetch instead');\n return this.createMockRequest(typeof url === 'string' ? { hostname: url } : url, callback, true);\n },\n createServer: () => {\n this.logger.error('https.createServer not available in browser/test environment');\n return null;\n }\n };\n }\n\n private createMockRequest(options: any, callback?: (res: any) => void, isHttps: boolean = true) {\n // Return a mock request that doesn't make real network calls\n const request = {\n end: () => {\n // Mock response for all environments\n if (callback) {\n const mockResponse = {\n statusCode: 200,\n headers: {},\n on: (event: string, handler: Function) => {\n if (event === 'data') {\n setTimeout(() => handler('mock data'), 0);\n } else if (event === 'end') {\n setTimeout(() => handler(), 0);\n }\n },\n pipe: (dest: any) => {\n if (dest.write) dest.write('mock data');\n if (dest.end) dest.end();\n }\n };\n setTimeout(() => callback(mockResponse), 0);\n }\n },\n write: (data: any) => {\n // Mock write\n },\n on: (event: string, handler: Function) => {\n // Mock event handling\n }\n };\n\n return request;\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IpathInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_PathPolyfillClass {\n private _path!: IpathInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n\n async get(): Promise<IpathInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._path;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n this._path = await import('path') as IpathInterface;\n }\n\n private initBrowser(): void {\n this._path = {\n join: (...paths: string[]) => {\n return paths.join('/').replace(/\\/+/g, '/');\n },\n resolve: (...paths: string[]) => {\n let resolvedPath = '';\n for (const path of paths) {\n if (path.startsWith('/')) {\n resolvedPath = path;\n } else {\n resolvedPath = this._path.join(resolvedPath, path);\n }\n }\n return resolvedPath || '/';\n },\n dirname: (path: string) => {\n const parts = path.split('/');\n return parts.slice(0, -1).join('/') || '/';\n },\n basename: (path: string, ext?: string) => {\n const base = path.split('/').pop() || '';\n return ext && base.endsWith(ext) ? base.slice(0, -ext.length) : base;\n },\n extname: (path: string) => {\n const parts = path.split('.');\n return parts.length > 1 ? '.' + parts.pop() : '';\n },\n relative: (from: string, to: string) => {\n // Simplified relative path calculation\n return to.replace(from, '').replace(/^\\//, '');\n },\n normalize: (path: string) => {\n return path.replace(/\\/+/g, '/').replace(/\\/$/, '') || '/';\n },\n isAbsolute: (path: string) => {\n return path.startsWith('/') || /^[a-zA-Z]:/.test(path);\n },\n parse: (path: string) => {\n const ext = this._path.extname(path);\n const base = this._path.basename(path);\n const name = this._path.basename(path, ext);\n const dir = this._path.dirname(path);\n return { root: '/', dir, base, ext, name };\n },\n format: (pathObject: any) => {\n return this._path.join(pathObject.dir || '', pathObject.base || '');\n },\n sep: '/',\n delimiter: ':'\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IurlInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_UrlPolyfillClass {\n private _url!: IurlInterface;\n private _initialized: boolean = false;\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n async get(): Promise<IurlInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._url;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const urlModule = await import('url');\n this._url = {\n parse: urlModule.parse,\n format: urlModule.format,\n resolve: urlModule.resolve,\n URL: (urlModule.URL || globalThis.URL) as any,\n URLSearchParams: (urlModule.URLSearchParams || globalThis.URLSearchParams) as any\n };\n }\n\n private initBrowser(): void {\n this._url = {\n parse: (urlString: string) => {\n try {\n const url = new URL(urlString);\n return {\n protocol: url.protocol,\n hostname: url.hostname,\n port: url.port,\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n host: url.host,\n href: url.href\n };\n } catch {\n return {};\n }\n },\n format: (urlObject: any) => {\n try {\n return new URL('', urlObject.href || `${urlObject.protocol}//${urlObject.host}${urlObject.pathname}${urlObject.search}${urlObject.hash}`).href;\n } catch {\n return '';\n }\n },\n resolve: (from: string, to: string) => {\n try {\n return new URL(to, from).href;\n } catch {\n return to;\n }\n },\n URL: globalThis.URL,\n URLSearchParams: globalThis.URLSearchParams\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IbufferInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_BufferPolyfillClass {\n private _buffer!: IbufferInterface;\n private _initialized: boolean = false;\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n\n async get(): Promise<IbufferInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._buffer;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n await this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private async initServer(): Promise<void> {\n const bufferModule = await import('buffer');\n this._buffer = {\n from: bufferModule.Buffer.from,\n alloc: bufferModule.Buffer.alloc,\n allocUnsafe: bufferModule.Buffer.allocUnsafe,\n isBuffer: bufferModule.Buffer.isBuffer,\n concat: bufferModule.Buffer.concat\n };\n }\n\n private initBrowser(): void {\n this._buffer = {\n from: (data: any, encoding?: string) => {\n if (typeof data === 'string') {\n return new TextEncoder().encode(data);\n }\n return new Uint8Array(data);\n },\n alloc: (size: number, fill?: any) => {\n const buffer = new Uint8Array(size);\n if (fill !== undefined) {\n buffer.fill(fill);\n }\n return buffer;\n },\n allocUnsafe: (size: number) => {\n return new Uint8Array(size);\n },\n isBuffer: (obj: any) => {\n return obj instanceof Uint8Array || obj instanceof ArrayBuffer;\n },\n concat: (list: any[], totalLength?: number) => {\n const length = totalLength || list.reduce((sum, buf) => sum + buf.length, 0);\n const result = new Uint8Array(length);\n let offset = 0;\n for (const buf of list) {\n result.set(buf, offset);\n offset += buf.length;\n }\n return result;\n }\n };\n }\n}","import { A_Context } from \"@adaas/a-concept\";\nimport { IprocessInterface } from \"../A-Polyfill.types\";\nimport { A_Logger } from \"../../A-Logger/A-Logger.component\";\n\nexport class A_ProcessPolyfillClass {\n private _process!: IprocessInterface;\n private _initialized: boolean = false;\n\n get isInitialized(): boolean {\n return this._initialized;\n }\n\n constructor(\n protected logger: A_Logger\n ) {\n\n }\n\n async get(): Promise<IprocessInterface> {\n if (!this._initialized) {\n await this.init();\n }\n return this._process;\n }\n\n private async init(): Promise<void> {\n try {\n if (A_Context.environment === 'server') {\n this.initServer();\n } else {\n this.initBrowser();\n }\n this._initialized = true;\n } catch (error) {\n this.initBrowser();\n this._initialized = true;\n }\n }\n\n private initServer(): void {\n this._process = {\n env: process.env as Record<string, string>,\n argv: process.argv,\n platform: process.platform,\n version: process.version,\n versions: process.versions as Record<string, string>,\n cwd: process.cwd,\n exit: process.exit,\n nextTick: process.nextTick\n };\n }\n\n private initBrowser(): void {\n this._process = {\n env: {\n NODE_ENV: 'browser',\n ...((globalThis as any).process?.env || {})\n },\n argv: ['browser'],\n platform: 'browser',\n version: 'browser',\n versions: { node: 'browser' },\n cwd: () => '/',\n exit: (code?: number) => {\n this.logger.warning('process.exit not available in browser');\n throw new Error(`Process exit with code ${code}`);\n },\n nextTick: (callback: Function, ...args: any[]) => {\n setTimeout(() => callback(...args), 0);\n }\n };\n }\n}","import { A_Component, A_Concept, A_Context, A_Inject } from \"@adaas/a-concept\";\nimport { A_Logger } from \"../A-Logger/A-Logger.component\";\nimport { A_FSPolyfillClass } from \"./classes/A-FS-Polyfill.class\";\nimport { A_CryptoPolyfillClass } from \"./classes/A-Crypto-Polyfill.class\";\nimport { A_HttpPolyfillClass } from \"./classes/A-Http-Polyfill.class\";\nimport { A_HttpsPolyfillClass } from \"./classes/A-Https-Polyfill.class\";\nimport { A_PathPolyfillClass } from \"./classes/A-Path-Polyfill.class\";\nimport { A_UrlPolyfillClass } from \"./classes/A-Url-Polyfill.class\";\nimport { A_BufferPolyfillClass } from \"./classes/A-Buffer-Polyfill.class\";\nimport { A_ProcessPolyfillClass } from \"./classes/A-Process-Polyfill.class\";\n\nexport class A_Polyfill extends A_Component {\n\n protected _fsPolyfill!: A_FSPolyfillClass;\n protected _cryptoPolyfill!: A_CryptoPolyfillClass;\n protected _httpPolyfill!: A_HttpPolyfillClass;\n protected _httpsPolyfill!: A_HttpsPolyfillClass;\n protected _pathPolyfill!: A_PathPolyfillClass;\n protected _urlPolyfill!: A_UrlPolyfillClass;\n protected _bufferPolyfill!: A_BufferPolyfillClass;\n protected _processPolyfill!: A_ProcessPolyfillClass;\n\n protected _initializing: Promise<void> | null = null;\n /**\n * Indicates whether the channel is connected\n */\n protected _initialized?: Promise<void>;\n\n\n constructor(\n @A_Inject(A_Logger) protected logger: A_Logger\n ) {\n super();\n }\n\n /**\n * Indicates whether the channel is connected\n */\n get ready(): Promise<void> {\n if (!this._initialized) {\n this._initialized = this._loadInternal();\n }\n return this._initialized;\n }\n\n\n\n @A_Concept.Load()\n async load() {\n await this.ready;\n }\n\n @A_Concept.Load()\n async attachToWindow() {\n if (A_Context.environment !== 'browser') return;\n\n\n (globalThis as any).A_Polyfill = this;\n // attach env variables\n (globalThis as any).process = { env: { NODE_ENV: 'production' }, cwd: () => \"/\" };\n (globalThis as any).__dirname = \"/\";\n\n }\n\n\n protected async _loadInternal() {\n\n this._fsPolyfill = new A_FSPolyfillClass(this.logger);\n this._cryptoPolyfill = new A_CryptoPolyfillClass(this.logger);\n this._httpPolyfill = new A_HttpPolyfillClass(this.logger);\n this._httpsPolyfill = new A_HttpsPolyfillClass(this.logger);\n this._pathPolyfill = new A_PathPolyfillClass(this.logger);\n this._urlPolyfill = new A_UrlPolyfillClass(this.logger);\n this._bufferPolyfill = new A_BufferPolyfillClass(this.logger);\n this._processPolyfill = new A_ProcessPolyfillClass(this.logger);\n\n // Initialize all polyfills to ensure they're ready\n await this._fsPolyfill.get();\n await this._cryptoPolyfill.get(await this._fsPolyfill.get());\n await this._httpPolyfill.get();\n await this._httpsPolyfill.get();\n await this._pathPolyfill.get();\n await this._urlPolyfill.get();\n await this._bufferPolyfill.get();\n await this._processPolyfill.get();\n }\n\n /**\n * Allows to use the 'fs' polyfill methods regardless of the environment\n * This method loads the 'fs' polyfill and returns its instance\n * \n * @returns \n */\n async fs() {\n await this.ready;\n\n return await this._fsPolyfill.get();\n }\n\n /**\n * Allows to use the 'crypto' polyfill methods regardless of the environment\n * This method loads the 'crypto' polyfill and returns its instance\n * \n * @returns \n */\n async crypto() {\n await this.ready;\n\n return await this._cryptoPolyfill.get();\n }\n\n /**\n * Allows to use the 'http' polyfill methods regardless of the environment\n * This method loads the 'http' polyfill and returns its instance\n * \n * @returns \n */\n async http() {\n await this.ready;\n\n return await this._httpPolyfill.get();\n }\n\n /**\n * Allows to use the 'https' polyfill methods regardless of the environment\n * This method loads the 'https' polyfill and returns its instance\n * \n * @returns \n */\n async https() {\n await this.ready;\n\n return await this._httpsPolyfill.get();\n }\n\n /**\n * Allows to use the 'path' polyfill methods regardless of the environment\n * This method loads the 'path' polyfill and returns its instance\n * \n * @returns \n */\n async path() {\n await this.ready;\n\n return await this._pathPolyfill.get();\n }\n\n /**\n * Allows to use the 'url' polyfill methods regardless of the environment\n * This method loads the 'url' polyfill and returns its instance\n * \n * @returns \n */\n async url() {\n await this.ready;\n\n return await this._urlPolyfill.get();\n }\n\n /**\n * Allows to use the 'buffer' polyfill methods regardless of the environment\n * This method loads the 'buffer' polyfill and returns its instance\n * \n * @returns \n */\n async buffer() {\n await this.ready;\n\n return await this._bufferPolyfill.get();\n }\n\n /**\n * Allows to use the 'process' polyfill methods regardless of the environment\n * This method loads the 'process' polyfill and returns its instance\n * \n * @returns \n */\n async process() {\n await this.ready;\n\n return await this._processPolyfill.get();\n }\n}","import { A_Error } from \"@adaas/a-concept\";\n\n\nexport class A_ConfigError extends A_Error {\n\n static readonly InitializationError = 'A-Config Initialization Error';\n}","import { A_Component, A_Concept, A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY, A_Container, A_Feature, A_Inject } from \"@adaas/a-concept\";\nimport { A_Config } from \"../A-Config.context\";\nimport { A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY } from \"../A-Config.constants\";\nimport { A_Polyfill } from \"../../A-Polyfill/A-Polyfill.component\";\n\n/**\n * Config Reader\n */\nexport class ConfigReader extends A_Component {\n\n constructor(\n @A_Inject(A_Polyfill) protected polyfill: A_Polyfill,\n ) {\n super();\n }\n\n @A_Concept.Load()\n async attachContext(\n @A_Inject(A_Container) container: A_Container,\n @A_Inject(A_Feature) feature: A_Feature,\n ) {\n if (!container.scope.has(A_Config)) {\n const newConfig = new A_Config({\n variables: [\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ] as const,\n defaults: {}\n });\n\n container.scope.register(newConfig);\n }\n\n\n const config = container.scope.resolve<A_Config>(A_Config);\n\n const rootDir = await this.getProjectRoot();\n\n config.set('A_CONCEPT_ROOT_FOLDER', rootDir);\n }\n\n @A_Concept.Load()\n async initialize(\n @A_Inject(A_Config) config: A_Config,\n ) {\n const data = await this.read([\n ...config.CONFIG_PROPERTIES,\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ]);\n\n config.set(data);\n }\n\n\n\n /**\n * Get the configuration property by Name\n * @param property \n */\n resolve<_ReturnType = any>(property: string): _ReturnType {\n return property as _ReturnType;\n }\n\n /**\n * This method reads the configuration and sets the values to the context\n * \n * @returns \n */\n async read<T extends string>(\n variables: Array<T> = []\n ): Promise<Record<T, any>> {\n return {} as Record<T, any>;\n }\n\n\n /**\n * Finds the root directory of the project by locating the folder containing package.json\n * \n * @param {string} startPath - The initial directory to start searching from (default is __dirname)\n * @returns {string|null} - The path to the root directory or null if package.json is not found\n */\n protected async getProjectRoot(startPath = __dirname) {\n return process.cwd();\n }\n}","import { A_Context, A_FormatterHelper } from \"@adaas/a-concept\";\nimport { ConfigReader } from \"./ConfigReader.component\";\n\nexport class FileConfigReader extends ConfigReader {\n\n private FileData: Map<string, any> = new Map<string, any>();\n\n /**\n * Get the configuration property Name\n * @param property \n */\n getConfigurationProperty_File_Alias(property: string): string {\n return A_FormatterHelper.toCamelCase(property);\n }\n\n\n resolve<_ReturnType = any>(property: string): _ReturnType {\n return this.FileData.get(this.getConfigurationProperty_File_Alias(property)) as _ReturnType;\n }\n\n\n async read<T extends string>(\n variables?: Array<T>\n ): Promise<Record<T, any>> {\n\n const fs = await this.polyfill.fs();\n\n try {\n const data = fs.readFileSync(`${A_Context.concept}.conf.json`, 'utf8');\n\n const config: Record<T, any> = JSON.parse(data);\n\n this.FileData = new Map(Object.entries(config));\n\n return config;\n\n } catch (error) {\n // this.context.Logger.error(error);\n return {} as Record<T, any>;\n }\n }\n}\n","import { A_Concept, A_Feature, A_FormatterHelper, A_Inject, A_TYPES__ConceptENVVariables } from \"@adaas/a-concept\";\nimport { ConfigReader } from \"./ConfigReader.component\";\nimport { A_Config } from \"../A-Config.context\";\nimport { A_Polyfill } from \"../../A-Polyfill/A-Polyfill.component\";\n\n\nexport class ENVConfigReader extends ConfigReader {\n\n\n @A_Concept.Load({\n before: ['ENVConfigReader.initialize']\n })\n async readEnvFile(\n @A_Inject(A_Config) config: A_Config<A_TYPES__ConceptENVVariables>,\n @A_Inject(A_Polyfill) polyfill: A_Polyfill,\n @A_Inject(A_Feature) feature: A_Feature,\n\n ) {\n const fs = await polyfill.fs();\n\n if (fs.existsSync('.env'))\n fs.readFileSync(`${config.get('A_CONCEPT_ROOT_FOLDER')}/.env`, 'utf-8').split('\\n').forEach(line => {\n const [key, value] = line.split('=');\n if (key && value) {\n process.env[key.trim()] = value.trim();\n }\n });\n }\n\n\n /**\n * Get the configuration property Name \n * @param property \n */\n getConfigurationProperty_ENV_Alias(property: string): string {\n return A_FormatterHelper.toUpperSnakeCase(property);\n }\n\n\n resolve<_ReturnType = any>(property: string): _ReturnType {\n return process.env[this.getConfigurationProperty_ENV_Alias(property)] as _ReturnType;\n }\n\n\n async read<T extends string>(variables: Array<T> = []): Promise<Record<T, any>> {\n const allVariables = [\n ...variables,\n ...Object.keys(process.env),\n ]\n\n const config: Record<T, any> = {} as Record<T, any>;\n\n allVariables.forEach(variable => {\n config[variable] = this.resolve(variable);\n });\n\n return config;\n }\n} ","import { A_Caller, A_Concept, A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY, A_Container, A_Context, A_Inject, A_Scope, A_ScopeError } from \"@adaas/a-concept\";\nimport { ConfigReader } from \"./components/ConfigReader.component\";\nimport { A_Config } from \"./A-Config.context\";\nimport { A_Polyfill } from \"../A-Polyfill/A-Polyfill.component\";\nimport { A_ConfigError } from \"./A-Config.error\";\nimport { FileConfigReader } from \"./components/FileConfigReader.component\";\nimport { ENVConfigReader } from \"./components/ENVConfigReader.component\";\nimport { A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY } from \"./A-Config.constants\";\n\n\nexport class A_ConfigLoader extends A_Container {\n\n private reader!: ConfigReader\n\n\n @A_Concept.Load({\n before: /.*/\n })\n async prepare(\n @A_Inject(A_Polyfill) polyfill: A_Polyfill\n ) {\n if (!this.scope.has(A_Config)) {\n const newConfig = new A_Config({\n variables: [\n ...A_CONSTANTS__DEFAULT_ENV_VARIABLES_ARRAY,\n ...A_CONSTANTS__CONFIG_ENV_VARIABLES_ARRAY\n ] as const,\n defaults: {}\n });\n\n this.scope.register(newConfig);\n }\n\n\n const fs = await polyfill.fs();\n\n try {\n switch (true) {\n\n case A_Context.environment === 'server' && !!fs.existsSync(`${A_Context.concept}.conf.json`):\n this.reader = this.scope.resolve<ConfigReader>(FileConfigReader);\n break;\n\n case A_Context.environment === 'server' && !fs.existsSync(`${A_Context.concept}.conf.json`):\n this.reader = this.scope.resolve<ConfigReader>(ENVConfigReader);\n break;\n\n case A_Context.environment === 'browser':\n this.reader = this.scope.resolve<ConfigReader>(ENVConfigReader);\n break;\n\n default:\n throw new A_ConfigError(\n A_ConfigError.InitializationError,\n `Environment ${A_Context.environment} is not supported`\n );\n }\n } catch (error) {\n if (error instanceof A_ScopeError) {\n throw new A_ConfigError({\n title: A_ConfigError.InitializationError,\n description: `Failed to initialize A_ConfigLoader. Reader not found for environment ${A_Context.environment}`,\n originalError: error,\n })\n }\n }\n }\n}","import { A_TYPES__ConceptENVVariables, A_TYPES__Fragment_Constructor } from \"@adaas/a-concept\";\n\nexport enum A_TYPES__ConfigFeature {\n\n}\n\n\nexport type A_TYPES__ConfigContainerConstructor<T extends Array<string | A_TYPES__ConceptENVVariables[number]>> = {\n\n /**\n * If set to true, the SDK will throw an error if the variable is not defined OR not presented in the defaults\n */\n strict: boolean\n\n /**\n * Allows to define the names of variable to be loaded\n */\n variables: T\n\n /**\n * Allows to set the default values for the variables\n */\n defaults: {\n [key in T[number]]?: any\n }\n} & A_TYPES__Fragment_Constructor;\n","import { A_Error } from \"@adaas/a-concept\";\n\nexport class A_ManifestError extends A_Error {\n\n static readonly ManifestInitializationError = 'A-Manifest Initialization Error';\n\n}\n","import { A_TYPES__Component_Constructor } from \"@adaas/a-concept\";\nimport { A_Manifest } from \"../A-Manifest.context\";\nimport { A_UTILS_TYPES__Manifest_AllowedComponents } from \"../A-Manifest.types\";\n\n/**\n * Fluent API for checking manifest permissions\n */\nexport class A_ManifestChecker {\n constructor(\n private manifest: A_Manifest,\n private component: A_TYPES__Component_Constructor,\n private method: string,\n private checkExclusion: boolean = false\n ) {}\n\n for(target: A_UTILS_TYPES__Manifest_AllowedComponents): boolean {\n const result = this.manifest.internal_checkAccess({\n component: this.component,\n method: this.method,\n target: target\n });\n\n return this.checkExclusion ? !result : result;\n }\n}","import { A_Component, A_Fragment, A_TypeGuards, A_TYPES__Component_Constructor } from \"@adaas/a-concept\";\nimport { A_UTILS_TYPES__Manifest_Init, A_UTILS_TYPES__Manifest_ComponentLevelConfig, A_UTILS_TYPES__Manifest_AllowedComponents, A_UTILS_TYPES__ManifestRule, A_UTILS_TYPES__ManifestQuery } from \"./A-Manifest.types\";\nimport { A_ManifestError } from \"./A-Manifest.error\";\nimport { A_ManifestChecker } from \"./classes/A-ManifestChecker.class\";\n\n\n\n\n\nexport class A_Manifest extends A_Fragment {\n\n private rules: A_UTILS_TYPES__ManifestRule[] = [];\n\n /**\n * A-Manifest is a configuration set that allows to include or exclude component application for the particular methods.\n *\n * For example, if A-Scope provides polymorphic A-Component that applies for All A-Entities in it but you have another component that should be used for only One particular Entity, you can use A-Manifest to specify this behavior.\n * \n * \n * By default if Component is provided in the scope - it applies for all entities in it. However, if you want to exclude some entities or include only some entities for the particular component - you can use A-Manifest to define this behavior.\n * \n * @param config - Array of component configurations\n */\n constructor(config: A_UTILS_TYPES__Manifest_Init = []) {\n super({\n name: 'A-Manifest',\n });\n\n this.prepare(config);\n }\n\n\n /**\n * Should convert received configuration into internal Regexp applicable for internal storage\n */\n protected prepare(config: A_UTILS_TYPES__Manifest_Init) {\n if (!A_TypeGuards.isArray(config))\n throw new A_ManifestError(\n A_ManifestError.ManifestInitializationError,\n `A-Manifest configuration should be an array of configurations`\n );\n\n for (const item of config) {\n this.processConfigItem(item);\n }\n }\n\n /**\n * Process a single configuration item and convert it to internal rules\n */\n private processConfigItem(item: A_UTILS_TYPES__Manifest_ComponentLevelConfig) {\n if (!A_TypeGuards.isComponentConstructor(item.component))\n throw new A_ManifestError(\n A_ManifestError.ManifestInitializationError,\n `A-Manifest configuration item should be a A-Component constructor`\n );\n\n const componentRegex = this.constructorToRegex(item.component);\n\n // Always add component-level rule first (applies to all methods)\n if (item.apply || item.exclude) {\n const methodRegex = /.*/; // Match all methods\n\n this.rules.push({\n componentRegex,\n methodRegex,\n applyRegex: item.apply ? this.allowedComponentsToRegex(item.apply) : undefined,\n excludeRegex: item.exclude ? this.allowedComponentsToRegex(item.exclude) : undefined,\n });\n }\n\n // Then add method-level configurations (these will override component-level)\n if (item.methods && item.methods.length > 0) {\n for (const methodConfig of item.methods) {\n const methodRegex = this.methodToRegex(methodConfig.method);\n\n this.rules.push({\n componentRegex,\n methodRegex,\n applyRegex: methodConfig.apply ? this.allowedComponentsToRegex(methodConfig.apply) : undefined,\n excludeRegex: methodConfig.exclude ? this.allowedComponentsToRegex(methodConfig.exclude) : undefined,\n });\n }\n }\n }\n\n\n\n /**\n * Convert a constructor to a regex pattern\n */\n private constructorToRegex(ctor: A_TYPES__Component_Constructor): RegExp {\n return new RegExp(`^${this.escapeRegex(ctor.name)}$`);\n }\n\n /**\n * Convert a method name or regex to a regex pattern\n */\n private methodToRegex(method: string | RegExp): RegExp {\n if (method instanceof RegExp) {\n return method;\n }\n return new RegExp(`^${this.escapeRegex(method as string)}$`);\n }\n\n /**\n * Convert allowed components array or regex to a single regex\n */\n private allowedComponentsToRegex(components: A_UTILS_TYPES__Manifest_AllowedComponents[] | RegExp): RegExp {\n if (components instanceof RegExp) {\n return components;\n }\n\n const patterns = components.map(ctor => this.escapeRegex(ctor.name));\n return new RegExp(`^(${patterns.join('|')})$`);\n }\n\n /**\n * Escape special regex characters in a string\n */\n private escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n protected configItemToRegexp(item: A_TYPES__Component_Constructor): RegExp {\n return this.constructorToRegex(item);\n }\n\n\n protected ID(component: A_TYPES__Component_Constructor, method: string) {\n return `${component.name}.${method}`;\n }\n\n /**\n * Check if a component and method combination is allowed for a target\n */\n isAllowed<T extends A_Component>(\n ctor: T | A_TYPES__Component_Constructor<T>,\n method: string\n ): A_ManifestChecker {\n const componentCtor = typeof ctor === 'function' ? ctor : ctor.constructor as A_TYPES__Component_Constructor;\n return new A_ManifestChecker(this, componentCtor, method);\n }\n\n /**\n * Internal method to check if access is allowed\n */\n internal_checkAccess(query: A_UTILS_TYPES__ManifestQuery): boolean {\n const componentName = query.component.name;\n const methodName = query.method;\n const targetName = query.target.name;\n\n // Find matching rules, sorted by specificity (method-specific rules first)\n const matchingRules = this.rules\n .filter(rule =>\n rule.componentRegex.test(componentName) &&\n rule.methodRegex.test(methodName)\n )\n .sort((a, b) => {\n // Method-specific rules (not .* pattern) should come before general rules\n const aIsGeneral = a.methodRegex.source === '.*';\n const bIsGeneral = b.methodRegex.source === '.*';\n\n if (aIsGeneral && !bIsGeneral) return 1; // b comes first\n if (!aIsGeneral && bIsGeneral) return -1; // a comes first\n return 0; // same priority\n });\n\n // If no rules match, allow by default\n if (matchingRules.length === 0) {\n return true;\n }\n\n // Process rules in order of specificity (most specific first)\n for (const rule of matchingRules) {\n // If this rule has an exclusion that matches, deny access\n if (rule.excludeRegex && rule.excludeRegex.test(targetName)) {\n return false;\n }\n\n // If this rule has an apply list, check if target is in it\n if (rule.applyRegex) {\n return rule.applyRegex.test(targetName);\n }\n }\n\n // If we have rules but no specific apply/exclude, allow by default\n return true;\n }\n\n isExcluded<T extends A_Component>(\n ctor: T | A_TYPES__Component_Constructor<T>,\n method: string\n ): A_ManifestChecker {\n const componentCtor = typeof ctor === 'function' ? ctor : ctor.constructor as A_TYPES__Component_Constructor;\n return new A_ManifestChecker(this, componentCtor, method, true);\n }\n}\n","export class A_Deferred<T> {\n public promise: Promise<T>;\n private resolveFn!: (value: T | PromiseLike<T>) => void;\n private rejectFn!: (reason?: any) => void;\n\n /**\n * Creates a deferred promise\n * @returns A promise that can be resolved or rejected later\n */\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolveFn = resolve;\n this.rejectFn = reject;\n });\n }\n\n resolve(value: T | PromiseLike<T>): void {\n this.resolveFn(value);\n }\n\n reject(reason?: any): void {\n this.rejectFn(reason);\n }\n}","import { A_Deferred } from \"./A-Deferred.class\";\nimport { A_Error } from \"@adaas/a-concept\";\nimport { A_UTILS_TYPES__ScheduleObjectCallback, A_UTILS_TYPES__ScheduleObjectConfig } from \"./A-Schedule.types\";\n\nexport class A_ScheduleObject<T extends any = any> {\n\n private timeout!: NodeJS.Timeout;\n private deferred!: A_Deferred<T>;\n\n private config: A_UTILS_TYPES__ScheduleObjectConfig = {\n /**\n * If the timeout is cleared, should the promise resolve or reject?\n * BY Default it rejects\n * \n * !!!NOTE: If the property is set to true, the promise will resolve with undefined\n */\n resolveOnClear: false\n };\n\n\n /**\n * Creates a scheduled object that will execute the action after specified milliseconds\n * \n * \n * @param ms - milliseconds to wait before executing the action\n * @param action - the action to execute\n * @param config - configuration options for the schedule object\n */\n constructor(\n /**\n * Milliseconds to wait before executing the action\n */\n ms: number,\n /**\n * The action to execute after the specified milliseconds\n */\n action: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ) {\n if (config)\n this.config = { ...this.config, ...config };\n\n this.deferred = new A_Deferred<T>();\n\n this.timeout = setTimeout(\n () => action()\n .then((...args) => this.deferred.resolve(...args))\n .catch((...args) => this.deferred.reject(...args)),\n ms\n );\n }\n\n get promise(): Promise<T> {\n return this.deferred.promise;\n }\n\n clear(): void {\n if (this.timeout) {\n clearTimeout(this.timeout);\n\n if (this.config.resolveOnClear)\n this.deferred.resolve(undefined as T);\n else\n this.deferred.reject(new A_Error(\"Timeout Cleared\"));\n }\n }\n}\n\n","import { A_Component, A_TypeGuards } from \"@adaas/a-concept\";\nimport { A_ScheduleObject } from \"./A-ScheduleObject.class\";\nimport { A_UTILS_TYPES__ScheduleObjectCallback, A_UTILS_TYPES__ScheduleObjectConfig } from \"./A-Schedule.types\";\n\n\n\nexport class A_Schedule extends A_Component {\n\n /**\n * Allows to schedule a callback for particular time in the future\n * \n * @param timestamp - Unix timestamp in milliseconds\n * @param callback - The callback to execute\n * @returns A promise that resolves to the schedule object\n */\n async schedule<T extends any = any>(\n /**\n * Unix timestamp in milliseconds\n */\n timestamp: number,\n /**\n * The callback to execute\n */\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>>\n async schedule<T extends any = any>(\n /**\n * ISO date string representing the date and time to schedule the callback for\n */\n date: string,\n /**\n * The callback to execute\n */\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>>\n async schedule<T extends any = any>(\n date: string | number,\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>> {\n\n const timestamp = A_TypeGuards.isString(date)\n ? (new Date(date)).getTime()\n : date;\n\n return new A_ScheduleObject<T>(\n timestamp - Date.now(),\n callback,\n config\n );\n }\n\n\n\n /**\n * Allows to execute callback after particular delay in milliseconds\n * So the callback will be executed after the specified delay\n * \n * @param ms \n */\n async delay<T extends any = any>(\n /**\n * Delay in milliseconds\n */\n ms: number,\n /**\n * The callback to execute after the delay\n */\n callback: A_UTILS_TYPES__ScheduleObjectCallback<T>,\n /**\n * Configuration options for the schedule object\n */\n config?: A_UTILS_TYPES__ScheduleObjectConfig\n ): Promise<A_ScheduleObject<T>> {\n return new A_ScheduleObject<T>(\n ms,\n callback,\n config\n );\n }\n}"]}
|