/*** * `ApplicationContext`: Utilizado para manipulação do contexto. * - Evitar uso da classe sem alinhamento com a arquitetura devido ao uso de variáveis globais. */ export default class ApplicationContext{ /** * Obtém informação específica do contexto. * * @param key - Chave do contexto desejada. * @returns - Informação do contexto desejado. */ public static getContextValue(key: string):any{ return ApplicationContext.getCtx()[key]; } /** * Aplica informação no contexto. * * @param key - Identificador do contexto. * @param value - Informação a ser inserida no contexto. */ public static setContextValue(key: string, value: any):any{ ApplicationContext.getCtx()[key] = value; } /** * Obtém o contexto global da aplicação sankhyacore. * - Esse contexto pode ser entendido como um ponto de coesão para atores que não se conhecem poderem trocar informação. Assim, o código x busca por um possível valor no contexto. Se essa informação estiver lá, ele reage de certa forma. O código Y, sabe dessa necessidade mas não consegue passar essa informação diretamente, então atribui o valor ao contexto. * @returns - Objeto com as propriedades da variável global ___snkcore___ctx___. */ private static getCtx():any{ let ctx = (window as any).___snkcore___ctx___; if(!ctx){ ctx = {}; (window as any).___snkcore___ctx___ = ctx; } return ctx; } }