mitra-interactions-sdk 1.0.33 → 1.0.35

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
@@ -52,6 +52,7 @@ Login via popup ou redirect seguro hospedado no domínio Mitra. Credenciais nunc
52
52
  ```typescript
53
53
  import { loginMitra } from 'mitra-interactions-sdk';
54
54
 
55
+ // Métodos disponíveis: 'email', 'google', 'microsoft', 'mitra'
55
56
  // Primeira vez — sem configureSdkMitra: authUrl e projectId são obrigatórios
56
57
  const result = await loginMitra('email', {
57
58
  authUrl: 'https://coder.mitralab.io/sdk-auth/',
@@ -65,6 +66,18 @@ const result = await loginMitra('microsoft');
65
66
  // result: { token, baseURL, integrationURL? }
66
67
  ```
67
68
 
69
+ ### Login Completo (method 'mitra')
70
+
71
+ Abre uma tela com todas as opções (Google, Microsoft, Email) e toggle entre Login/Cadastro.
72
+
73
+ ```typescript
74
+ await loginMitra('mitra', {
75
+ authUrl: 'https://coder.mitralab.io/sdk-auth/',
76
+ projectId: 123,
77
+ title: 'Meu App' // Opcional — título exibido na tela de login (default: "Mitra")
78
+ });
79
+ ```
80
+
68
81
  ### Login via Redirect
69
82
 
70
83
  Navega o usuário para a página de auth. Após o login, redireciona de volta com token nos query params.
@@ -85,10 +98,11 @@ await loginMitra('google', {
85
98
  // create funciona tanto em popup quanto redirect
86
99
  await loginMitra('email', { create: true });
87
100
 
88
- await loginMitra('email', {
101
+ await loginMitra('mitra', {
89
102
  mode: 'redirect',
90
- create: true,
91
- returnTo: '/onboarding'
103
+ create: true, // Abre direto no modo cadastro
104
+ returnTo: '/onboarding',
105
+ title: 'Meu App'
92
106
  });
93
107
  ```
94
108
 
@@ -130,6 +144,79 @@ configureSdkMitra({
130
144
  });
131
145
  ```
132
146
 
147
+ ### Login por Email (iframe silencioso)
148
+
149
+ Para quem precisa montar sua **própria tela de login** (sem popup/redirect), o SDK oferece funções que fazem a autenticação via iframe invisível. As credenciais são enviadas ao HTML de auth via `postMessage` — sem CORS, sem expor a API.
150
+
151
+ #### emailSignupMitra
152
+
153
+ Cria conta. Após sucesso, o usuário recebe um código de verificação por email.
154
+
155
+ ```typescript
156
+ import { emailSignupMitra } from 'mitra-interactions-sdk';
157
+
158
+ await emailSignupMitra({
159
+ name: 'João Silva',
160
+ email: 'joao@email.com',
161
+ password: 'minhasenha123'
162
+ });
163
+ // Não retorna token — o próximo passo é verificar o código
164
+ ```
165
+
166
+ #### emailVerifyCodeMitra
167
+
168
+ Verifica o código de 6 dígitos e faz login automático. Retorna `LoginResponse` e auto-configura o SDK.
169
+
170
+ ```typescript
171
+ import { emailVerifyCodeMitra } from 'mitra-interactions-sdk';
172
+
173
+ const session = await emailVerifyCodeMitra({
174
+ email: 'joao@email.com',
175
+ code: '123456',
176
+ password: 'minhasenha123' // Necessário para login automático após verificação
177
+ });
178
+ // session: { token, baseURL, integrationURL? }
179
+ ```
180
+
181
+ #### emailResendCodeMitra
182
+
183
+ Reenvia o código de verificação para o email.
184
+
185
+ ```typescript
186
+ import { emailResendCodeMitra } from 'mitra-interactions-sdk';
187
+
188
+ await emailResendCodeMitra({ email: 'joao@email.com' });
189
+ ```
190
+
191
+ #### emailLoginMitra
192
+
193
+ Login direto com email e senha. Retorna `LoginResponse` e auto-configura o SDK.
194
+
195
+ ```typescript
196
+ import { emailLoginMitra } from 'mitra-interactions-sdk';
197
+
198
+ const session = await emailLoginMitra({
199
+ email: 'joao@email.com',
200
+ password: 'minhasenha123'
201
+ });
202
+ // session: { token, baseURL, integrationURL? }
203
+ ```
204
+
205
+ #### Fluxo completo de signup com email
206
+
207
+ ```typescript
208
+ // 1. Criar conta
209
+ await emailSignupMitra({ name: 'João', email, password });
210
+
211
+ // 2. Usuário recebe código por email e digita na tela
212
+ const session = await emailVerifyCodeMitra({ email, code: '123456', password });
213
+
214
+ // 3. SDK já está configurado — pode chamar qualquer método
215
+ await executeDbActionMitra({ dbActionId: 1 });
216
+ ```
217
+
218
+ > **Nota:** `authUrl` e `projectId` são opcionais em todas as funções de email se já foram configurados via `configureSdkMitra()`.
219
+
133
220
  ## Métodos Disponíveis
134
221
 
135
222
  ### executeDbActionMitra
@@ -383,6 +470,11 @@ import type {
383
470
  // Login
384
471
  LoginOptions,
385
472
  LoginResponse,
473
+ // Email Auth
474
+ EmailSignupOptions,
475
+ EmailLoginOptions,
476
+ EmailVerifyCodeOptions,
477
+ EmailResendCodeOptions,
386
478
  // Options
387
479
  ExecuteDbActionOptions,
388
480
  ExecuteServerFunctionOptions,
package/dist/index.d.mts CHANGED
@@ -12,8 +12,8 @@ interface LoginOptions {
12
12
  returnTo?: string;
13
13
  /** Se true, abre o fluxo de criar conta em vez de login. */
14
14
  create?: boolean;
15
- /** Nome exibido na página de auth (usado com method 'mitra'). */
16
- name?: string;
15
+ /** Título exibido na página de auth (ex: nome da aplicação). */
16
+ title?: string;
17
17
  }
18
18
  interface LoginResponse {
19
19
  /** Token JWT (já com prefixo Bearer) */
@@ -23,6 +23,48 @@ interface LoginResponse {
23
23
  /** URL do serviço de integrações (opcional) */
24
24
  integrationURL?: string;
25
25
  }
26
+ interface EmailSignupOptions {
27
+ /** URL da página de auth (ex: https://validacao.mitralab.io/sdk-auth/). Opcional se já configurado via configureSdkMitra. */
28
+ authUrl?: string;
29
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
30
+ projectId?: number;
31
+ /** Nome completo do usuário */
32
+ name: string;
33
+ /** Email do usuário */
34
+ email: string;
35
+ /** Senha */
36
+ password: string;
37
+ }
38
+ interface EmailLoginOptions {
39
+ /** URL da página de auth (ex: https://validacao.mitralab.io/sdk-auth/). Opcional se já configurado via configureSdkMitra. */
40
+ authUrl?: string;
41
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
42
+ projectId?: number;
43
+ /** Email do usuário */
44
+ email: string;
45
+ /** Senha */
46
+ password: string;
47
+ }
48
+ interface EmailVerifyCodeOptions {
49
+ /** URL da página de auth. Opcional se já configurado via configureSdkMitra. */
50
+ authUrl?: string;
51
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
52
+ projectId?: number;
53
+ /** Email do usuário */
54
+ email: string;
55
+ /** Código de verificação de 6 dígitos */
56
+ code: string;
57
+ /** Senha do usuário (necessário para login automático após verificação) */
58
+ password: string;
59
+ }
60
+ interface EmailResendCodeOptions {
61
+ /** URL da página de auth. Opcional se já configurado via configureSdkMitra. */
62
+ authUrl?: string;
63
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
64
+ projectId?: number;
65
+ /** Email do usuário */
66
+ email: string;
67
+ }
26
68
  interface RunQueryOptions {
27
69
  /** ID do projeto (opcional se já configurado via configureSdkMitra) */
28
70
  projectId?: number;
@@ -381,6 +423,29 @@ declare function handleAuthRedirect(): LoginResponse | null;
381
423
  * Se já houver um refresh em andamento, reaproveita a mesma promise.
382
424
  */
383
425
  declare function refreshTokenSilently(authUrl: string, projectId: number): Promise<LoginResponse>;
426
+ /**
427
+ * Cria conta via email usando iframe silencioso.
428
+ * Após sucesso, o usuário recebe um código de verificação por email.
429
+ * Fluxo: emailSignupMitra → emailVerifyCodeMitra → emailLoginMitra
430
+ */
431
+ declare function emailSignupMitra(options: EmailSignupOptions): Promise<void>;
432
+ /**
433
+ * Verifica o código de 6 dígitos enviado por email após signup.
434
+ * Após verificação, faz login automático e retorna LoginResponse.
435
+ * Auto-configura o SDK após sucesso.
436
+ */
437
+ declare function emailVerifyCodeMitra(options: EmailVerifyCodeOptions): Promise<LoginResponse>;
438
+ /**
439
+ * Reenvia o código de verificação para o email.
440
+ */
441
+ declare function emailResendCodeMitra(options: EmailResendCodeOptions): Promise<void>;
442
+ /**
443
+ * Login via email e senha usando iframe silencioso.
444
+ * O HTML de auth faz a chamada à API e resolve as credenciais do projeto.
445
+ * Retorna LoginResponse com token, baseURL e integrationURL.
446
+ * Auto-configura o SDK após sucesso.
447
+ */
448
+ declare function emailLoginMitra(options: EmailLoginOptions): Promise<LoginResponse>;
384
449
 
385
450
  /**
386
451
  * Mitra Interactions SDK - Services
@@ -465,4 +530,4 @@ declare function patchRecordMitra(options: PatchRecordOptions): Promise<Record<s
465
530
  declare function deleteRecordMitra(options: DeleteRecordOptions): Promise<void>;
466
531
  declare function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Promise<Record<string, any>[]>;
467
532
 
468
- 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 GetVariableOptions, type GetVariableResponse, type IntegrationResponse, type ListIntegrationsOptions, type ListRecordsOptions, type ListRecordsResponse, type ListVariablesOptions, type ListVariablesResponse, type LoginOptions, type LoginResponse, type MitraConfig, type MitraInstance, type PatchRecordOptions, type RunActionOptions, type RunActionResponse, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, type UploadFileOptions, type UploadFileResponse, callIntegrationMitra, configureSdkMitra, createMitraInstance, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, getVariableMitra, handleAuthRedirect, listIntegrationsMitra, listRecordsMitra, listVariablesMitra, loginMitra, loginWithEmailMitra, loginWithGoogleMitra, loginWithMicrosoftMitra, patchRecordMitra, refreshTokenSilently, resolveProjectId, runActionMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra, uploadFileLoadableMitra, uploadFilePublicMitra };
533
+ export { type CallIntegrationOptions, type CallIntegrationResponse, type CreateRecordOptions, type CreateRecordsBatchOptions, type DeleteRecordOptions, type EmailLoginOptions, type EmailResendCodeOptions, type EmailSignupOptions, type EmailVerifyCodeOptions, type ExecuteDbActionOptions, type ExecuteDbActionResponse, type ExecuteServerFunctionAsyncOptions, type ExecuteServerFunctionAsyncResponse, type ExecuteServerFunctionOptions, type ExecuteServerFunctionResponse, type GetRecordOptions, type GetVariableOptions, type GetVariableResponse, type IntegrationResponse, type ListIntegrationsOptions, type ListRecordsOptions, type ListRecordsResponse, type ListVariablesOptions, type ListVariablesResponse, type LoginOptions, type LoginResponse, type MitraConfig, type MitraInstance, type PatchRecordOptions, type RunActionOptions, type RunActionResponse, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, type UploadFileOptions, type UploadFileResponse, callIntegrationMitra, configureSdkMitra, createMitraInstance, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, emailLoginMitra, emailResendCodeMitra, emailSignupMitra, emailVerifyCodeMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, getVariableMitra, handleAuthRedirect, listIntegrationsMitra, listRecordsMitra, listVariablesMitra, loginMitra, loginWithEmailMitra, loginWithGoogleMitra, loginWithMicrosoftMitra, patchRecordMitra, refreshTokenSilently, resolveProjectId, runActionMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra, uploadFileLoadableMitra, uploadFilePublicMitra };
package/dist/index.d.ts CHANGED
@@ -12,8 +12,8 @@ interface LoginOptions {
12
12
  returnTo?: string;
13
13
  /** Se true, abre o fluxo de criar conta em vez de login. */
14
14
  create?: boolean;
15
- /** Nome exibido na página de auth (usado com method 'mitra'). */
16
- name?: string;
15
+ /** Título exibido na página de auth (ex: nome da aplicação). */
16
+ title?: string;
17
17
  }
18
18
  interface LoginResponse {
19
19
  /** Token JWT (já com prefixo Bearer) */
@@ -23,6 +23,48 @@ interface LoginResponse {
23
23
  /** URL do serviço de integrações (opcional) */
24
24
  integrationURL?: string;
25
25
  }
26
+ interface EmailSignupOptions {
27
+ /** URL da página de auth (ex: https://validacao.mitralab.io/sdk-auth/). Opcional se já configurado via configureSdkMitra. */
28
+ authUrl?: string;
29
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
30
+ projectId?: number;
31
+ /** Nome completo do usuário */
32
+ name: string;
33
+ /** Email do usuário */
34
+ email: string;
35
+ /** Senha */
36
+ password: string;
37
+ }
38
+ interface EmailLoginOptions {
39
+ /** URL da página de auth (ex: https://validacao.mitralab.io/sdk-auth/). Opcional se já configurado via configureSdkMitra. */
40
+ authUrl?: string;
41
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
42
+ projectId?: number;
43
+ /** Email do usuário */
44
+ email: string;
45
+ /** Senha */
46
+ password: string;
47
+ }
48
+ interface EmailVerifyCodeOptions {
49
+ /** URL da página de auth. Opcional se já configurado via configureSdkMitra. */
50
+ authUrl?: string;
51
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
52
+ projectId?: number;
53
+ /** Email do usuário */
54
+ email: string;
55
+ /** Código de verificação de 6 dígitos */
56
+ code: string;
57
+ /** Senha do usuário (necessário para login automático após verificação) */
58
+ password: string;
59
+ }
60
+ interface EmailResendCodeOptions {
61
+ /** URL da página de auth. Opcional se já configurado via configureSdkMitra. */
62
+ authUrl?: string;
63
+ /** ID do projeto. Opcional se já configurado via configureSdkMitra. */
64
+ projectId?: number;
65
+ /** Email do usuário */
66
+ email: string;
67
+ }
26
68
  interface RunQueryOptions {
27
69
  /** ID do projeto (opcional se já configurado via configureSdkMitra) */
28
70
  projectId?: number;
@@ -381,6 +423,29 @@ declare function handleAuthRedirect(): LoginResponse | null;
381
423
  * Se já houver um refresh em andamento, reaproveita a mesma promise.
382
424
  */
383
425
  declare function refreshTokenSilently(authUrl: string, projectId: number): Promise<LoginResponse>;
426
+ /**
427
+ * Cria conta via email usando iframe silencioso.
428
+ * Após sucesso, o usuário recebe um código de verificação por email.
429
+ * Fluxo: emailSignupMitra → emailVerifyCodeMitra → emailLoginMitra
430
+ */
431
+ declare function emailSignupMitra(options: EmailSignupOptions): Promise<void>;
432
+ /**
433
+ * Verifica o código de 6 dígitos enviado por email após signup.
434
+ * Após verificação, faz login automático e retorna LoginResponse.
435
+ * Auto-configura o SDK após sucesso.
436
+ */
437
+ declare function emailVerifyCodeMitra(options: EmailVerifyCodeOptions): Promise<LoginResponse>;
438
+ /**
439
+ * Reenvia o código de verificação para o email.
440
+ */
441
+ declare function emailResendCodeMitra(options: EmailResendCodeOptions): Promise<void>;
442
+ /**
443
+ * Login via email e senha usando iframe silencioso.
444
+ * O HTML de auth faz a chamada à API e resolve as credenciais do projeto.
445
+ * Retorna LoginResponse com token, baseURL e integrationURL.
446
+ * Auto-configura o SDK após sucesso.
447
+ */
448
+ declare function emailLoginMitra(options: EmailLoginOptions): Promise<LoginResponse>;
384
449
 
385
450
  /**
386
451
  * Mitra Interactions SDK - Services
@@ -465,4 +530,4 @@ declare function patchRecordMitra(options: PatchRecordOptions): Promise<Record<s
465
530
  declare function deleteRecordMitra(options: DeleteRecordOptions): Promise<void>;
466
531
  declare function createRecordsBatchMitra(options: CreateRecordsBatchOptions): Promise<Record<string, any>[]>;
467
532
 
468
- 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 GetVariableOptions, type GetVariableResponse, type IntegrationResponse, type ListIntegrationsOptions, type ListRecordsOptions, type ListRecordsResponse, type ListVariablesOptions, type ListVariablesResponse, type LoginOptions, type LoginResponse, type MitraConfig, type MitraInstance, type PatchRecordOptions, type RunActionOptions, type RunActionResponse, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, type UploadFileOptions, type UploadFileResponse, callIntegrationMitra, configureSdkMitra, createMitraInstance, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, getVariableMitra, handleAuthRedirect, listIntegrationsMitra, listRecordsMitra, listVariablesMitra, loginMitra, loginWithEmailMitra, loginWithGoogleMitra, loginWithMicrosoftMitra, patchRecordMitra, refreshTokenSilently, resolveProjectId, runActionMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra, uploadFileLoadableMitra, uploadFilePublicMitra };
533
+ export { type CallIntegrationOptions, type CallIntegrationResponse, type CreateRecordOptions, type CreateRecordsBatchOptions, type DeleteRecordOptions, type EmailLoginOptions, type EmailResendCodeOptions, type EmailSignupOptions, type EmailVerifyCodeOptions, type ExecuteDbActionOptions, type ExecuteDbActionResponse, type ExecuteServerFunctionAsyncOptions, type ExecuteServerFunctionAsyncResponse, type ExecuteServerFunctionOptions, type ExecuteServerFunctionResponse, type GetRecordOptions, type GetVariableOptions, type GetVariableResponse, type IntegrationResponse, type ListIntegrationsOptions, type ListRecordsOptions, type ListRecordsResponse, type ListVariablesOptions, type ListVariablesResponse, type LoginOptions, type LoginResponse, type MitraConfig, type MitraInstance, type PatchRecordOptions, type RunActionOptions, type RunActionResponse, type RunQueryOptions, type RunQueryResponse, type SetFileStatusOptions, type SetFileStatusResponse, type SetVariableOptions, type SetVariableResponse, type StopServerFunctionExecutionOptions, type StopServerFunctionExecutionResponse, type UpdateRecordOptions, type UploadFileOptions, type UploadFileResponse, callIntegrationMitra, configureSdkMitra, createMitraInstance, createRecordMitra, createRecordsBatchMitra, deleteRecordMitra, emailLoginMitra, emailResendCodeMitra, emailSignupMitra, emailVerifyCodeMitra, executeDbActionMitra, executeServerFunctionAsyncMitra, executeServerFunctionMitra, getConfig, getRecordMitra, getVariableMitra, handleAuthRedirect, listIntegrationsMitra, listRecordsMitra, listVariablesMitra, loginMitra, loginWithEmailMitra, loginWithGoogleMitra, loginWithMicrosoftMitra, patchRecordMitra, refreshTokenSilently, resolveProjectId, runActionMitra, runQueryMitra, setFileStatusMitra, setVariableMitra, stopServerFunctionExecutionMitra, updateRecordMitra, uploadFileLoadableMitra, uploadFilePublicMitra };
package/dist/index.js CHANGED
@@ -63,7 +63,7 @@ function buildAuthUrl(authUrl, method, projectId, opts) {
63
63
  let url = `${base}?method=${method}&projectId=${encodeURIComponent(projectId)}`;
64
64
  if (opts == null ? void 0 : opts.returnTo) url += `&returnTo=${encodeURIComponent(opts.returnTo)}`;
65
65
  if (opts == null ? void 0 : opts.create) url += `&create=true`;
66
- if (opts == null ? void 0 : opts.name) url += `&name=${encodeURIComponent(opts.name)}`;
66
+ if (opts == null ? void 0 : opts.title) url += `&title=${encodeURIComponent(opts.title)}`;
67
67
  if (typeof window !== "undefined") {
68
68
  url += `&originUrl=${encodeURIComponent(window.location.href)}`;
69
69
  }
@@ -95,7 +95,7 @@ async function doLogin(method, options) {
95
95
  const url = buildAuthUrl(authUrl, method, projectId, {
96
96
  returnTo: mode === "redirect" ? resolveReturnTo(options == null ? void 0 : options.returnTo) : void 0,
97
97
  create: options == null ? void 0 : options.create,
98
- name: options == null ? void 0 : options.name
98
+ title: options == null ? void 0 : options.title
99
99
  });
100
100
  if (mode === "redirect") {
101
101
  window.location.href = url;
@@ -189,6 +189,91 @@ async function refreshTokenSilently(authUrl, projectId) {
189
189
  })();
190
190
  return _refreshPromise;
191
191
  }
192
+ var SILENT_TIMEOUT_MS = 2e4;
193
+ var AUTH_READY_TYPE = "mitra-auth-ready";
194
+ var AUTH_CREDENTIALS_TYPE = "mitra-auth-credentials";
195
+ function openSilentAuthIframe(authUrl, projectId, credentials) {
196
+ return new Promise((resolve, reject) => {
197
+ const origin = getOriginFromUrl(authUrl);
198
+ const base = authUrl.endsWith("/") ? authUrl : authUrl + "/";
199
+ let url = `${base}?mode=silent&projectId=${encodeURIComponent(projectId)}`;
200
+ if (typeof window !== "undefined") {
201
+ url += `&originUrl=${encodeURIComponent(window.location.href)}`;
202
+ }
203
+ const iframe = document.createElement("iframe");
204
+ iframe.style.display = "none";
205
+ const timer = setTimeout(() => {
206
+ cleanup();
207
+ reject(new Error("Timeout na autentica\xE7\xE3o silenciosa"));
208
+ }, SILENT_TIMEOUT_MS);
209
+ function onMessage(event) {
210
+ var _a, _b, _c;
211
+ if (event.origin !== origin) return;
212
+ if (((_a = event.data) == null ? void 0 : _a.type) === AUTH_READY_TYPE) {
213
+ (_b = iframe.contentWindow) == null ? void 0 : _b.postMessage({
214
+ type: AUTH_CREDENTIALS_TYPE,
215
+ ...credentials
216
+ }, origin);
217
+ return;
218
+ }
219
+ if (((_c = event.data) == null ? void 0 : _c.type) !== AUTH_MESSAGE_TYPE) return;
220
+ cleanup();
221
+ if (event.data.success) {
222
+ resolve(event.data.data);
223
+ } else {
224
+ reject(new Error(event.data.error || "Erro na autentica\xE7\xE3o"));
225
+ }
226
+ }
227
+ function cleanup() {
228
+ window.removeEventListener("message", onMessage);
229
+ clearTimeout(timer);
230
+ if (iframe.parentNode) iframe.parentNode.removeChild(iframe);
231
+ }
232
+ window.addEventListener("message", onMessage);
233
+ iframe.src = url;
234
+ document.body.appendChild(iframe);
235
+ });
236
+ }
237
+ async function emailSignupMitra(options) {
238
+ const { authUrl, projectId } = resolveLoginOptions(options);
239
+ const result = await openSilentAuthIframe(authUrl, projectId, {
240
+ action: "signup",
241
+ name: options.name,
242
+ email: options.email,
243
+ password: options.password
244
+ });
245
+ if (!result.needsVerification) {
246
+ throw new Error("Resposta inesperada do signup");
247
+ }
248
+ }
249
+ async function emailVerifyCodeMitra(options) {
250
+ const { authUrl, projectId } = resolveLoginOptions(options);
251
+ const response = await openSilentAuthIframe(authUrl, projectId, {
252
+ action: "verifyCode",
253
+ email: options.email,
254
+ code: options.code,
255
+ password: options.password
256
+ });
257
+ autoConfigureFromLogin(response, authUrl, projectId);
258
+ return response;
259
+ }
260
+ async function emailResendCodeMitra(options) {
261
+ const { authUrl, projectId } = resolveLoginOptions(options);
262
+ await openSilentAuthIframe(authUrl, projectId, {
263
+ action: "resendCode",
264
+ email: options.email
265
+ });
266
+ }
267
+ async function emailLoginMitra(options) {
268
+ const { authUrl, projectId } = resolveLoginOptions(options);
269
+ const response = await openSilentAuthIframe(authUrl, projectId, {
270
+ action: "login",
271
+ email: options.email,
272
+ password: options.password
273
+ });
274
+ autoConfigureFromLogin(response, authUrl, projectId);
275
+ return response;
276
+ }
192
277
 
193
278
  // src/instance.ts
194
279
  function formatToken(token) {
@@ -232,8 +317,31 @@ function createMitraInstance(initialConfig) {
232
317
  return data;
233
318
  }
234
319
  async function tryRefreshToken2() {
235
- if (!_config.authUrl || _config.projectId == null) return false;
236
- if (typeof window === "undefined") return false;
320
+ var _a2, _b;
321
+ if (_config.projectId == null) return false;
322
+ try {
323
+ const baseURL = _config.baseURL.replace(/\/+$/, "");
324
+ const resp = await getFetch()(`${baseURL}/mitraspace/project/refreshedToken/${_config.projectId}`, {
325
+ method: "GET",
326
+ headers: { "Authorization": formatToken(_config.token) }
327
+ });
328
+ if (resp.ok) {
329
+ const data = await resp.json();
330
+ if (data.token) {
331
+ const newToken = data.token.startsWith("Bearer ") ? data.token : `Bearer ${data.token}`;
332
+ const session = {
333
+ token: newToken,
334
+ baseURL: ((_a2 = data.merge) == null ? void 0 : _a2.backURL) || _config.baseURL,
335
+ ...((_b = data.merge) == null ? void 0 : _b.integrationURL) ? { integrationURL: data.merge.integrationURL } : {}
336
+ };
337
+ _config = { ..._config, token: session.token };
338
+ if (_config.onTokenRefresh) _config.onTokenRefresh(session);
339
+ return true;
340
+ }
341
+ }
342
+ } catch (e) {
343
+ }
344
+ if (!_config.authUrl || typeof window === "undefined") return false;
237
345
  try {
238
346
  const session = await refreshTokenSilently(_config.authUrl, _config.projectId);
239
347
  _config = { ..._config, token: session.token };
@@ -498,9 +606,32 @@ function buildUrl(endpoint, params) {
498
606
  return url;
499
607
  }
500
608
  async function tryRefreshToken() {
609
+ var _a, _b;
501
610
  const config = getConfig();
502
- if (!config.authUrl || config.projectId == null) return false;
503
- if (typeof window === "undefined") return false;
611
+ if (config.projectId == null) return false;
612
+ try {
613
+ const baseURL = config.baseURL.replace(/\/+$/, "");
614
+ const resp = await getFetch2()(`${baseURL}/mitraspace/project/refreshedToken/${config.projectId}`, {
615
+ method: "GET",
616
+ headers: { "Authorization": formatToken2(config.token) }
617
+ });
618
+ if (resp.ok) {
619
+ const data = await resp.json();
620
+ if (data.token) {
621
+ const newToken = data.token.startsWith("Bearer ") ? data.token : `Bearer ${data.token}`;
622
+ const session = {
623
+ token: newToken,
624
+ baseURL: ((_a = data.merge) == null ? void 0 : _a.backURL) || config.baseURL,
625
+ ...((_b = data.merge) == null ? void 0 : _b.integrationURL) ? { integrationURL: data.merge.integrationURL } : {}
626
+ };
627
+ updateGlobalToken(session.token);
628
+ if (config.onTokenRefresh) config.onTokenRefresh(session);
629
+ return true;
630
+ }
631
+ }
632
+ } catch (e) {
633
+ }
634
+ if (!config.authUrl || typeof window === "undefined") return false;
504
635
  try {
505
636
  const session = await refreshTokenSilently(config.authUrl, config.projectId);
506
637
  updateGlobalToken(session.token);
@@ -792,6 +923,10 @@ exports.createMitraInstance = createMitraInstance;
792
923
  exports.createRecordMitra = createRecordMitra;
793
924
  exports.createRecordsBatchMitra = createRecordsBatchMitra;
794
925
  exports.deleteRecordMitra = deleteRecordMitra;
926
+ exports.emailLoginMitra = emailLoginMitra;
927
+ exports.emailResendCodeMitra = emailResendCodeMitra;
928
+ exports.emailSignupMitra = emailSignupMitra;
929
+ exports.emailVerifyCodeMitra = emailVerifyCodeMitra;
795
930
  exports.executeDbActionMitra = executeDbActionMitra;
796
931
  exports.executeServerFunctionAsyncMitra = executeServerFunctionAsyncMitra;
797
932
  exports.executeServerFunctionMitra = executeServerFunctionMitra;