mitra-interactions-sdk 1.0.16 → 1.0.17

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 CHANGED
@@ -44,6 +44,56 @@ const { configured } = configureMitra();
44
44
  // Se a URL contém ?token=xxx&backURL=xxx, o SDK é configurado automaticamente
45
45
  ```
46
46
 
47
+ ## Autenticação (Login)
48
+
49
+ O SDK oferece 3 métodos de login que autenticam o usuário e **auto-configuram o SDK** automaticamente.
50
+
51
+ ### loginWithEmailMitra
52
+
53
+ Login com email e senha.
54
+
55
+ ```typescript
56
+ import { loginWithEmailMitra } from 'mitra-interactions-sdk';
57
+
58
+ const result = await loginWithEmailMitra({
59
+ baseURL: 'https://api0.mitraecp.com:1005',
60
+ email: 'user@example.com',
61
+ password: 'senha123'
62
+ });
63
+ // SDK auto-configurado, pronto pra usar
64
+ // result: { token, type, merge: { userToken, backURL, userEmail, integrationURL, ... } }
65
+ ```
66
+
67
+ ### loginWithGoogleMitra
68
+
69
+ Login via Google OAuth. Abre popup do Google automaticamente (sem dependências npm extras).
70
+
71
+ ```typescript
72
+ import { loginWithGoogleMitra } from 'mitra-interactions-sdk';
73
+
74
+ const result = await loginWithGoogleMitra({
75
+ baseURL: 'https://api0.mitraecp.com:1005',
76
+ googleClientId: 'xxxxx.apps.googleusercontent.com'
77
+ });
78
+ // SDK auto-configurado após login
79
+ ```
80
+
81
+ ### loginWithMicrosoftMitra
82
+
83
+ Login via Microsoft OAuth. Abre popup da Microsoft automaticamente.
84
+
85
+ > **Requisito:** Instale `@azure/msal-browser` separadamente: `npm install @azure/msal-browser`
86
+
87
+ ```typescript
88
+ import { loginWithMicrosoftMitra } from 'mitra-interactions-sdk';
89
+
90
+ const result = await loginWithMicrosoftMitra({
91
+ baseURL: 'https://api0.mitraecp.com:1005',
92
+ msClientId: 'xxxxx-xxxx-xxxx-xxxx'
93
+ });
94
+ // SDK auto-configurado após login
95
+ ```
96
+
47
97
  ## Métodos Disponíveis
48
98
 
49
99
  ### runQueryMitra
@@ -131,7 +181,7 @@ const result = await stopServerFunctionExecutionMitra({
131
181
 
132
182
  Chama uma API externa via serviço de integrações do Mitra. O serviço de integrações roda em uma URL separada (ex: porta 1003) e cuida de autenticação, tokens e refresh automaticamente.
133
183
 
134
- > **Requisito:** A `integrationUrl` deve ser configurada via `configureSdkMitra({ ..., integrationUrl: 'https://api0.mitraecp.com:1003' })` ou via query param `integrationUrl` (auto-config com `configureMitra()`).
184
+ > **Requisito:** A `integrationURL` deve ser configurada via `configureSdkMitra({ ..., integrationURL: 'https://api0.mitraecp.com:1003' })` ou via query param `integrationURL` (auto-config com `configureMitra()`).
135
185
 
136
186
  ```typescript
137
187
  import { callIntegrationMitra } from 'mitra-interactions-sdk';
@@ -255,6 +305,11 @@ Todos os tipos estão incluídos:
255
305
  ```typescript
256
306
  import type {
257
307
  MitraConfig,
308
+ // Login
309
+ LoginWithEmailOptions,
310
+ LoginWithGoogleOptions,
311
+ LoginWithMicrosoftOptions,
312
+ LoginResponse,
258
313
  // Options
259
314
  RunQueryOptions,
260
315
  ExecuteDbActionOptions,
package/dist/index.d.mts CHANGED
@@ -7,7 +7,7 @@ interface MitraConfig {
7
7
  /** Token JWT para autenticação */
8
8
  token: string;
9
9
  /** URL base do serviço de integrações (ex: https://api0.mitraecp.com:1003) */
10
- integrationUrl?: string;
10
+ integrationURL?: string;
11
11
  }
12
12
  /**
13
13
  * Configura o SDK globalmente
@@ -37,6 +37,21 @@ declare function configureMitra(): {
37
37
  /**
38
38
  * Mitra Interactions SDK - Types
39
39
  */
40
+ interface LoginOptions {
41
+ /** URL da página de autenticação Mitra (ex: https://validacao.mitralab.io/auth/) */
42
+ authUrl: string;
43
+ }
44
+ interface LoginResponse {
45
+ token: string;
46
+ type: string;
47
+ merge: {
48
+ userToken: string;
49
+ frontURL: string;
50
+ backURL: string;
51
+ userEmail: string;
52
+ integrationURL?: string;
53
+ } | null;
54
+ }
40
55
  interface RunQueryOptions {
41
56
  /** ID do projeto */
42
57
  projectId: number;
@@ -220,6 +235,35 @@ interface StopServerFunctionExecutionResponse {
220
235
  };
221
236
  }
222
237
 
238
+ /**
239
+ * Mitra Interactions SDK - Autenticação
240
+ *
241
+ * Login via popup seguro hospedado no domínio Mitra.
242
+ * Credenciais nunca passam pelo código do desenvolvedor.
243
+ */
244
+
245
+ /**
246
+ * Login com email e senha via popup seguro Mitra.
247
+ *
248
+ * Abre popup no domínio Mitra onde o usuário digita as credenciais.
249
+ * O desenvolvedor nunca tem acesso a email/senha.
250
+ */
251
+ declare function loginWithEmailMitra(options: LoginOptions): Promise<LoginResponse>;
252
+ /**
253
+ * Login com Google via popup seguro Mitra.
254
+ *
255
+ * Abre popup que redireciona para o OAuth do Google.
256
+ * Funciona em qualquer domínio, sem Client ID.
257
+ */
258
+ declare function loginWithGoogleMitra(options: LoginOptions): Promise<LoginResponse>;
259
+ /**
260
+ * Login com Microsoft via popup seguro Mitra.
261
+ *
262
+ * Abre popup que redireciona para o OAuth da Microsoft.
263
+ * Funciona em qualquer domínio, sem Client ID.
264
+ */
265
+ declare function loginWithMicrosoftMitra(options: LoginOptions): Promise<LoginResponse>;
266
+
223
267
  /**
224
268
  * Mitra Interactions SDK - Services
225
269
  */
@@ -277,4 +321,4 @@ declare function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Pr
277
321
  */
278
322
  declare function logoutMitra(): void;
279
323
 
280
- export { type CallIntegrationOptions, type CallIntegrationResponse, type CreateRecordOptions, type CreateRecordsBatchOptions, type DeleteRecordOptions, type ExecuteDbActionOptions, type ExecuteDbActionResponse, type ExecuteServerFunctionAsyncOptions, type ExecuteServerFunctionAsyncResponse, type ExecuteServerFunctionOptions, type ExecuteServerFunctionResponse, type GetRecordOptions, type ListRecordsOptions, type ListRecordsResponse, type MitraConfig, type PatchRecordOptions, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, callIntegrationMitra, clearConfig, configureMitra, configureSdkMitra, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, isConfigured, listRecordsMitra, logoutMitra, patchRecordMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra };
324
+ export { type CallIntegrationOptions, type CallIntegrationResponse, type CreateRecordOptions, type CreateRecordsBatchOptions, type DeleteRecordOptions, type ExecuteDbActionOptions, type ExecuteDbActionResponse, type ExecuteServerFunctionAsyncOptions, type ExecuteServerFunctionAsyncResponse, type ExecuteServerFunctionOptions, type ExecuteServerFunctionResponse, type GetRecordOptions, type ListRecordsOptions, type ListRecordsResponse, type LoginOptions, type LoginResponse, type MitraConfig, type PatchRecordOptions, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, callIntegrationMitra, clearConfig, configureMitra, configureSdkMitra, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, isConfigured, listRecordsMitra, loginWithEmailMitra, loginWithGoogleMitra, loginWithMicrosoftMitra, logoutMitra, patchRecordMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra };
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ interface MitraConfig {
7
7
  /** Token JWT para autenticação */
8
8
  token: string;
9
9
  /** URL base do serviço de integrações (ex: https://api0.mitraecp.com:1003) */
10
- integrationUrl?: string;
10
+ integrationURL?: string;
11
11
  }
12
12
  /**
13
13
  * Configura o SDK globalmente
@@ -37,6 +37,21 @@ declare function configureMitra(): {
37
37
  /**
38
38
  * Mitra Interactions SDK - Types
39
39
  */
40
+ interface LoginOptions {
41
+ /** URL da página de autenticação Mitra (ex: https://validacao.mitralab.io/auth/) */
42
+ authUrl: string;
43
+ }
44
+ interface LoginResponse {
45
+ token: string;
46
+ type: string;
47
+ merge: {
48
+ userToken: string;
49
+ frontURL: string;
50
+ backURL: string;
51
+ userEmail: string;
52
+ integrationURL?: string;
53
+ } | null;
54
+ }
40
55
  interface RunQueryOptions {
41
56
  /** ID do projeto */
42
57
  projectId: number;
@@ -220,6 +235,35 @@ interface StopServerFunctionExecutionResponse {
220
235
  };
221
236
  }
222
237
 
238
+ /**
239
+ * Mitra Interactions SDK - Autenticação
240
+ *
241
+ * Login via popup seguro hospedado no domínio Mitra.
242
+ * Credenciais nunca passam pelo código do desenvolvedor.
243
+ */
244
+
245
+ /**
246
+ * Login com email e senha via popup seguro Mitra.
247
+ *
248
+ * Abre popup no domínio Mitra onde o usuário digita as credenciais.
249
+ * O desenvolvedor nunca tem acesso a email/senha.
250
+ */
251
+ declare function loginWithEmailMitra(options: LoginOptions): Promise<LoginResponse>;
252
+ /**
253
+ * Login com Google via popup seguro Mitra.
254
+ *
255
+ * Abre popup que redireciona para o OAuth do Google.
256
+ * Funciona em qualquer domínio, sem Client ID.
257
+ */
258
+ declare function loginWithGoogleMitra(options: LoginOptions): Promise<LoginResponse>;
259
+ /**
260
+ * Login com Microsoft via popup seguro Mitra.
261
+ *
262
+ * Abre popup que redireciona para o OAuth da Microsoft.
263
+ * Funciona em qualquer domínio, sem Client ID.
264
+ */
265
+ declare function loginWithMicrosoftMitra(options: LoginOptions): Promise<LoginResponse>;
266
+
223
267
  /**
224
268
  * Mitra Interactions SDK - Services
225
269
  */
@@ -277,4 +321,4 @@ declare function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Pr
277
321
  */
278
322
  declare function logoutMitra(): void;
279
323
 
280
- export { type CallIntegrationOptions, type CallIntegrationResponse, type CreateRecordOptions, type CreateRecordsBatchOptions, type DeleteRecordOptions, type ExecuteDbActionOptions, type ExecuteDbActionResponse, type ExecuteServerFunctionAsyncOptions, type ExecuteServerFunctionAsyncResponse, type ExecuteServerFunctionOptions, type ExecuteServerFunctionResponse, type GetRecordOptions, type ListRecordsOptions, type ListRecordsResponse, type MitraConfig, type PatchRecordOptions, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, callIntegrationMitra, clearConfig, configureMitra, configureSdkMitra, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, isConfigured, listRecordsMitra, logoutMitra, patchRecordMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra };
324
+ export { type CallIntegrationOptions, type CallIntegrationResponse, type CreateRecordOptions, type CreateRecordsBatchOptions, type DeleteRecordOptions, type ExecuteDbActionOptions, type ExecuteDbActionResponse, type ExecuteServerFunctionAsyncOptions, type ExecuteServerFunctionAsyncResponse, type ExecuteServerFunctionOptions, type ExecuteServerFunctionResponse, type GetRecordOptions, type ListRecordsOptions, type ListRecordsResponse, type LoginOptions, type LoginResponse, type MitraConfig, type PatchRecordOptions, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, callIntegrationMitra, clearConfig, configureMitra, configureSdkMitra, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, isConfigured, listRecordsMitra, loginWithEmailMitra, loginWithGoogleMitra, loginWithMicrosoftMitra, logoutMitra, patchRecordMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra };
package/dist/index.js CHANGED
@@ -31,18 +31,100 @@ function configureMitra() {
31
31
  const params = new URLSearchParams(window.location.search);
32
32
  const token = params.get("token");
33
33
  const backURL = params.get("backURL");
34
- const integrationUrl = params.get("integrationUrl");
34
+ const integrationURL = params.get("integrationURL");
35
35
  if (token && backURL) {
36
36
  configureSdkMitra({
37
37
  baseURL: backURL,
38
38
  token: token.startsWith("Bearer ") ? token : `Bearer ${token}`,
39
- ...integrationUrl ? { integrationUrl } : {}
39
+ ...integrationURL ? { integrationURL } : {}
40
40
  });
41
41
  return { configured: true };
42
42
  }
43
43
  return { configured: false };
44
44
  }
45
45
 
46
+ // src/auth.ts
47
+ var AUTH_MESSAGE_TYPE = "mitra-auth-result";
48
+ var POPUP_WIDTH = 420;
49
+ var POPUP_HEIGHT = 520;
50
+ function getOriginFromUrl(url) {
51
+ try {
52
+ const parsed = new URL(url);
53
+ return parsed.origin;
54
+ } catch (e) {
55
+ return "";
56
+ }
57
+ }
58
+ function openAuthPopup(url, expectedOrigin) {
59
+ return new Promise((resolve, reject) => {
60
+ const left = (typeof window.screenX === "number" ? window.screenX : 0) + (window.outerWidth - POPUP_WIDTH) / 2;
61
+ const top = (typeof window.screenY === "number" ? window.screenY : 0) + (window.outerHeight - POPUP_HEIGHT) / 2;
62
+ const popup = window.open(
63
+ url,
64
+ "mitra-auth",
65
+ `width=${POPUP_WIDTH},height=${POPUP_HEIGHT},left=${left},top=${top},menubar=no,toolbar=no,status=no`
66
+ );
67
+ if (!popup) {
68
+ reject(new Error("Popup bloqueado pelo navegador. Permita popups para este site."));
69
+ return;
70
+ }
71
+ function onMessage(event) {
72
+ if (event.origin !== expectedOrigin) return;
73
+ if (!event.data || event.data.type !== AUTH_MESSAGE_TYPE) return;
74
+ cleanup();
75
+ if (event.data.success) {
76
+ resolve(event.data.data);
77
+ } else {
78
+ reject(new Error(event.data.error || "Erro na autentica\xE7\xE3o"));
79
+ }
80
+ }
81
+ const pollTimer = setInterval(() => {
82
+ if (popup.closed) {
83
+ cleanup();
84
+ reject(new Error("Login cancelado pelo usu\xE1rio"));
85
+ }
86
+ }, 500);
87
+ function cleanup() {
88
+ window.removeEventListener("message", onMessage);
89
+ clearInterval(pollTimer);
90
+ }
91
+ window.addEventListener("message", onMessage);
92
+ });
93
+ }
94
+ function autoConfigureFromLogin(response) {
95
+ if (!response.merge) return;
96
+ const token = response.token.startsWith("Bearer ") ? response.token : `Bearer ${response.token}`;
97
+ configureSdkMitra({
98
+ baseURL: response.merge.backURL,
99
+ token,
100
+ ...response.merge.integrationURL ? { integrationURL: response.merge.integrationURL } : {}
101
+ });
102
+ }
103
+ function buildAuthUrl(authUrl, method) {
104
+ return `${authUrl.replace(/\/+$/, "")}?method=${method}`;
105
+ }
106
+ async function loginWithEmailMitra(options) {
107
+ const origin = getOriginFromUrl(options.authUrl);
108
+ const url = buildAuthUrl(options.authUrl, "email");
109
+ const response = await openAuthPopup(url, origin);
110
+ autoConfigureFromLogin(response);
111
+ return response;
112
+ }
113
+ async function loginWithGoogleMitra(options) {
114
+ const origin = getOriginFromUrl(options.authUrl);
115
+ const url = buildAuthUrl(options.authUrl, "google");
116
+ const response = await openAuthPopup(url, origin);
117
+ autoConfigureFromLogin(response);
118
+ return response;
119
+ }
120
+ async function loginWithMicrosoftMitra(options) {
121
+ const origin = getOriginFromUrl(options.authUrl);
122
+ const url = buildAuthUrl(options.authUrl, "microsoft");
123
+ const response = await openAuthPopup(url, origin);
124
+ autoConfigureFromLogin(response);
125
+ return response;
126
+ }
127
+
46
128
  // src/client.ts
47
129
  function getFetch() {
48
130
  if (typeof globalThis.fetch === "function") {
@@ -114,11 +196,11 @@ async function requestWithTenant(method, endpoint, tenantId, options) {
114
196
  var httpIntegrations = {
115
197
  async post(endpoint, body) {
116
198
  const config = getConfig();
117
- if (!config.integrationUrl) {
118
- throw new Error("integrationUrl n\xE3o configurado. Passe integrationUrl em configureSdkMitra() ou via query param.");
199
+ if (!config.integrationURL) {
200
+ throw new Error("integrationURL n\xE3o configurado. Passe integrationURL em configureSdkMitra() ou via query param.");
119
201
  }
120
202
  const fetchFn = getFetch();
121
- const url = `${config.integrationUrl.replace(/\/+$/, "")}${endpoint}`;
203
+ const url = `${config.integrationURL.replace(/\/+$/, "")}${endpoint}`;
122
204
  const response = await fetchFn(url, {
123
205
  method: "POST",
124
206
  headers: {
@@ -285,6 +367,9 @@ exports.getConfig = getConfig;
285
367
  exports.getRecordMitra = getRecordMitra;
286
368
  exports.isConfigured = isConfigured;
287
369
  exports.listRecordsMitra = listRecordsMitra;
370
+ exports.loginWithEmailMitra = loginWithEmailMitra;
371
+ exports.loginWithGoogleMitra = loginWithGoogleMitra;
372
+ exports.loginWithMicrosoftMitra = loginWithMicrosoftMitra;
288
373
  exports.logoutMitra = logoutMitra;
289
374
  exports.patchRecordMitra = patchRecordMitra;
290
375
  exports.runQueryMitra = runQueryMitra;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/client.ts","../src/services.ts"],"names":[],"mappings":";;;AAaA,IAAI,YAAA,GAAmC,IAAA;AAKhC,SAAS,kBAAkB,MAAA,EAA2B;AAC3D,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,IAAI,MAAM,6BAAuB,CAAA;AAAA,EACzC;AACA,EAAA,IAAI,CAAC,OAAO,KAAA,EAAO;AACjB,IAAA,MAAM,IAAI,MAAM,2BAAqB,CAAA;AAAA,EACvC;AAEA,EAAA,YAAA,GAAe;AAAA,IACb,GAAG,MAAA;AAAA,IACH,OAAA,EAAS,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,QAAQ,EAAE;AAAA,GAC5C;AACF;AAKO,SAAS,SAAA,GAAyB;AACvC,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,MAAM,6DAA0D,CAAA;AAAA,EAC5E;AACA,EAAA,OAAO,YAAA;AACT;AAKO,SAAS,YAAA,GAAwB;AACtC,EAAA,OAAO,YAAA,KAAiB,IAAA;AAC1B;AAKO,SAAS,WAAA,GAAoB;AAClC,EAAA,YAAA,GAAe,IAAA;AACjB;AAOO,SAAS,cAAA,GAA0C;AACxD,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,EAAE,YAAY,KAAA,EAAM;AAE9D,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,MAAA,CAAO,SAAS,MAAM,CAAA;AACzD,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AAChC,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,SAAS,CAAA;AACpC,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,GAAA,CAAI,gBAAgB,CAAA;AAElD,EAAA,IAAI,SAAS,OAAA,EAAS;AACpB,IAAA,iBAAA,CAAkB;AAAA,MAChB,OAAA,EAAS,OAAA;AAAA,MACT,OAAO,KAAA,CAAM,UAAA,CAAW,SAAS,CAAA,GAAI,KAAA,GAAQ,UAAU,KAAK,CAAA,CAAA;AAAA,MAC5D,GAAI,cAAA,GAAiB,EAAE,cAAA,KAAmB;AAAC,KAC5C,CAAA;AACD,IAAA,OAAO,EAAE,YAAY,IAAA,EAAK;AAAA,EAC5B;AAEA,EAAA,OAAO,EAAE,YAAY,KAAA,EAAM;AAC7B;;;ACtEA,SAAS,QAAA,GAAyB;AAChC,EAAA,IAAI,OAAO,UAAA,CAAW,KAAA,KAAU,UAAA,EAAY;AAC1C,IAAA,OAAO,UAAA,CAAW,KAAA;AAAA,EACpB;AACA,EAAA,MAAM,IAAI,MAAM,oEAA8D,CAAA;AAChF;AAKA,SAAS,YAAY,KAAA,EAAuB;AAC1C,EAAA,OAAO,MAAM,UAAA,CAAW,SAAS,CAAA,GAAI,KAAA,GAAQ,UAAU,KAAK,CAAA,CAAA;AAC9D;AAKA,SAAS,YAAA,GAAuC;AAC9C,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,OAAO;AAAA,IACL,eAAA,EAAiB,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA;AAAA,IACzC,cAAA,EAAgB;AAAA,GAClB;AACF;AAKA,SAAS,QAAA,CAAS,UAAkB,MAAA,EAA0C;AAC5E,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,IAAI,GAAA,GAAM,CAAA,EAAG,MAAA,CAAO,OAAO,GAAG,QAAQ,CAAA,CAAA;AACtC,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,MAAM,EAChC,MAAA,CAAO,CAAC,GAAG,CAAC,CAAA,KAAM,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,IAAI,CAAA,CAC/C,GAAA,CAAI,CAAC,CAAC,GAAG,CAAC,CAAA,KAAM,CAAA,EAAG,kBAAA,CAAmB,CAAC,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAmB,MAAA,CAAO,CAAC,CAAC,CAAC,CAAA,CAAE,CAAA,CAC3E,KAAK,GAAG,CAAA;AACX,IAAA,IAAI,KAAA,EAAO,GAAA,IAAO,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,GAAA;AACT;AAKO,IAAM,IAAA,GAAO;AAAA,EAClB,MAAM,IAAA,CAAQ,QAAA,EAAkB,IAAA,EAA4B;AAC1D,IAAA,MAAM,UAAU,QAAA,EAAS;AAEzB,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA,EAAG;AAAA,MACjD,MAAA,EAAQ,MAAA;AAAA,MACR,SAAS,YAAA,EAAa;AAAA,MACtB,MAAM,IAAA,KAAS,MAAA,GAAY,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,GAAI;AAAA,KACnD,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAM,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA;AAEvC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM;AAAA,QACJ,UAAS,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,OAAA,MAAW,6BAAM,KAAA,CAAA,IAAS,CAAA,KAAA,EAAQ,SAAS,MAAM,CAAA,CAAA;AAAA,QAChE,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,OAAA,EAAS;AAAA,OACX;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;AAGA,eAAe,iBAAA,CACb,MAAA,EACA,QAAA,EACA,QAAA,EACA,OAAA,EACY;AACZ,EAAA,MAAM,UAAU,QAAA,EAAS;AAEzB,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,GAAG,YAAA,EAAa;AAAA,IAChB,YAAA,EAAc,OAAO,QAAQ;AAAA,GAC/B;AAEA,EAAA,MAAM,WAAW,MAAM,OAAA,CAAQ,SAAS,QAAA,EAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,MAAM,CAAA,EAAG;AAAA,IAClE,MAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA,EAAA,CAAM,mCAAS,IAAA,MAAS,MAAA,GAAY,KAAK,SAAA,CAAU,OAAA,CAAQ,IAAI,CAAA,GAAI;AAAA,GACpE,CAAA;AAED,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,EAAA,MAAM,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA;AAEvC,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM;AAAA,MACJ,UAAS,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,OAAA,MAAW,6BAAM,KAAA,CAAA,IAAS,CAAA,KAAA,EAAQ,SAAS,MAAM,CAAA,CAAA;AAAA,MAChE,QAAQ,QAAA,CAAS,MAAA;AAAA,MACjB,OAAA,EAAS;AAAA,KACX;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAKO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,MAAM,IAAA,CAAQ,QAAA,EAAkB,IAAA,EAA4B;AAC1D,IAAA,MAAM,SAAS,SAAA,EAAU;AACzB,IAAA,IAAI,CAAC,OAAO,cAAA,EAAgB;AAC1B,MAAA,MAAM,IAAI,MAAM,oGAAiG,CAAA;AAAA,IACnH;AAEA,IAAA,MAAM,UAAU,QAAA,EAAS;AACzB,IAAA,MAAM,GAAA,GAAM,GAAG,MAAA,CAAO,cAAA,CAAe,QAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA,EAAG,QAAQ,CAAA,CAAA;AAEnE,IAAA,MAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,GAAA,EAAK;AAAA,MAClC,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,eAAA,EAAiB,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA;AAAA,QACzC,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,MAAM,IAAA,KAAS,MAAA,GAAY,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,GAAI;AAAA,KACnD,CAAA;AAED,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAM,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA;AAEvC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM;AAAA,QACJ,UAAS,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,OAAA,MAAW,6BAAM,KAAA,CAAA,IAAS,CAAA,KAAA,EAAQ,SAAS,MAAM,CAAA,CAAA;AAAA,QAChE,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,OAAA,EAAS;AAAA,OACX;AAAA,IACF;AAEA,IAAA,OAAO,IAAA;AAAA,EACT;AACF,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,GAAA,CAAO,QAAA,EAAkB,QAAA,EAAkB,MAAA,EAA8C;AACvF,IAAA,OAAO,kBAAkB,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,EAAE,QAAQ,CAAA;AAAA,EAChE,CAAA;AAAA,EACA,IAAA,CAAQ,QAAA,EAAkB,QAAA,EAAkB,IAAA,EAAgB,MAAA,EAA8C;AACxG,IAAA,OAAO,kBAAkB,MAAA,EAAQ,QAAA,EAAU,UAAU,EAAE,IAAA,EAAM,QAAQ,CAAA;AAAA,EACvE,CAAA;AAAA,EACA,GAAA,CAAO,QAAA,EAAkB,QAAA,EAAkB,IAAA,EAAgB,MAAA,EAA8C;AACvG,IAAA,OAAO,kBAAkB,KAAA,EAAO,QAAA,EAAU,UAAU,EAAE,IAAA,EAAM,QAAQ,CAAA;AAAA,EACtE,CAAA;AAAA,EACA,KAAA,CAAS,QAAA,EAAkB,QAAA,EAAkB,IAAA,EAAgB,MAAA,EAA8C;AACzG,IAAA,OAAO,kBAAkB,OAAA,EAAS,QAAA,EAAU,UAAU,EAAE,IAAA,EAAM,QAAQ,CAAA;AAAA,EACxE,CAAA;AAAA,EACA,GAAA,CAAO,QAAA,EAAkB,QAAA,EAAkB,MAAA,EAA8C;AACvF,IAAA,OAAO,kBAAkB,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,EAAE,QAAQ,CAAA;AAAA,EACnE;AACF,CAAA;;;ACjIA,eAAsB,cAAc,OAAA,EAAqD;AACvF,EAAA,MAAM,IAAA,GAAgC;AAAA,IACpC,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,KAAK,OAAA,CAAQ;AAAA,GACf;AAEA,EAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAW;AAChC,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AAAA,EACxB;AAEA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,2BAAA,EAA6B,IAAI,CAAA;AACpD;AAMA,eAAsB,qBAAqB,OAAA,EAAmE;AAC5G,EAAA,MAAM,IAAA,GAAgC;AAAA,IACpC,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,YAAY,OAAA,CAAQ;AAAA,GACtB;AAEA,EAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAW;AAChC,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AAAA,EACxB;AAEA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,kCAAA,EAAoC,IAAI,CAAA;AAC3D;AAMA,eAAsB,mBAAmB,OAAA,EAA+D;AACtG,EAAA,OAAO,IAAA,CAAK,KAAK,gCAAA,EAAkC;AAAA,IACjD,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,YAAY,OAAA,CAAQ;AAAA,GACrB,CAAA;AACH;AAMA,eAAsB,iBAAiB,OAAA,EAA2D;AAChG,EAAA,MAAM,IAAA,GAAgC;AAAA,IACpC,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,KAAK,OAAA,CAAQ;AAAA,GACf;AAEA,EAAA,IAAI,OAAA,CAAQ,UAAU,MAAA,EAAW;AAC/B,IAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,KAAA;AAAA,EACvB;AAEA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,8BAAA,EAAgC,IAAI,CAAA;AACvD;AAMA,eAAsB,2BAA2B,OAAA,EAA+E;AAC9H,EAAA,MAAM,IAAA,GAAgC;AAAA,IACpC,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,kBAAkB,OAAA,CAAQ;AAAA,GAC5B;AAEA,EAAA,IAAI,OAAA,CAAQ,UAAU,MAAA,EAAW;AAC/B,IAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,KAAA;AAAA,EACvB;AAEA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,wCAAA,EAA0C,IAAI,CAAA;AACjE;AAMA,eAAsB,gCAAgC,OAAA,EAAyF;AAC7I,EAAA,MAAM,IAAA,GAAgC;AAAA,IACpC,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,kBAAkB,OAAA,CAAQ;AAAA,GAC5B;AAEA,EAAA,IAAI,OAAA,CAAQ,UAAU,MAAA,EAAW;AAC/B,IAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,KAAA;AAAA,EACvB;AAEA,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,6CAAA,EAA+C,IAAI,CAAA;AACtE;AAOA,eAAsB,qBAAqB,OAAA,EAAmE;AAC5G,EAAA,MAAM,IAAA,GAAgC;AAAA,IACpC,iBAAiB,OAAA,CAAQ,UAAA;AAAA,IACzB,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,QAAQ,OAAA,CAAQ;AAAA,GAClB;AAEA,EAAA,IAAI,OAAA,CAAQ,aAAa,MAAA,EAAW;AAClC,IAAA,IAAA,CAAK,WAAW,OAAA,CAAQ,QAAA;AAAA,EAC1B;AAEA,EAAA,IAAI,OAAA,CAAQ,WAAW,MAAA,EAAW;AAChC,IAAA,IAAA,CAAK,SAAS,OAAA,CAAQ,MAAA;AAAA,EACxB;AAEA,EAAA,IAAI,OAAA,CAAQ,SAAS,MAAA,EAAW;AAC9B,IAAA,IAAA,CAAK,OAAO,OAAA,CAAQ,IAAA;AAAA,EACtB;AAEA,EAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,mBAAA,EAAqB,IAAI,CAAA;AACxD;AAMA,eAAsB,iCAAiC,OAAA,EAA2F;AAChJ,EAAA,OAAO,IAAA,CAAK,KAAK,8CAAA,EAAgD;AAAA,IAC/D,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,aAAa,OAAA,CAAQ;AAAA,GACtB,CAAA;AACH;AAIA,eAAsB,iBAAiB,OAAA,EAA2D;AAChG,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAW,MAAM,IAAA,EAAM,OAAA,EAAS,wBAAuB,GAAI,OAAA;AAC9E,EAAA,OAAO,UAAA,CAAW,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,SAAA,EAAW,EAAE,IAAA,EAAM,IAAA,EAAM,sBAAA,EAAwB,GAAG,OAAA,EAAS,CAAA;AAClH;AAEA,eAAsB,eAAe,OAAA,EAAyD;AAC5F,EAAA,MAAM,EAAE,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,wBAAuB,GAAI,OAAA;AAC7D,EAAA,OAAO,UAAA,CAAW,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,SAAA,EAAW,EAAE,sBAAA,EAAwB,CAAA;AAChG;AAEA,eAAsB,kBAAkB,OAAA,EAA4D;AAClG,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAW,IAAA,EAAM,wBAAuB,GAAI,OAAA;AAC/D,EAAA,OAAO,UAAA,CAAW,KAAK,CAAA,aAAA,EAAgB,SAAS,IAAI,SAAA,EAAW,IAAA,EAAM,EAAE,sBAAA,EAAwB,CAAA;AACjG;AAEA,eAAsB,kBAAkB,OAAA,EAA4D;AAClG,EAAA,MAAM,EAAE,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,IAAA,EAAM,wBAAuB,GAAI,OAAA;AACnE,EAAA,OAAO,UAAA,CAAW,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,SAAA,EAAW,IAAA,EAAM,EAAE,sBAAA,EAAwB,CAAA;AACtG;AAEA,eAAsB,iBAAiB,OAAA,EAA2D;AAChG,EAAA,MAAM,EAAE,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,IAAA,EAAM,wBAAuB,GAAI,OAAA;AACnE,EAAA,OAAO,UAAA,CAAW,KAAA,CAAM,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,SAAA,EAAW,IAAA,EAAM,EAAE,sBAAA,EAAwB,CAAA;AACxG;AAEA,eAAsB,kBAAkB,OAAA,EAA6C;AACnF,EAAA,MAAM,EAAE,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,wBAAuB,GAAI,OAAA;AAC7D,EAAA,OAAO,UAAA,CAAW,GAAA,CAAI,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,SAAA,EAAW,EAAE,sBAAA,EAAwB,CAAA;AAChG;AAEA,eAAsB,wBAAwB,OAAA,EAAoE;AAChH,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAW,OAAA,EAAS,wBAAuB,GAAI,OAAA;AAClE,EAAA,OAAO,UAAA,CAAW,KAAK,CAAA,aAAA,EAAgB,SAAS,UAAU,SAAA,EAAW,OAAA,EAAS,EAAE,sBAAA,EAAwB,CAAA;AAC1G;AAOO,SAAS,WAAA,GAAoB;AAClC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,EAAA,MAAA,CAAO,MAAA,CAAO,YAAY,IAAA,CAAK,SAAA,CAAU,EAAE,IAAA,EAAM,kBAAA,EAAoB,CAAA,EAAG,GAAG,CAAA;AAC7E","file":"index.js","sourcesContent":["/**\n * Mitra Interactions SDK - Configuração\n */\n\nexport interface MitraConfig {\n /** URL base da API (ex: https://api.mitra.com) */\n baseURL: string;\n /** Token JWT para autenticação */\n token: string;\n /** URL base do serviço de integrações (ex: https://api0.mitraecp.com:1003) */\n integrationUrl?: string;\n}\n\nlet globalConfig: MitraConfig | null = null;\n\n/**\n * Configura o SDK globalmente\n */\nexport function configureSdkMitra(config: MitraConfig): void {\n if (!config.baseURL) {\n throw new Error('baseURL é obrigatório');\n }\n if (!config.token) {\n throw new Error('token é obrigatório');\n }\n\n globalConfig = {\n ...config,\n baseURL: config.baseURL.replace(/\\/+$/, '')\n };\n}\n\n/**\n * Obtém a configuração atual\n */\nexport function getConfig(): MitraConfig {\n if (!globalConfig) {\n throw new Error('SDK não configurado. Chame configureSdkMitra() primeiro.');\n }\n return globalConfig;\n}\n\n/**\n * Verifica se o SDK está configurado\n */\nexport function isConfigured(): boolean {\n return globalConfig !== null;\n}\n\n/**\n * Limpa a configuração\n */\nexport function clearConfig(): void {\n globalConfig = null;\n}\n\n/**\n * Auto-configura o SDK a partir dos query params da URL (token e backURL).\n * Útil quando o SDK roda dentro de um iframe que recebe as credenciais via URL.\n * Retorna { configured: true } se encontrou os params e configurou, ou { configured: false } caso contrário.\n */\nexport function configureMitra(): { configured: boolean } {\n if (typeof window === 'undefined') return { configured: false };\n\n const params = new URLSearchParams(window.location.search);\n const token = params.get('token');\n const backURL = params.get('backURL');\n const integrationUrl = params.get('integrationUrl');\n\n if (token && backURL) {\n configureSdkMitra({\n baseURL: backURL,\n token: token.startsWith('Bearer ') ? token : `Bearer ${token}`,\n ...(integrationUrl ? { integrationUrl } : {})\n });\n return { configured: true };\n }\n\n return { configured: false };\n}\n","/**\n * Mitra Interactions SDK - HTTP Client\n */\n\nimport { getConfig } from './config';\n\n/**\n * Obtém a função fetch\n */\nfunction getFetch(): typeof fetch {\n if (typeof globalThis.fetch === 'function') {\n return globalThis.fetch;\n }\n throw new Error('fetch não disponível. Use Node.js 18+ ou instale node-fetch.');\n}\n\n/**\n * Formata o token para Authorization\n */\nfunction formatToken(token: string): string {\n return token.startsWith('Bearer ') ? token : `Bearer ${token}`;\n}\n\n/**\n * Constrói os headers\n */\nfunction buildHeaders(): Record<string, string> {\n const config = getConfig();\n return {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n };\n}\n\n/**\n * Constrói a URL com query params opcionais\n */\nfunction buildUrl(endpoint: string, params?: Record<string, unknown>): string {\n const config = getConfig();\n let url = `${config.baseURL}${endpoint}`;\n if (params) {\n const query = Object.entries(params)\n .filter(([, v]) => v !== undefined && v !== null)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n if (query) url += `?${query}`;\n }\n return url;\n}\n\n/**\n * Cliente HTTP\n */\nexport const http = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const fetchFn = getFetch();\n\n const response = await fetchFn(buildUrl(endpoint), {\n method: 'POST',\n headers: buildHeaders(),\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\n// HTTP client para Dynamic Schema (usa X-TenantID header)\nasync function requestWithTenant<T>(\n method: string,\n endpoint: string,\n tenantId: number,\n options?: { params?: Record<string, unknown>; body?: unknown }\n): Promise<T> {\n const fetchFn = getFetch();\n\n const headers = {\n ...buildHeaders(),\n 'X-TenantID': String(tenantId)\n };\n\n const response = await fetchFn(buildUrl(endpoint, options?.params), {\n method,\n headers,\n body: options?.body !== undefined ? JSON.stringify(options.body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n}\n\n/**\n * Cliente HTTP para o serviço de integrações (porta diferente)\n */\nexport const httpIntegrations = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const config = getConfig();\n if (!config.integrationUrl) {\n throw new Error('integrationUrl não configurado. Passe integrationUrl em configureSdkMitra() ou via query param.');\n }\n\n const fetchFn = getFetch();\n const url = `${config.integrationUrl.replace(/\\/+$/, '')}${endpoint}`;\n\n const response = await fetchFn(url, {\n method: 'POST',\n headers: {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n },\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\nexport const httpTenant = {\n get<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('GET', endpoint, tenantId, { params });\n },\n post<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('POST', endpoint, tenantId, { body, params });\n },\n put<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PUT', endpoint, tenantId, { body, params });\n },\n patch<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PATCH', endpoint, tenantId, { body, params });\n },\n del<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('DELETE', endpoint, tenantId, { params });\n }\n};\n","/**\n * Mitra Interactions SDK - Services\n */\n\nimport { http, httpIntegrations, httpTenant } from './client';\nimport type {\n RunQueryOptions,\n RunQueryResponse,\n ExecuteDbActionOptions,\n ExecuteDbActionResponse,\n SetFileStatusOptions,\n SetFileStatusResponse,\n SetVariableOptions,\n SetVariableResponse,\n ExecuteServerFunctionOptions,\n ExecuteServerFunctionResponse,\n ExecuteServerFunctionAsyncOptions,\n ExecuteServerFunctionAsyncResponse,\n CallIntegrationOptions,\n CallIntegrationResponse,\n StopServerFunctionExecutionOptions,\n StopServerFunctionExecutionResponse,\n ListRecordsOptions,\n ListRecordsResponse,\n GetRecordOptions,\n CreateRecordOptions,\n UpdateRecordOptions,\n PatchRecordOptions,\n DeleteRecordOptions,\n CreateRecordsBatchOptions\n} from './types';\n\n/**\n * POST /agentAiShortcut/runQuery\n * Executa query SELECT em um projeto\n */\nexport async function runQueryMitra(options: RunQueryOptions): Promise<RunQueryResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n sql: options.sql\n };\n\n if (options.jdbcId !== undefined) {\n body.jdbcId = options.jdbcId;\n }\n\n return http.post('/agentAiShortcut/runQuery', body);\n}\n\n/**\n * POST /agentAiShortcut/executeDbAction\n * Executa uma DBAction (DML) cadastrada\n */\nexport async function executeDbActionMitra(options: ExecuteDbActionOptions): Promise<ExecuteDbActionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n dbActionId: options.dbActionId\n };\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n return http.post('/agentAiShortcut/executeDbAction', body);\n}\n\n/**\n * POST /agentAiShortcut/setFileStatus\n * Move arquivo do chat para PUBLIC ou LOADABLE\n */\nexport async function setFileStatusMitra(options: SetFileStatusOptions): Promise<SetFileStatusResponse> {\n return http.post('/agentAiShortcut/setFileStatus', {\n projectId: options.projectId,\n fileName: options.fileName,\n targetPath: options.targetPath\n });\n}\n\n/**\n * POST /agentAiShortcut/setVariable\n * Cria ou atualiza uma variável customizada\n */\nexport async function setVariableMitra(options: SetVariableOptions): Promise<SetVariableResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n key: options.key\n };\n\n if (options.value !== undefined) {\n body.value = options.value;\n }\n\n return http.post('/agentAiShortcut/setVariable', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunction\n * Executa uma Server Function de forma SÍNCRONA (timeout 60s no backend)\n */\nexport async function executeServerFunctionMitra(options: ExecuteServerFunctionOptions): Promise<ExecuteServerFunctionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunction', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunctionAsync\n * Executa uma Server Function de forma ASSÍNCRONA (retorna executionId imediatamente)\n */\nexport async function executeServerFunctionAsyncMitra(options: ExecuteServerFunctionAsyncOptions): Promise<ExecuteServerFunctionAsyncResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunctionAsync', body);\n}\n\n/**\n * POST /integration/call\n * Chama uma API externa via serviço de integrações (porta separada)\n * Mapeia connection → integrationSlug no body\n */\nexport async function callIntegrationMitra(options: CallIntegrationOptions): Promise<CallIntegrationResponse> {\n const body: Record<string, unknown> = {\n integrationSlug: options.connection,\n projectId: options.projectId,\n method: options.method\n };\n\n if (options.endpoint !== undefined) {\n body.endpoint = options.endpoint;\n }\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n if (options.body !== undefined) {\n body.body = options.body;\n }\n\n return httpIntegrations.post('/integration/call', body);\n}\n\n/**\n * POST /agentAiShortcut/stopServerFunctionExecution\n * Para a execução de uma Server Function em andamento\n */\nexport async function stopServerFunctionExecutionMitra(options: StopServerFunctionExecutionOptions): Promise<StopServerFunctionExecutionResponse> {\n return http.post('/agentAiShortcut/stopServerFunctionExecution', {\n projectId: options.projectId,\n executionId: options.executionId\n });\n}\n\n// === Dynamic Schema CRUD ===\n\nexport async function listRecordsMitra(options: ListRecordsOptions): Promise<ListRecordsResponse> {\n const { tableName, projectId, page, size, filters, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}`, projectId, { page, size, jdbcConnectionConfigId, ...filters });\n}\n\nexport async function getRecordMitra(options: GetRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordMitra(options: CreateRecordOptions): Promise<Record<string, any>> {\n const { tableName, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function updateRecordMitra(options: UpdateRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.put(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function patchRecordMitra(options: PatchRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.patch(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function deleteRecordMitra(options: DeleteRecordOptions): Promise<void> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.del(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Promise<Record<string, any>[]> {\n const { tableName, projectId, records, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}/batch`, projectId, records, { jdbcConnectionConfigId });\n}\n\n// === PostMessage Services ===\n\n/**\n * Envia postMessage para o app pai (Mitra Nuxt) solicitando logout do usuário.\n */\nexport function logoutMitra(): void {\n if (typeof window === 'undefined') return;\n window.parent.postMessage(JSON.stringify({ type: 'mitra-sdk:logout' }), '*');\n}\n"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/auth.ts","../src/client.ts","../src/services.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Mitra Interactions SDK - Configuração\n */\n\nexport interface MitraConfig {\n /** URL base da API (ex: https://api.mitra.com) */\n baseURL: string;\n /** Token JWT para autenticação */\n token: string;\n /** URL base do serviço de integrações (ex: https://api0.mitraecp.com:1003) */\n integrationURL?: string;\n}\n\nlet globalConfig: MitraConfig | null = null;\n\n/**\n * Configura o SDK globalmente\n */\nexport function configureSdkMitra(config: MitraConfig): void {\n if (!config.baseURL) {\n throw new Error('baseURL é obrigatório');\n }\n if (!config.token) {\n throw new Error('token é obrigatório');\n }\n\n globalConfig = {\n ...config,\n baseURL: config.baseURL.replace(/\\/+$/, '')\n };\n}\n\n/**\n * Obtém a configuração atual\n */\nexport function getConfig(): MitraConfig {\n if (!globalConfig) {\n throw new Error('SDK não configurado. Chame configureSdkMitra() primeiro.');\n }\n return globalConfig;\n}\n\n/**\n * Verifica se o SDK está configurado\n */\nexport function isConfigured(): boolean {\n return globalConfig !== null;\n}\n\n/**\n * Limpa a configuração\n */\nexport function clearConfig(): void {\n globalConfig = null;\n}\n\n/**\n * Auto-configura o SDK a partir dos query params da URL (token e backURL).\n * Útil quando o SDK roda dentro de um iframe que recebe as credenciais via URL.\n * Retorna { configured: true } se encontrou os params e configurou, ou { configured: false } caso contrário.\n */\nexport function configureMitra(): { configured: boolean } {\n if (typeof window === 'undefined') return { configured: false };\n\n const params = new URLSearchParams(window.location.search);\n const token = params.get('token');\n const backURL = params.get('backURL');\n const integrationURL = params.get('integrationURL');\n\n if (token && backURL) {\n configureSdkMitra({\n baseURL: backURL,\n token: token.startsWith('Bearer ') ? token : `Bearer ${token}`,\n ...(integrationURL ? { integrationURL } : {})\n });\n return { configured: true };\n }\n\n return { configured: false };\n}\n","/**\n * Mitra Interactions SDK - Autenticação\n *\n * Login via popup seguro hospedado no domínio Mitra.\n * Credenciais nunca passam pelo código do desenvolvedor.\n */\n\nimport { configureSdkMitra } from './config';\nimport type { LoginOptions, LoginResponse } from './types';\n\n// ── Helpers ─────────────────────────────────────────────────────────────\n\nconst AUTH_MESSAGE_TYPE = 'mitra-auth-result';\nconst POPUP_WIDTH = 420;\nconst POPUP_HEIGHT = 520;\n\n/**\n * Extrai o origin de uma URL (ex: \"https://validacao.mitralab.io/auth/\" → \"https://validacao.mitralab.io\")\n */\nfunction getOriginFromUrl(url: string): string {\n try {\n const parsed = new URL(url);\n return parsed.origin;\n } catch {\n return '';\n }\n}\n\n/**\n * Abre popup de autenticação e aguarda o resultado via postMessage.\n * Valida que a mensagem veio do origin da authUrl.\n */\nfunction openAuthPopup(url: string, expectedOrigin: string): Promise<LoginResponse> {\n return new Promise((resolve, reject) => {\n const left = (typeof window.screenX === 'number' ? window.screenX : 0) + (window.outerWidth - POPUP_WIDTH) / 2;\n const top = (typeof window.screenY === 'number' ? window.screenY : 0) + (window.outerHeight - POPUP_HEIGHT) / 2;\n\n const popup = window.open(\n url,\n 'mitra-auth',\n `width=${POPUP_WIDTH},height=${POPUP_HEIGHT},left=${left},top=${top},menubar=no,toolbar=no,status=no`\n );\n\n if (!popup) {\n reject(new Error('Popup bloqueado pelo navegador. Permita popups para este site.'));\n return;\n }\n\n function onMessage(event: MessageEvent) {\n // Ignora mensagens de outros origins\n if (event.origin !== expectedOrigin) return;\n if (!event.data || event.data.type !== AUTH_MESSAGE_TYPE) return;\n\n cleanup();\n\n if (event.data.success) {\n resolve(event.data.data);\n } else {\n reject(new Error(event.data.error || 'Erro na autenticação'));\n }\n }\n\n // Detecta se o popup foi fechado sem completar\n const pollTimer = setInterval(() => {\n if (popup.closed) {\n cleanup();\n reject(new Error('Login cancelado pelo usuário'));\n }\n }, 500);\n\n function cleanup() {\n window.removeEventListener('message', onMessage);\n clearInterval(pollTimer);\n }\n\n window.addEventListener('message', onMessage);\n });\n}\n\n/**\n * Auto-configura o SDK a partir da resposta de login.\n */\nfunction autoConfigureFromLogin(response: LoginResponse): void {\n if (!response.merge) return;\n\n const token = response.token.startsWith('Bearer ')\n ? response.token\n : `Bearer ${response.token}`;\n\n configureSdkMitra({\n baseURL: response.merge.backURL,\n token,\n ...(response.merge.integrationURL ? { integrationURL: response.merge.integrationURL } : {})\n });\n}\n\n/**\n * Monta a URL do popup de autenticação.\n * baseURL não é passado — fica hardcoded na página de auth (segurança).\n */\nfunction buildAuthUrl(authUrl: string, method: string): string {\n return `${authUrl.replace(/\\/+$/, '')}?method=${method}`;\n}\n\n// ── Funções de Login ────────────────────────────────────────────────────\n\n/**\n * Login com email e senha via popup seguro Mitra.\n *\n * Abre popup no domínio Mitra onde o usuário digita as credenciais.\n * O desenvolvedor nunca tem acesso a email/senha.\n */\nexport async function loginWithEmailMitra(options: LoginOptions): Promise<LoginResponse> {\n const origin = getOriginFromUrl(options.authUrl);\n const url = buildAuthUrl(options.authUrl, 'email');\n const response = await openAuthPopup(url, origin);\n autoConfigureFromLogin(response);\n return response;\n}\n\n/**\n * Login com Google via popup seguro Mitra.\n *\n * Abre popup que redireciona para o OAuth do Google.\n * Funciona em qualquer domínio, sem Client ID.\n */\nexport async function loginWithGoogleMitra(options: LoginOptions): Promise<LoginResponse> {\n const origin = getOriginFromUrl(options.authUrl);\n const url = buildAuthUrl(options.authUrl, 'google');\n const response = await openAuthPopup(url, origin);\n autoConfigureFromLogin(response);\n return response;\n}\n\n/**\n * Login com Microsoft via popup seguro Mitra.\n *\n * Abre popup que redireciona para o OAuth da Microsoft.\n * Funciona em qualquer domínio, sem Client ID.\n */\nexport async function loginWithMicrosoftMitra(options: LoginOptions): Promise<LoginResponse> {\n const origin = getOriginFromUrl(options.authUrl);\n const url = buildAuthUrl(options.authUrl, 'microsoft');\n const response = await openAuthPopup(url, origin);\n autoConfigureFromLogin(response);\n return response;\n}\n","/**\n * Mitra Interactions SDK - HTTP Client\n */\n\nimport { getConfig } from './config';\n\n/**\n * Obtém a função fetch\n */\nfunction getFetch(): typeof fetch {\n if (typeof globalThis.fetch === 'function') {\n return globalThis.fetch;\n }\n throw new Error('fetch não disponível. Use Node.js 18+ ou instale node-fetch.');\n}\n\n/**\n * Formata o token para Authorization\n */\nfunction formatToken(token: string): string {\n return token.startsWith('Bearer ') ? token : `Bearer ${token}`;\n}\n\n/**\n * Constrói os headers\n */\nfunction buildHeaders(): Record<string, string> {\n const config = getConfig();\n return {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n };\n}\n\n/**\n * Constrói a URL com query params opcionais\n */\nfunction buildUrl(endpoint: string, params?: Record<string, unknown>): string {\n const config = getConfig();\n let url = `${config.baseURL}${endpoint}`;\n if (params) {\n const query = Object.entries(params)\n .filter(([, v]) => v !== undefined && v !== null)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n if (query) url += `?${query}`;\n }\n return url;\n}\n\n/**\n * Cliente HTTP\n */\nexport const http = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const fetchFn = getFetch();\n\n const response = await fetchFn(buildUrl(endpoint), {\n method: 'POST',\n headers: buildHeaders(),\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\n// HTTP client para Dynamic Schema (usa X-TenantID header)\nasync function requestWithTenant<T>(\n method: string,\n endpoint: string,\n tenantId: number,\n options?: { params?: Record<string, unknown>; body?: unknown }\n): Promise<T> {\n const fetchFn = getFetch();\n\n const headers = {\n ...buildHeaders(),\n 'X-TenantID': String(tenantId)\n };\n\n const response = await fetchFn(buildUrl(endpoint, options?.params), {\n method,\n headers,\n body: options?.body !== undefined ? JSON.stringify(options.body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n}\n\n/**\n * Cliente HTTP para o serviço de integrações (porta diferente)\n */\nexport const httpIntegrations = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const config = getConfig();\n if (!config.integrationURL) {\n throw new Error('integrationURL não configurado. Passe integrationURL em configureSdkMitra() ou via query param.');\n }\n\n const fetchFn = getFetch();\n const url = `${config.integrationURL.replace(/\\/+$/, '')}${endpoint}`;\n\n const response = await fetchFn(url, {\n method: 'POST',\n headers: {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n },\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\nexport const httpTenant = {\n get<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('GET', endpoint, tenantId, { params });\n },\n post<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('POST', endpoint, tenantId, { body, params });\n },\n put<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PUT', endpoint, tenantId, { body, params });\n },\n patch<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PATCH', endpoint, tenantId, { body, params });\n },\n del<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('DELETE', endpoint, tenantId, { params });\n }\n};\n","/**\n * Mitra Interactions SDK - Services\n */\n\nimport { http, httpIntegrations, httpTenant } from './client';\nimport type {\n RunQueryOptions,\n RunQueryResponse,\n ExecuteDbActionOptions,\n ExecuteDbActionResponse,\n SetFileStatusOptions,\n SetFileStatusResponse,\n SetVariableOptions,\n SetVariableResponse,\n ExecuteServerFunctionOptions,\n ExecuteServerFunctionResponse,\n ExecuteServerFunctionAsyncOptions,\n ExecuteServerFunctionAsyncResponse,\n CallIntegrationOptions,\n CallIntegrationResponse,\n StopServerFunctionExecutionOptions,\n StopServerFunctionExecutionResponse,\n ListRecordsOptions,\n ListRecordsResponse,\n GetRecordOptions,\n CreateRecordOptions,\n UpdateRecordOptions,\n PatchRecordOptions,\n DeleteRecordOptions,\n CreateRecordsBatchOptions\n} from './types';\n\n/**\n * POST /agentAiShortcut/runQuery\n * Executa query SELECT em um projeto\n */\nexport async function runQueryMitra(options: RunQueryOptions): Promise<RunQueryResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n sql: options.sql\n };\n\n if (options.jdbcId !== undefined) {\n body.jdbcId = options.jdbcId;\n }\n\n return http.post('/agentAiShortcut/runQuery', body);\n}\n\n/**\n * POST /agentAiShortcut/executeDbAction\n * Executa uma DBAction (DML) cadastrada\n */\nexport async function executeDbActionMitra(options: ExecuteDbActionOptions): Promise<ExecuteDbActionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n dbActionId: options.dbActionId\n };\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n return http.post('/agentAiShortcut/executeDbAction', body);\n}\n\n/**\n * POST /agentAiShortcut/setFileStatus\n * Move arquivo do chat para PUBLIC ou LOADABLE\n */\nexport async function setFileStatusMitra(options: SetFileStatusOptions): Promise<SetFileStatusResponse> {\n return http.post('/agentAiShortcut/setFileStatus', {\n projectId: options.projectId,\n fileName: options.fileName,\n targetPath: options.targetPath\n });\n}\n\n/**\n * POST /agentAiShortcut/setVariable\n * Cria ou atualiza uma variável customizada\n */\nexport async function setVariableMitra(options: SetVariableOptions): Promise<SetVariableResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n key: options.key\n };\n\n if (options.value !== undefined) {\n body.value = options.value;\n }\n\n return http.post('/agentAiShortcut/setVariable', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunction\n * Executa uma Server Function de forma SÍNCRONA (timeout 60s no backend)\n */\nexport async function executeServerFunctionMitra(options: ExecuteServerFunctionOptions): Promise<ExecuteServerFunctionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunction', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunctionAsync\n * Executa uma Server Function de forma ASSÍNCRONA (retorna executionId imediatamente)\n */\nexport async function executeServerFunctionAsyncMitra(options: ExecuteServerFunctionAsyncOptions): Promise<ExecuteServerFunctionAsyncResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunctionAsync', body);\n}\n\n/**\n * POST /integration/call\n * Chama uma API externa via serviço de integrações (porta separada)\n * Mapeia connection → integrationSlug no body\n */\nexport async function callIntegrationMitra(options: CallIntegrationOptions): Promise<CallIntegrationResponse> {\n const body: Record<string, unknown> = {\n integrationSlug: options.connection,\n projectId: options.projectId,\n method: options.method\n };\n\n if (options.endpoint !== undefined) {\n body.endpoint = options.endpoint;\n }\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n if (options.body !== undefined) {\n body.body = options.body;\n }\n\n return httpIntegrations.post('/integration/call', body);\n}\n\n/**\n * POST /agentAiShortcut/stopServerFunctionExecution\n * Para a execução de uma Server Function em andamento\n */\nexport async function stopServerFunctionExecutionMitra(options: StopServerFunctionExecutionOptions): Promise<StopServerFunctionExecutionResponse> {\n return http.post('/agentAiShortcut/stopServerFunctionExecution', {\n projectId: options.projectId,\n executionId: options.executionId\n });\n}\n\n// === Dynamic Schema CRUD ===\n\nexport async function listRecordsMitra(options: ListRecordsOptions): Promise<ListRecordsResponse> {\n const { tableName, projectId, page, size, filters, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}`, projectId, { page, size, jdbcConnectionConfigId, ...filters });\n}\n\nexport async function getRecordMitra(options: GetRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordMitra(options: CreateRecordOptions): Promise<Record<string, any>> {\n const { tableName, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function updateRecordMitra(options: UpdateRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.put(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function patchRecordMitra(options: PatchRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.patch(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function deleteRecordMitra(options: DeleteRecordOptions): Promise<void> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.del(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Promise<Record<string, any>[]> {\n const { tableName, projectId, records, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}/batch`, projectId, records, { jdbcConnectionConfigId });\n}\n\n// === PostMessage Services ===\n\n/**\n * Envia postMessage para o app pai (Mitra Nuxt) solicitando logout do usuário.\n */\nexport function logoutMitra(): void {\n if (typeof window === 'undefined') return;\n window.parent.postMessage(JSON.stringify({ type: 'mitra-sdk:logout' }), '*');\n}\n"]}
package/dist/index.mjs CHANGED
@@ -29,18 +29,100 @@ function configureMitra() {
29
29
  const params = new URLSearchParams(window.location.search);
30
30
  const token = params.get("token");
31
31
  const backURL = params.get("backURL");
32
- const integrationUrl = params.get("integrationUrl");
32
+ const integrationURL = params.get("integrationURL");
33
33
  if (token && backURL) {
34
34
  configureSdkMitra({
35
35
  baseURL: backURL,
36
36
  token: token.startsWith("Bearer ") ? token : `Bearer ${token}`,
37
- ...integrationUrl ? { integrationUrl } : {}
37
+ ...integrationURL ? { integrationURL } : {}
38
38
  });
39
39
  return { configured: true };
40
40
  }
41
41
  return { configured: false };
42
42
  }
43
43
 
44
+ // src/auth.ts
45
+ var AUTH_MESSAGE_TYPE = "mitra-auth-result";
46
+ var POPUP_WIDTH = 420;
47
+ var POPUP_HEIGHT = 520;
48
+ function getOriginFromUrl(url) {
49
+ try {
50
+ const parsed = new URL(url);
51
+ return parsed.origin;
52
+ } catch (e) {
53
+ return "";
54
+ }
55
+ }
56
+ function openAuthPopup(url, expectedOrigin) {
57
+ return new Promise((resolve, reject) => {
58
+ const left = (typeof window.screenX === "number" ? window.screenX : 0) + (window.outerWidth - POPUP_WIDTH) / 2;
59
+ const top = (typeof window.screenY === "number" ? window.screenY : 0) + (window.outerHeight - POPUP_HEIGHT) / 2;
60
+ const popup = window.open(
61
+ url,
62
+ "mitra-auth",
63
+ `width=${POPUP_WIDTH},height=${POPUP_HEIGHT},left=${left},top=${top},menubar=no,toolbar=no,status=no`
64
+ );
65
+ if (!popup) {
66
+ reject(new Error("Popup bloqueado pelo navegador. Permita popups para este site."));
67
+ return;
68
+ }
69
+ function onMessage(event) {
70
+ if (event.origin !== expectedOrigin) return;
71
+ if (!event.data || event.data.type !== AUTH_MESSAGE_TYPE) return;
72
+ cleanup();
73
+ if (event.data.success) {
74
+ resolve(event.data.data);
75
+ } else {
76
+ reject(new Error(event.data.error || "Erro na autentica\xE7\xE3o"));
77
+ }
78
+ }
79
+ const pollTimer = setInterval(() => {
80
+ if (popup.closed) {
81
+ cleanup();
82
+ reject(new Error("Login cancelado pelo usu\xE1rio"));
83
+ }
84
+ }, 500);
85
+ function cleanup() {
86
+ window.removeEventListener("message", onMessage);
87
+ clearInterval(pollTimer);
88
+ }
89
+ window.addEventListener("message", onMessage);
90
+ });
91
+ }
92
+ function autoConfigureFromLogin(response) {
93
+ if (!response.merge) return;
94
+ const token = response.token.startsWith("Bearer ") ? response.token : `Bearer ${response.token}`;
95
+ configureSdkMitra({
96
+ baseURL: response.merge.backURL,
97
+ token,
98
+ ...response.merge.integrationURL ? { integrationURL: response.merge.integrationURL } : {}
99
+ });
100
+ }
101
+ function buildAuthUrl(authUrl, method) {
102
+ return `${authUrl.replace(/\/+$/, "")}?method=${method}`;
103
+ }
104
+ async function loginWithEmailMitra(options) {
105
+ const origin = getOriginFromUrl(options.authUrl);
106
+ const url = buildAuthUrl(options.authUrl, "email");
107
+ const response = await openAuthPopup(url, origin);
108
+ autoConfigureFromLogin(response);
109
+ return response;
110
+ }
111
+ async function loginWithGoogleMitra(options) {
112
+ const origin = getOriginFromUrl(options.authUrl);
113
+ const url = buildAuthUrl(options.authUrl, "google");
114
+ const response = await openAuthPopup(url, origin);
115
+ autoConfigureFromLogin(response);
116
+ return response;
117
+ }
118
+ async function loginWithMicrosoftMitra(options) {
119
+ const origin = getOriginFromUrl(options.authUrl);
120
+ const url = buildAuthUrl(options.authUrl, "microsoft");
121
+ const response = await openAuthPopup(url, origin);
122
+ autoConfigureFromLogin(response);
123
+ return response;
124
+ }
125
+
44
126
  // src/client.ts
45
127
  function getFetch() {
46
128
  if (typeof globalThis.fetch === "function") {
@@ -112,11 +194,11 @@ async function requestWithTenant(method, endpoint, tenantId, options) {
112
194
  var httpIntegrations = {
113
195
  async post(endpoint, body) {
114
196
  const config = getConfig();
115
- if (!config.integrationUrl) {
116
- throw new Error("integrationUrl n\xE3o configurado. Passe integrationUrl em configureSdkMitra() ou via query param.");
197
+ if (!config.integrationURL) {
198
+ throw new Error("integrationURL n\xE3o configurado. Passe integrationURL em configureSdkMitra() ou via query param.");
117
199
  }
118
200
  const fetchFn = getFetch();
119
- const url = `${config.integrationUrl.replace(/\/+$/, "")}${endpoint}`;
201
+ const url = `${config.integrationURL.replace(/\/+$/, "")}${endpoint}`;
120
202
  const response = await fetchFn(url, {
121
203
  method: "POST",
122
204
  headers: {
@@ -269,6 +351,6 @@ function logoutMitra() {
269
351
  window.parent.postMessage(JSON.stringify({ type: "mitra-sdk:logout" }), "*");
270
352
  }
271
353
 
272
- export { callIntegrationMitra, clearConfig, configureMitra, configureSdkMitra, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, isConfigured, listRecordsMitra, logoutMitra, patchRecordMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra };
354
+ export { callIntegrationMitra, clearConfig, configureMitra, configureSdkMitra, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, isConfigured, listRecordsMitra, loginWithEmailMitra, loginWithGoogleMitra, loginWithMicrosoftMitra, logoutMitra, patchRecordMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra };
273
355
  //# sourceMappingURL=index.mjs.map
274
356
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/client.ts","../src/services.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Mitra Interactions SDK - Configuração\n */\n\nexport interface MitraConfig {\n /** URL base da API (ex: https://api.mitra.com) */\n baseURL: string;\n /** Token JWT para autenticação */\n token: string;\n /** URL base do serviço de integrações (ex: https://api0.mitraecp.com:1003) */\n integrationUrl?: string;\n}\n\nlet globalConfig: MitraConfig | null = null;\n\n/**\n * Configura o SDK globalmente\n */\nexport function configureSdkMitra(config: MitraConfig): void {\n if (!config.baseURL) {\n throw new Error('baseURL é obrigatório');\n }\n if (!config.token) {\n throw new Error('token é obrigatório');\n }\n\n globalConfig = {\n ...config,\n baseURL: config.baseURL.replace(/\\/+$/, '')\n };\n}\n\n/**\n * Obtém a configuração atual\n */\nexport function getConfig(): MitraConfig {\n if (!globalConfig) {\n throw new Error('SDK não configurado. Chame configureSdkMitra() primeiro.');\n }\n return globalConfig;\n}\n\n/**\n * Verifica se o SDK está configurado\n */\nexport function isConfigured(): boolean {\n return globalConfig !== null;\n}\n\n/**\n * Limpa a configuração\n */\nexport function clearConfig(): void {\n globalConfig = null;\n}\n\n/**\n * Auto-configura o SDK a partir dos query params da URL (token e backURL).\n * Útil quando o SDK roda dentro de um iframe que recebe as credenciais via URL.\n * Retorna { configured: true } se encontrou os params e configurou, ou { configured: false } caso contrário.\n */\nexport function configureMitra(): { configured: boolean } {\n if (typeof window === 'undefined') return { configured: false };\n\n const params = new URLSearchParams(window.location.search);\n const token = params.get('token');\n const backURL = params.get('backURL');\n const integrationUrl = params.get('integrationUrl');\n\n if (token && backURL) {\n configureSdkMitra({\n baseURL: backURL,\n token: token.startsWith('Bearer ') ? token : `Bearer ${token}`,\n ...(integrationUrl ? { integrationUrl } : {})\n });\n return { configured: true };\n }\n\n return { configured: false };\n}\n","/**\n * Mitra Interactions SDK - HTTP Client\n */\n\nimport { getConfig } from './config';\n\n/**\n * Obtém a função fetch\n */\nfunction getFetch(): typeof fetch {\n if (typeof globalThis.fetch === 'function') {\n return globalThis.fetch;\n }\n throw new Error('fetch não disponível. Use Node.js 18+ ou instale node-fetch.');\n}\n\n/**\n * Formata o token para Authorization\n */\nfunction formatToken(token: string): string {\n return token.startsWith('Bearer ') ? token : `Bearer ${token}`;\n}\n\n/**\n * Constrói os headers\n */\nfunction buildHeaders(): Record<string, string> {\n const config = getConfig();\n return {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n };\n}\n\n/**\n * Constrói a URL com query params opcionais\n */\nfunction buildUrl(endpoint: string, params?: Record<string, unknown>): string {\n const config = getConfig();\n let url = `${config.baseURL}${endpoint}`;\n if (params) {\n const query = Object.entries(params)\n .filter(([, v]) => v !== undefined && v !== null)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n if (query) url += `?${query}`;\n }\n return url;\n}\n\n/**\n * Cliente HTTP\n */\nexport const http = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const fetchFn = getFetch();\n\n const response = await fetchFn(buildUrl(endpoint), {\n method: 'POST',\n headers: buildHeaders(),\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\n// HTTP client para Dynamic Schema (usa X-TenantID header)\nasync function requestWithTenant<T>(\n method: string,\n endpoint: string,\n tenantId: number,\n options?: { params?: Record<string, unknown>; body?: unknown }\n): Promise<T> {\n const fetchFn = getFetch();\n\n const headers = {\n ...buildHeaders(),\n 'X-TenantID': String(tenantId)\n };\n\n const response = await fetchFn(buildUrl(endpoint, options?.params), {\n method,\n headers,\n body: options?.body !== undefined ? JSON.stringify(options.body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n}\n\n/**\n * Cliente HTTP para o serviço de integrações (porta diferente)\n */\nexport const httpIntegrations = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const config = getConfig();\n if (!config.integrationUrl) {\n throw new Error('integrationUrl não configurado. Passe integrationUrl em configureSdkMitra() ou via query param.');\n }\n\n const fetchFn = getFetch();\n const url = `${config.integrationUrl.replace(/\\/+$/, '')}${endpoint}`;\n\n const response = await fetchFn(url, {\n method: 'POST',\n headers: {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n },\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\nexport const httpTenant = {\n get<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('GET', endpoint, tenantId, { params });\n },\n post<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('POST', endpoint, tenantId, { body, params });\n },\n put<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PUT', endpoint, tenantId, { body, params });\n },\n patch<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PATCH', endpoint, tenantId, { body, params });\n },\n del<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('DELETE', endpoint, tenantId, { params });\n }\n};\n","/**\n * Mitra Interactions SDK - Services\n */\n\nimport { http, httpIntegrations, httpTenant } from './client';\nimport type {\n RunQueryOptions,\n RunQueryResponse,\n ExecuteDbActionOptions,\n ExecuteDbActionResponse,\n SetFileStatusOptions,\n SetFileStatusResponse,\n SetVariableOptions,\n SetVariableResponse,\n ExecuteServerFunctionOptions,\n ExecuteServerFunctionResponse,\n ExecuteServerFunctionAsyncOptions,\n ExecuteServerFunctionAsyncResponse,\n CallIntegrationOptions,\n CallIntegrationResponse,\n StopServerFunctionExecutionOptions,\n StopServerFunctionExecutionResponse,\n ListRecordsOptions,\n ListRecordsResponse,\n GetRecordOptions,\n CreateRecordOptions,\n UpdateRecordOptions,\n PatchRecordOptions,\n DeleteRecordOptions,\n CreateRecordsBatchOptions\n} from './types';\n\n/**\n * POST /agentAiShortcut/runQuery\n * Executa query SELECT em um projeto\n */\nexport async function runQueryMitra(options: RunQueryOptions): Promise<RunQueryResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n sql: options.sql\n };\n\n if (options.jdbcId !== undefined) {\n body.jdbcId = options.jdbcId;\n }\n\n return http.post('/agentAiShortcut/runQuery', body);\n}\n\n/**\n * POST /agentAiShortcut/executeDbAction\n * Executa uma DBAction (DML) cadastrada\n */\nexport async function executeDbActionMitra(options: ExecuteDbActionOptions): Promise<ExecuteDbActionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n dbActionId: options.dbActionId\n };\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n return http.post('/agentAiShortcut/executeDbAction', body);\n}\n\n/**\n * POST /agentAiShortcut/setFileStatus\n * Move arquivo do chat para PUBLIC ou LOADABLE\n */\nexport async function setFileStatusMitra(options: SetFileStatusOptions): Promise<SetFileStatusResponse> {\n return http.post('/agentAiShortcut/setFileStatus', {\n projectId: options.projectId,\n fileName: options.fileName,\n targetPath: options.targetPath\n });\n}\n\n/**\n * POST /agentAiShortcut/setVariable\n * Cria ou atualiza uma variável customizada\n */\nexport async function setVariableMitra(options: SetVariableOptions): Promise<SetVariableResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n key: options.key\n };\n\n if (options.value !== undefined) {\n body.value = options.value;\n }\n\n return http.post('/agentAiShortcut/setVariable', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunction\n * Executa uma Server Function de forma SÍNCRONA (timeout 60s no backend)\n */\nexport async function executeServerFunctionMitra(options: ExecuteServerFunctionOptions): Promise<ExecuteServerFunctionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunction', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunctionAsync\n * Executa uma Server Function de forma ASSÍNCRONA (retorna executionId imediatamente)\n */\nexport async function executeServerFunctionAsyncMitra(options: ExecuteServerFunctionAsyncOptions): Promise<ExecuteServerFunctionAsyncResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunctionAsync', body);\n}\n\n/**\n * POST /integration/call\n * Chama uma API externa via serviço de integrações (porta separada)\n * Mapeia connection → integrationSlug no body\n */\nexport async function callIntegrationMitra(options: CallIntegrationOptions): Promise<CallIntegrationResponse> {\n const body: Record<string, unknown> = {\n integrationSlug: options.connection,\n projectId: options.projectId,\n method: options.method\n };\n\n if (options.endpoint !== undefined) {\n body.endpoint = options.endpoint;\n }\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n if (options.body !== undefined) {\n body.body = options.body;\n }\n\n return httpIntegrations.post('/integration/call', body);\n}\n\n/**\n * POST /agentAiShortcut/stopServerFunctionExecution\n * Para a execução de uma Server Function em andamento\n */\nexport async function stopServerFunctionExecutionMitra(options: StopServerFunctionExecutionOptions): Promise<StopServerFunctionExecutionResponse> {\n return http.post('/agentAiShortcut/stopServerFunctionExecution', {\n projectId: options.projectId,\n executionId: options.executionId\n });\n}\n\n// === Dynamic Schema CRUD ===\n\nexport async function listRecordsMitra(options: ListRecordsOptions): Promise<ListRecordsResponse> {\n const { tableName, projectId, page, size, filters, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}`, projectId, { page, size, jdbcConnectionConfigId, ...filters });\n}\n\nexport async function getRecordMitra(options: GetRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordMitra(options: CreateRecordOptions): Promise<Record<string, any>> {\n const { tableName, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function updateRecordMitra(options: UpdateRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.put(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function patchRecordMitra(options: PatchRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.patch(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function deleteRecordMitra(options: DeleteRecordOptions): Promise<void> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.del(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Promise<Record<string, any>[]> {\n const { tableName, projectId, records, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}/batch`, projectId, records, { jdbcConnectionConfigId });\n}\n\n// === PostMessage Services ===\n\n/**\n * Envia postMessage para o app pai (Mitra Nuxt) solicitando logout do usuário.\n */\nexport function logoutMitra(): void {\n if (typeof window === 'undefined') return;\n window.parent.postMessage(JSON.stringify({ type: 'mitra-sdk:logout' }), '*');\n}\n"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/auth.ts","../src/client.ts","../src/services.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Mitra Interactions SDK - Configuração\n */\n\nexport interface MitraConfig {\n /** URL base da API (ex: https://api.mitra.com) */\n baseURL: string;\n /** Token JWT para autenticação */\n token: string;\n /** URL base do serviço de integrações (ex: https://api0.mitraecp.com:1003) */\n integrationURL?: string;\n}\n\nlet globalConfig: MitraConfig | null = null;\n\n/**\n * Configura o SDK globalmente\n */\nexport function configureSdkMitra(config: MitraConfig): void {\n if (!config.baseURL) {\n throw new Error('baseURL é obrigatório');\n }\n if (!config.token) {\n throw new Error('token é obrigatório');\n }\n\n globalConfig = {\n ...config,\n baseURL: config.baseURL.replace(/\\/+$/, '')\n };\n}\n\n/**\n * Obtém a configuração atual\n */\nexport function getConfig(): MitraConfig {\n if (!globalConfig) {\n throw new Error('SDK não configurado. Chame configureSdkMitra() primeiro.');\n }\n return globalConfig;\n}\n\n/**\n * Verifica se o SDK está configurado\n */\nexport function isConfigured(): boolean {\n return globalConfig !== null;\n}\n\n/**\n * Limpa a configuração\n */\nexport function clearConfig(): void {\n globalConfig = null;\n}\n\n/**\n * Auto-configura o SDK a partir dos query params da URL (token e backURL).\n * Útil quando o SDK roda dentro de um iframe que recebe as credenciais via URL.\n * Retorna { configured: true } se encontrou os params e configurou, ou { configured: false } caso contrário.\n */\nexport function configureMitra(): { configured: boolean } {\n if (typeof window === 'undefined') return { configured: false };\n\n const params = new URLSearchParams(window.location.search);\n const token = params.get('token');\n const backURL = params.get('backURL');\n const integrationURL = params.get('integrationURL');\n\n if (token && backURL) {\n configureSdkMitra({\n baseURL: backURL,\n token: token.startsWith('Bearer ') ? token : `Bearer ${token}`,\n ...(integrationURL ? { integrationURL } : {})\n });\n return { configured: true };\n }\n\n return { configured: false };\n}\n","/**\n * Mitra Interactions SDK - Autenticação\n *\n * Login via popup seguro hospedado no domínio Mitra.\n * Credenciais nunca passam pelo código do desenvolvedor.\n */\n\nimport { configureSdkMitra } from './config';\nimport type { LoginOptions, LoginResponse } from './types';\n\n// ── Helpers ─────────────────────────────────────────────────────────────\n\nconst AUTH_MESSAGE_TYPE = 'mitra-auth-result';\nconst POPUP_WIDTH = 420;\nconst POPUP_HEIGHT = 520;\n\n/**\n * Extrai o origin de uma URL (ex: \"https://validacao.mitralab.io/auth/\" → \"https://validacao.mitralab.io\")\n */\nfunction getOriginFromUrl(url: string): string {\n try {\n const parsed = new URL(url);\n return parsed.origin;\n } catch {\n return '';\n }\n}\n\n/**\n * Abre popup de autenticação e aguarda o resultado via postMessage.\n * Valida que a mensagem veio do origin da authUrl.\n */\nfunction openAuthPopup(url: string, expectedOrigin: string): Promise<LoginResponse> {\n return new Promise((resolve, reject) => {\n const left = (typeof window.screenX === 'number' ? window.screenX : 0) + (window.outerWidth - POPUP_WIDTH) / 2;\n const top = (typeof window.screenY === 'number' ? window.screenY : 0) + (window.outerHeight - POPUP_HEIGHT) / 2;\n\n const popup = window.open(\n url,\n 'mitra-auth',\n `width=${POPUP_WIDTH},height=${POPUP_HEIGHT},left=${left},top=${top},menubar=no,toolbar=no,status=no`\n );\n\n if (!popup) {\n reject(new Error('Popup bloqueado pelo navegador. Permita popups para este site.'));\n return;\n }\n\n function onMessage(event: MessageEvent) {\n // Ignora mensagens de outros origins\n if (event.origin !== expectedOrigin) return;\n if (!event.data || event.data.type !== AUTH_MESSAGE_TYPE) return;\n\n cleanup();\n\n if (event.data.success) {\n resolve(event.data.data);\n } else {\n reject(new Error(event.data.error || 'Erro na autenticação'));\n }\n }\n\n // Detecta se o popup foi fechado sem completar\n const pollTimer = setInterval(() => {\n if (popup.closed) {\n cleanup();\n reject(new Error('Login cancelado pelo usuário'));\n }\n }, 500);\n\n function cleanup() {\n window.removeEventListener('message', onMessage);\n clearInterval(pollTimer);\n }\n\n window.addEventListener('message', onMessage);\n });\n}\n\n/**\n * Auto-configura o SDK a partir da resposta de login.\n */\nfunction autoConfigureFromLogin(response: LoginResponse): void {\n if (!response.merge) return;\n\n const token = response.token.startsWith('Bearer ')\n ? response.token\n : `Bearer ${response.token}`;\n\n configureSdkMitra({\n baseURL: response.merge.backURL,\n token,\n ...(response.merge.integrationURL ? { integrationURL: response.merge.integrationURL } : {})\n });\n}\n\n/**\n * Monta a URL do popup de autenticação.\n * baseURL não é passado — fica hardcoded na página de auth (segurança).\n */\nfunction buildAuthUrl(authUrl: string, method: string): string {\n return `${authUrl.replace(/\\/+$/, '')}?method=${method}`;\n}\n\n// ── Funções de Login ────────────────────────────────────────────────────\n\n/**\n * Login com email e senha via popup seguro Mitra.\n *\n * Abre popup no domínio Mitra onde o usuário digita as credenciais.\n * O desenvolvedor nunca tem acesso a email/senha.\n */\nexport async function loginWithEmailMitra(options: LoginOptions): Promise<LoginResponse> {\n const origin = getOriginFromUrl(options.authUrl);\n const url = buildAuthUrl(options.authUrl, 'email');\n const response = await openAuthPopup(url, origin);\n autoConfigureFromLogin(response);\n return response;\n}\n\n/**\n * Login com Google via popup seguro Mitra.\n *\n * Abre popup que redireciona para o OAuth do Google.\n * Funciona em qualquer domínio, sem Client ID.\n */\nexport async function loginWithGoogleMitra(options: LoginOptions): Promise<LoginResponse> {\n const origin = getOriginFromUrl(options.authUrl);\n const url = buildAuthUrl(options.authUrl, 'google');\n const response = await openAuthPopup(url, origin);\n autoConfigureFromLogin(response);\n return response;\n}\n\n/**\n * Login com Microsoft via popup seguro Mitra.\n *\n * Abre popup que redireciona para o OAuth da Microsoft.\n * Funciona em qualquer domínio, sem Client ID.\n */\nexport async function loginWithMicrosoftMitra(options: LoginOptions): Promise<LoginResponse> {\n const origin = getOriginFromUrl(options.authUrl);\n const url = buildAuthUrl(options.authUrl, 'microsoft');\n const response = await openAuthPopup(url, origin);\n autoConfigureFromLogin(response);\n return response;\n}\n","/**\n * Mitra Interactions SDK - HTTP Client\n */\n\nimport { getConfig } from './config';\n\n/**\n * Obtém a função fetch\n */\nfunction getFetch(): typeof fetch {\n if (typeof globalThis.fetch === 'function') {\n return globalThis.fetch;\n }\n throw new Error('fetch não disponível. Use Node.js 18+ ou instale node-fetch.');\n}\n\n/**\n * Formata o token para Authorization\n */\nfunction formatToken(token: string): string {\n return token.startsWith('Bearer ') ? token : `Bearer ${token}`;\n}\n\n/**\n * Constrói os headers\n */\nfunction buildHeaders(): Record<string, string> {\n const config = getConfig();\n return {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n };\n}\n\n/**\n * Constrói a URL com query params opcionais\n */\nfunction buildUrl(endpoint: string, params?: Record<string, unknown>): string {\n const config = getConfig();\n let url = `${config.baseURL}${endpoint}`;\n if (params) {\n const query = Object.entries(params)\n .filter(([, v]) => v !== undefined && v !== null)\n .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`)\n .join('&');\n if (query) url += `?${query}`;\n }\n return url;\n}\n\n/**\n * Cliente HTTP\n */\nexport const http = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const fetchFn = getFetch();\n\n const response = await fetchFn(buildUrl(endpoint), {\n method: 'POST',\n headers: buildHeaders(),\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\n// HTTP client para Dynamic Schema (usa X-TenantID header)\nasync function requestWithTenant<T>(\n method: string,\n endpoint: string,\n tenantId: number,\n options?: { params?: Record<string, unknown>; body?: unknown }\n): Promise<T> {\n const fetchFn = getFetch();\n\n const headers = {\n ...buildHeaders(),\n 'X-TenantID': String(tenantId)\n };\n\n const response = await fetchFn(buildUrl(endpoint, options?.params), {\n method,\n headers,\n body: options?.body !== undefined ? JSON.stringify(options.body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n}\n\n/**\n * Cliente HTTP para o serviço de integrações (porta diferente)\n */\nexport const httpIntegrations = {\n async post<T>(endpoint: string, body?: unknown): Promise<T> {\n const config = getConfig();\n if (!config.integrationURL) {\n throw new Error('integrationURL não configurado. Passe integrationURL em configureSdkMitra() ou via query param.');\n }\n\n const fetchFn = getFetch();\n const url = `${config.integrationURL.replace(/\\/+$/, '')}${endpoint}`;\n\n const response = await fetchFn(url, {\n method: 'POST',\n headers: {\n 'Authorization': formatToken(config.token),\n 'Content-Type': 'application/json'\n },\n body: body !== undefined ? JSON.stringify(body) : undefined\n });\n\n const text = await response.text();\n const data = text ? JSON.parse(text) : null;\n\n if (!response.ok) {\n throw {\n message: data?.message || data?.error || `HTTP ${response.status}`,\n status: response.status,\n details: data\n };\n }\n\n return data as T;\n }\n};\n\nexport const httpTenant = {\n get<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('GET', endpoint, tenantId, { params });\n },\n post<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('POST', endpoint, tenantId, { body, params });\n },\n put<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PUT', endpoint, tenantId, { body, params });\n },\n patch<T>(endpoint: string, tenantId: number, body?: unknown, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('PATCH', endpoint, tenantId, { body, params });\n },\n del<T>(endpoint: string, tenantId: number, params?: Record<string, unknown>): Promise<T> {\n return requestWithTenant('DELETE', endpoint, tenantId, { params });\n }\n};\n","/**\n * Mitra Interactions SDK - Services\n */\n\nimport { http, httpIntegrations, httpTenant } from './client';\nimport type {\n RunQueryOptions,\n RunQueryResponse,\n ExecuteDbActionOptions,\n ExecuteDbActionResponse,\n SetFileStatusOptions,\n SetFileStatusResponse,\n SetVariableOptions,\n SetVariableResponse,\n ExecuteServerFunctionOptions,\n ExecuteServerFunctionResponse,\n ExecuteServerFunctionAsyncOptions,\n ExecuteServerFunctionAsyncResponse,\n CallIntegrationOptions,\n CallIntegrationResponse,\n StopServerFunctionExecutionOptions,\n StopServerFunctionExecutionResponse,\n ListRecordsOptions,\n ListRecordsResponse,\n GetRecordOptions,\n CreateRecordOptions,\n UpdateRecordOptions,\n PatchRecordOptions,\n DeleteRecordOptions,\n CreateRecordsBatchOptions\n} from './types';\n\n/**\n * POST /agentAiShortcut/runQuery\n * Executa query SELECT em um projeto\n */\nexport async function runQueryMitra(options: RunQueryOptions): Promise<RunQueryResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n sql: options.sql\n };\n\n if (options.jdbcId !== undefined) {\n body.jdbcId = options.jdbcId;\n }\n\n return http.post('/agentAiShortcut/runQuery', body);\n}\n\n/**\n * POST /agentAiShortcut/executeDbAction\n * Executa uma DBAction (DML) cadastrada\n */\nexport async function executeDbActionMitra(options: ExecuteDbActionOptions): Promise<ExecuteDbActionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n dbActionId: options.dbActionId\n };\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n return http.post('/agentAiShortcut/executeDbAction', body);\n}\n\n/**\n * POST /agentAiShortcut/setFileStatus\n * Move arquivo do chat para PUBLIC ou LOADABLE\n */\nexport async function setFileStatusMitra(options: SetFileStatusOptions): Promise<SetFileStatusResponse> {\n return http.post('/agentAiShortcut/setFileStatus', {\n projectId: options.projectId,\n fileName: options.fileName,\n targetPath: options.targetPath\n });\n}\n\n/**\n * POST /agentAiShortcut/setVariable\n * Cria ou atualiza uma variável customizada\n */\nexport async function setVariableMitra(options: SetVariableOptions): Promise<SetVariableResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n key: options.key\n };\n\n if (options.value !== undefined) {\n body.value = options.value;\n }\n\n return http.post('/agentAiShortcut/setVariable', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunction\n * Executa uma Server Function de forma SÍNCRONA (timeout 60s no backend)\n */\nexport async function executeServerFunctionMitra(options: ExecuteServerFunctionOptions): Promise<ExecuteServerFunctionResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunction', body);\n}\n\n/**\n * POST /agentAiShortcut/executeServerFunctionAsync\n * Executa uma Server Function de forma ASSÍNCRONA (retorna executionId imediatamente)\n */\nexport async function executeServerFunctionAsyncMitra(options: ExecuteServerFunctionAsyncOptions): Promise<ExecuteServerFunctionAsyncResponse> {\n const body: Record<string, unknown> = {\n projectId: options.projectId,\n serverFunctionId: options.serverFunctionId\n };\n\n if (options.input !== undefined) {\n body.input = options.input;\n }\n\n return http.post('/agentAiShortcut/executeServerFunctionAsync', body);\n}\n\n/**\n * POST /integration/call\n * Chama uma API externa via serviço de integrações (porta separada)\n * Mapeia connection → integrationSlug no body\n */\nexport async function callIntegrationMitra(options: CallIntegrationOptions): Promise<CallIntegrationResponse> {\n const body: Record<string, unknown> = {\n integrationSlug: options.connection,\n projectId: options.projectId,\n method: options.method\n };\n\n if (options.endpoint !== undefined) {\n body.endpoint = options.endpoint;\n }\n\n if (options.params !== undefined) {\n body.params = options.params;\n }\n\n if (options.body !== undefined) {\n body.body = options.body;\n }\n\n return httpIntegrations.post('/integration/call', body);\n}\n\n/**\n * POST /agentAiShortcut/stopServerFunctionExecution\n * Para a execução de uma Server Function em andamento\n */\nexport async function stopServerFunctionExecutionMitra(options: StopServerFunctionExecutionOptions): Promise<StopServerFunctionExecutionResponse> {\n return http.post('/agentAiShortcut/stopServerFunctionExecution', {\n projectId: options.projectId,\n executionId: options.executionId\n });\n}\n\n// === Dynamic Schema CRUD ===\n\nexport async function listRecordsMitra(options: ListRecordsOptions): Promise<ListRecordsResponse> {\n const { tableName, projectId, page, size, filters, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}`, projectId, { page, size, jdbcConnectionConfigId, ...filters });\n}\n\nexport async function getRecordMitra(options: GetRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.get(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordMitra(options: CreateRecordOptions): Promise<Record<string, any>> {\n const { tableName, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function updateRecordMitra(options: UpdateRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.put(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function patchRecordMitra(options: PatchRecordOptions): Promise<Record<string, any>> {\n const { tableName, id, projectId, data, jdbcConnectionConfigId } = options;\n return httpTenant.patch(`/api/v1/data/${tableName}/${id}`, projectId, data, { jdbcConnectionConfigId });\n}\n\nexport async function deleteRecordMitra(options: DeleteRecordOptions): Promise<void> {\n const { tableName, id, projectId, jdbcConnectionConfigId } = options;\n return httpTenant.del(`/api/v1/data/${tableName}/${id}`, projectId, { jdbcConnectionConfigId });\n}\n\nexport async function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Promise<Record<string, any>[]> {\n const { tableName, projectId, records, jdbcConnectionConfigId } = options;\n return httpTenant.post(`/api/v1/data/${tableName}/batch`, projectId, records, { jdbcConnectionConfigId });\n}\n\n// === PostMessage Services ===\n\n/**\n * Envia postMessage para o app pai (Mitra Nuxt) solicitando logout do usuário.\n */\nexport function logoutMitra(): void {\n if (typeof window === 'undefined') return;\n window.parent.postMessage(JSON.stringify({ type: 'mitra-sdk:logout' }), '*');\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mitra-interactions-sdk",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
4
4
  "description": "SDK agnóstico para interações com a plataforma Mitra",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -47,5 +47,6 @@
47
47
  "last 2 versions",
48
48
  "not dead",
49
49
  "IE 11"
50
- ]
50
+ ],
51
+ "dependencies": {}
51
52
  }