@greatapps/common 1.1.263 → 1.1.266

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.
Files changed (26) hide show
  1. package/dist/components/layouts/WhitelabelCodes.mjs +50 -0
  2. package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -0
  3. package/dist/index.mjs +28 -26
  4. package/dist/index.mjs.map +1 -1
  5. package/dist/infra/api/client.mjs +50 -23
  6. package/dist/infra/api/client.mjs.map +1 -1
  7. package/dist/modules/auth/services/auth.service.mjs +0 -1
  8. package/dist/modules/auth/services/auth.service.mjs.map +1 -1
  9. package/dist/modules/whitelabel/services/whitelabel.service.mjs +5 -0
  10. package/dist/modules/whitelabel/services/whitelabel.service.mjs.map +1 -1
  11. package/package.json +1 -1
  12. package/src/components/layouts/WhitelabelCodes.tsx +59 -0
  13. package/src/index.ts +1 -0
  14. package/src/infra/api/client.ts +116 -53
  15. package/src/modules/auth/services/auth.service.ts +0 -2
  16. package/src/modules/whitelabel/schema.ts +1 -1
  17. package/src/modules/whitelabel/services/whitelabel.service.ts +5 -5
  18. package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs +0 -15
  19. package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs.map +0 -1
  20. package/dist/modules/whitelabel/actions/revalidate-whitelabel-styles.action.mjs +0 -12
  21. package/dist/modules/whitelabel/actions/revalidate-whitelabel-styles.action.mjs.map +0 -1
  22. package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs +0 -102
  23. package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs.map +0 -1
  24. package/src/modules/whitelabel/actions/find-whitelabel-styles.action.ts +0 -14
  25. package/src/modules/whitelabel/actions/revalidate-whitelabel-styles.action.ts +0 -10
  26. package/src/modules/whitelabel/services/whitelabel-styles.service.ts +0 -129
@@ -55,6 +55,11 @@ class WhitelabelService {
55
55
  hostname = process.env.WHITELABEL_DOMAIN || hostname;
56
56
  const cache = this.createCache();
57
57
  const cacheKey = this.getCacheKey(hostname);
58
+ const cachedData = await cache.select(cacheKey);
59
+ if (cachedData.status == 1 && "data" in cachedData && cachedData.data) {
60
+ console.log("[WhitelabelService] Cache hit for domain", { hostname });
61
+ return JSON.parse(cachedData.data);
62
+ }
58
63
  const data = await this.fetchFromApi(hostname);
59
64
  await cache.insert(cacheKey, JSON.stringify(data), 604800);
60
65
  return data;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/whitelabel/services/whitelabel.service.ts"],"sourcesContent":["\r\nimport greatCache from '@greatapps/cache';\r\nimport { ApiError } from '../../../infra/api/types';\r\nimport { WhitelabelTokenApiResponse, WhitelabelTokenData } from '../schema';\r\n\r\nclass WhitelabelService {\r\n private getApiUrl(): string {\r\n const apiUrl = process.env.GAPPS_R3_API_URL;\r\n if (!apiUrl) {\r\n throw new ApiError('GAPPS_R3_API_URL not configured', 'CONFIG_ERROR', 500);\r\n }\r\n return apiUrl;\r\n }\r\n\r\n private getToken(): string {\r\n const token = process.env.WHITELABEL_TOKEN_MASTER;\r\n if (!token) {\r\n throw new ApiError('WHITELABEL_TOKEN_MASTER not configured', 'CONFIG_ERROR', 500);\r\n }\r\n return token;\r\n }\r\n\r\n private createCache() {\r\n return new greatCache({\r\n service: 'whitelabel-service',\r\n version: '1.0',\r\n domain: 'whitelabel-cache.greatapps.com.br',\r\n ambient: process.env.NODE_ENV || 'development',\r\n });\r\n }\r\n\r\n private getCacheKey(hostname: string): string {\r\n return `whitelabel-token-${hostname}`;\r\n }\r\n\r\n private async fetchFromApi(hostname: string): Promise<WhitelabelTokenData> {\r\n const apiUrl = this.getApiUrl();\r\n const whitelabelMasterToken = this.getToken();\r\n const url = `${apiUrl}/v1/pt-br/1/whitelabel/${hostname}/token`;\r\n\r\n console.log('[WhitelabelService] Fetching token for domain', { url });\r\n\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n authorization: whitelabelMasterToken,\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('[WhitelabelService] Failed to fetch whitelabel token', { response });\r\n throw new ApiError(\r\n `Failed to fetch whitelabel token: ${response.status}`,\r\n 'FETCH_ERROR',\r\n response.status\r\n );\r\n }\r\n\r\n const result: WhitelabelTokenApiResponse = await response.json();\r\n\r\n if (result.status !== 1 || !result.data?.length) {\r\n throw new ApiError('Whitelabel token not found', 'TOKEN_NOT_FOUND', 404);\r\n }\r\n\r\n return result.data[0];\r\n }\r\n\r\n async getTokenByDomain(hostname: string): Promise<WhitelabelTokenData> {\r\n hostname = process.env.WHITELABEL_DOMAIN || hostname;\r\n\r\n const cache = this.createCache();\r\n const cacheKey = this.getCacheKey(hostname);\r\n\r\n // const cachedData = await cache.select(cacheKey);\r\n\r\n // if (cachedData.status == 1 && 'data' in cachedData && cachedData.data) {\r\n // console.log('[WhitelabelService] Cache hit for domain', { hostname });\r\n // return JSON.parse(cachedData.data) as WhitelabelTokenData;\r\n // }\r\n\r\n const data = await this.fetchFromApi(hostname);\r\n\r\n await cache.insert(cacheKey, JSON.stringify(data), 604800);\r\n\r\n return data;\r\n }\r\n\r\n async revalidateByDomain(hostname: string): Promise<WhitelabelTokenData> {\r\n hostname = process.env.WHITELABEL_DOMAIN || hostname;\r\n\r\n const cache = this.createCache();\r\n const cacheKey = this.getCacheKey(hostname);\r\n\r\n console.log('[WhitelabelService] Revalidating cache for domain', { hostname });\r\n\r\n await cache.delete(cacheKey);\r\n\r\n const data = await this.fetchFromApi(hostname);\r\n\r\n await cache.insert(cacheKey, JSON.stringify(data), 604800);\r\n\r\n console.log('[WhitelabelService] Cache revalidated for domain', { hostname });\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport const whitelabelService = new WhitelabelService();\r\n"],"mappings":"AACA,OAAO,gBAAgB;AACvB,SAAS,gBAAgB;AAGzB,MAAM,kBAAkB;AAAA,EACd,YAAoB;AAC1B,UAAM,SAAS,QAAQ,IAAI;AAC3B,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,SAAS,mCAAmC,gBAAgB,GAAG;AAAA,IAC3E;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,WAAmB;AACzB,UAAM,QAAQ,QAAQ,IAAI;AAC1B,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,SAAS,0CAA0C,gBAAgB,GAAG;AAAA,IAClF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,cAAc;AACpB,WAAO,IAAI,WAAW;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS,QAAQ,IAAI,YAAY;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEQ,YAAY,UAA0B;AAC5C,WAAO,oBAAoB,QAAQ;AAAA,EACrC;AAAA,EAEA,MAAc,aAAa,UAAgD;AACzE,UAAM,SAAS,KAAK,UAAU;AAC9B,UAAM,wBAAwB,KAAK,SAAS;AAC5C,UAAM,MAAM,GAAG,MAAM,0BAA0B,QAAQ;AAEvD,YAAQ,IAAI,iDAAiD,EAAE,IAAI,CAAC;AAEpE,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,wDAAwD,EAAE,SAAS,CAAC;AAClF,YAAM,IAAI;AAAA,QACR,qCAAqC,SAAS,MAAM;AAAA,QACpD;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAEA,UAAM,SAAqC,MAAM,SAAS,KAAK;AAE/D,QAAI,OAAO,WAAW,KAAK,CAAC,OAAO,MAAM,QAAQ;AAC/C,YAAM,IAAI,SAAS,8BAA8B,mBAAmB,GAAG;AAAA,IACzE;AAEA,WAAO,OAAO,KAAK,CAAC;AAAA,EACtB;AAAA,EAEA,MAAM,iBAAiB,UAAgD;AACrE,eAAW,QAAQ,IAAI,qBAAqB;AAE5C,UAAM,QAAQ,KAAK,YAAY;AAC/B,UAAM,WAAW,KAAK,YAAY,QAAQ;AAS1C,UAAM,OAAO,MAAM,KAAK,aAAa,QAAQ;AAE7C,UAAM,MAAM,OAAO,UAAU,KAAK,UAAU,IAAI,GAAG,MAAM;AAEzD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,mBAAmB,UAAgD;AACvE,eAAW,QAAQ,IAAI,qBAAqB;AAE5C,UAAM,QAAQ,KAAK,YAAY;AAC/B,UAAM,WAAW,KAAK,YAAY,QAAQ;AAE1C,YAAQ,IAAI,qDAAqD,EAAE,SAAS,CAAC;AAE7E,UAAM,MAAM,OAAO,QAAQ;AAE3B,UAAM,OAAO,MAAM,KAAK,aAAa,QAAQ;AAE7C,UAAM,MAAM,OAAO,UAAU,KAAK,UAAU,IAAI,GAAG,MAAM;AAEzD,YAAQ,IAAI,oDAAoD,EAAE,SAAS,CAAC;AAE5E,WAAO;AAAA,EACT;AACF;AAEO,MAAM,oBAAoB,IAAI,kBAAkB;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/whitelabel/services/whitelabel.service.ts"],"sourcesContent":["\r\nimport greatCache from '@greatapps/cache';\r\nimport { ApiError } from '../../../infra/api/types';\r\nimport { WhitelabelTokenApiResponse, WhitelabelTokenData } from '../schema';\r\n\r\nclass WhitelabelService {\r\n private getApiUrl(): string {\r\n const apiUrl = process.env.GAPPS_R3_API_URL;\r\n if (!apiUrl) {\r\n throw new ApiError('GAPPS_R3_API_URL not configured', 'CONFIG_ERROR', 500);\r\n }\r\n return apiUrl;\r\n }\r\n\r\n private getToken(): string {\r\n const token = process.env.WHITELABEL_TOKEN_MASTER;\r\n if (!token) {\r\n throw new ApiError('WHITELABEL_TOKEN_MASTER not configured', 'CONFIG_ERROR', 500);\r\n }\r\n return token;\r\n }\r\n\r\n private createCache() {\r\n return new greatCache({\r\n service: 'whitelabel-service',\r\n version: '1.0',\r\n domain: 'whitelabel-cache.greatapps.com.br',\r\n ambient: process.env.NODE_ENV || 'development',\r\n });\r\n }\r\n\r\n private getCacheKey(hostname: string): string {\r\n return `whitelabel-token-${hostname}`;\r\n }\r\n\r\n private async fetchFromApi(hostname: string): Promise<WhitelabelTokenData> {\r\n const apiUrl = this.getApiUrl();\r\n const whitelabelMasterToken = this.getToken();\r\n const url = `${apiUrl}/v1/pt-br/1/whitelabel/${hostname}/token`;\r\n\r\n console.log('[WhitelabelService] Fetching token for domain', { url });\r\n\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n authorization: whitelabelMasterToken,\r\n },\r\n });\r\n\r\n if (!response.ok) {\r\n console.error('[WhitelabelService] Failed to fetch whitelabel token', { response });\r\n throw new ApiError(\r\n `Failed to fetch whitelabel token: ${response.status}`,\r\n 'FETCH_ERROR',\r\n response.status\r\n );\r\n }\r\n\r\n const result: WhitelabelTokenApiResponse = await response.json();\r\n\r\n if (result.status !== 1 || !result.data?.length) {\r\n throw new ApiError('Whitelabel token not found', 'TOKEN_NOT_FOUND', 404);\r\n }\r\n\r\n return result.data[0];\r\n }\r\n\r\n async getTokenByDomain(hostname: string): Promise<WhitelabelTokenData> {\r\n hostname = process.env.WHITELABEL_DOMAIN || hostname;\r\n\r\n const cache = this.createCache();\r\n const cacheKey = this.getCacheKey(hostname);\r\n\r\n const cachedData = await cache.select(cacheKey);\r\n\r\n if (cachedData.status == 1 && 'data' in cachedData && cachedData.data) {\r\n console.log('[WhitelabelService] Cache hit for domain', { hostname });\r\n return JSON.parse(cachedData.data) as WhitelabelTokenData;\r\n }\r\n\r\n const data = await this.fetchFromApi(hostname);\r\n\r\n await cache.insert(cacheKey, JSON.stringify(data), 604800);\r\n\r\n return data;\r\n }\r\n\r\n async revalidateByDomain(hostname: string): Promise<WhitelabelTokenData> {\r\n hostname = process.env.WHITELABEL_DOMAIN || hostname;\r\n\r\n const cache = this.createCache();\r\n const cacheKey = this.getCacheKey(hostname);\r\n\r\n console.log('[WhitelabelService] Revalidating cache for domain', { hostname });\r\n\r\n await cache.delete(cacheKey);\r\n\r\n const data = await this.fetchFromApi(hostname);\r\n\r\n await cache.insert(cacheKey, JSON.stringify(data), 604800);\r\n\r\n console.log('[WhitelabelService] Cache revalidated for domain', { hostname });\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport const whitelabelService = new WhitelabelService();\r\n"],"mappings":"AACA,OAAO,gBAAgB;AACvB,SAAS,gBAAgB;AAGzB,MAAM,kBAAkB;AAAA,EACd,YAAoB;AAC1B,UAAM,SAAS,QAAQ,IAAI;AAC3B,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,SAAS,mCAAmC,gBAAgB,GAAG;AAAA,IAC3E;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,WAAmB;AACzB,UAAM,QAAQ,QAAQ,IAAI;AAC1B,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,SAAS,0CAA0C,gBAAgB,GAAG;AAAA,IAClF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,cAAc;AACpB,WAAO,IAAI,WAAW;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,SAAS,QAAQ,IAAI,YAAY;AAAA,IACnC,CAAC;AAAA,EACH;AAAA,EAEQ,YAAY,UAA0B;AAC5C,WAAO,oBAAoB,QAAQ;AAAA,EACrC;AAAA,EAEA,MAAc,aAAa,UAAgD;AACzE,UAAM,SAAS,KAAK,UAAU;AAC9B,UAAM,wBAAwB,KAAK,SAAS;AAC5C,UAAM,MAAM,GAAG,MAAM,0BAA0B,QAAQ;AAEvD,YAAQ,IAAI,iDAAiD,EAAE,IAAI,CAAC;AAEpE,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,cAAQ,MAAM,wDAAwD,EAAE,SAAS,CAAC;AAClF,YAAM,IAAI;AAAA,QACR,qCAAqC,SAAS,MAAM;AAAA,QACpD;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAEA,UAAM,SAAqC,MAAM,SAAS,KAAK;AAE/D,QAAI,OAAO,WAAW,KAAK,CAAC,OAAO,MAAM,QAAQ;AAC/C,YAAM,IAAI,SAAS,8BAA8B,mBAAmB,GAAG;AAAA,IACzE;AAEA,WAAO,OAAO,KAAK,CAAC;AAAA,EACtB;AAAA,EAEA,MAAM,iBAAiB,UAAgD;AACrE,eAAW,QAAQ,IAAI,qBAAqB;AAE5C,UAAM,QAAQ,KAAK,YAAY;AAC/B,UAAM,WAAW,KAAK,YAAY,QAAQ;AAE1C,UAAM,aAAa,MAAM,MAAM,OAAO,QAAQ;AAE9C,QAAI,WAAW,UAAU,KAAK,UAAU,cAAc,WAAW,MAAM;AACrE,cAAQ,IAAI,4CAA4C,EAAE,SAAS,CAAC;AACpE,aAAO,KAAK,MAAM,WAAW,IAAI;AAAA,IACnC;AAEA,UAAM,OAAO,MAAM,KAAK,aAAa,QAAQ;AAE7C,UAAM,MAAM,OAAO,UAAU,KAAK,UAAU,IAAI,GAAG,MAAM;AAEzD,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,mBAAmB,UAAgD;AACvE,eAAW,QAAQ,IAAI,qBAAqB;AAE5C,UAAM,QAAQ,KAAK,YAAY;AAC/B,UAAM,WAAW,KAAK,YAAY,QAAQ;AAE1C,YAAQ,IAAI,qDAAqD,EAAE,SAAS,CAAC;AAE7E,UAAM,MAAM,OAAO,QAAQ;AAE3B,UAAM,OAAO,MAAM,KAAK,aAAa,QAAQ;AAE7C,UAAM,MAAM,OAAO,UAAU,KAAK,UAAU,IAAI,GAAG,MAAM;AAEzD,YAAQ,IAAI,oDAAoD,EAAE,SAAS,CAAC;AAE5E,WAAO;AAAA,EACT;AACF;AAEO,MAAM,oBAAoB,IAAI,kBAAkB;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greatapps/common",
3
- "version": "1.1.263",
3
+ "version": "1.1.266",
4
4
  "description": "Shared library for GreatApps frontend applications",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -0,0 +1,59 @@
1
+ 'use client';
2
+
3
+ import { useEffect } from 'react';
4
+ import { useWhitelabel } from '../../providers/whitelabel.provider';
5
+
6
+ function copyAttributes(source: Element, target: HTMLElement) {
7
+ Array.from(source.attributes).forEach((attribute) => {
8
+ target.setAttribute(attribute.name, attribute.value);
9
+ });
10
+ }
11
+
12
+ export default function WhitelabelCodes() {
13
+ const { whitelabel } = useWhitelabel();
14
+
15
+ useEffect(() => {
16
+ const codes = whitelabel?.codes;
17
+ const rawCodes = typeof codes === 'string' ? codes.trim() : '';
18
+
19
+ if (!rawCodes) {
20
+ return;
21
+ }
22
+
23
+ const template = document.createElement('template');
24
+ template.innerHTML = rawCodes;
25
+
26
+ const appendedNodes: HTMLElement[] = [];
27
+
28
+ Array.from(template.content.children).forEach((node) => {
29
+ const tagName = node.tagName.toLowerCase();
30
+
31
+ if (tagName !== 'style' && tagName !== 'script') {
32
+ return;
33
+ }
34
+
35
+ if (tagName === 'style') {
36
+ const style = document.createElement('style');
37
+ copyAttributes(node, style);
38
+ style.textContent = node.textContent;
39
+ style.dataset.whitelabelCodes = 'true';
40
+ document.head.appendChild(style);
41
+ appendedNodes.push(style);
42
+ return;
43
+ }
44
+
45
+ const script = document.createElement('script');
46
+ copyAttributes(node, script);
47
+ script.textContent = node.textContent;
48
+ script.dataset.whitelabelCodes = 'true';
49
+ document.head.appendChild(script);
50
+ appendedNodes.push(script);
51
+ });
52
+
53
+ return () => {
54
+ appendedNodes.forEach((node) => node.remove());
55
+ };
56
+ }, [whitelabel?.codes]);
57
+
58
+ return null;
59
+ }
package/src/index.ts CHANGED
@@ -125,6 +125,7 @@ export type {
125
125
  ProfilePopoverProps,
126
126
  ProfileMenuItem,
127
127
  } from "./components/layouts/ProfilePopover";
128
+ export { default as WhitelabelCodes } from "./components/layouts/WhitelabelCodes";
128
129
  export { NavBarItem } from "./components/layouts/NavBarItem";
129
130
  export type { NavBarItemProps } from "./components/layouts/NavBarItem";
130
131
 
@@ -1,5 +1,5 @@
1
- import { ApiError } from './types';
2
- import { findWhitelabel } from '../../modules/whitelabel/actions/find-whitelabel.action';
1
+ import { ApiError } from "./types";
2
+ import { findWhitelabel } from "../../modules/whitelabel/actions/find-whitelabel.action";
3
3
 
4
4
  export interface ApiClientOptions {
5
5
  /**
@@ -7,66 +7,88 @@ export interface ApiClientOptions {
7
7
  * Padrão false: `{base}/v1/{locale}/{wlId}{endpoint}`.
8
8
  */
9
9
  omitApiVersion?: boolean;
10
+
11
+ /** Habilita logs detalhados das requisições (útil para desenvolvimento) */
12
+ emitLogs?: boolean;
10
13
  }
11
14
 
12
15
  export interface RequestConfig extends RequestInit {
13
16
  timeout?: number;
14
17
  /** Padrão `json`. Use `text` quando a API devolve corpo não-JSON. */
15
- responseType?: 'json' | 'text';
18
+ responseType?: "json" | "text";
16
19
  }
17
20
 
18
21
  class ApiClient {
19
22
  private readonly baseUrl: string;
20
- private readonly apiVersion = 'v1';
21
- private readonly apiLocale = 'pt-br';
23
+ private readonly apiVersion = "v1";
24
+ private readonly apiLocale = "pt-br";
22
25
  private readonly omitApiVersion: boolean;
26
+ private readonly emitLogs: boolean = false;
23
27
 
24
28
  constructor(baseUrl: string, options?: ApiClientOptions) {
25
- this.baseUrl = baseUrl.replace(/\/$/, '');
29
+ this.baseUrl = baseUrl.replace(/\/$/, "");
26
30
  this.omitApiVersion = options?.omitApiVersion ?? false;
31
+ this.emitLogs = options?.emitLogs ?? false;
27
32
  }
28
33
 
29
- private async buildUrl(endpoint: string, whiteLabelId: number): Promise<string> {
34
+ private async buildUrl(
35
+ endpoint: string,
36
+ whiteLabelId: number,
37
+ ): Promise<string> {
30
38
  const wlPath = this.omitApiVersion
31
39
  ? `/${this.apiLocale}/${whiteLabelId}`
32
40
  : `/${this.apiVersion}/${this.apiLocale}/${whiteLabelId}`;
33
- const path = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
41
+ const path = endpoint.startsWith("/") ? endpoint : `/${endpoint}`;
34
42
  const url = `${this.baseUrl}${wlPath}${path}`;
35
- console.log('[ApiClient] buildUrl', {
36
- baseURL: this.baseUrl,
37
- whiteLabelId,
38
- endpoint,
39
- fullUrl: url,
40
- });
43
+ if (this.emitLogs) {
44
+ console.log("[ApiClient] buildUrl", {
45
+ baseURL: this.baseUrl,
46
+ whiteLabelId,
47
+ endpoint,
48
+ fullUrl: url,
49
+ });
50
+ }
41
51
  return url;
42
52
  }
43
53
 
44
- private async getDefaultHeaders(token: string, isFormData = false): Promise<HeadersInit> {
45
- console.log('[ApiClient] getDefaultHeaders', {
46
- token: token.substring(0, 20) + '...',
47
- });
54
+ private async getDefaultHeaders(
55
+ token: string,
56
+ isFormData = false,
57
+ ): Promise<HeadersInit> {
58
+ if (this.emitLogs) {
59
+ console.log("[ApiClient] getDefaultHeaders", {
60
+ token: token.substring(0, 20) + "...",
61
+ });
62
+ }
48
63
 
49
64
  const headers: HeadersInit = {
50
65
  authorization: token,
51
66
  };
52
67
 
53
68
  if (!isFormData) {
54
- headers['Content-Type'] = 'application/json';
69
+ headers["Content-Type"] = "application/json";
55
70
  }
56
71
 
57
72
  return headers;
58
73
  }
59
74
 
60
75
  async request<T>(endpoint: string, config: RequestConfig = {}): Promise<T> {
61
- console.log('[ApiClient] request called', { endpoint, method: config.method });
76
+ if (this.emitLogs) {
77
+ console.log("[ApiClient] request called", {
78
+ endpoint,
79
+ method: config.method,
80
+ });
81
+ }
62
82
 
63
- const { timeout = 30000, responseType = 'json', ...fetchConfig } = config;
83
+ const { timeout = 30000, responseType = "json", ...fetchConfig } = config;
64
84
 
65
85
  const controller = new AbortController();
66
86
  const timeoutId = setTimeout(() => controller.abort(), timeout);
67
87
 
68
88
  try {
69
- console.log('[ApiClient] Building URL and headers...');
89
+ if (this.emitLogs) {
90
+ console.log("[ApiClient] Building URL and headers...");
91
+ }
70
92
 
71
93
  const { id, token } = await findWhitelabel();
72
94
 
@@ -75,11 +97,12 @@ class ApiClient {
75
97
  this.getDefaultHeaders(token, fetchConfig.body instanceof FormData),
76
98
  ]);
77
99
 
78
- console.log('[ApiClient] Fetching', {
79
- url,
80
- method: fetchConfig.method,
81
- headers: defaultHeaders,
82
- });
100
+ if (this.emitLogs)
101
+ console.log("[ApiClient] Fetching", {
102
+ url,
103
+ method: fetchConfig.method,
104
+ headers: defaultHeaders,
105
+ });
83
106
 
84
107
  const response = await fetch(url, {
85
108
  ...fetchConfig,
@@ -90,87 +113,127 @@ class ApiClient {
90
113
  signal: controller.signal,
91
114
  });
92
115
 
93
- console.log('[ApiClient] Response received', { status: response.status, ok: response.ok });
116
+ if (this.emitLogs)
117
+ console.log("[ApiClient] Response received", {
118
+ status: response.status,
119
+ ok: response.ok,
120
+ });
94
121
 
95
122
  if (!response.ok) {
96
123
  const errBody = await response.text();
97
124
  let message = `HTTP error ${response.status}`;
98
- let code = 'HTTP_ERROR';
125
+ let code = "HTTP_ERROR";
99
126
  try {
100
127
  const errorData = JSON.parse(errBody) as Record<string, unknown>;
101
- if (typeof errorData.message === 'string') message = errorData.message;
102
- if (typeof errorData.code === 'string') code = errorData.code;
128
+ if (typeof errorData.message === "string")
129
+ message = errorData.message;
130
+ if (typeof errorData.code === "string") code = errorData.code;
103
131
  } catch {
104
132
  if (errBody.trim()) message = errBody.trim();
105
133
  }
106
- console.error('[ApiClient] Request failed', { status: response.status, message });
134
+ console.error("[ApiClient] Request failed", {
135
+ status: response.status,
136
+ message,
137
+ });
107
138
  throw new ApiError(message, code, response.status);
108
139
  }
109
140
 
110
- if (responseType === 'text') {
141
+ if (responseType === "text") {
111
142
  return (await response.text()) as T;
112
143
  }
113
144
 
114
145
  const data = (await response.json()) as T;
115
- console.log('[ApiClient] Request successful', { hasData: !!data });
146
+ if (this.emitLogs)
147
+ console.log("[ApiClient] Request successful", { hasData: !!data });
116
148
  return data;
117
149
  } catch (error) {
118
- console.error('[ApiClient] Request error', { error });
150
+ if (this.emitLogs) console.error("[ApiClient] Request error", { error });
119
151
 
120
152
  if (error instanceof ApiError) {
121
153
  throw error;
122
154
  }
123
155
 
124
156
  if (error instanceof Error) {
125
- if (error.name === 'AbortError') {
126
- throw new ApiError('Tempo de requisição excedido', 'TIMEOUT', 408);
157
+ if (error.name === "AbortError") {
158
+ throw new ApiError("Tempo de requisição excedido", "TIMEOUT", 408);
127
159
  }
128
- throw new ApiError(error.message, 'NETWORK_ERROR', 0);
160
+ throw new ApiError(error.message, "NETWORK_ERROR", 0);
129
161
  }
130
162
 
131
- throw new ApiError('Erro desconhecido', 'UNKNOWN_ERROR', 500);
163
+ throw new ApiError("Erro desconhecido", "UNKNOWN_ERROR", 500);
132
164
  } finally {
133
165
  clearTimeout(timeoutId);
134
166
  }
135
167
  }
136
168
 
137
169
  async get<T>(endpoint: string, config?: RequestConfig): Promise<T> {
138
- return this.request<T>(endpoint, { ...config, method: 'GET' });
170
+ return this.request<T>(endpoint, { ...config, method: "GET" });
139
171
  }
140
172
 
141
- async post<T>(endpoint: string, data?: unknown, config?: RequestConfig): Promise<T> {
173
+ async post<T>(
174
+ endpoint: string,
175
+ data?: unknown,
176
+ config?: RequestConfig,
177
+ ): Promise<T> {
142
178
  return this.request<T>(endpoint, {
143
179
  ...config,
144
- method: 'POST',
145
- body: data instanceof FormData ? data : data ? JSON.stringify(data) : undefined,
180
+ method: "POST",
181
+ body:
182
+ data instanceof FormData
183
+ ? data
184
+ : data
185
+ ? JSON.stringify(data)
186
+ : undefined,
146
187
  });
147
188
  }
148
189
 
149
- async put<T>(endpoint: string, data?: unknown, config?: RequestConfig): Promise<T> {
190
+ async put<T>(
191
+ endpoint: string,
192
+ data?: unknown,
193
+ config?: RequestConfig,
194
+ ): Promise<T> {
150
195
  return this.request<T>(endpoint, {
151
196
  ...config,
152
- method: 'PUT',
153
- body: data instanceof FormData ? data : data ? JSON.stringify(data) : undefined,
197
+ method: "PUT",
198
+ body:
199
+ data instanceof FormData
200
+ ? data
201
+ : data
202
+ ? JSON.stringify(data)
203
+ : undefined,
154
204
  });
155
205
  }
156
206
 
157
- async patch<T>(endpoint: string, data?: unknown, config?: RequestConfig): Promise<T> {
207
+ async patch<T>(
208
+ endpoint: string,
209
+ data?: unknown,
210
+ config?: RequestConfig,
211
+ ): Promise<T> {
158
212
  return this.request<T>(endpoint, {
159
213
  ...config,
160
- method: 'PATCH',
161
- body: data instanceof FormData ? data : data ? JSON.stringify(data) : undefined,
214
+ method: "PATCH",
215
+ body:
216
+ data instanceof FormData
217
+ ? data
218
+ : data
219
+ ? JSON.stringify(data)
220
+ : undefined,
162
221
  });
163
222
  }
164
223
 
165
224
  async delete<T>(endpoint: string, config?: RequestConfig): Promise<T> {
166
- return this.request<T>(endpoint, { ...config, method: 'DELETE' });
225
+ return this.request<T>(endpoint, { ...config, method: "DELETE" });
167
226
  }
168
227
  }
169
228
 
170
229
  const api = {
171
- apps: new ApiClient(process.env.GAPPS_R3_API_URL || 'https://r3-api.greatapps.dev.br'),
172
- pages: new ApiClient(process.env.GPAGES_R3_API_URL || 'https://r3-api.greatpages.dev.br'),
173
- }
230
+ apps: new ApiClient(
231
+ process.env.GAPPS_R3_API_URL || "https://r3-api.greatapps.dev.br",
232
+ ),
233
+ pages: new ApiClient(
234
+ process.env.GPAGES_R3_API_URL || "https://r3-api.greatpages.dev.br",
235
+ ),
236
+ };
174
237
 
175
238
  /** @deprecated use api.apps */
176
239
  export const apiClient = api.apps;
@@ -57,8 +57,6 @@ class AuthService {
57
57
  agent: clientInfo.agent,
58
58
  });
59
59
 
60
- console.log("[AuthService.login] response", JSON.stringify(response));
61
-
62
60
  if (response.status === 0) {
63
61
  throw new ApiError(
64
62
  response.message || "E-mail ou senha incorretos",
@@ -40,7 +40,7 @@ export interface WhitelabelData {
40
40
  url_login: string;
41
41
  url_site: string;
42
42
  url_signup: string;
43
- codes: string;
43
+ codes: string | null;
44
44
  id_gateway: number;
45
45
  gateway_product: string;
46
46
  external_contracting: boolean;
@@ -71,12 +71,12 @@ class WhitelabelService {
71
71
  const cache = this.createCache();
72
72
  const cacheKey = this.getCacheKey(hostname);
73
73
 
74
- // const cachedData = await cache.select(cacheKey);
74
+ const cachedData = await cache.select(cacheKey);
75
75
 
76
- // if (cachedData.status == 1 && 'data' in cachedData && cachedData.data) {
77
- // console.log('[WhitelabelService] Cache hit for domain', { hostname });
78
- // return JSON.parse(cachedData.data) as WhitelabelTokenData;
79
- // }
76
+ if (cachedData.status == 1 && 'data' in cachedData && cachedData.data) {
77
+ console.log('[WhitelabelService] Cache hit for domain', { hostname });
78
+ return JSON.parse(cachedData.data) as WhitelabelTokenData;
79
+ }
80
80
 
81
81
  const data = await this.fetchFromApi(hostname);
82
82
 
@@ -1,15 +0,0 @@
1
- "use server";
2
- import { cache } from "react";
3
- import { whitelabelStylesService } from "../services/whitelabel-styles.service";
4
- const findWhitelabelStyles = cache(async (id_wl) => {
5
- try {
6
- return await whitelabelStylesService.getByWlId(id_wl);
7
- } catch (error) {
8
- console.error("[findWhitelabelStyles] Error fetching styles:", error);
9
- return null;
10
- }
11
- });
12
- export {
13
- findWhitelabelStyles
14
- };
15
- //# sourceMappingURL=find-whitelabel-styles.action.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/modules/whitelabel/actions/find-whitelabel-styles.action.ts"],"sourcesContent":["'use server';\n\nimport { cache } from 'react';\nimport { whitelabelStylesService } from '../services/whitelabel-styles.service';\nimport { WhitelabelStylesData } from '../styles-schema';\n\nexport const findWhitelabelStyles = cache(async (id_wl: number): Promise<WhitelabelStylesData | null> => {\n try {\n return await whitelabelStylesService.getByWlId(id_wl);\n } catch (error) {\n console.error('[findWhitelabelStyles] Error fetching styles:', error);\n return null;\n }\n});\n"],"mappings":";AAEA,SAAS,aAAa;AACtB,SAAS,+BAA+B;AAGjC,MAAM,uBAAuB,MAAM,OAAO,UAAwD;AACvG,MAAI;AACF,WAAO,MAAM,wBAAwB,UAAU,KAAK;AAAA,EACtD,SAAS,OAAO;AACd,YAAQ,MAAM,iDAAiD,KAAK;AACpE,WAAO;AAAA,EACT;AACF,CAAC;","names":[]}
@@ -1,12 +0,0 @@
1
- "use server";
2
- import { whitelabelStylesService } from "../services/whitelabel-styles.service";
3
- import { safeServerAction } from "../../../utils/safeServerAction";
4
- async function revalidateWhitelabelStylesAction(id_wl) {
5
- return safeServerAction(async () => {
6
- return whitelabelStylesService.revalidateByWlId(id_wl);
7
- });
8
- }
9
- export {
10
- revalidateWhitelabelStylesAction
11
- };
12
- //# sourceMappingURL=revalidate-whitelabel-styles.action.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/modules/whitelabel/actions/revalidate-whitelabel-styles.action.ts"],"sourcesContent":["'use server';\n\nimport { whitelabelStylesService } from '../services/whitelabel-styles.service';\nimport { safeServerAction } from '../../../utils/safeServerAction';\n\nexport async function revalidateWhitelabelStylesAction(id_wl: number) {\n return safeServerAction(async () => {\n return whitelabelStylesService.revalidateByWlId(id_wl);\n });\n}\n"],"mappings":";AAEA,SAAS,+BAA+B;AACxC,SAAS,wBAAwB;AAEjC,eAAsB,iCAAiC,OAAe;AACpE,SAAO,iBAAiB,YAAY;AAClC,WAAO,wBAAwB,iBAAiB,KAAK;AAAA,EACvD,CAAC;AACH;","names":[]}
@@ -1,102 +0,0 @@
1
- import greatCache from "@greatapps/cache";
2
- import { ApiError } from "../../../infra/api/types";
3
- function parseStyleField(value) {
4
- if (typeof value === "string") {
5
- try {
6
- return JSON.parse(value);
7
- } catch {
8
- return null;
9
- }
10
- }
11
- if (value && typeof value === "object") return value;
12
- return null;
13
- }
14
- function mapWithStyleResponse(row) {
15
- const general = parseStyleField(row["style_general"]);
16
- if (general) {
17
- if (!general.logo && row["logo"]) general.logo = row["logo"];
18
- if (!general.favicon && row["favicon"]) general.favicon = row["favicon"];
19
- }
20
- return {
21
- id: row["style_id"],
22
- id_wl: row["style_id_wl"],
23
- general,
24
- signin_page: parseStyleField(row["style_signin_page"]),
25
- signup_page: parseStyleField(row["style_signup_page"]),
26
- dashboard: parseStyleField(row["style_dashboard"])
27
- };
28
- }
29
- class WhitelabelStylesService {
30
- getApiUrl() {
31
- const apiUrl = process.env.GAPPS_R3_API_URL;
32
- if (!apiUrl) throw new ApiError("GAPPS_R3_API_URL not configured", "CONFIG_ERROR", 500);
33
- return apiUrl;
34
- }
35
- getToken() {
36
- const token = process.env.WHITELABEL_TOKEN_MASTER;
37
- if (!token) throw new ApiError("WHITELABEL_TOKEN_MASTER not configured", "CONFIG_ERROR", 500);
38
- return token;
39
- }
40
- createCache() {
41
- return new greatCache({
42
- service: "whitelabel-styles-service",
43
- version: "1.0",
44
- domain: "whitelabel-cache.greatapps.com.br",
45
- ambient: process.env.NODE_ENV || "development"
46
- });
47
- }
48
- getCacheKey(id_wl) {
49
- return `whitelabel-styles-${id_wl}`;
50
- }
51
- async fetchFromApi(id_wl) {
52
- const apiUrl = this.getApiUrl();
53
- const token = this.getToken();
54
- const url = `${apiUrl}/v1/pt-br/1/whitelabels/${id_wl}/with-style`;
55
- console.log("[WhitelabelStylesService] Fetching with-style for id_wl", { id_wl, url });
56
- const response = await fetch(url, {
57
- method: "GET",
58
- headers: { authorization: token }
59
- });
60
- if (!response.ok) {
61
- console.error("[WhitelabelStylesService] Failed to fetch with-style", { status: response.status });
62
- return null;
63
- }
64
- const result = await response.json();
65
- if (result.status !== 1 || !result.data?.length) {
66
- console.warn("[WhitelabelStylesService] No data in with-style for id_wl", { id_wl });
67
- return null;
68
- }
69
- return mapWithStyleResponse(result.data[0]);
70
- }
71
- async getByWlId(id_wl) {
72
- const cache = this.createCache();
73
- const cacheKey = this.getCacheKey(id_wl);
74
- const cachedData = await cache.select(cacheKey);
75
- if (cachedData.status == 1 && "data" in cachedData && cachedData.data) {
76
- console.log("[WhitelabelStylesService] Cache hit for id_wl", { id_wl });
77
- return JSON.parse(cachedData.data);
78
- }
79
- const parsed = await this.fetchFromApi(id_wl);
80
- if (parsed?.id) {
81
- await cache.insert(cacheKey, JSON.stringify(parsed), 300);
82
- }
83
- return parsed;
84
- }
85
- async revalidateByWlId(id_wl) {
86
- const cache = this.createCache();
87
- const cacheKey = this.getCacheKey(id_wl);
88
- console.log("[WhitelabelStylesService] Revalidating cache for id_wl", { id_wl });
89
- await cache.delete(cacheKey);
90
- const parsed = await this.fetchFromApi(id_wl);
91
- if (parsed?.id) {
92
- await cache.insert(cacheKey, JSON.stringify(parsed), 300);
93
- }
94
- console.log("[WhitelabelStylesService] Cache revalidated for id_wl", { id_wl });
95
- return parsed;
96
- }
97
- }
98
- const whitelabelStylesService = new WhitelabelStylesService();
99
- export {
100
- whitelabelStylesService
101
- };
102
- //# sourceMappingURL=whitelabel-styles.service.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/modules/whitelabel/services/whitelabel-styles.service.ts"],"sourcesContent":["import greatCache from '@greatapps/cache';\nimport { ApiError } from '../../../infra/api/types';\nimport { WhitelabelStylesData, GeneralStyleJson } from '../styles-schema';\n\ninterface WithStyleApiResponse {\n status: number;\n data: Record<string, unknown>[];\n}\n\nfunction parseStyleField<T>(value: unknown): T | null {\n if (typeof value === 'string') {\n try { return JSON.parse(value) as T; } catch { return null; }\n }\n if (value && typeof value === 'object') return value as T;\n return null;\n}\n\nfunction mapWithStyleResponse(row: Record<string, unknown>): WhitelabelStylesData {\n const general = parseStyleField<GeneralStyleJson>(row['style_general']);\n\n if (general) {\n if (!general.logo && row['logo']) general.logo = row['logo'] as string;\n if (!general.favicon && row['favicon']) general.favicon = row['favicon'] as string;\n }\n\n return {\n id: row['style_id'] as number,\n id_wl: row['style_id_wl'] as number,\n general,\n signin_page: parseStyleField(row['style_signin_page']),\n signup_page: parseStyleField(row['style_signup_page']),\n dashboard: parseStyleField(row['style_dashboard']),\n };\n}\n\nclass WhitelabelStylesService {\n private getApiUrl(): string {\n const apiUrl = process.env.GAPPS_R3_API_URL;\n if (!apiUrl) throw new ApiError('GAPPS_R3_API_URL not configured', 'CONFIG_ERROR', 500);\n return apiUrl;\n }\n\n private getToken(): string {\n const token = process.env.WHITELABEL_TOKEN_MASTER;\n if (!token) throw new ApiError('WHITELABEL_TOKEN_MASTER not configured', 'CONFIG_ERROR', 500);\n return token;\n }\n\n private createCache() {\n return new greatCache({\n service: 'whitelabel-styles-service',\n version: '1.0',\n domain: 'whitelabel-cache.greatapps.com.br',\n ambient: process.env.NODE_ENV || 'development',\n });\n }\n\n private getCacheKey(id_wl: number): string {\n return `whitelabel-styles-${id_wl}`;\n }\n\n private async fetchFromApi(id_wl: number): Promise<WhitelabelStylesData | null> {\n const apiUrl = this.getApiUrl();\n const token = this.getToken();\n const url = `${apiUrl}/v1/pt-br/1/whitelabels/${id_wl}/with-style`;\n\n console.log('[WhitelabelStylesService] Fetching with-style for id_wl', { id_wl, url });\n\n const response = await fetch(url, {\n method: 'GET',\n headers: { authorization: token },\n });\n\n if (!response.ok) {\n console.error('[WhitelabelStylesService] Failed to fetch with-style', { status: response.status });\n return null;\n }\n\n const result: WithStyleApiResponse = await response.json();\n\n if (result.status !== 1 || !result.data?.length) {\n console.warn('[WhitelabelStylesService] No data in with-style for id_wl', { id_wl });\n return null;\n }\n\n return mapWithStyleResponse(result.data[0]);\n }\n\n async getByWlId(id_wl: number): Promise<WhitelabelStylesData | null> {\n const cache = this.createCache();\n const cacheKey = this.getCacheKey(id_wl);\n\n const cachedData = await cache.select(cacheKey);\n\n if (cachedData.status == 1 && 'data' in cachedData && cachedData.data) {\n console.log('[WhitelabelStylesService] Cache hit for id_wl', { id_wl });\n return JSON.parse(cachedData.data) as WhitelabelStylesData;\n }\n\n const parsed = await this.fetchFromApi(id_wl);\n\n if (parsed?.id) {\n await cache.insert(cacheKey, JSON.stringify(parsed), 300);\n }\n\n return parsed;\n }\n\n async revalidateByWlId(id_wl: number): Promise<WhitelabelStylesData | null> {\n const cache = this.createCache();\n const cacheKey = this.getCacheKey(id_wl);\n\n console.log('[WhitelabelStylesService] Revalidating cache for id_wl', { id_wl });\n\n await cache.delete(cacheKey);\n\n const parsed = await this.fetchFromApi(id_wl);\n\n if (parsed?.id) {\n await cache.insert(cacheKey, JSON.stringify(parsed), 300);\n }\n\n console.log('[WhitelabelStylesService] Cache revalidated for id_wl', { id_wl });\n\n return parsed;\n }\n}\n\nexport const whitelabelStylesService = new WhitelabelStylesService();\n"],"mappings":"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","names":[]}
@@ -1,14 +0,0 @@
1
- 'use server';
2
-
3
- import { cache } from 'react';
4
- import { whitelabelStylesService } from '../services/whitelabel-styles.service';
5
- import { WhitelabelStylesData } from '../styles-schema';
6
-
7
- export const findWhitelabelStyles = cache(async (id_wl: number): Promise<WhitelabelStylesData | null> => {
8
- try {
9
- return await whitelabelStylesService.getByWlId(id_wl);
10
- } catch (error) {
11
- console.error('[findWhitelabelStyles] Error fetching styles:', error);
12
- return null;
13
- }
14
- });
@@ -1,10 +0,0 @@
1
- 'use server';
2
-
3
- import { whitelabelStylesService } from '../services/whitelabel-styles.service';
4
- import { safeServerAction } from '../../../utils/safeServerAction';
5
-
6
- export async function revalidateWhitelabelStylesAction(id_wl: number) {
7
- return safeServerAction(async () => {
8
- return whitelabelStylesService.revalidateByWlId(id_wl);
9
- });
10
- }