santoid-sdk 7.0.0 → 8.0.0

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/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## Versão 5.5.0
3
+ ## Versão 7.1.0
4
+
5
+ ### Mudanças
6
+ - A **livenessSession** passou a falar com o **API Gateway** (`api.santoid.com.br`), como o restante do SDK, em vez do domínio próprio do serviço. Para chamar o Cloud Run direto, passe `customApiUrl`.
7
+ - Adicionado suporte a **chave de API**. Informe-a em `apiKey` e ela é enviada em `x-api-key`. Uma chave passada em `token` também é reconhecida pelo prefixo (`st_`, `AIza`) — nesse caso o SDK a envia no header correto sozinho, em vez de tentar tratá-la como JWT.
8
+ - O campo `token` passou a ser opcional na **livenessSession** quando `apiKey` for informada.
9
+
10
+ ## Versão 7.0.0
4
11
 
5
12
  ### Mudanças
6
13
  - Adicionada a função **livenessSession**, a prova de vida v2, sobre o **AWS Rekognition Face Liveness**. Ela cobre o ciclo de sessão (`createSession` e `getResults`), incluindo a espera pelo resultado enquanto o Rekognition ainda avalia. A captura em si — câmera, oval e desafio — é feita pelo `<FaceLivenessDetector>` da AWS, um componente React, e por isso não faz parte deste pacote.
package/README.md CHANGED
@@ -385,8 +385,13 @@ O fluxo é:
385
385
  import { livenessSession } from 'santoid-sdk/client/liveness'
386
386
 
387
387
  const session = livenessSession({
388
+ // Token do usuário, ou uma chave de API — o SDK reconhece a chave pelo
389
+ // prefixo e a envia em x-api-key
388
390
  token: 'string',
389
391
 
392
+ // Alternativa explícita à chave de API. Com ela, token é opcional
393
+ apiKey: 'string',
394
+
390
395
  // Opcional: sem track, a verificação não fica atrelada a um processo
391
396
  track: 'string',
392
397
  customerRequestId: 'string',
@@ -410,6 +415,8 @@ const sessionId = await session.createSession()
410
415
  const results = await session.getResults()
411
416
  ```
412
417
 
418
+ As chamadas passam pelo API Gateway (`api.santoid.com.br`). Para falar direto com o serviço, sem o gateway, passe `customApiUrl: 'https://liveness.santoid.com.br'`.
419
+
413
420
  O `getResults` já espera internamente enquanto o Rekognition ainda avalia — o status fica `CREATED` ou `IN_PROGRESS` por alguns instantes após a captura terminar, e a função só devolve quando sair desse estado (ou após esgotar as tentativas).
414
421
 
415
422
  #### Prova de Vida v1 (deprecada)
@@ -6,22 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AbstractService = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  const constants_1 = require("../utils/constants");
9
+ const index_1 = require("../utils/index");
9
10
  class AbstractService {
10
11
  constructor(options, serviceOptions) {
11
12
  this.options = options;
12
13
  this.serviceOptions = serviceOptions;
13
14
  }
14
15
  request(_a) {
15
- var _b, _c;
16
+ var _b, _c, _d;
16
17
  var { contentType = 'application/json', authToken = this.options.token, baseUrl = (_b = this.options.customApiUrl) !== null && _b !== void 0 ? _b : constants_1.API_GATEWAY_URL, extraHeaders, } = _a === void 0 ? {} : _a;
18
+ // Chave de API vai em x-api-key, nunca em Authorization: ela nao e' um JWT,
19
+ // e o backend recusaria ao tentar decodificar. A deteccao pelo prefixo
20
+ // repete a do orchestrator (getUserData), para que quem so tem `token` nao
21
+ // precise saber em qual campo colocar.
22
+ const apiKey = (_c = this.options.apiKey) !== null && _c !== void 0 ? _c : ((0, index_1.looksLikeApiToken)(authToken) ? authToken : undefined);
17
23
  const axiosConfig = {
18
24
  baseURL: baseUrl,
19
- headers: Object.assign({ 'Content-Type': contentType, Authorization: `Bearer ${authToken}` }, extraHeaders),
25
+ headers: Object.assign(Object.assign({ 'Content-Type': contentType }, (apiKey ? { 'x-api-key': apiKey } : { Authorization: `Bearer ${authToken}` })), extraHeaders),
20
26
  };
21
27
  let domain = this.options.domain;
22
28
  if (!this.options.domain && this.options.token) {
23
29
  const decodedToken = this.serviceOptions.tryDecodeJwt(this.options.token);
24
- domain = (_c = decodedToken === null || decodedToken === void 0 ? void 0 : decodedToken.claims) === null || _c === void 0 ? void 0 : _c.domain;
30
+ domain = (_d = decodedToken === null || decodedToken === void 0 ? void 0 : decodedToken.claims) === null || _d === void 0 ? void 0 : _d.domain;
25
31
  }
26
32
  if (axiosConfig.headers) {
27
33
  if (domain) {
@@ -20,7 +20,6 @@ export interface ILivenessSessionResult {
20
20
  AuditImages?: ILivenessImage[];
21
21
  }
22
22
  export declare class ApiLivenessSessionService extends AbstractService {
23
- get baseLivenessUrl(): string;
24
23
  private livenessRequest;
25
24
  createSession(customerRequestId?: string): Promise<ILivenessSession>;
26
25
  getSessionResults(sessionId: string): Promise<ILivenessSessionResult>;
@@ -2,20 +2,25 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ApiLivenessSessionService = void 0;
4
4
  const AbstractService_1 = require("./AbstractService");
5
- const constants_1 = require("../utils/constants");
5
+ const index_1 = require("../utils/index");
6
6
  class ApiLivenessSessionService extends AbstractService_1.AbstractService {
7
- get baseLivenessUrl() {
8
- var _a;
9
- return (_a = this.options.customApiUrl) !== null && _a !== void 0 ? _a : constants_1.LIVENESS_API_URL;
10
- }
11
- // O liveness v2 nao fica atras do API Gateway, entao o
12
- // x-endpoint-api-userinfo precisa ir explicito: e' ele que o backend le
13
- // para autorizar (ver api/deps.py, viewer_user_validation).
7
+ // Sem baseUrl proprio: herda o API_GATEWAY_URL do AbstractService, porque a
8
+ // v2 passa pelo gateway como o resto da API. Para falar direto com o Cloud
9
+ // Run - contornando o gateway - basta passar customApiUrl com
10
+ // LIVENESS_API_URL.
11
+ //
12
+ // Os paths da v2 estao no gateway com security: [], entao o ESPv2 repassa
13
+ // sem validar e sem popular o x-endpoint-api-userinfo. Por isso ele vai
14
+ // explicito: e' o primeiro header que o backend le (ver api/deps.py,
15
+ // resolve_request_token).
16
+ //
17
+ // Chave de API fica de fora: o backend da precedencia ao userinfo e tentaria
18
+ // valida-la como JWT. Ela segue em x-api-key, montado no AbstractService.
14
19
  livenessRequest() {
15
- var _a;
20
+ const token = this.options.token;
21
+ const isApiKey = Boolean(this.options.apiKey) || (0, index_1.looksLikeApiToken)(token);
16
22
  return this.request({
17
- baseUrl: this.baseLivenessUrl,
18
- extraHeaders: { 'x-endpoint-api-userinfo': (_a = this.options.token) !== null && _a !== void 0 ? _a : '' },
23
+ extraHeaders: isApiKey ? undefined : { 'x-endpoint-api-userinfo': token !== null && token !== void 0 ? token : '' },
19
24
  });
20
25
  }
21
26
  async createSession(customerRequestId) {
package/browser/index.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("SantoiDSDK",[],t):"object"==typeof exports?exports.SantoiDSDK=t():e.SantoiDSDK=t()}(this,(()=>(()=>{var e={373:function(e,t,s){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractService=void 0;const o=r(s(218)),n=s(661);t.AbstractService=class{constructor(e,t){this.options=e,this.serviceOptions=t}request(e){var t,s,{contentType:r="application/json",authToken:i=this.options.token,baseUrl:a=(null!==(t=this.options.customApiUrl)&&void 0!==t?t:n.API_GATEWAY_URL),extraHeaders:c}=void 0===e?{}:e;const l={baseURL:a,headers:Object.assign({"Content-Type":r,Authorization:`Bearer ${i}`},c)};let u=this.options.domain;if(!this.options.domain&&this.options.token){const e=this.serviceOptions.tryDecodeJwt(this.options.token);u=null===(s=null==e?void 0:e.claims)||void 0===s?void 0:s.domain}return l.headers&&(u&&(l.headers.Domain=u),this.options.useBillingAccounts&&(l.headers.clientCredentials=!0)),o.default.create(l)}}},151:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiAsyncService=void 0;const r=s(373);class o extends r.AbstractService{constructor(e,...t){super(...t),this.resultsRoute=e.resultsRoute}async get(e){return(await this.request().get(`/api/v1/tracks/${this.options.track}/${this.resultsRoute}/`+e)).data}}t.ApiAsyncService=o},748:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiFaceMatchService=void 0;const r=s(151),o=s(951);class n extends r.ApiAsyncService{constructor(...e){super({resultsRoute:"face-async"},...e)}async faceMatch(e,t,s){return await(0,o.retryAsyncFunctionXTimes)((async()=>{const r=new this.serviceOptions.FormDataClass;return r.append("track",this.options.track),r.append("deliveryFront","true"),r.append("sensitive_data_compliance","true"),r.append("imageFile1",e,"imageFile1.jpg"),t&&r.append("imageFile2",t,"imageFile2.jpg"),s&&r.append("customerRequestId",s),(await this.request({contentType:"multipart/form-data"}).post("/api/v1/face-match-async",r)).data}))}async get(...e){return await super.get(...e)}}t.ApiFaceMatchService=n},275:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiLivenessSessionService=void 0;const r=s(373),o=s(661);class n extends r.AbstractService{get baseLivenessUrl(){var e;return null!==(e=this.options.customApiUrl)&&void 0!==e?e:o.LIVENESS_API_URL}livenessRequest(){var e;return this.request({baseUrl:this.baseLivenessUrl,extraHeaders:{"x-endpoint-api-userinfo":null!==(e=this.options.token)&&void 0!==e?e:""}})}async createSession(e){return(await this.livenessRequest().post("/api/v2/liveness/session",{track:this.options.track,customerRequestId:e})).data}async getSessionResults(e){return(await this.livenessRequest().get(`/api/v2/liveness/session/${e}`,{params:this.options.track?{track:this.options.track}:void 0})).data}}t.ApiLivenessSessionService=n},926:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiOcrService=void 0;const r=s(151),o=s(951);class n extends r.ApiAsyncService{constructor(...e){super({resultsRoute:"ocr-async"},...e)}async extract(e,t){return await(0,o.retryAsyncFunctionXTimes)((async()=>{const s=new this.serviceOptions.FormDataClass;return s.append("imageFile",e,"imageFile.jpg"),s.append("track",this.options.track),s.append("template",this.options.template),s.append("customerRequestId",t),s.append("deliveryFront","true"),(await this.request({contentType:"multipart/form-data"}).post("/api/v1/ocr-async/ocr",s)).data}))}}t.ApiOcrService=n},456:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiTypificationService=void 0;const r=s(151),o=s(951);class n extends r.ApiAsyncService{constructor(...e){super({resultsRoute:"typification-async"},...e)}async predict(e,t){return await(0,o.retryAsyncFunctionXTimes)((async()=>{const s=new this.serviceOptions.FormDataClass;return s.append("imageFile",e,"imageFile.jpg"),s.append("track",this.options.track),s.append("customerRequestId",t),s.append("deliveryFront","true"),(await this.request({contentType:"multipart/form-data"}).post("/api/v1/typification-async/predict",s)).data}))}}t.ApiTypificationService=n},135:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseCoreService=void 0;const r=s(551),o=s(620);t.BaseCoreService=class{constructor(e){this.results={status:null,results:null,loading:!1,error:null},this.cameraIsActive=!1,this.cameraIsSetup=!1,this.options=e}async initialize(e){var t;e?this.startProcessing(e):(null!==(t=this.options.startTheCameraImmediately)&&void 0!==t?t:void 0===this.options.startTheCameraImmediately)&&await this.startCamera()}async updateResults(e){var t,s;this.results=Object.assign(Object.assign({},this.results),e),await(null===(s=(t=this.options).onUpdate)||void 0===s?void 0:s.call(t,this.results))}getVideoStream(){var e;return null===(e=this.frameGetControls)||void 0===e?void 0:e.videoStream}async setupCamera(){this.frameGetControls=await(0,o.getDefaultFrameControls)(),this.cameraIsSetup=!0}async startCamera(e){var t,s,o,n,i,a;try{if(this.cameraIsActive)throw new r.SDKError({message:"The camera has already been initialized",code:r.ECameraErrorCodes.ALREADY_STARTED,fatal:!1});if(this.results.loading)throw new r.SDKError({message:"Typification processing has already started",code:r.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.cameraIsSetup||await this.setupCamera(),this.frameGetControls.videoStream=await(null===(s=(t=this.frameGetControls).startGettingFrames)||void 0===s?void 0:s.call(t,e)),await(null===(n=(o=this.options).onCameraStart)||void 0===n?void 0:n.call(o,{videoStream:this.getVideoStream()})),this.cameraIsActive=!0}catch(e){const t=e instanceof r.SDKError?e:new r.SDKError({message:"Camera initialization error",code:r.ECameraErrorCodes.INITIALIZATION_ERROR,fatal:!1,details:e});await(null===(a=(i=this.options).onError)||void 0===a?void 0:a.call(i,t))}}async stopCamera(){var e,t,s,o,n,i;try{if(!this.cameraIsActive)throw new r.SDKError({message:"Camera not initialized",code:r.ECameraErrorCodes.NOT_INITIALIZED,fatal:!1});await(null===(t=(e=this.frameGetControls).stopGettingFrames)||void 0===t?void 0:t.call(e)),await(null===(o=(s=this.options).onCameraStop)||void 0===o?void 0:o.call(s)),this.cameraIsActive=!1}catch(e){const t=e instanceof r.SDKError?e:new r.SDKError({message:"Error during camera shutdown",code:r.ECameraErrorCodes.SHUTDOWN_ERROR,fatal:!1,details:e});await(null===(i=(n=this.options).onError)||void 0===i?void 0:i.call(n,t))}}async captureImage({startProcessing:e=!0}={}){var t,s;const o=await(null===(s=(t=this.frameGetControls).getNextFrame)||void 0===s?void 0:s.call(t));if(o)return e&&(await this.stopCamera(),await this.startProcessing(o)),o;throw new r.SDKError({message:"Cannot capture image",code:r.ECameraErrorCodes.CANNOT_CAPTURE_IMAGE,fatal:!1})}async waitForResults(e){let t=!1;return await new Promise(((s,r)=>{const o=setInterval((async()=>{var n,i,a,c;try{null===(i=(n=this.options).onClearInterval)||void 0===i||i.call(n,o);const r=await this.service.get(e);if("validation"===(null==r?void 0:r.status)&&!t)return await(null===(c=(a=this.options).onValidationRequested)||void 0===c?void 0:c.call(a,{track:this.options.track,requestId:r.id})),void(t=!0);if("error"===(null==r?void 0:r.status))throw new Error("Não foi possível processar os resultados do Upload de Documentos");if("processed"===(null==r?void 0:r.status)&&r.fileURL){const e=await fetch(r.fileURL),t=await e.json();t&&(clearInterval(o),s(t))}}catch(e){clearInterval(o),r(e)}}),5e3)}))}}},474:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FaceMatchService=void 0;const r=s(877),o=s(551),n=s(616),i=s(748),a=s(135);class c extends a.BaseCoreService{constructor(e){super(e),this.selectedFile1=void 0,this.selectedFile2=void 0,this.service=new i.ApiFaceMatchService(e,{FormDataClass:FormData,tryDecodeJwt:n.tryDecodeJwt})}async initialize(e,t){var s;e?this.startProcessing(e,t):(null!==(s=this.options.startTheCameraImmediately)&&void 0!==s?s:void 0===this.options.startTheCameraImmediately)&&await this.startCamera()}async captureFirstImage({startProcessing:e=!0}={}){const t=await super.captureImage({startProcessing:!1});return this.selectedFile1=t,e&&(await this.stopCamera(),await this.startProcessing(this.selectedFile1)),t}async captureSecondImage({startProcessing:e=!0}={}){if(!this.selectedFile1)throw new o.SDKError({message:"Select the first image before selecting the second",code:o.EFaceMatchErrorCodes.FIRST_IMAGE_NOT_SELECTED,fatal:!1});const t=await super.captureImage({startProcessing:!1});return this.selectedFile2=t,e&&(await this.stopCamera(),await this.startProcessing(this.selectedFile1,this.selectedFile2)),t}async startProcessing(e,t){var s,n,i,a,c,l,u;try{if(this.cameraIsActive)throw new o.SDKError({message:"Cannot start because the camera is running",code:o.ECameraErrorCodes.IS_RUNNING,fatal:!1});if(null===(s=this.results)||void 0===s?void 0:s.loading)throw new o.SDKError({message:"Processing has already started",code:o.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.updateResults({status:null,results:null,loading:!0,error:null});const{requestId:l}=await this.service.faceMatch(e,t,`sdk-ocr-${(0,r.v4)()}`),u=await this.waitForResultsFaceMatch(l);this.updateResults({status:"success",results:u,loading:!1,error:null}),null===(i=(n=this.options).onSuccess)||void 0===i||i.call(n,u),null===(c=(a=this.options).onEnd)||void 0===c||c.call(a)}catch(e){const t=e instanceof o.SDKError?e:new o.SDKError({message:"Error during document upload/analysis",code:o.EProcessingErrorCodes.PROCESSING_ERROR,fatal:!1,details:e});await(null===(u=(l=this.options).onError)||void 0===u?void 0:u.call(l,t)),this.updateResults({status:"error",results:null,loading:!1,error:t})}}async waitForResultsFaceMatch(e){return await new Promise(((t,s)=>{const r=setInterval((async()=>{var o,n,i,a;try{null===(n=(o=this.options).onClearInterval)||void 0===n||n.call(o,r);const s=await this.service.get(e);if("error"===(null==s?void 0:s.status)||"error_connector"===(null==s?void 0:s.status))throw new Error("Não foi possível processar os resultados do FaceMatch");if("processed"===(null==s?void 0:s.status)&&s.fileURL){const e=await fetch(s.fileURL);let o=await e.json();o=Object.assign(Object.assign({},o),{fileImage1:null!==(i=s.fileImage1)&&void 0!==i?i:"",fileImage2:null!==(a=s.fileImage2)&&void 0!==a?a:""}),o&&(clearInterval(r),t(o))}}catch(e){clearInterval(r),s(new Error(e))}}),5e3)}))}}t.FaceMatchService=c},927:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.faceMatch=void 0;const r=s(551),o=s(474);t.faceMatch=async function(e,t,s){var n,i;try{const r=new o.FaceMatchService(e);return await r.initialize(t,s),await(null===(i=(n=r.options).onStart)||void 0===i?void 0:i.call(n,{videoStream:r.getVideoStream()})),{startCamera:async(...e)=>{await r.startCamera(...e)},stopCamera:async()=>{await r.stopCamera()},captureFirstImage:async(...e)=>await r.captureFirstImage(...e),captureSecondImage:async(...e)=>await r.captureSecondImage(...e),getVideoStream:()=>r.getVideoStream(),sendFiles:async(...e)=>{await r.startProcessing(...e)}}}catch(e){throw new r.SDKError({message:"Error while starting SDK",code:r.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},577:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OcrService=void 0;const r=s(877),o=s(551),n=s(616),i=s(926),a=s(135);class c extends a.BaseCoreService{constructor(e){super(e),this.service=new i.ApiOcrService(e,{FormDataClass:FormData,tryDecodeJwt:n.tryDecodeJwt})}async startProcessing(e){var t,s,n,i,a,c,l;try{if(this.cameraIsActive)throw new o.SDKError({message:"Cannot start because the camera is running",code:o.ECameraErrorCodes.IS_RUNNING,fatal:!1});if(null===(t=this.results)||void 0===t?void 0:t.loading)throw new o.SDKError({message:"Processing has already started",code:o.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.updateResults({status:null,results:null,loading:!0,error:null});const{requestId:c}=await this.service.extract(e,`sdk-ocr-${(0,r.v4)()}`),l=await this.waitForResults(c);this.updateResults({status:"success",results:l,loading:!1,error:null}),null===(n=(s=this.options).onSuccess)||void 0===n||n.call(s,l),null===(a=(i=this.options).onEnd)||void 0===a||a.call(i)}catch(e){const t=e instanceof o.SDKError?e:new o.SDKError({message:"Error during document upload/analysis",code:o.EProcessingErrorCodes.PROCESSING_ERROR,fatal:!1,details:e});await(null===(l=(c=this.options).onError)||void 0===l?void 0:l.call(c,t)),this.updateResults({status:"error",results:null,loading:!1,error:t})}}}t.OcrService=c},168:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ocr=void 0;const r=s(551),o=s(577);t.ocr=async function(e,t){var s,n;try{const r=new o.OcrService(e);return await r.initialize(t),await(null===(n=(s=r.options).onStart)||void 0===n?void 0:n.call(s,{videoStream:r.getVideoStream()})),{startCamera:async(...e)=>{await r.startCamera(...e)},stopCamera:async()=>{await r.stopCamera()},captureImage:async()=>await r.captureImage(),getVideoStream:()=>r.getVideoStream(),sendFile:async e=>{await r.startProcessing(e)}}}catch(e){throw new r.SDKError({message:"Error while starting SDK",code:r.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},983:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypificationService=void 0;const r=s(877),o=s(551),n=s(616),i=s(456),a=s(135);class c extends a.BaseCoreService{constructor(e){super(e),this.service=new i.ApiTypificationService(e,{FormDataClass:FormData,tryDecodeJwt:n.tryDecodeJwt})}async startProcessing(e){var t,s,n,i,a,c,l;try{if(this.cameraIsActive)throw new o.SDKError({message:"Cannot start because the camera is running",code:o.ECameraErrorCodes.IS_RUNNING,fatal:!1});if(null===(t=this.results)||void 0===t?void 0:t.loading)throw new o.SDKError({message:"Processing has already started",code:o.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.updateResults({status:null,results:null,loading:!0,error:null});const{requestId:c}=await this.service.predict(e,`sdk-typification-${(0,r.v4)()}`),l=await this.waitForResults(c);this.updateResults({status:"success",results:l,loading:!1,error:null}),null===(n=(s=this.options).onSuccess)||void 0===n||n.call(s,l),null===(a=(i=this.options).onEnd)||void 0===a||a.call(i)}catch(e){const t=e instanceof o.SDKError?e:new o.SDKError({message:"Error during document upload/analysis",code:o.EProcessingErrorCodes.PROCESSING_ERROR,fatal:!1,details:e});await(null===(l=(c=this.options).onError)||void 0===l?void 0:l.call(c,t)),this.updateResults({status:"error",results:null,loading:!1,error:t})}}}t.TypificationService=c},344:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.typification=void 0;const r=s(551),o=s(983);t.typification=async function(e,t){var s,n;try{const r=new o.TypificationService(e);return await r.initialize(t),await(null===(n=(s=r.options).onStart)||void 0===n?void 0:n.call(s,{videoStream:r.getVideoStream()})),{startCamera:async(...e)=>{await r.startCamera(...e)},stopCamera:async()=>{await r.stopCamera()},captureImage:async()=>await r.captureImage(),getVideoStream:()=>r.getVideoStream(),sendFile:async e=>{await r.startProcessing(e)}}}catch(e){throw new r.SDKError({message:"Error while starting SDK",code:r.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},122:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.insertUploadIdentificationDocument=void 0;const r=s(661);t.insertUploadIdentificationDocument=function(e,t){var s,o,n;const i=t?document.querySelector(t):document.body;if(!i)throw new Error("Cannot find target element");const a=document.createElement("iframe");a.style.overflow="hidden",a.style.border="0",a.setAttribute("width",null!==(s=e.width)&&void 0!==s?s:"100%"),a.setAttribute("height",null!==(o=e.height)&&void 0!==o?o:"550px"),a.setAttribute("scrolling","no"),a.setAttribute("allow","camera; microphone; clipboard-read; clipboard-write");let c=`${null!==(n=e.customAppUrl)&&void 0!==n?n:r.APPLICATION_URL}/share/domains/${e.domain}/tracks/${e.track}/flow/${e.flow}/embedded`;e.token&&(c+=`?accessToken=${e.token}`),a.setAttribute("src",c),i.appendChild(a)}},42:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LivenessDetectionService=void 0;const r=s(551),o=s(620),n=s(951),i=s(661);t.LivenessDetectionService=class{constructor(e,t){this.frameGetControls={},this.currentStep="front",this.pauseSendingFramesToWebSocket=!1,this.websocketClosedBySDK=!1,this.validationSuccess=!1,this.canSendNextBytes=!0,this.endCalled=!1,this.cancelSendingFramesToWebsocket=void 0,this.successFrames={front:void 0,right:void 0,left:void 0,up:void 0,bottom:void 0},this.options=e,this.abstractWebSocket=t}async onWebSocketMessage(e){var t,s,o,i,a,c,l,u;const d=e.data,p=JSON.parse(d);return(null==p?void 0:p.validation)&&this.currentStep&&(this.successFrames[this.currentStep]=this.lastSentBytes),(null==p?void 0:p.next_step)&&!p.error&&(this.currentStep=p.next_step,await(null===(s=(t=this.options).onNextStep)||void 0===s?void 0:s.call(t,p.next_step)),await(null===(i=(o=this.options)[`on${(0,n.capitalizeFirstLetter)(p.next_step)}Step`])||void 0===i?void 0:i.call(o))),p&&(this.canSendNextBytes=!!(null==p?void 0:p.can_send_next_bytes)),(null==p?void 0:p.success)&&(this.successFrames.bottom=this.lastSentBytes,this.validationSuccess=!0,await(null===(c=(a=this.options).onSuccess)||void 0===c?void 0:c.call(a,{livenessId:p.livenessId,successFrames:this.successFrames})),await this.stopLivenessDetection()),(null==p?void 0:p.error)&&await(null===(u=(l=this.options).onError)||void 0===u?void 0:u.call(l,new r.SDKError({message:"Wrong position",code:r.ELivenessDetectionErrorCodes.WRONG_POSITION,fatal:!1}))),p}async stopLivenessDetection(){var e,t,s,r,o;await(0,n.waitFor)((()=>!!this.cancelSendingFramesToWebsocket)),null===(e=this.cancelSendingFramesToWebsocket)||void 0===e||e.call(this),await(null===(s=(t=this.frameGetControls).stopGettingFrames)||void 0===s?void 0:s.call(t)),this.abstractWebSocket.disconnectFromWebSocket(),this.endCalled||(await(null===(o=(r=this.options).onEnd)||void 0===o?void 0:o.call(r)),this.endCalled=!0),this.websocketClosedBySDK=!0}async sendFramesToWebSocket(){var e,t;try{if(this.canSendNextBytes&&!this.pauseSendingFramesToWebSocket){const s=await(null===(t=(e=this.frameGetControls).getNextFrame)||void 0===t?void 0:t.call(e));s&&(this.abstractWebSocket.send(s),this.lastSentBytes=s,this.canSendNextBytes=!1)}}catch(e){await this.stopLivenessDetection()}}async onConnect(){var e,t,s,r,a,c,l,u,d,p;try{if(this.options.getNextFrame)this.frameGetControls.startGettingFrames=this.options.startGettingFrames,this.frameGetControls.getNextFrame=this.options.getNextFrame,this.frameGetControls.stopGettingFrames=this.options.stopGettingFrames,this.frameGetControls.videoStream=await(null===(t=(e=this.options).startGettingFrames)||void 0===t?void 0:t.call(e));else{const e=await(0,o.getDefaultFrameControls)();this.frameGetControls.startGettingFrames=e.startGettingFrames,this.frameGetControls.getNextFrame=e.getNextFrame,this.frameGetControls.stopGettingFrames=e.stopGettingFrames,this.frameGetControls.videoStream=await(null===(r=(s=this.frameGetControls).startGettingFrames)||void 0===r?void 0:r.call(s))}await(null===(c=(a=this.options).onStart)||void 0===c?void 0:c.call(a,{videoStream:this.getVideoStream()})),await(null===(u=(l=this.options).onNextStep)||void 0===u?void 0:u.call(l,"front")),await(null===(p=(d=this.options).onFrontStep)||void 0===p?void 0:p.call(d)),this.cancelSendingFramesToWebsocket=(0,n.callAsyncFunctionEveryXSeconds)((async()=>{await this.sendFramesToWebSocket()}),i.SEND_FRAMES_INTERVAL_MS)}catch(e){await this.onError()}}async onError(){var e,t;this.validationSuccess||(await(null===(t=(e=this.options).onError)||void 0===t?void 0:t.call(e,new r.SDKError({message:"Internal Error",code:r.EDefaultErrorCodes.INTERNAL_ERROR,fatal:!1}))),await this.stopLivenessDetection())}resumeGettingFrames(){this.pauseSendingFramesToWebSocket=!1}pauseGettingFrames(){this.pauseSendingFramesToWebSocket=!0}getVideoStream(){var e;return null===(e=this.frameGetControls)||void 0===e?void 0:e.videoStream}}},234:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.livenessDetection=void 0;const r=s(42),o=s(551),n=s(706),i=s(616);t.livenessDetection=function(e){var t;try{const s=new n.AbstractWebSocket({WebSocketClass:null!==(t=e.CustomWebSocketClass)&&void 0!==t?t:WebSocket,decodeJwt:i.decodeJwt},e);s.startConnection();const o=new r.LivenessDetectionService(e,s);return s.waitForWebSocketConnection().then((()=>{o.onConnect()})).catch((()=>{o.onError()})),s.addListener("message",(e=>{o.onWebSocketMessage(e)})),s.addListener("error",(()=>{o.onError()})),s.addListener("close",(()=>{o.onError()})),{getVideoStream:()=>o.getVideoStream(),stopLivenessDetection:async()=>{await o.stopLivenessDetection()},resumeGettingFrames:()=>{o.resumeGettingFrames()},pauseGettingFrames:()=>{o.pauseGettingFrames()}}}catch(e){throw new o.SDKError({message:"Error while starting SDK",code:o.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0})}}},460:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LivenessSessionService=void 0;const r=s(275),o=s(551),n=s(951),i=s(661),a=s(616);t.LivenessSessionService=class{constructor(e){this.sessionId=null,this.options=e,this.service=new r.ApiLivenessSessionService(e,{FormDataClass:FormData,tryDecodeJwt:a.tryDecodeJwt})}async createSession(){var e,t;try{const s=await this.service.createSession(this.options.customerRequestId);return this.sessionId=s.SessionId,await(null===(t=(e=this.options).onSessionCreated)||void 0===t?void 0:t.call(e,s.SessionId)),s.SessionId}catch(e){throw await this.fail("Error while creating liveness session",e)}}async getResults(e=this.sessionId){var t,s;if(!e)throw await this.fail("There is no liveness session to fetch results from");try{let r=null;for(let t=0;t<i.LIVENESS_RESULT_MAX_ATTEMPTS&&(r=await this.service.getSessionResults(e),i.LIVENESS_PENDING_STATUSES.includes(r.Status));t++)await(0,n.wait)(i.LIVENESS_RESULT_RETRY_DELAY_MS);return await(null===(s=(t=this.options).onResults)||void 0===s?void 0:s.call(t,r)),r}catch(e){throw await this.fail("Error while fetching liveness session results",e)}}async fail(e,t){var s,r;const n=new o.SDKError({message:e,code:o.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:t});return await(null===(r=(s=this.options).onError)||void 0===r?void 0:r.call(s,n)),n}}},923:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.livenessSession=void 0;const r=s(460),o=s(551);t.livenessSession=function(e){try{const t=new r.LivenessSessionService(e);return{createSession:async()=>await t.createSession(),getResults:async(...e)=>await t.getResults(...e),getSessionId:()=>t.sessionId}}catch(e){throw new o.SDKError({message:"Error while starting SDK",code:o.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},171:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UploadIdentificationDocumentService=void 0;const r=s(456),o=s(748),n=s(551),i=s(877),a=s(616);t.UploadIdentificationDocumentService=class{constructor(e,t){this.results={uploadedDocument:null,typification:{status:null,results:null,loading:!1,error:null},liveness:{status:null,results:null,loading:!1,error:null},faceMatch:{status:null,results:null,loading:!1,error:null}},this.options=e,this.internalOptions=t,this.typificationService=new r.ApiTypificationService(e,{FormDataClass:FormData,tryDecodeJwt:a.tryDecodeJwt}),this.faceMatchService=new o.ApiFaceMatchService(e,{FormDataClass:FormData,tryDecodeJwt:a.tryDecodeJwt})}getResults(){return this.results}async updateResults(e){var t,s,r,o,n,i;this.results=Object.assign(Object.assign({},this.results),e),await(null===(s=(t=this.options).onUpdate)||void 0===s?void 0:s.call(t,this.results)),e.faceMatch||this.tryStartFaceMatch(),Object.entries(this.results).every((([e,t])=>"uploadedDocument"===e||!!t.results))&&(await(null===(o=(r=this.options).onSuccess)||void 0===o?void 0:o.call(r,this.results)),await(null===(i=(n=this.options).onEnd)||void 0===i?void 0:i.call(n)))}updateUploadedDocument(e){this.results.uploadedDocument=e}async waitForResults(e){let t=!1;return await new Promise(((s,r)=>{const o=setInterval((async()=>{var n,i,a,c;try{null===(i=(n=this.options).onClearInterval)||void 0===i||i.call(n,o);const l=await this.typificationService.get(e);if("validation"!==(null==l?void 0:l.status)||t){if("error"===(null==l?void 0:l.status))clearInterval(o),r(new Error("Não foi possível processar os resultados do Upload de Documentos"));else if("processed"===(null==l?void 0:l.status)&&l.fileURL){const e=await fetch(l.fileURL),t=await e.json();t&&(clearInterval(o),s(t))}}else await(null===(c=(a=this.options).onValidationRequested)||void 0===c?void 0:c.call(a,{track:this.options.track,requestId:l.id})),t=!0}catch(e){clearInterval(o),r(new Error(e))}}),5e3)}))}async waitForResultsFaceMatch(e){return await new Promise(((t,s)=>{const r=setInterval((async()=>{var o,n,i,a;try{null===(n=(o=this.options).onClearInterval)||void 0===n||n.call(o,r);const c=await this.faceMatchService.get(e);if("error"===(null==c?void 0:c.status)||"error_connector"===(null==c?void 0:c.status))clearInterval(r),s(new Error("Não foi possível processar os resultados do FaceMatch"));else if("processed"===(null==c?void 0:c.status)&&c.fileURL){const e=await fetch(c.fileURL);let s=await e.json();s=Object.assign(Object.assign({},s),{fileImage1:null!==(i=c.fileImage1)&&void 0!==i?i:"",fileImage2:null!==(a=c.fileImage2)&&void 0!==a?a:""}),s&&(clearInterval(r),t(s))}}catch(e){clearInterval(r),s(new Error(e))}}),5e3)}))}async startDocumentUpload(e){var t,s;try{this.updateResults({typification:{status:null,results:null,loading:!0,error:null}}),this.updateUploadedDocument(e);const{requestId:t}=await this.typificationService.predict(e,`sdk-typification-${(0,i.v4)()}`),s=await this.waitForResults(t);this.updateResults({typification:{status:"success",results:s,loading:!1,error:null}})}catch(e){const r=new n.SDKError({message:"Error during document upload/analysis",code:n.EUploadIdentificationDocumentErrorCodes.DOCUMENT_ANALYSIS_ERROR,fatal:!1,details:e});await(null===(s=(t=this.options).onError)||void 0===s?void 0:s.call(t,r)),this.updateResults({typification:{status:"error",results:null,loading:!1,error:r}})}}startLivenessDetection(e){var t,s;const r=Object.assign(Object.assign({},this.options.livenessDetectionOptions),e);this.updateResults({liveness:{results:null,status:null,loading:!0,error:null}});try{return this.internalOptions.livenessDetection(Object.assign(Object.assign({domain:this.options.domain,customId:this.options.customId,customWebSocketUrl:this.options.customWebSocketUrl,token:this.options.token,track:this.options.track},r),{onSuccess:async e=>{var t;await(null===(t=null==r?void 0:r.onSuccess)||void 0===t?void 0:t.call(r,e)),this.updateResults({liveness:{status:"success",results:e,loading:!1,error:null}})},onError:async e=>{var t,s,o;await(null===(t=null==r?void 0:r.onError)||void 0===t?void 0:t.call(r,e)),await(null===(o=(s=this.options).onError)||void 0===o?void 0:o.call(s,e)),this.updateResults({liveness:{status:"error",results:null,loading:"wrong-position"===(null==e?void 0:e.code),error:null!=e?e:null}})}}))}catch(e){const r=new n.SDKError({message:"Error during liveness detection",code:n.EUploadIdentificationDocumentErrorCodes.LIVENESS_DETECTION_ERROR,fatal:!1,details:e});null===(s=(t=this.options).onError)||void 0===s||s.call(t,r),this.updateResults({liveness:{status:"error",results:null,loading:!1,error:r}})}}async startFaceMatch(e,t){var s,r;try{this.updateResults({faceMatch:{status:null,results:null,loading:!0,error:null}});const{requestId:s}=await this.faceMatchService.faceMatch(e,t,`sdk-facematch-${(0,i.v4)()}`),r=await this.waitForResultsFaceMatch(s);this.updateResults({faceMatch:{results:r,status:"success",loading:!1,error:null}})}catch(e){const t=new n.SDKError({message:"Error when comparing the face with the document",code:n.EUploadIdentificationDocumentErrorCodes.FACE_MATCH_ERROR,fatal:!1,details:e});await(null===(r=(s=this.options).onError)||void 0===r?void 0:r.call(s,t)),this.updateResults({faceMatch:{results:null,status:"error",loading:!1,error:t}})}}async tryStartFaceMatch(){var e,t,s;!this.results.uploadedDocument||!(null===(e=this.results.liveness.results)||void 0===e?void 0:e.successFrames.front)||this.results.faceMatch.loading||this.results.liveness.loading||this.results.typification.loading?await(null===(s=(t=this.options).onError)||void 0===s?void 0:s.call(t,new n.SDKError({message:"Unavailable faces",code:n.EUploadIdentificationDocumentErrorCodes.FACE_MATCH_UNAVAILABLE_FACES_ERROR,fatal:!1}))):await this.startFaceMatch(this.results.uploadedDocument,this.results.liveness.results.successFrames.front)}startAll(e,t){this.startDocumentUpload(e),this.startLivenessDetection(t)}}},604:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uploadIdentificationDocument=void 0;const r=s(171),o=s(234);t.uploadIdentificationDocument=function(e){const t=new r.UploadIdentificationDocumentService(e,{livenessDetection:o.livenessDetection});return{startDocumentUpload:async(...e)=>{await t.startDocumentUpload(...e)},startLivenessDetection:(...e)=>t.startLivenessDetection(...e),startFaceComparison:async(...e)=>{await t.tryStartFaceMatch(...e)},startAll:(...e)=>{t.startAll(...e)},getResults:(...e)=>t.getResults(...e)}}},620:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDefaultFrameControls=void 0,t.getDefaultFrameControls=async function(){let e,t,s,r;return{startGettingFrames:async function(o){var n;return e&&t&&s||(e=await navigator.mediaDevices.getUserMedia({audio:!1,video:{facingMode:null!==(n=null==o?void 0:o.facingMode)&&void 0!==n?n:"user"}}),t=document.createElement("video"),t.setAttribute("autoplay","true"),t.style.transform="scale(-1, 1)",t.style.position="absolute",t.style.left="-99999px",document.body.appendChild(t),t.srcObject=e,s=document.createElement("canvas"),r=s.getContext("2d")),e},getNextFrame:async function(){if(s&&t)return s.width=t.videoWidth,s.height=t.videoHeight,null==r||r.drawImage(t,0,0,s.width,s.height),await new Promise(((e,t)=>{s?s.toBlob((t=>{e(t)})):e(null)}));throw new Error("Cannot found video element")},stopGettingFrames:function(){t&&(document.body.removeChild(t),t=void 0),s&&(s=void 0),r&&(r=void 0),e&&(null==e||e.getTracks().forEach((e=>{e.stop()})),e=void 0)}}}},616:(e,t)=>{"use strict";function s(e){const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(window.atob(t).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""));return JSON.parse(s)}Object.defineProperty(t,"__esModule",{value:!0}),t.tryDecodeJwt=t.decodeJwt=void 0,t.decodeJwt=s,t.tryDecodeJwt=function(e){try{return s(e)}catch(e){return null}}},661:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LIVENESS_RESULT_RETRY_DELAY_MS=t.LIVENESS_RESULT_MAX_ATTEMPTS=t.LIVENESS_PENDING_STATUSES=t.DEFAULT_RETRY_TIME_STEP=t.DEFAULT_NUMBER_OF_RETRIES=t.SEND_FRAMES_INTERVAL_MS=t.APPLICATION_URL=t.API_GATEWAY_URL=t.WEBSOCKET_BASE_URL=t.LIVENESS_API_URL=void 0,t.LIVENESS_API_URL="https://liveness.santoid.com.br",t.WEBSOCKET_BASE_URL=`${t.LIVENESS_API_URL.replace("https://","wss://")}/api/v1/liveness/ws`,t.API_GATEWAY_URL="https://api.santoid.com.br",t.APPLICATION_URL="https://app.santoid.com.br",t.SEND_FRAMES_INTERVAL_MS=100,t.DEFAULT_NUMBER_OF_RETRIES=5,t.DEFAULT_RETRY_TIME_STEP=1e3,t.LIVENESS_PENDING_STATUSES=["CREATED","IN_PROGRESS"],t.LIVENESS_RESULT_MAX_ATTEMPTS=8,t.LIVENESS_RESULT_RETRY_DELAY_MS=1500},551:(e,t)=>{"use strict";var s,r,o,n,i,a;Object.defineProperty(t,"__esModule",{value:!0}),t.SDKError=t.EProcessingErrorCodes=t.ECameraErrorCodes=t.EFaceMatchErrorCodes=t.EUploadIdentificationDocumentErrorCodes=t.ELivenessDetectionErrorCodes=t.EDefaultErrorCodes=void 0,function(e){e.INITIALIZATION_ERROR="initialization-error",e.INTERNAL_ERROR="internal-error"}(s||(t.EDefaultErrorCodes=s={})),function(e){e.WRONG_POSITION="liveness-detection/wrong-position"}(r||(t.ELivenessDetectionErrorCodes=r={})),function(e){e.FACE_MATCH_ERROR="upload-identification-document/face-match-error",e.FACE_MATCH_UNAVAILABLE_FACES_ERROR="upload-identification-document/face-match-unavailable-faces-error",e.DOCUMENT_ANALYSIS_ERROR="upload-identification-document/document-analysis-error",e.LIVENESS_DETECTION_ERROR="upload-identification-document/liveness-detection-error"}(o||(t.EUploadIdentificationDocumentErrorCodes=o={})),function(e){e.FIRST_IMAGE_NOT_SELECTED="face-match/first-image-not-selected"}(n||(t.EFaceMatchErrorCodes=n={})),function(e){e.INITIALIZATION_ERROR="camera/initialization-error",e.IS_RUNNING="camera/is-running",e.ALREADY_STARTED="camera/already-started",e.NOT_INITIALIZED="camera/not-initialized",e.CANNOT_CAPTURE_IMAGE="camera/cannot-capture-image",e.SHUTDOWN_ERROR="camera/shutdown-error"}(i||(t.ECameraErrorCodes=i={})),function(e){e.PROCESSING_ERROR="processing/processing-error",e.ALREADY_STARTED="processing/already-started"}(a||(t.EProcessingErrorCodes=a={}));class c extends Error{constructor({message:e,code:t,fatal:s,details:r}){super(e),this.code=t,this.fatal=s,this.details=r}}t.SDKError=c},951:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.retryAsyncFunctionXTimes=t.callAsyncFunctionEveryXSeconds=t.waitFor=t.wait=t.capitalizeFirstLetter=void 0;const r=s(218),o=s(661);async function n(e){await new Promise((t=>{e()?t():setTimeout((()=>{n(e).then(t)}),500)}))}function i(e){var t;return e instanceof r.AxiosError&&(503===(null===(t=e.response)||void 0===t?void 0:t.status)||"Network Error"===e.message)}t.capitalizeFirstLetter=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},t.wait=async e=>{await new Promise((t=>{setTimeout(t,e)}))},t.waitFor=n,t.callAsyncFunctionEveryXSeconds=function e(t,s,r={stop:!1}){const o={timerEnd:!1};return setTimeout((()=>{o.timerEnd=!0}),s),t().then((async()=>{await n((()=>o.timerEnd)),r.stop||e(t,s,r)})),function(){r.stop=!0}},t.retryAsyncFunctionXTimes=async function e(s,r=i,n=o.DEFAULT_NUMBER_OF_RETRIES,a=1e3,c=o.DEFAULT_RETRY_TIME_STEP){try{return await s()}catch(o){if(r(o)&&n>0)return await(0,t.wait)(a),await e(s,r,n-1,a+c,c);throw o}}},706:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractWebSocket=void 0;const r=s(661);t.AbstractWebSocket=class{constructor(e,t){this.classOptions=e,this.sdkOptions=t}startConnection(){var e,t;const s=this.classOptions.decodeJwt(this.sdkOptions.token),o={x_endpoint_api_userinfo:this.sdkOptions.token,domain:null!==(e=this.sdkOptions.domain)&&void 0!==e?e:s.claims.domain,track:this.sdkOptions.track};this.sdkOptions.customId&&(o.customerRequestId=this.sdkOptions.customId),this.sdkOptions.useBillingAccounts&&(o.clientCredentials=!0);const n=Object.entries(o).map((e=>e.join("="))).join("&");this.websocket=new this.classOptions.WebSocketClass(`${null!==(t=this.sdkOptions.customWebSocketUrl)&&void 0!==t?t:r.WEBSOCKET_BASE_URL}?${n}`)}async waitForWebSocketConnection(){if(await new Promise((e=>{const t=setInterval((()=>{[3,1].includes(this.websocket.readyState)&&(clearInterval(t),e())}),5)})),3===this.websocket.readyState)throw new Error("Cannot connect to server")}disconnectFromWebSocket(){var e,t;[2,3].includes(this.websocket.readyState)||null===(t=(e=this.websocket).close)||void 0===t||t.call(e)}get readyState(){return this.websocket.readyState}addListener(e,t){var s,r;this.websocket.on?this.websocket.on(e,t):null===(r=(s=this.websocket).addEventListener)||void 0===r||r.call(s,e,t)}send(e){this.websocket.send(e)}}},877:(e,t,s)=>{var r=s(570),o=s(358),n=o;n.v1=r,n.v4=o,e.exports=n},327:e=>{for(var t=[],s=0;s<256;++s)t[s]=(s+256).toString(16).substr(1);e.exports=function(e,s){var r=s||0,o=t;return[o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]]].join("")}},217:e=>{var t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(t){var s=new Uint8Array(16);e.exports=function(){return t(s),s}}else{var r=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),r[t]=e>>>((3&t)<<3)&255;return r}}},570:(e,t,s)=>{var r,o,n=s(217),i=s(327),a=0,c=0;e.exports=function(e,t,s){var l=t&&s||0,u=t||[],d=(e=e||{}).node||r,p=void 0!==e.clockseq?e.clockseq:o;if(null==d||null==p){var h=n();null==d&&(d=r=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==p&&(p=o=16383&(h[6]<<8|h[7]))}var f=void 0!==e.msecs?e.msecs:(new Date).getTime(),m=void 0!==e.nsecs?e.nsecs:c+1,v=f-a+(m-c)/1e4;if(v<0&&void 0===e.clockseq&&(p=p+1&16383),(v<0||f>a)&&void 0===e.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");a=f,c=m,o=p;var E=(1e4*(268435455&(f+=122192928e5))+m)%4294967296;u[l++]=E>>>24&255,u[l++]=E>>>16&255,u[l++]=E>>>8&255,u[l++]=255&E;var S=f/4294967296*1e4&268435455;u[l++]=S>>>8&255,u[l++]=255&S,u[l++]=S>>>24&15|16,u[l++]=S>>>16&255,u[l++]=p>>>8|128,u[l++]=255&p;for(var w=0;w<6;++w)u[l+w]=d[w];return t||i(u)}},358:(e,t,s)=>{var r=s(217),o=s(327);e.exports=function(e,t,s){var n=t&&s||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||r)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var a=0;a<16;++a)t[n+a]=i[a];return t||o(i)}},218:(e,t,s)=>{"use strict";function r(e,t){return function(){return e.apply(t,arguments)}}const{toString:o}=Object.prototype,{getPrototypeOf:n}=Object,i=(a=Object.create(null),e=>{const t=o.call(e);return a[t]||(a[t]=t.slice(8,-1).toLowerCase())});var a;const c=e=>(e=e.toLowerCase(),t=>i(t)===e),l=e=>t=>typeof t===e,{isArray:u}=Array,d=l("undefined"),p=c("ArrayBuffer"),h=l("string"),f=l("function"),m=l("number"),v=e=>null!==e&&"object"==typeof e,E=e=>{if("object"!==i(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},S=c("Date"),w=c("File"),g=c("Blob"),y=c("FileList"),R=c("URLSearchParams");function b(e,t,{allOwnKeys:s=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),u(e))for(r=0,o=e.length;r<o;r++)t.call(null,e[r],r,e);else{const o=s?Object.getOwnPropertyNames(e):Object.keys(e),n=o.length;let i;for(r=0;r<n;r++)i=o[r],t.call(null,e[i],i,e)}}function A(e,t){t=t.toLowerCase();const s=Object.keys(e);let r,o=s.length;for(;o-- >0;)if(r=s[o],t===r.toLowerCase())return r;return null}const O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:s.g,_=e=>!d(e)&&e!==O,C=(T="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>T&&e instanceof T);var T;const I=c("HTMLFormElement"),D=(({hasOwnProperty:e})=>(t,s)=>e.call(t,s))(Object.prototype),F=c("RegExp"),N=(e,t)=>{const s=Object.getOwnPropertyDescriptors(e),r={};b(s,((s,o)=>{let n;!1!==(n=t(s,o,e))&&(r[o]=n||s)})),Object.defineProperties(e,r)},L="abcdefghijklmnopqrstuvwxyz",P="0123456789",U={DIGIT:P,ALPHA:L,ALPHA_DIGIT:L+L.toUpperCase()+P},j=c("AsyncFunction");var k={isArray:u,isArrayBuffer:p,isBuffer:function(e){return null!==e&&!d(e)&&null!==e.constructor&&!d(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=i(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t},isString:h,isNumber:m,isBoolean:e=>!0===e||!1===e,isObject:v,isPlainObject:E,isUndefined:d,isDate:S,isFile:w,isBlob:g,isRegExp:F,isFunction:f,isStream:e=>v(e)&&f(e.pipe),isURLSearchParams:R,isTypedArray:C,isFileList:y,forEach:b,merge:function e(){const{caseless:t}=_(this)&&this||{},s={},r=(r,o)=>{const n=t&&A(s,o)||o;E(s[n])&&E(r)?s[n]=e(s[n],r):E(r)?s[n]=e({},r):u(r)?s[n]=r.slice():s[n]=r};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&b(arguments[e],r);return s},extend:(e,t,s,{allOwnKeys:o}={})=>(b(t,((t,o)=>{s&&f(t)?e[o]=r(t,s):e[o]=t}),{allOwnKeys:o}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,s,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),s&&Object.assign(e.prototype,s)},toFlatObject:(e,t,s,r)=>{let o,i,a;const c={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),i=o.length;i-- >0;)a=o[i],r&&!r(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==s&&n(e)}while(e&&(!s||s(e,t))&&e!==Object.prototype);return t},kindOf:i,kindOfTest:c,endsWith:(e,t,s)=>{e=String(e),(void 0===s||s>e.length)&&(s=e.length),s-=t.length;const r=e.indexOf(t,s);return-1!==r&&r===s},toArray:e=>{if(!e)return null;if(u(e))return e;let t=e.length;if(!m(t))return null;const s=new Array(t);for(;t-- >0;)s[t]=e[t];return s},forEachEntry:(e,t)=>{const s=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=s.next())&&!r.done;){const s=r.value;t.call(e,s[0],s[1])}},matchAll:(e,t)=>{let s;const r=[];for(;null!==(s=e.exec(t));)r.push(s);return r},isHTMLForm:I,hasOwnProperty:D,hasOwnProp:D,reduceDescriptors:N,freezeMethods:e=>{N(e,((t,s)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(s))return!1;const r=e[s];f(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+s+"'")}))}))},toObjectSet:(e,t)=>{const s={},r=e=>{e.forEach((e=>{s[e]=!0}))};return u(e)?r(e):r(String(e).split(t)),s},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,s){return t.toUpperCase()+s})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:A,global:O,isContextDefined:_,ALPHABET:U,generateString:(e=16,t=U.ALPHA_DIGIT)=>{let s="";const{length:r}=t;for(;e--;)s+=t[Math.random()*r|0];return s},isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),s=(e,r)=>{if(v(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=u(e)?[]:{};return b(e,((e,t)=>{const n=s(e,r+1);!d(n)&&(o[t]=n)})),t[r]=void 0,o}}return e};return s(e,0)},isAsyncFn:j,isThenable:e=>e&&(v(e)||f(e))&&f(e.then)&&f(e.catch)};function x(e,t,s,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),s&&(this.config=s),r&&(this.request=r),o&&(this.response=o)}k.inherits(x,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:k.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const M=x.prototype,B={};function G(e){return k.isPlainObject(e)||k.isArray(e)}function K(e){return k.endsWith(e,"[]")?e.slice(0,-2):e}function q(e,t,s){return e?e.concat(t).map((function(e,t){return e=K(e),!s&&t?"["+e+"]":e})).join(s?".":""):t}["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{B[e]={value:e}})),Object.defineProperties(x,B),Object.defineProperty(M,"isAxiosError",{value:!0}),x.from=(e,t,s,r,o,n)=>{const i=Object.create(M);return k.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),x.call(i,e.message,t,s,r,o),i.cause=e,i.name=e.name,n&&Object.assign(i,n),i};const W=k.toFlatObject(k,{},null,(function(e){return/^is[A-Z]/.test(e)}));function V(e,t,s){if(!k.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(s=k.toFlatObject(s,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!k.isUndefined(t[e])}))).metaTokens,o=s.visitor||l,n=s.dots,i=s.indexes,a=(s.Blob||"undefined"!=typeof Blob&&Blob)&&k.isSpecCompliantForm(t);if(!k.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(k.isDate(e))return e.toISOString();if(!a&&k.isBlob(e))throw new x("Blob is not supported. Use a Buffer instead.");return k.isArrayBuffer(e)||k.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,s,o){let a=e;if(e&&!o&&"object"==typeof e)if(k.endsWith(s,"{}"))s=r?s:s.slice(0,-2),e=JSON.stringify(e);else if(k.isArray(e)&&function(e){return k.isArray(e)&&!e.some(G)}(e)||(k.isFileList(e)||k.endsWith(s,"[]"))&&(a=k.toArray(e)))return s=K(s),a.forEach((function(e,r){!k.isUndefined(e)&&null!==e&&t.append(!0===i?q([s],r,n):null===i?s:s+"[]",c(e))})),!1;return!!G(e)||(t.append(q(o,s,n),c(e)),!1)}const u=[],d=Object.assign(W,{defaultVisitor:l,convertValue:c,isVisitable:G});if(!k.isObject(e))throw new TypeError("data must be an object");return function e(s,r){if(!k.isUndefined(s)){if(-1!==u.indexOf(s))throw Error("Circular reference detected in "+r.join("."));u.push(s),k.forEach(s,(function(s,n){!0===(!(k.isUndefined(s)||null===s)&&o.call(t,s,k.isString(n)?n.trim():n,r,d))&&e(s,r?r.concat(n):[n])})),u.pop()}}(e),t}function J(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function z(e,t){this._pairs=[],e&&V(e,this,t)}const H=z.prototype;function $(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Y(e,t,s){if(!t)return e;const r=s&&s.encode||$,o=s&&s.serialize;let n;if(n=o?o(t,s):k.isURLSearchParams(t)?t.toString():new z(t,s).toString(r),n){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}H.append=function(e,t){this._pairs.push([e,t])},H.toString=function(e){const t=e?function(t){return e.call(this,t,J)}:J;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var X=class{constructor(){this.handlers=[]}use(e,t,s){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!s&&s.synchronous,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){k.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},Z={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Q={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:z,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},isStandardBrowserEnv:(()=>{let e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&"undefined"!=typeof window&&"undefined"!=typeof document})(),isStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,protocols:["http","https","file","blob","url","data"]};function ee(e){function t(e,s,r,o){let n=e[o++];const i=Number.isFinite(+n),a=o>=e.length;return n=!n&&k.isArray(r)?r.length:n,a?(k.hasOwnProp(r,n)?r[n]=[r[n],s]:r[n]=s,!i):(r[n]&&k.isObject(r[n])||(r[n]=[]),t(e,s,r[n],o)&&k.isArray(r[n])&&(r[n]=function(e){const t={},s=Object.keys(e);let r;const o=s.length;let n;for(r=0;r<o;r++)n=s[r],t[n]=e[n];return t}(r[n])),!i)}if(k.isFormData(e)&&k.isFunction(e.entries)){const s={};return k.forEachEntry(e,((e,r)=>{t(function(e){return k.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,s,0)})),s}return null}const te={transitional:Z,adapter:["xhr","http"],transformRequest:[function(e,t){const s=t.getContentType()||"",r=s.indexOf("application/json")>-1,o=k.isObject(e);if(o&&k.isHTMLForm(e)&&(e=new FormData(e)),k.isFormData(e))return r&&r?JSON.stringify(ee(e)):e;if(k.isArrayBuffer(e)||k.isBuffer(e)||k.isStream(e)||k.isFile(e)||k.isBlob(e))return e;if(k.isArrayBufferView(e))return e.buffer;if(k.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let n;if(o){if(s.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return V(e,new Q.classes.URLSearchParams,Object.assign({visitor:function(e,t,s,r){return Q.isNode&&k.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((n=k.isFileList(e))||s.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return V(n?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,s){if(k.isString(e))try{return(0,JSON.parse)(e),k.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||te.transitional,s=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&k.isString(e)&&(s&&!this.responseType||r)){const s=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw x.from(e,x.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Q.classes.FormData,Blob:Q.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};k.forEach(["delete","get","head","post","put","patch"],(e=>{te.headers[e]={}}));var se=te;const re=k.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),oe=Symbol("internals");function ne(e){return e&&String(e).trim().toLowerCase()}function ie(e){return!1===e||null==e?e:k.isArray(e)?e.map(ie):String(e)}function ae(e,t,s,r,o){return k.isFunction(r)?r.call(this,t,s):(o&&(t=s),k.isString(t)?k.isString(r)?-1!==t.indexOf(r):k.isRegExp(r)?r.test(t):void 0:void 0)}class ce{constructor(e){e&&this.set(e)}set(e,t,s){const r=this;function o(e,t,s){const o=ne(t);if(!o)throw new Error("header name must be a non-empty string");const n=k.findKey(r,o);(!n||void 0===r[n]||!0===s||void 0===s&&!1!==r[n])&&(r[n||t]=ie(e))}const n=(e,t)=>k.forEach(e,((e,s)=>o(e,s,t)));return k.isPlainObject(e)||e instanceof this.constructor?n(e,t):k.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?n((e=>{const t={};let s,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),s=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!s||t[s]&&re[s]||("set-cookie"===s?t[s]?t[s].push(r):t[s]=[r]:t[s]=t[s]?t[s]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,s),this}get(e,t){if(e=ne(e)){const s=k.findKey(this,e);if(s){const e=this[s];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),s=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=s.exec(e);)t[r[1]]=r[2];return t}(e);if(k.isFunction(t))return t.call(this,e,s);if(k.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ne(e)){const s=k.findKey(this,e);return!(!s||void 0===this[s]||t&&!ae(0,this[s],s,t))}return!1}delete(e,t){const s=this;let r=!1;function o(e){if(e=ne(e)){const o=k.findKey(s,e);!o||t&&!ae(0,s[o],o,t)||(delete s[o],r=!0)}}return k.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let s=t.length,r=!1;for(;s--;){const o=t[s];e&&!ae(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,s={};return k.forEach(this,((r,o)=>{const n=k.findKey(s,o);if(n)return t[n]=ie(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,s)=>t.toUpperCase()+s))}(o):String(o).trim();i!==o&&delete t[o],t[i]=ie(r),s[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return k.forEach(this,((s,r)=>{null!=s&&!1!==s&&(t[r]=e&&k.isArray(s)?s.join(", "):s)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const s=new this(e);return t.forEach((e=>s.set(e))),s}static accessor(e){const t=(this[oe]=this[oe]={accessors:{}}).accessors,s=this.prototype;function r(e){const r=ne(e);t[r]||(function(e,t){const s=k.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+s,{value:function(e,s,o){return this[r].call(this,t,e,s,o)},configurable:!0})}))}(s,e),t[r]=!0)}return k.isArray(e)?e.forEach(r):r(e),this}}ce.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),k.reduceDescriptors(ce.prototype,(({value:e},t)=>{let s=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[s]=e}}})),k.freezeMethods(ce);var le=ce;function ue(e,t){const s=this||se,r=t||s,o=le.from(r.headers);let n=r.data;return k.forEach(e,(function(e){n=e.call(s,n,o.normalize(),t?t.status:void 0)})),o.normalize(),n}function de(e){return!(!e||!e.__CANCEL__)}function pe(e,t,s){x.call(this,null==e?"canceled":e,x.ERR_CANCELED,t,s),this.name="CanceledError"}k.inherits(pe,x,{__CANCEL__:!0});var he=Q.isStandardBrowserEnv?{write:function(e,t,s,r,o,n){const i=[];i.push(e+"="+encodeURIComponent(t)),k.isNumber(s)&&i.push("expires="+new Date(s).toGMTString()),k.isString(r)&&i.push("path="+r),k.isString(o)&&i.push("domain="+o),!0===n&&i.push("secure"),document.cookie=i.join("; ")},read:function(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function fe(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var me=Q.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let s;function r(s){let r=s;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return s=r(window.location.href),function(e){const t=k.isString(e)?r(e):e;return t.protocol===s.protocol&&t.host===s.host}}():function(){return!0};function ve(e,t){let s=0;const r=function(e,t){e=e||10;const s=new Array(e),r=new Array(e);let o,n=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),l=r[i];o||(o=c),s[n]=a,r[n]=c;let u=i,d=0;for(;u!==n;)d+=s[u++],u%=e;if(n=(n+1)%e,n===i&&(i=(i+1)%e),c-o<t)return;const p=l&&c-l;return p?Math.round(1e3*d/p):void 0}}(50,250);return o=>{const n=o.loaded,i=o.lengthComputable?o.total:void 0,a=n-s,c=r(a);s=n;const l={loaded:n,total:i,progress:i?n/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&n<=i?(i-n)/c:void 0,event:o};l[t?"download":"upload"]=!0,e(l)}}const Ee={http:null,xhr:"undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,s){let r=e.data;const o=le.from(e.headers).normalize(),n=e.responseType;let i,a;function c(){e.cancelToken&&e.cancelToken.unsubscribe(i),e.signal&&e.signal.removeEventListener("abort",i)}k.isFormData(r)&&(Q.isStandardBrowserEnv||Q.isStandardBrowserWebWorkerEnv?o.setContentType(!1):o.getContentType(/^\s*multipart\/form-data/)?k.isString(a=o.getContentType())&&o.setContentType(a.replace(/^\s*(multipart\/form-data);+/,"$1")):o.setContentType("multipart/form-data"));let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",s=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+s))}const u=fe(e.baseURL,e.url);function d(){if(!l)return;const r=le.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,s){const r=s.config.validateStatus;s.status&&r&&!r(s.status)?t(new x("Request failed with status code "+s.status,[x.ERR_BAD_REQUEST,x.ERR_BAD_RESPONSE][Math.floor(s.status/100)-4],s.config,s.request,s)):e(s)}((function(e){t(e),c()}),(function(e){s(e),c()}),{data:n&&"text"!==n&&"json"!==n?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),Y(u,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=d:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(d)},l.onabort=function(){l&&(s(new x("Request aborted",x.ECONNABORTED,e,l)),l=null)},l.onerror=function(){s(new x("Network Error",x.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||Z;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),s(new x(t,r.clarifyTimeoutError?x.ETIMEDOUT:x.ECONNABORTED,e,l)),l=null},Q.isStandardBrowserEnv){const t=(e.withCredentials||me(u))&&e.xsrfCookieName&&he.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in l&&k.forEach(o.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),k.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),n&&"json"!==n&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",ve(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",ve(e.onUploadProgress)),(e.cancelToken||e.signal)&&(i=t=>{l&&(s(!t||t.type?new pe(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(i),e.signal&&(e.signal.aborted?i():e.signal.addEventListener("abort",i)));const p=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(u);p&&-1===Q.protocols.indexOf(p)?s(new x("Unsupported protocol "+p+":",x.ERR_BAD_REQUEST,e)):l.send(r||null)}))}};k.forEach(Ee,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Se=e=>`- ${e}`,we=e=>k.isFunction(e)||null===e||!1===e;var ge=e=>{e=k.isArray(e)?e:[e];const{length:t}=e;let s,r;const o={};for(let n=0;n<t;n++){let t;if(s=e[n],r=s,!we(s)&&(r=Ee[(t=String(s)).toLowerCase()],void 0===r))throw new x(`Unknown adapter '${t}'`);if(r)break;o[t||"#"+n]=r}if(!r){const e=Object.entries(o).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new x("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Se).join("\n"):" "+Se(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function ye(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new pe(null,e)}function Re(e){return ye(e),e.headers=le.from(e.headers),e.data=ue.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),ge(e.adapter||se.adapter)(e).then((function(t){return ye(e),t.data=ue.call(e,e.transformResponse,t),t.headers=le.from(t.headers),t}),(function(t){return de(t)||(ye(e),t&&t.response&&(t.response.data=ue.call(e,e.transformResponse,t.response),t.response.headers=le.from(t.response.headers))),Promise.reject(t)}))}const be=e=>e instanceof le?e.toJSON():e;function Ae(e,t){t=t||{};const s={};function r(e,t,s){return k.isPlainObject(e)&&k.isPlainObject(t)?k.merge.call({caseless:s},e,t):k.isPlainObject(t)?k.merge({},t):k.isArray(t)?t.slice():t}function o(e,t,s){return k.isUndefined(t)?k.isUndefined(e)?void 0:r(void 0,e,s):r(e,t,s)}function n(e,t){if(!k.isUndefined(t))return r(void 0,t)}function i(e,t){return k.isUndefined(t)?k.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(s,o,n){return n in t?r(s,o):n in e?r(void 0,s):void 0}const c={url:n,method:n,data:n,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t)=>o(be(e),be(t),!0)};return k.forEach(Object.keys(Object.assign({},e,t)),(function(r){const n=c[r]||o,i=n(e[r],t[r],r);k.isUndefined(i)&&n!==a||(s[r]=i)})),s}const Oe={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Oe[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}}));const _e={};Oe.transitional=function(e,t,s){function r(e,t){return"[Axios v1.5.1] Transitional option '"+e+"'"+t+(s?". "+s:"")}return(s,o,n)=>{if(!1===e)throw new x(r(o," has been removed"+(t?" in "+t:"")),x.ERR_DEPRECATED);return t&&!_e[o]&&(_e[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(s,o,n)}};var Ce={assertOptions:function(e,t,s){if("object"!=typeof e)throw new x("options must be an object",x.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const n=r[o],i=t[n];if(i){const t=e[n],s=void 0===t||i(t,n,e);if(!0!==s)throw new x("option "+n+" must be "+s,x.ERR_BAD_OPTION_VALUE)}else if(!0!==s)throw new x("Unknown option "+n,x.ERR_BAD_OPTION)}},validators:Oe};const Te=Ce.validators;class Ie{constructor(e){this.defaults=e,this.interceptors={request:new X,response:new X}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ae(this.defaults,t);const{transitional:s,paramsSerializer:r,headers:o}=t;void 0!==s&&Ce.assertOptions(s,{silentJSONParsing:Te.transitional(Te.boolean),forcedJSONParsing:Te.transitional(Te.boolean),clarifyTimeoutError:Te.transitional(Te.boolean)},!1),null!=r&&(k.isFunction(r)?t.paramsSerializer={serialize:r}:Ce.assertOptions(r,{encode:Te.function,serialize:Te.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let n=o&&k.merge(o.common,o[t.method]);o&&k.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=le.concat(n,o);const i=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const c=[];let l;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,d=0;if(!a){const e=[Re.bind(this),void 0];for(e.unshift.apply(e,i),e.push.apply(e,c),u=e.length,l=Promise.resolve(t);d<u;)l=l.then(e[d++],e[d++]);return l}u=i.length;let p=t;for(d=0;d<u;){const e=i[d++],t=i[d++];try{p=e(p)}catch(e){t.call(this,e);break}}try{l=Re.call(this,p)}catch(e){return Promise.reject(e)}for(d=0,u=c.length;d<u;)l=l.then(c[d++],c[d++]);return l}getUri(e){return Y(fe((e=Ae(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}k.forEach(["delete","get","head","options"],(function(e){Ie.prototype[e]=function(t,s){return this.request(Ae(s||{},{method:e,url:t,data:(s||{}).data}))}})),k.forEach(["post","put","patch"],(function(e){function t(t){return function(s,r,o){return this.request(Ae(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:s,data:r}))}}Ie.prototype[e]=t(),Ie.prototype[e+"Form"]=t(!0)}));var De=Ie;class Fe{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const s=this;this.promise.then((e=>{if(!s._listeners)return;let t=s._listeners.length;for(;t-- >0;)s._listeners[t](e);s._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{s.subscribe(e),t=e})).then(e);return r.cancel=function(){s.unsubscribe(t)},r},e((function(e,r,o){s.reason||(s.reason=new pe(e,r,o),t(s.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Fe((function(t){e=t})),cancel:e}}}var Ne=Fe;const Le={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Le).forEach((([e,t])=>{Le[t]=e}));var Pe=Le;const Ue=function e(t){const s=new De(t),o=r(De.prototype.request,s);return k.extend(o,De.prototype,s,{allOwnKeys:!0}),k.extend(o,s,null,{allOwnKeys:!0}),o.create=function(s){return e(Ae(t,s))},o}(se);Ue.Axios=De,Ue.CanceledError=pe,Ue.CancelToken=Ne,Ue.isCancel=de,Ue.VERSION="1.5.1",Ue.toFormData=V,Ue.AxiosError=x,Ue.Cancel=Ue.CanceledError,Ue.all=function(e){return Promise.all(e)},Ue.spread=function(e){return function(t){return e.apply(null,t)}},Ue.isAxiosError=function(e){return k.isObject(e)&&!0===e.isAxiosError},Ue.mergeConfig=Ae,Ue.AxiosHeaders=le,Ue.formToJSON=e=>ee(k.isHTMLForm(e)?new FormData(e):e),Ue.getAdapter=ge,Ue.HttpStatusCode=Pe,Ue.default=Ue,e.exports=Ue}},t={};function s(r){var o=t[r];if(void 0!==o)return o.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,s),n.exports}s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var r={};return(()=>{"use strict";var e=r;const t=s(234),o=s(923),n=s(604),i=s(122),a=s(344),c=s(927),l=s(168);class u{}u.livenessDetection=t.livenessDetection,u.livenessSession=o.livenessSession,u.uploadIdentificationDocument=n.uploadIdentificationDocument,u.insertUploadIdentificationDocument=i.insertUploadIdentificationDocument,u.typification=a.typification,u.ocr=l.ocr,u.faceMatch=c.faceMatch,e.default=u})(),r.default})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("SantoiDSDK",[],t):"object"==typeof exports?exports.SantoiDSDK=t():e.SantoiDSDK=t()}(this,(()=>(()=>{var e={373:function(e,t,s){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractService=void 0;const o=r(s(218)),n=s(661),i=s(951);t.AbstractService=class{constructor(e,t){this.options=e,this.serviceOptions=t}request(e){var t,s,r,{contentType:a="application/json",authToken:c=this.options.token,baseUrl:l=(null!==(t=this.options.customApiUrl)&&void 0!==t?t:n.API_GATEWAY_URL),extraHeaders:u}=void 0===e?{}:e;const d=null!==(s=this.options.apiKey)&&void 0!==s?s:(0,i.looksLikeApiToken)(c)?c:void 0,p={baseURL:l,headers:Object.assign(Object.assign({"Content-Type":a},d?{"x-api-key":d}:{Authorization:`Bearer ${c}`}),u)};let h=this.options.domain;if(!this.options.domain&&this.options.token){const e=this.serviceOptions.tryDecodeJwt(this.options.token);h=null===(r=null==e?void 0:e.claims)||void 0===r?void 0:r.domain}return p.headers&&(h&&(p.headers.Domain=h),this.options.useBillingAccounts&&(p.headers.clientCredentials=!0)),o.default.create(p)}}},151:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiAsyncService=void 0;const r=s(373);class o extends r.AbstractService{constructor(e,...t){super(...t),this.resultsRoute=e.resultsRoute}async get(e){return(await this.request().get(`/api/v1/tracks/${this.options.track}/${this.resultsRoute}/`+e)).data}}t.ApiAsyncService=o},748:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiFaceMatchService=void 0;const r=s(151),o=s(951);class n extends r.ApiAsyncService{constructor(...e){super({resultsRoute:"face-async"},...e)}async faceMatch(e,t,s){return await(0,o.retryAsyncFunctionXTimes)((async()=>{const r=new this.serviceOptions.FormDataClass;return r.append("track",this.options.track),r.append("deliveryFront","true"),r.append("sensitive_data_compliance","true"),r.append("imageFile1",e,"imageFile1.jpg"),t&&r.append("imageFile2",t,"imageFile2.jpg"),s&&r.append("customerRequestId",s),(await this.request({contentType:"multipart/form-data"}).post("/api/v1/face-match-async",r)).data}))}async get(...e){return await super.get(...e)}}t.ApiFaceMatchService=n},275:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiLivenessSessionService=void 0;const r=s(373),o=s(951);class n extends r.AbstractService{livenessRequest(){const e=this.options.token,t=Boolean(this.options.apiKey)||(0,o.looksLikeApiToken)(e);return this.request({extraHeaders:t?void 0:{"x-endpoint-api-userinfo":null!=e?e:""}})}async createSession(e){return(await this.livenessRequest().post("/api/v2/liveness/session",{track:this.options.track,customerRequestId:e})).data}async getSessionResults(e){return(await this.livenessRequest().get(`/api/v2/liveness/session/${e}`,{params:this.options.track?{track:this.options.track}:void 0})).data}}t.ApiLivenessSessionService=n},926:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiOcrService=void 0;const r=s(151),o=s(951);class n extends r.ApiAsyncService{constructor(...e){super({resultsRoute:"ocr-async"},...e)}async extract(e,t){return await(0,o.retryAsyncFunctionXTimes)((async()=>{const s=new this.serviceOptions.FormDataClass;return s.append("imageFile",e,"imageFile.jpg"),s.append("track",this.options.track),s.append("template",this.options.template),s.append("customerRequestId",t),s.append("deliveryFront","true"),(await this.request({contentType:"multipart/form-data"}).post("/api/v1/ocr-async/ocr",s)).data}))}}t.ApiOcrService=n},456:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ApiTypificationService=void 0;const r=s(151),o=s(951);class n extends r.ApiAsyncService{constructor(...e){super({resultsRoute:"typification-async"},...e)}async predict(e,t){return await(0,o.retryAsyncFunctionXTimes)((async()=>{const s=new this.serviceOptions.FormDataClass;return s.append("imageFile",e,"imageFile.jpg"),s.append("track",this.options.track),s.append("customerRequestId",t),s.append("deliveryFront","true"),(await this.request({contentType:"multipart/form-data"}).post("/api/v1/typification-async/predict",s)).data}))}}t.ApiTypificationService=n},135:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseCoreService=void 0;const r=s(551),o=s(620);t.BaseCoreService=class{constructor(e){this.results={status:null,results:null,loading:!1,error:null},this.cameraIsActive=!1,this.cameraIsSetup=!1,this.options=e}async initialize(e){var t;e?this.startProcessing(e):(null!==(t=this.options.startTheCameraImmediately)&&void 0!==t?t:void 0===this.options.startTheCameraImmediately)&&await this.startCamera()}async updateResults(e){var t,s;this.results=Object.assign(Object.assign({},this.results),e),await(null===(s=(t=this.options).onUpdate)||void 0===s?void 0:s.call(t,this.results))}getVideoStream(){var e;return null===(e=this.frameGetControls)||void 0===e?void 0:e.videoStream}async setupCamera(){this.frameGetControls=await(0,o.getDefaultFrameControls)(),this.cameraIsSetup=!0}async startCamera(e){var t,s,o,n,i,a;try{if(this.cameraIsActive)throw new r.SDKError({message:"The camera has already been initialized",code:r.ECameraErrorCodes.ALREADY_STARTED,fatal:!1});if(this.results.loading)throw new r.SDKError({message:"Typification processing has already started",code:r.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.cameraIsSetup||await this.setupCamera(),this.frameGetControls.videoStream=await(null===(s=(t=this.frameGetControls).startGettingFrames)||void 0===s?void 0:s.call(t,e)),await(null===(n=(o=this.options).onCameraStart)||void 0===n?void 0:n.call(o,{videoStream:this.getVideoStream()})),this.cameraIsActive=!0}catch(e){const t=e instanceof r.SDKError?e:new r.SDKError({message:"Camera initialization error",code:r.ECameraErrorCodes.INITIALIZATION_ERROR,fatal:!1,details:e});await(null===(a=(i=this.options).onError)||void 0===a?void 0:a.call(i,t))}}async stopCamera(){var e,t,s,o,n,i;try{if(!this.cameraIsActive)throw new r.SDKError({message:"Camera not initialized",code:r.ECameraErrorCodes.NOT_INITIALIZED,fatal:!1});await(null===(t=(e=this.frameGetControls).stopGettingFrames)||void 0===t?void 0:t.call(e)),await(null===(o=(s=this.options).onCameraStop)||void 0===o?void 0:o.call(s)),this.cameraIsActive=!1}catch(e){const t=e instanceof r.SDKError?e:new r.SDKError({message:"Error during camera shutdown",code:r.ECameraErrorCodes.SHUTDOWN_ERROR,fatal:!1,details:e});await(null===(i=(n=this.options).onError)||void 0===i?void 0:i.call(n,t))}}async captureImage({startProcessing:e=!0}={}){var t,s;const o=await(null===(s=(t=this.frameGetControls).getNextFrame)||void 0===s?void 0:s.call(t));if(o)return e&&(await this.stopCamera(),await this.startProcessing(o)),o;throw new r.SDKError({message:"Cannot capture image",code:r.ECameraErrorCodes.CANNOT_CAPTURE_IMAGE,fatal:!1})}async waitForResults(e){let t=!1;return await new Promise(((s,r)=>{const o=setInterval((async()=>{var n,i,a,c;try{null===(i=(n=this.options).onClearInterval)||void 0===i||i.call(n,o);const r=await this.service.get(e);if("validation"===(null==r?void 0:r.status)&&!t)return await(null===(c=(a=this.options).onValidationRequested)||void 0===c?void 0:c.call(a,{track:this.options.track,requestId:r.id})),void(t=!0);if("error"===(null==r?void 0:r.status))throw new Error("Não foi possível processar os resultados do Upload de Documentos");if("processed"===(null==r?void 0:r.status)&&r.fileURL){const e=await fetch(r.fileURL),t=await e.json();t&&(clearInterval(o),s(t))}}catch(e){clearInterval(o),r(e)}}),5e3)}))}}},474:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FaceMatchService=void 0;const r=s(877),o=s(551),n=s(616),i=s(748),a=s(135);class c extends a.BaseCoreService{constructor(e){super(e),this.selectedFile1=void 0,this.selectedFile2=void 0,this.service=new i.ApiFaceMatchService(e,{FormDataClass:FormData,tryDecodeJwt:n.tryDecodeJwt})}async initialize(e,t){var s;e?this.startProcessing(e,t):(null!==(s=this.options.startTheCameraImmediately)&&void 0!==s?s:void 0===this.options.startTheCameraImmediately)&&await this.startCamera()}async captureFirstImage({startProcessing:e=!0}={}){const t=await super.captureImage({startProcessing:!1});return this.selectedFile1=t,e&&(await this.stopCamera(),await this.startProcessing(this.selectedFile1)),t}async captureSecondImage({startProcessing:e=!0}={}){if(!this.selectedFile1)throw new o.SDKError({message:"Select the first image before selecting the second",code:o.EFaceMatchErrorCodes.FIRST_IMAGE_NOT_SELECTED,fatal:!1});const t=await super.captureImage({startProcessing:!1});return this.selectedFile2=t,e&&(await this.stopCamera(),await this.startProcessing(this.selectedFile1,this.selectedFile2)),t}async startProcessing(e,t){var s,n,i,a,c,l,u;try{if(this.cameraIsActive)throw new o.SDKError({message:"Cannot start because the camera is running",code:o.ECameraErrorCodes.IS_RUNNING,fatal:!1});if(null===(s=this.results)||void 0===s?void 0:s.loading)throw new o.SDKError({message:"Processing has already started",code:o.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.updateResults({status:null,results:null,loading:!0,error:null});const{requestId:l}=await this.service.faceMatch(e,t,`sdk-ocr-${(0,r.v4)()}`),u=await this.waitForResultsFaceMatch(l);this.updateResults({status:"success",results:u,loading:!1,error:null}),null===(i=(n=this.options).onSuccess)||void 0===i||i.call(n,u),null===(c=(a=this.options).onEnd)||void 0===c||c.call(a)}catch(e){const t=e instanceof o.SDKError?e:new o.SDKError({message:"Error during document upload/analysis",code:o.EProcessingErrorCodes.PROCESSING_ERROR,fatal:!1,details:e});await(null===(u=(l=this.options).onError)||void 0===u?void 0:u.call(l,t)),this.updateResults({status:"error",results:null,loading:!1,error:t})}}async waitForResultsFaceMatch(e){return await new Promise(((t,s)=>{const r=setInterval((async()=>{var o,n,i,a;try{null===(n=(o=this.options).onClearInterval)||void 0===n||n.call(o,r);const s=await this.service.get(e);if("error"===(null==s?void 0:s.status)||"error_connector"===(null==s?void 0:s.status))throw new Error("Não foi possível processar os resultados do FaceMatch");if("processed"===(null==s?void 0:s.status)&&s.fileURL){const e=await fetch(s.fileURL);let o=await e.json();o=Object.assign(Object.assign({},o),{fileImage1:null!==(i=s.fileImage1)&&void 0!==i?i:"",fileImage2:null!==(a=s.fileImage2)&&void 0!==a?a:""}),o&&(clearInterval(r),t(o))}}catch(e){clearInterval(r),s(new Error(e))}}),5e3)}))}}t.FaceMatchService=c},927:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.faceMatch=void 0;const r=s(551),o=s(474);t.faceMatch=async function(e,t,s){var n,i;try{const r=new o.FaceMatchService(e);return await r.initialize(t,s),await(null===(i=(n=r.options).onStart)||void 0===i?void 0:i.call(n,{videoStream:r.getVideoStream()})),{startCamera:async(...e)=>{await r.startCamera(...e)},stopCamera:async()=>{await r.stopCamera()},captureFirstImage:async(...e)=>await r.captureFirstImage(...e),captureSecondImage:async(...e)=>await r.captureSecondImage(...e),getVideoStream:()=>r.getVideoStream(),sendFiles:async(...e)=>{await r.startProcessing(...e)}}}catch(e){throw new r.SDKError({message:"Error while starting SDK",code:r.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},577:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OcrService=void 0;const r=s(877),o=s(551),n=s(616),i=s(926),a=s(135);class c extends a.BaseCoreService{constructor(e){super(e),this.service=new i.ApiOcrService(e,{FormDataClass:FormData,tryDecodeJwt:n.tryDecodeJwt})}async startProcessing(e){var t,s,n,i,a,c,l;try{if(this.cameraIsActive)throw new o.SDKError({message:"Cannot start because the camera is running",code:o.ECameraErrorCodes.IS_RUNNING,fatal:!1});if(null===(t=this.results)||void 0===t?void 0:t.loading)throw new o.SDKError({message:"Processing has already started",code:o.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.updateResults({status:null,results:null,loading:!0,error:null});const{requestId:c}=await this.service.extract(e,`sdk-ocr-${(0,r.v4)()}`),l=await this.waitForResults(c);this.updateResults({status:"success",results:l,loading:!1,error:null}),null===(n=(s=this.options).onSuccess)||void 0===n||n.call(s,l),null===(a=(i=this.options).onEnd)||void 0===a||a.call(i)}catch(e){const t=e instanceof o.SDKError?e:new o.SDKError({message:"Error during document upload/analysis",code:o.EProcessingErrorCodes.PROCESSING_ERROR,fatal:!1,details:e});await(null===(l=(c=this.options).onError)||void 0===l?void 0:l.call(c,t)),this.updateResults({status:"error",results:null,loading:!1,error:t})}}}t.OcrService=c},168:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ocr=void 0;const r=s(551),o=s(577);t.ocr=async function(e,t){var s,n;try{const r=new o.OcrService(e);return await r.initialize(t),await(null===(n=(s=r.options).onStart)||void 0===n?void 0:n.call(s,{videoStream:r.getVideoStream()})),{startCamera:async(...e)=>{await r.startCamera(...e)},stopCamera:async()=>{await r.stopCamera()},captureImage:async()=>await r.captureImage(),getVideoStream:()=>r.getVideoStream(),sendFile:async e=>{await r.startProcessing(e)}}}catch(e){throw new r.SDKError({message:"Error while starting SDK",code:r.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},983:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TypificationService=void 0;const r=s(877),o=s(551),n=s(616),i=s(456),a=s(135);class c extends a.BaseCoreService{constructor(e){super(e),this.service=new i.ApiTypificationService(e,{FormDataClass:FormData,tryDecodeJwt:n.tryDecodeJwt})}async startProcessing(e){var t,s,n,i,a,c,l;try{if(this.cameraIsActive)throw new o.SDKError({message:"Cannot start because the camera is running",code:o.ECameraErrorCodes.IS_RUNNING,fatal:!1});if(null===(t=this.results)||void 0===t?void 0:t.loading)throw new o.SDKError({message:"Processing has already started",code:o.EProcessingErrorCodes.ALREADY_STARTED,fatal:!1});this.updateResults({status:null,results:null,loading:!0,error:null});const{requestId:c}=await this.service.predict(e,`sdk-typification-${(0,r.v4)()}`),l=await this.waitForResults(c);this.updateResults({status:"success",results:l,loading:!1,error:null}),null===(n=(s=this.options).onSuccess)||void 0===n||n.call(s,l),null===(a=(i=this.options).onEnd)||void 0===a||a.call(i)}catch(e){const t=e instanceof o.SDKError?e:new o.SDKError({message:"Error during document upload/analysis",code:o.EProcessingErrorCodes.PROCESSING_ERROR,fatal:!1,details:e});await(null===(l=(c=this.options).onError)||void 0===l?void 0:l.call(c,t)),this.updateResults({status:"error",results:null,loading:!1,error:t})}}}t.TypificationService=c},344:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.typification=void 0;const r=s(551),o=s(983);t.typification=async function(e,t){var s,n;try{const r=new o.TypificationService(e);return await r.initialize(t),await(null===(n=(s=r.options).onStart)||void 0===n?void 0:n.call(s,{videoStream:r.getVideoStream()})),{startCamera:async(...e)=>{await r.startCamera(...e)},stopCamera:async()=>{await r.stopCamera()},captureImage:async()=>await r.captureImage(),getVideoStream:()=>r.getVideoStream(),sendFile:async e=>{await r.startProcessing(e)}}}catch(e){throw new r.SDKError({message:"Error while starting SDK",code:r.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},122:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.insertUploadIdentificationDocument=void 0;const r=s(661);t.insertUploadIdentificationDocument=function(e,t){var s,o,n;const i=t?document.querySelector(t):document.body;if(!i)throw new Error("Cannot find target element");const a=document.createElement("iframe");a.style.overflow="hidden",a.style.border="0",a.setAttribute("width",null!==(s=e.width)&&void 0!==s?s:"100%"),a.setAttribute("height",null!==(o=e.height)&&void 0!==o?o:"550px"),a.setAttribute("scrolling","no"),a.setAttribute("allow","camera; microphone; clipboard-read; clipboard-write");let c=`${null!==(n=e.customAppUrl)&&void 0!==n?n:r.APPLICATION_URL}/share/domains/${e.domain}/tracks/${e.track}/flow/${e.flow}/embedded`;e.token&&(c+=`?accessToken=${e.token}`),a.setAttribute("src",c),i.appendChild(a)}},42:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LivenessDetectionService=void 0;const r=s(551),o=s(620),n=s(951),i=s(661);t.LivenessDetectionService=class{constructor(e,t){this.frameGetControls={},this.currentStep="front",this.pauseSendingFramesToWebSocket=!1,this.websocketClosedBySDK=!1,this.validationSuccess=!1,this.canSendNextBytes=!0,this.endCalled=!1,this.cancelSendingFramesToWebsocket=void 0,this.successFrames={front:void 0,right:void 0,left:void 0,up:void 0,bottom:void 0},this.options=e,this.abstractWebSocket=t}async onWebSocketMessage(e){var t,s,o,i,a,c,l,u;const d=e.data,p=JSON.parse(d);return(null==p?void 0:p.validation)&&this.currentStep&&(this.successFrames[this.currentStep]=this.lastSentBytes),(null==p?void 0:p.next_step)&&!p.error&&(this.currentStep=p.next_step,await(null===(s=(t=this.options).onNextStep)||void 0===s?void 0:s.call(t,p.next_step)),await(null===(i=(o=this.options)[`on${(0,n.capitalizeFirstLetter)(p.next_step)}Step`])||void 0===i?void 0:i.call(o))),p&&(this.canSendNextBytes=!!(null==p?void 0:p.can_send_next_bytes)),(null==p?void 0:p.success)&&(this.successFrames.bottom=this.lastSentBytes,this.validationSuccess=!0,await(null===(c=(a=this.options).onSuccess)||void 0===c?void 0:c.call(a,{livenessId:p.livenessId,successFrames:this.successFrames})),await this.stopLivenessDetection()),(null==p?void 0:p.error)&&await(null===(u=(l=this.options).onError)||void 0===u?void 0:u.call(l,new r.SDKError({message:"Wrong position",code:r.ELivenessDetectionErrorCodes.WRONG_POSITION,fatal:!1}))),p}async stopLivenessDetection(){var e,t,s,r,o;await(0,n.waitFor)((()=>!!this.cancelSendingFramesToWebsocket)),null===(e=this.cancelSendingFramesToWebsocket)||void 0===e||e.call(this),await(null===(s=(t=this.frameGetControls).stopGettingFrames)||void 0===s?void 0:s.call(t)),this.abstractWebSocket.disconnectFromWebSocket(),this.endCalled||(await(null===(o=(r=this.options).onEnd)||void 0===o?void 0:o.call(r)),this.endCalled=!0),this.websocketClosedBySDK=!0}async sendFramesToWebSocket(){var e,t;try{if(this.canSendNextBytes&&!this.pauseSendingFramesToWebSocket){const s=await(null===(t=(e=this.frameGetControls).getNextFrame)||void 0===t?void 0:t.call(e));s&&(this.abstractWebSocket.send(s),this.lastSentBytes=s,this.canSendNextBytes=!1)}}catch(e){await this.stopLivenessDetection()}}async onConnect(){var e,t,s,r,a,c,l,u,d,p;try{if(this.options.getNextFrame)this.frameGetControls.startGettingFrames=this.options.startGettingFrames,this.frameGetControls.getNextFrame=this.options.getNextFrame,this.frameGetControls.stopGettingFrames=this.options.stopGettingFrames,this.frameGetControls.videoStream=await(null===(t=(e=this.options).startGettingFrames)||void 0===t?void 0:t.call(e));else{const e=await(0,o.getDefaultFrameControls)();this.frameGetControls.startGettingFrames=e.startGettingFrames,this.frameGetControls.getNextFrame=e.getNextFrame,this.frameGetControls.stopGettingFrames=e.stopGettingFrames,this.frameGetControls.videoStream=await(null===(r=(s=this.frameGetControls).startGettingFrames)||void 0===r?void 0:r.call(s))}await(null===(c=(a=this.options).onStart)||void 0===c?void 0:c.call(a,{videoStream:this.getVideoStream()})),await(null===(u=(l=this.options).onNextStep)||void 0===u?void 0:u.call(l,"front")),await(null===(p=(d=this.options).onFrontStep)||void 0===p?void 0:p.call(d)),this.cancelSendingFramesToWebsocket=(0,n.callAsyncFunctionEveryXSeconds)((async()=>{await this.sendFramesToWebSocket()}),i.SEND_FRAMES_INTERVAL_MS)}catch(e){await this.onError()}}async onError(){var e,t;this.validationSuccess||(await(null===(t=(e=this.options).onError)||void 0===t?void 0:t.call(e,new r.SDKError({message:"Internal Error",code:r.EDefaultErrorCodes.INTERNAL_ERROR,fatal:!1}))),await this.stopLivenessDetection())}resumeGettingFrames(){this.pauseSendingFramesToWebSocket=!1}pauseGettingFrames(){this.pauseSendingFramesToWebSocket=!0}getVideoStream(){var e;return null===(e=this.frameGetControls)||void 0===e?void 0:e.videoStream}}},234:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.livenessDetection=void 0;const r=s(42),o=s(551),n=s(706),i=s(616);t.livenessDetection=function(e){var t;try{const s=new n.AbstractWebSocket({WebSocketClass:null!==(t=e.CustomWebSocketClass)&&void 0!==t?t:WebSocket,decodeJwt:i.decodeJwt},e);s.startConnection();const o=new r.LivenessDetectionService(e,s);return s.waitForWebSocketConnection().then((()=>{o.onConnect()})).catch((()=>{o.onError()})),s.addListener("message",(e=>{o.onWebSocketMessage(e)})),s.addListener("error",(()=>{o.onError()})),s.addListener("close",(()=>{o.onError()})),{getVideoStream:()=>o.getVideoStream(),stopLivenessDetection:async()=>{await o.stopLivenessDetection()},resumeGettingFrames:()=>{o.resumeGettingFrames()},pauseGettingFrames:()=>{o.pauseGettingFrames()}}}catch(e){throw new o.SDKError({message:"Error while starting SDK",code:o.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0})}}},460:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LivenessSessionService=void 0;const r=s(275),o=s(551),n=s(951),i=s(661),a=s(616);t.LivenessSessionService=class{constructor(e){this.sessionId=null,this.options=e,this.service=new r.ApiLivenessSessionService(e,{FormDataClass:FormData,tryDecodeJwt:a.tryDecodeJwt})}async createSession(){var e,t;try{const s=await this.service.createSession(this.options.customerRequestId);return this.sessionId=s.SessionId,await(null===(t=(e=this.options).onSessionCreated)||void 0===t?void 0:t.call(e,s.SessionId)),s.SessionId}catch(e){throw await this.fail("Error while creating liveness session",e)}}async getResults(e=this.sessionId){var t,s;if(!e)throw await this.fail("There is no liveness session to fetch results from");try{let r=null;for(let t=0;t<i.LIVENESS_RESULT_MAX_ATTEMPTS&&(r=await this.service.getSessionResults(e),i.LIVENESS_PENDING_STATUSES.includes(r.Status));t++)await(0,n.wait)(i.LIVENESS_RESULT_RETRY_DELAY_MS);return await(null===(s=(t=this.options).onResults)||void 0===s?void 0:s.call(t,r)),r}catch(e){throw await this.fail("Error while fetching liveness session results",e)}}async fail(e,t){var s,r;const n=new o.SDKError({message:e,code:o.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:t});return await(null===(r=(s=this.options).onError)||void 0===r?void 0:r.call(s,n)),n}}},923:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.livenessSession=void 0;const r=s(460),o=s(551);t.livenessSession=function(e){try{const t=new r.LivenessSessionService(e);return{createSession:async()=>await t.createSession(),getResults:async(...e)=>await t.getResults(...e),getSessionId:()=>t.sessionId}}catch(e){throw new o.SDKError({message:"Error while starting SDK",code:o.EDefaultErrorCodes.INITIALIZATION_ERROR,fatal:!0,details:e})}}},171:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UploadIdentificationDocumentService=void 0;const r=s(456),o=s(748),n=s(551),i=s(877),a=s(616);t.UploadIdentificationDocumentService=class{constructor(e,t){this.results={uploadedDocument:null,typification:{status:null,results:null,loading:!1,error:null},liveness:{status:null,results:null,loading:!1,error:null},faceMatch:{status:null,results:null,loading:!1,error:null}},this.options=e,this.internalOptions=t,this.typificationService=new r.ApiTypificationService(e,{FormDataClass:FormData,tryDecodeJwt:a.tryDecodeJwt}),this.faceMatchService=new o.ApiFaceMatchService(e,{FormDataClass:FormData,tryDecodeJwt:a.tryDecodeJwt})}getResults(){return this.results}async updateResults(e){var t,s,r,o,n,i;this.results=Object.assign(Object.assign({},this.results),e),await(null===(s=(t=this.options).onUpdate)||void 0===s?void 0:s.call(t,this.results)),e.faceMatch||this.tryStartFaceMatch(),Object.entries(this.results).every((([e,t])=>"uploadedDocument"===e||!!t.results))&&(await(null===(o=(r=this.options).onSuccess)||void 0===o?void 0:o.call(r,this.results)),await(null===(i=(n=this.options).onEnd)||void 0===i?void 0:i.call(n)))}updateUploadedDocument(e){this.results.uploadedDocument=e}async waitForResults(e){let t=!1;return await new Promise(((s,r)=>{const o=setInterval((async()=>{var n,i,a,c;try{null===(i=(n=this.options).onClearInterval)||void 0===i||i.call(n,o);const l=await this.typificationService.get(e);if("validation"!==(null==l?void 0:l.status)||t){if("error"===(null==l?void 0:l.status))clearInterval(o),r(new Error("Não foi possível processar os resultados do Upload de Documentos"));else if("processed"===(null==l?void 0:l.status)&&l.fileURL){const e=await fetch(l.fileURL),t=await e.json();t&&(clearInterval(o),s(t))}}else await(null===(c=(a=this.options).onValidationRequested)||void 0===c?void 0:c.call(a,{track:this.options.track,requestId:l.id})),t=!0}catch(e){clearInterval(o),r(new Error(e))}}),5e3)}))}async waitForResultsFaceMatch(e){return await new Promise(((t,s)=>{const r=setInterval((async()=>{var o,n,i,a;try{null===(n=(o=this.options).onClearInterval)||void 0===n||n.call(o,r);const c=await this.faceMatchService.get(e);if("error"===(null==c?void 0:c.status)||"error_connector"===(null==c?void 0:c.status))clearInterval(r),s(new Error("Não foi possível processar os resultados do FaceMatch"));else if("processed"===(null==c?void 0:c.status)&&c.fileURL){const e=await fetch(c.fileURL);let s=await e.json();s=Object.assign(Object.assign({},s),{fileImage1:null!==(i=c.fileImage1)&&void 0!==i?i:"",fileImage2:null!==(a=c.fileImage2)&&void 0!==a?a:""}),s&&(clearInterval(r),t(s))}}catch(e){clearInterval(r),s(new Error(e))}}),5e3)}))}async startDocumentUpload(e){var t,s;try{this.updateResults({typification:{status:null,results:null,loading:!0,error:null}}),this.updateUploadedDocument(e);const{requestId:t}=await this.typificationService.predict(e,`sdk-typification-${(0,i.v4)()}`),s=await this.waitForResults(t);this.updateResults({typification:{status:"success",results:s,loading:!1,error:null}})}catch(e){const r=new n.SDKError({message:"Error during document upload/analysis",code:n.EUploadIdentificationDocumentErrorCodes.DOCUMENT_ANALYSIS_ERROR,fatal:!1,details:e});await(null===(s=(t=this.options).onError)||void 0===s?void 0:s.call(t,r)),this.updateResults({typification:{status:"error",results:null,loading:!1,error:r}})}}startLivenessDetection(e){var t,s;const r=Object.assign(Object.assign({},this.options.livenessDetectionOptions),e);this.updateResults({liveness:{results:null,status:null,loading:!0,error:null}});try{return this.internalOptions.livenessDetection(Object.assign(Object.assign({domain:this.options.domain,customId:this.options.customId,customWebSocketUrl:this.options.customWebSocketUrl,token:this.options.token,track:this.options.track},r),{onSuccess:async e=>{var t;await(null===(t=null==r?void 0:r.onSuccess)||void 0===t?void 0:t.call(r,e)),this.updateResults({liveness:{status:"success",results:e,loading:!1,error:null}})},onError:async e=>{var t,s,o;await(null===(t=null==r?void 0:r.onError)||void 0===t?void 0:t.call(r,e)),await(null===(o=(s=this.options).onError)||void 0===o?void 0:o.call(s,e)),this.updateResults({liveness:{status:"error",results:null,loading:"wrong-position"===(null==e?void 0:e.code),error:null!=e?e:null}})}}))}catch(e){const r=new n.SDKError({message:"Error during liveness detection",code:n.EUploadIdentificationDocumentErrorCodes.LIVENESS_DETECTION_ERROR,fatal:!1,details:e});null===(s=(t=this.options).onError)||void 0===s||s.call(t,r),this.updateResults({liveness:{status:"error",results:null,loading:!1,error:r}})}}async startFaceMatch(e,t){var s,r;try{this.updateResults({faceMatch:{status:null,results:null,loading:!0,error:null}});const{requestId:s}=await this.faceMatchService.faceMatch(e,t,`sdk-facematch-${(0,i.v4)()}`),r=await this.waitForResultsFaceMatch(s);this.updateResults({faceMatch:{results:r,status:"success",loading:!1,error:null}})}catch(e){const t=new n.SDKError({message:"Error when comparing the face with the document",code:n.EUploadIdentificationDocumentErrorCodes.FACE_MATCH_ERROR,fatal:!1,details:e});await(null===(r=(s=this.options).onError)||void 0===r?void 0:r.call(s,t)),this.updateResults({faceMatch:{results:null,status:"error",loading:!1,error:t}})}}async tryStartFaceMatch(){var e,t,s;!this.results.uploadedDocument||!(null===(e=this.results.liveness.results)||void 0===e?void 0:e.successFrames.front)||this.results.faceMatch.loading||this.results.liveness.loading||this.results.typification.loading?await(null===(s=(t=this.options).onError)||void 0===s?void 0:s.call(t,new n.SDKError({message:"Unavailable faces",code:n.EUploadIdentificationDocumentErrorCodes.FACE_MATCH_UNAVAILABLE_FACES_ERROR,fatal:!1}))):await this.startFaceMatch(this.results.uploadedDocument,this.results.liveness.results.successFrames.front)}startAll(e,t){this.startDocumentUpload(e),this.startLivenessDetection(t)}}},604:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uploadIdentificationDocument=void 0;const r=s(171),o=s(234);t.uploadIdentificationDocument=function(e){const t=new r.UploadIdentificationDocumentService(e,{livenessDetection:o.livenessDetection});return{startDocumentUpload:async(...e)=>{await t.startDocumentUpload(...e)},startLivenessDetection:(...e)=>t.startLivenessDetection(...e),startFaceComparison:async(...e)=>{await t.tryStartFaceMatch(...e)},startAll:(...e)=>{t.startAll(...e)},getResults:(...e)=>t.getResults(...e)}}},620:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDefaultFrameControls=void 0,t.getDefaultFrameControls=async function(){let e,t,s,r;return{startGettingFrames:async function(o){var n;return e&&t&&s||(e=await navigator.mediaDevices.getUserMedia({audio:!1,video:{facingMode:null!==(n=null==o?void 0:o.facingMode)&&void 0!==n?n:"user"}}),t=document.createElement("video"),t.setAttribute("autoplay","true"),t.style.transform="scale(-1, 1)",t.style.position="absolute",t.style.left="-99999px",document.body.appendChild(t),t.srcObject=e,s=document.createElement("canvas"),r=s.getContext("2d")),e},getNextFrame:async function(){if(s&&t)return s.width=t.videoWidth,s.height=t.videoHeight,null==r||r.drawImage(t,0,0,s.width,s.height),await new Promise(((e,t)=>{s?s.toBlob((t=>{e(t)})):e(null)}));throw new Error("Cannot found video element")},stopGettingFrames:function(){t&&(document.body.removeChild(t),t=void 0),s&&(s=void 0),r&&(r=void 0),e&&(null==e||e.getTracks().forEach((e=>{e.stop()})),e=void 0)}}}},616:(e,t)=>{"use strict";function s(e){const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(window.atob(t).split("").map((e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2))).join(""));return JSON.parse(s)}Object.defineProperty(t,"__esModule",{value:!0}),t.tryDecodeJwt=t.decodeJwt=void 0,t.decodeJwt=s,t.tryDecodeJwt=function(e){try{return s(e)}catch(e){return null}}},661:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LIVENESS_RESULT_RETRY_DELAY_MS=t.LIVENESS_RESULT_MAX_ATTEMPTS=t.LIVENESS_PENDING_STATUSES=t.DEFAULT_RETRY_TIME_STEP=t.DEFAULT_NUMBER_OF_RETRIES=t.SEND_FRAMES_INTERVAL_MS=t.APPLICATION_URL=t.API_GATEWAY_URL=t.WEBSOCKET_BASE_URL=t.LIVENESS_API_URL=void 0,t.LIVENESS_API_URL="https://liveness.santoid.com.br",t.WEBSOCKET_BASE_URL=`${t.LIVENESS_API_URL.replace("https://","wss://")}/api/v1/liveness/ws`,t.API_GATEWAY_URL="https://api.santoid.com.br",t.APPLICATION_URL="https://app.santoid.com.br",t.SEND_FRAMES_INTERVAL_MS=100,t.DEFAULT_NUMBER_OF_RETRIES=5,t.DEFAULT_RETRY_TIME_STEP=1e3,t.LIVENESS_PENDING_STATUSES=["CREATED","IN_PROGRESS"],t.LIVENESS_RESULT_MAX_ATTEMPTS=8,t.LIVENESS_RESULT_RETRY_DELAY_MS=1500},551:(e,t)=>{"use strict";var s,r,o,n,i,a;Object.defineProperty(t,"__esModule",{value:!0}),t.SDKError=t.EProcessingErrorCodes=t.ECameraErrorCodes=t.EFaceMatchErrorCodes=t.EUploadIdentificationDocumentErrorCodes=t.ELivenessDetectionErrorCodes=t.EDefaultErrorCodes=void 0,function(e){e.INITIALIZATION_ERROR="initialization-error",e.INTERNAL_ERROR="internal-error"}(s||(t.EDefaultErrorCodes=s={})),function(e){e.WRONG_POSITION="liveness-detection/wrong-position"}(r||(t.ELivenessDetectionErrorCodes=r={})),function(e){e.FACE_MATCH_ERROR="upload-identification-document/face-match-error",e.FACE_MATCH_UNAVAILABLE_FACES_ERROR="upload-identification-document/face-match-unavailable-faces-error",e.DOCUMENT_ANALYSIS_ERROR="upload-identification-document/document-analysis-error",e.LIVENESS_DETECTION_ERROR="upload-identification-document/liveness-detection-error"}(o||(t.EUploadIdentificationDocumentErrorCodes=o={})),function(e){e.FIRST_IMAGE_NOT_SELECTED="face-match/first-image-not-selected"}(n||(t.EFaceMatchErrorCodes=n={})),function(e){e.INITIALIZATION_ERROR="camera/initialization-error",e.IS_RUNNING="camera/is-running",e.ALREADY_STARTED="camera/already-started",e.NOT_INITIALIZED="camera/not-initialized",e.CANNOT_CAPTURE_IMAGE="camera/cannot-capture-image",e.SHUTDOWN_ERROR="camera/shutdown-error"}(i||(t.ECameraErrorCodes=i={})),function(e){e.PROCESSING_ERROR="processing/processing-error",e.ALREADY_STARTED="processing/already-started"}(a||(t.EProcessingErrorCodes=a={}));class c extends Error{constructor({message:e,code:t,fatal:s,details:r}){super(e),this.code=t,this.fatal=s,this.details=r}}t.SDKError=c},951:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.looksLikeApiToken=t.API_TOKEN_PREFIXES=t.retryAsyncFunctionXTimes=t.callAsyncFunctionEveryXSeconds=t.waitFor=t.wait=t.capitalizeFirstLetter=void 0;const r=s(218),o=s(661);async function n(e){await new Promise((t=>{e()?t():setTimeout((()=>{n(e).then(t)}),500)}))}function i(e){var t;return e instanceof r.AxiosError&&(503===(null===(t=e.response)||void 0===t?void 0:t.status)||"Network Error"===e.message)}t.capitalizeFirstLetter=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},t.wait=async e=>{await new Promise((t=>{setTimeout(t,e)}))},t.waitFor=n,t.callAsyncFunctionEveryXSeconds=function e(t,s,r={stop:!1}){const o={timerEnd:!1};return setTimeout((()=>{o.timerEnd=!0}),s),t().then((async()=>{await n((()=>o.timerEnd)),r.stop||e(t,s,r)})),function(){r.stop=!0}},t.retryAsyncFunctionXTimes=async function e(s,r=i,n=o.DEFAULT_NUMBER_OF_RETRIES,a=1e3,c=o.DEFAULT_RETRY_TIME_STEP){try{return await s()}catch(o){if(r(o)&&n>0)return await(0,t.wait)(a),await e(s,r,n-1,a+c,c);throw o}},t.API_TOKEN_PREFIXES=["st_","AIza"],t.looksLikeApiToken=function(e){return!!e&&t.API_TOKEN_PREFIXES.some((t=>e.startsWith(t)))}},706:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractWebSocket=void 0;const r=s(661);t.AbstractWebSocket=class{constructor(e,t){this.classOptions=e,this.sdkOptions=t}startConnection(){var e,t;const s=this.classOptions.decodeJwt(this.sdkOptions.token),o={x_endpoint_api_userinfo:this.sdkOptions.token,domain:null!==(e=this.sdkOptions.domain)&&void 0!==e?e:s.claims.domain,track:this.sdkOptions.track};this.sdkOptions.customId&&(o.customerRequestId=this.sdkOptions.customId),this.sdkOptions.useBillingAccounts&&(o.clientCredentials=!0);const n=Object.entries(o).map((e=>e.join("="))).join("&");this.websocket=new this.classOptions.WebSocketClass(`${null!==(t=this.sdkOptions.customWebSocketUrl)&&void 0!==t?t:r.WEBSOCKET_BASE_URL}?${n}`)}async waitForWebSocketConnection(){if(await new Promise((e=>{const t=setInterval((()=>{[3,1].includes(this.websocket.readyState)&&(clearInterval(t),e())}),5)})),3===this.websocket.readyState)throw new Error("Cannot connect to server")}disconnectFromWebSocket(){var e,t;[2,3].includes(this.websocket.readyState)||null===(t=(e=this.websocket).close)||void 0===t||t.call(e)}get readyState(){return this.websocket.readyState}addListener(e,t){var s,r;this.websocket.on?this.websocket.on(e,t):null===(r=(s=this.websocket).addEventListener)||void 0===r||r.call(s,e,t)}send(e){this.websocket.send(e)}}},877:(e,t,s)=>{var r=s(570),o=s(358),n=o;n.v1=r,n.v4=o,e.exports=n},327:e=>{for(var t=[],s=0;s<256;++s)t[s]=(s+256).toString(16).substr(1);e.exports=function(e,s){var r=s||0,o=t;return[o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],"-",o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]]].join("")}},217:e=>{var t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(t){var s=new Uint8Array(16);e.exports=function(){return t(s),s}}else{var r=new Array(16);e.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),r[t]=e>>>((3&t)<<3)&255;return r}}},570:(e,t,s)=>{var r,o,n=s(217),i=s(327),a=0,c=0;e.exports=function(e,t,s){var l=t&&s||0,u=t||[],d=(e=e||{}).node||r,p=void 0!==e.clockseq?e.clockseq:o;if(null==d||null==p){var h=n();null==d&&(d=r=[1|h[0],h[1],h[2],h[3],h[4],h[5]]),null==p&&(p=o=16383&(h[6]<<8|h[7]))}var f=void 0!==e.msecs?e.msecs:(new Date).getTime(),m=void 0!==e.nsecs?e.nsecs:c+1,v=f-a+(m-c)/1e4;if(v<0&&void 0===e.clockseq&&(p=p+1&16383),(v<0||f>a)&&void 0===e.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");a=f,c=m,o=p;var E=(1e4*(268435455&(f+=122192928e5))+m)%4294967296;u[l++]=E>>>24&255,u[l++]=E>>>16&255,u[l++]=E>>>8&255,u[l++]=255&E;var S=f/4294967296*1e4&268435455;u[l++]=S>>>8&255,u[l++]=255&S,u[l++]=S>>>24&15|16,u[l++]=S>>>16&255,u[l++]=p>>>8|128,u[l++]=255&p;for(var w=0;w<6;++w)u[l+w]=d[w];return t||i(u)}},358:(e,t,s)=>{var r=s(217),o=s(327);e.exports=function(e,t,s){var n=t&&s||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var i=(e=e||{}).random||(e.rng||r)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t)for(var a=0;a<16;++a)t[n+a]=i[a];return t||o(i)}},218:(e,t,s)=>{"use strict";function r(e,t){return function(){return e.apply(t,arguments)}}const{toString:o}=Object.prototype,{getPrototypeOf:n}=Object,i=(a=Object.create(null),e=>{const t=o.call(e);return a[t]||(a[t]=t.slice(8,-1).toLowerCase())});var a;const c=e=>(e=e.toLowerCase(),t=>i(t)===e),l=e=>t=>typeof t===e,{isArray:u}=Array,d=l("undefined"),p=c("ArrayBuffer"),h=l("string"),f=l("function"),m=l("number"),v=e=>null!==e&&"object"==typeof e,E=e=>{if("object"!==i(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},S=c("Date"),w=c("File"),g=c("Blob"),y=c("FileList"),R=c("URLSearchParams");function b(e,t,{allOwnKeys:s=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),u(e))for(r=0,o=e.length;r<o;r++)t.call(null,e[r],r,e);else{const o=s?Object.getOwnPropertyNames(e):Object.keys(e),n=o.length;let i;for(r=0;r<n;r++)i=o[r],t.call(null,e[i],i,e)}}function A(e,t){t=t.toLowerCase();const s=Object.keys(e);let r,o=s.length;for(;o-- >0;)if(r=s[o],t===r.toLowerCase())return r;return null}const O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:s.g,_=e=>!d(e)&&e!==O,C=(T="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>T&&e instanceof T);var T;const I=c("HTMLFormElement"),D=(({hasOwnProperty:e})=>(t,s)=>e.call(t,s))(Object.prototype),F=c("RegExp"),N=(e,t)=>{const s=Object.getOwnPropertyDescriptors(e),r={};b(s,((s,o)=>{let n;!1!==(n=t(s,o,e))&&(r[o]=n||s)})),Object.defineProperties(e,r)},L="abcdefghijklmnopqrstuvwxyz",P="0123456789",k={DIGIT:P,ALPHA:L,ALPHA_DIGIT:L+L.toUpperCase()+P},U=c("AsyncFunction");var j={isArray:u,isArrayBuffer:p,isBuffer:function(e){return null!==e&&!d(e)&&null!==e.constructor&&!d(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=i(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t},isString:h,isNumber:m,isBoolean:e=>!0===e||!1===e,isObject:v,isPlainObject:E,isUndefined:d,isDate:S,isFile:w,isBlob:g,isRegExp:F,isFunction:f,isStream:e=>v(e)&&f(e.pipe),isURLSearchParams:R,isTypedArray:C,isFileList:y,forEach:b,merge:function e(){const{caseless:t}=_(this)&&this||{},s={},r=(r,o)=>{const n=t&&A(s,o)||o;E(s[n])&&E(r)?s[n]=e(s[n],r):E(r)?s[n]=e({},r):u(r)?s[n]=r.slice():s[n]=r};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&b(arguments[e],r);return s},extend:(e,t,s,{allOwnKeys:o}={})=>(b(t,((t,o)=>{s&&f(t)?e[o]=r(t,s):e[o]=t}),{allOwnKeys:o}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,s,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),s&&Object.assign(e.prototype,s)},toFlatObject:(e,t,s,r)=>{let o,i,a;const c={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),i=o.length;i-- >0;)a=o[i],r&&!r(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==s&&n(e)}while(e&&(!s||s(e,t))&&e!==Object.prototype);return t},kindOf:i,kindOfTest:c,endsWith:(e,t,s)=>{e=String(e),(void 0===s||s>e.length)&&(s=e.length),s-=t.length;const r=e.indexOf(t,s);return-1!==r&&r===s},toArray:e=>{if(!e)return null;if(u(e))return e;let t=e.length;if(!m(t))return null;const s=new Array(t);for(;t-- >0;)s[t]=e[t];return s},forEachEntry:(e,t)=>{const s=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=s.next())&&!r.done;){const s=r.value;t.call(e,s[0],s[1])}},matchAll:(e,t)=>{let s;const r=[];for(;null!==(s=e.exec(t));)r.push(s);return r},isHTMLForm:I,hasOwnProperty:D,hasOwnProp:D,reduceDescriptors:N,freezeMethods:e=>{N(e,((t,s)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(s))return!1;const r=e[s];f(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+s+"'")}))}))},toObjectSet:(e,t)=>{const s={},r=e=>{e.forEach((e=>{s[e]=!0}))};return u(e)?r(e):r(String(e).split(t)),s},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,s){return t.toUpperCase()+s})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:A,global:O,isContextDefined:_,ALPHABET:k,generateString:(e=16,t=k.ALPHA_DIGIT)=>{let s="";const{length:r}=t;for(;e--;)s+=t[Math.random()*r|0];return s},isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),s=(e,r)=>{if(v(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=u(e)?[]:{};return b(e,((e,t)=>{const n=s(e,r+1);!d(n)&&(o[t]=n)})),t[r]=void 0,o}}return e};return s(e,0)},isAsyncFn:U,isThenable:e=>e&&(v(e)||f(e))&&f(e.then)&&f(e.catch)};function x(e,t,s,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),s&&(this.config=s),r&&(this.request=r),o&&(this.response=o)}j.inherits(x,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:j.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const M=x.prototype,B={};function G(e){return j.isPlainObject(e)||j.isArray(e)}function K(e){return j.endsWith(e,"[]")?e.slice(0,-2):e}function q(e,t,s){return e?e.concat(t).map((function(e,t){return e=K(e),!s&&t?"["+e+"]":e})).join(s?".":""):t}["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{B[e]={value:e}})),Object.defineProperties(x,B),Object.defineProperty(M,"isAxiosError",{value:!0}),x.from=(e,t,s,r,o,n)=>{const i=Object.create(M);return j.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),x.call(i,e.message,t,s,r,o),i.cause=e,i.name=e.name,n&&Object.assign(i,n),i};const W=j.toFlatObject(j,{},null,(function(e){return/^is[A-Z]/.test(e)}));function V(e,t,s){if(!j.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(s=j.toFlatObject(s,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!j.isUndefined(t[e])}))).metaTokens,o=s.visitor||l,n=s.dots,i=s.indexes,a=(s.Blob||"undefined"!=typeof Blob&&Blob)&&j.isSpecCompliantForm(t);if(!j.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(j.isDate(e))return e.toISOString();if(!a&&j.isBlob(e))throw new x("Blob is not supported. Use a Buffer instead.");return j.isArrayBuffer(e)||j.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,s,o){let a=e;if(e&&!o&&"object"==typeof e)if(j.endsWith(s,"{}"))s=r?s:s.slice(0,-2),e=JSON.stringify(e);else if(j.isArray(e)&&function(e){return j.isArray(e)&&!e.some(G)}(e)||(j.isFileList(e)||j.endsWith(s,"[]"))&&(a=j.toArray(e)))return s=K(s),a.forEach((function(e,r){!j.isUndefined(e)&&null!==e&&t.append(!0===i?q([s],r,n):null===i?s:s+"[]",c(e))})),!1;return!!G(e)||(t.append(q(o,s,n),c(e)),!1)}const u=[],d=Object.assign(W,{defaultVisitor:l,convertValue:c,isVisitable:G});if(!j.isObject(e))throw new TypeError("data must be an object");return function e(s,r){if(!j.isUndefined(s)){if(-1!==u.indexOf(s))throw Error("Circular reference detected in "+r.join("."));u.push(s),j.forEach(s,(function(s,n){!0===(!(j.isUndefined(s)||null===s)&&o.call(t,s,j.isString(n)?n.trim():n,r,d))&&e(s,r?r.concat(n):[n])})),u.pop()}}(e),t}function z(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function J(e,t){this._pairs=[],e&&V(e,this,t)}const H=J.prototype;function $(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Y(e,t,s){if(!t)return e;const r=s&&s.encode||$,o=s&&s.serialize;let n;if(n=o?o(t,s):j.isURLSearchParams(t)?t.toString():new J(t,s).toString(r),n){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}H.append=function(e,t){this._pairs.push([e,t])},H.toString=function(e){const t=e?function(t){return e.call(this,t,z)}:z;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var X=class{constructor(){this.handlers=[]}use(e,t,s){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!s&&s.synchronous,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){j.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},Z={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Q={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:J,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},isStandardBrowserEnv:(()=>{let e;return("undefined"==typeof navigator||"ReactNative"!==(e=navigator.product)&&"NativeScript"!==e&&"NS"!==e)&&"undefined"!=typeof window&&"undefined"!=typeof document})(),isStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,protocols:["http","https","file","blob","url","data"]};function ee(e){function t(e,s,r,o){let n=e[o++];const i=Number.isFinite(+n),a=o>=e.length;return n=!n&&j.isArray(r)?r.length:n,a?(j.hasOwnProp(r,n)?r[n]=[r[n],s]:r[n]=s,!i):(r[n]&&j.isObject(r[n])||(r[n]=[]),t(e,s,r[n],o)&&j.isArray(r[n])&&(r[n]=function(e){const t={},s=Object.keys(e);let r;const o=s.length;let n;for(r=0;r<o;r++)n=s[r],t[n]=e[n];return t}(r[n])),!i)}if(j.isFormData(e)&&j.isFunction(e.entries)){const s={};return j.forEachEntry(e,((e,r)=>{t(function(e){return j.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,s,0)})),s}return null}const te={transitional:Z,adapter:["xhr","http"],transformRequest:[function(e,t){const s=t.getContentType()||"",r=s.indexOf("application/json")>-1,o=j.isObject(e);if(o&&j.isHTMLForm(e)&&(e=new FormData(e)),j.isFormData(e))return r&&r?JSON.stringify(ee(e)):e;if(j.isArrayBuffer(e)||j.isBuffer(e)||j.isStream(e)||j.isFile(e)||j.isBlob(e))return e;if(j.isArrayBufferView(e))return e.buffer;if(j.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let n;if(o){if(s.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return V(e,new Q.classes.URLSearchParams,Object.assign({visitor:function(e,t,s,r){return Q.isNode&&j.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((n=j.isFileList(e))||s.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return V(n?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,s){if(j.isString(e))try{return(0,JSON.parse)(e),j.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||te.transitional,s=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&j.isString(e)&&(s&&!this.responseType||r)){const s=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw x.from(e,x.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Q.classes.FormData,Blob:Q.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};j.forEach(["delete","get","head","post","put","patch"],(e=>{te.headers[e]={}}));var se=te;const re=j.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),oe=Symbol("internals");function ne(e){return e&&String(e).trim().toLowerCase()}function ie(e){return!1===e||null==e?e:j.isArray(e)?e.map(ie):String(e)}function ae(e,t,s,r,o){return j.isFunction(r)?r.call(this,t,s):(o&&(t=s),j.isString(t)?j.isString(r)?-1!==t.indexOf(r):j.isRegExp(r)?r.test(t):void 0:void 0)}class ce{constructor(e){e&&this.set(e)}set(e,t,s){const r=this;function o(e,t,s){const o=ne(t);if(!o)throw new Error("header name must be a non-empty string");const n=j.findKey(r,o);(!n||void 0===r[n]||!0===s||void 0===s&&!1!==r[n])&&(r[n||t]=ie(e))}const n=(e,t)=>j.forEach(e,((e,s)=>o(e,s,t)));return j.isPlainObject(e)||e instanceof this.constructor?n(e,t):j.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?n((e=>{const t={};let s,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),s=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!s||t[s]&&re[s]||("set-cookie"===s?t[s]?t[s].push(r):t[s]=[r]:t[s]=t[s]?t[s]+", "+r:r)})),t})(e),t):null!=e&&o(t,e,s),this}get(e,t){if(e=ne(e)){const s=j.findKey(this,e);if(s){const e=this[s];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),s=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=s.exec(e);)t[r[1]]=r[2];return t}(e);if(j.isFunction(t))return t.call(this,e,s);if(j.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=ne(e)){const s=j.findKey(this,e);return!(!s||void 0===this[s]||t&&!ae(0,this[s],s,t))}return!1}delete(e,t){const s=this;let r=!1;function o(e){if(e=ne(e)){const o=j.findKey(s,e);!o||t&&!ae(0,s[o],o,t)||(delete s[o],r=!0)}}return j.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let s=t.length,r=!1;for(;s--;){const o=t[s];e&&!ae(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,s={};return j.forEach(this,((r,o)=>{const n=j.findKey(s,o);if(n)return t[n]=ie(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,s)=>t.toUpperCase()+s))}(o):String(o).trim();i!==o&&delete t[o],t[i]=ie(r),s[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return j.forEach(this,((s,r)=>{null!=s&&!1!==s&&(t[r]=e&&j.isArray(s)?s.join(", "):s)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const s=new this(e);return t.forEach((e=>s.set(e))),s}static accessor(e){const t=(this[oe]=this[oe]={accessors:{}}).accessors,s=this.prototype;function r(e){const r=ne(e);t[r]||(function(e,t){const s=j.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+s,{value:function(e,s,o){return this[r].call(this,t,e,s,o)},configurable:!0})}))}(s,e),t[r]=!0)}return j.isArray(e)?e.forEach(r):r(e),this}}ce.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),j.reduceDescriptors(ce.prototype,(({value:e},t)=>{let s=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[s]=e}}})),j.freezeMethods(ce);var le=ce;function ue(e,t){const s=this||se,r=t||s,o=le.from(r.headers);let n=r.data;return j.forEach(e,(function(e){n=e.call(s,n,o.normalize(),t?t.status:void 0)})),o.normalize(),n}function de(e){return!(!e||!e.__CANCEL__)}function pe(e,t,s){x.call(this,null==e?"canceled":e,x.ERR_CANCELED,t,s),this.name="CanceledError"}j.inherits(pe,x,{__CANCEL__:!0});var he=Q.isStandardBrowserEnv?{write:function(e,t,s,r,o,n){const i=[];i.push(e+"="+encodeURIComponent(t)),j.isNumber(s)&&i.push("expires="+new Date(s).toGMTString()),j.isString(r)&&i.push("path="+r),j.isString(o)&&i.push("domain="+o),!0===n&&i.push("secure"),document.cookie=i.join("; ")},read:function(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function fe(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var me=Q.isStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let s;function r(s){let r=s;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return s=r(window.location.href),function(e){const t=j.isString(e)?r(e):e;return t.protocol===s.protocol&&t.host===s.host}}():function(){return!0};function ve(e,t){let s=0;const r=function(e,t){e=e||10;const s=new Array(e),r=new Array(e);let o,n=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),l=r[i];o||(o=c),s[n]=a,r[n]=c;let u=i,d=0;for(;u!==n;)d+=s[u++],u%=e;if(n=(n+1)%e,n===i&&(i=(i+1)%e),c-o<t)return;const p=l&&c-l;return p?Math.round(1e3*d/p):void 0}}(50,250);return o=>{const n=o.loaded,i=o.lengthComputable?o.total:void 0,a=n-s,c=r(a);s=n;const l={loaded:n,total:i,progress:i?n/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&n<=i?(i-n)/c:void 0,event:o};l[t?"download":"upload"]=!0,e(l)}}const Ee={http:null,xhr:"undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,s){let r=e.data;const o=le.from(e.headers).normalize(),n=e.responseType;let i,a;function c(){e.cancelToken&&e.cancelToken.unsubscribe(i),e.signal&&e.signal.removeEventListener("abort",i)}j.isFormData(r)&&(Q.isStandardBrowserEnv||Q.isStandardBrowserWebWorkerEnv?o.setContentType(!1):o.getContentType(/^\s*multipart\/form-data/)?j.isString(a=o.getContentType())&&o.setContentType(a.replace(/^\s*(multipart\/form-data);+/,"$1")):o.setContentType("multipart/form-data"));let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",s=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";o.set("Authorization","Basic "+btoa(t+":"+s))}const u=fe(e.baseURL,e.url);function d(){if(!l)return;const r=le.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,s){const r=s.config.validateStatus;s.status&&r&&!r(s.status)?t(new x("Request failed with status code "+s.status,[x.ERR_BAD_REQUEST,x.ERR_BAD_RESPONSE][Math.floor(s.status/100)-4],s.config,s.request,s)):e(s)}((function(e){t(e),c()}),(function(e){s(e),c()}),{data:n&&"text"!==n&&"json"!==n?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),Y(u,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=d:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(d)},l.onabort=function(){l&&(s(new x("Request aborted",x.ECONNABORTED,e,l)),l=null)},l.onerror=function(){s(new x("Network Error",x.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const r=e.transitional||Z;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),s(new x(t,r.clarifyTimeoutError?x.ETIMEDOUT:x.ECONNABORTED,e,l)),l=null},Q.isStandardBrowserEnv){const t=(e.withCredentials||me(u))&&e.xsrfCookieName&&he.read(e.xsrfCookieName);t&&o.set(e.xsrfHeaderName,t)}void 0===r&&o.setContentType(null),"setRequestHeader"in l&&j.forEach(o.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),j.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),n&&"json"!==n&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",ve(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",ve(e.onUploadProgress)),(e.cancelToken||e.signal)&&(i=t=>{l&&(s(!t||t.type?new pe(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(i),e.signal&&(e.signal.aborted?i():e.signal.addEventListener("abort",i)));const p=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(u);p&&-1===Q.protocols.indexOf(p)?s(new x("Unsupported protocol "+p+":",x.ERR_BAD_REQUEST,e)):l.send(r||null)}))}};j.forEach(Ee,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Se=e=>`- ${e}`,we=e=>j.isFunction(e)||null===e||!1===e;var ge=e=>{e=j.isArray(e)?e:[e];const{length:t}=e;let s,r;const o={};for(let n=0;n<t;n++){let t;if(s=e[n],r=s,!we(s)&&(r=Ee[(t=String(s)).toLowerCase()],void 0===r))throw new x(`Unknown adapter '${t}'`);if(r)break;o[t||"#"+n]=r}if(!r){const e=Object.entries(o).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new x("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Se).join("\n"):" "+Se(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function ye(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new pe(null,e)}function Re(e){return ye(e),e.headers=le.from(e.headers),e.data=ue.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),ge(e.adapter||se.adapter)(e).then((function(t){return ye(e),t.data=ue.call(e,e.transformResponse,t),t.headers=le.from(t.headers),t}),(function(t){return de(t)||(ye(e),t&&t.response&&(t.response.data=ue.call(e,e.transformResponse,t.response),t.response.headers=le.from(t.response.headers))),Promise.reject(t)}))}const be=e=>e instanceof le?e.toJSON():e;function Ae(e,t){t=t||{};const s={};function r(e,t,s){return j.isPlainObject(e)&&j.isPlainObject(t)?j.merge.call({caseless:s},e,t):j.isPlainObject(t)?j.merge({},t):j.isArray(t)?t.slice():t}function o(e,t,s){return j.isUndefined(t)?j.isUndefined(e)?void 0:r(void 0,e,s):r(e,t,s)}function n(e,t){if(!j.isUndefined(t))return r(void 0,t)}function i(e,t){return j.isUndefined(t)?j.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(s,o,n){return n in t?r(s,o):n in e?r(void 0,s):void 0}const c={url:n,method:n,data:n,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t)=>o(be(e),be(t),!0)};return j.forEach(Object.keys(Object.assign({},e,t)),(function(r){const n=c[r]||o,i=n(e[r],t[r],r);j.isUndefined(i)&&n!==a||(s[r]=i)})),s}const Oe={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Oe[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}}));const _e={};Oe.transitional=function(e,t,s){function r(e,t){return"[Axios v1.5.1] Transitional option '"+e+"'"+t+(s?". "+s:"")}return(s,o,n)=>{if(!1===e)throw new x(r(o," has been removed"+(t?" in "+t:"")),x.ERR_DEPRECATED);return t&&!_e[o]&&(_e[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(s,o,n)}};var Ce={assertOptions:function(e,t,s){if("object"!=typeof e)throw new x("options must be an object",x.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const n=r[o],i=t[n];if(i){const t=e[n],s=void 0===t||i(t,n,e);if(!0!==s)throw new x("option "+n+" must be "+s,x.ERR_BAD_OPTION_VALUE)}else if(!0!==s)throw new x("Unknown option "+n,x.ERR_BAD_OPTION)}},validators:Oe};const Te=Ce.validators;class Ie{constructor(e){this.defaults=e,this.interceptors={request:new X,response:new X}}request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ae(this.defaults,t);const{transitional:s,paramsSerializer:r,headers:o}=t;void 0!==s&&Ce.assertOptions(s,{silentJSONParsing:Te.transitional(Te.boolean),forcedJSONParsing:Te.transitional(Te.boolean),clarifyTimeoutError:Te.transitional(Te.boolean)},!1),null!=r&&(j.isFunction(r)?t.paramsSerializer={serialize:r}:Ce.assertOptions(r,{encode:Te.function,serialize:Te.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let n=o&&j.merge(o.common,o[t.method]);o&&j.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=le.concat(n,o);const i=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const c=[];let l;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,d=0;if(!a){const e=[Re.bind(this),void 0];for(e.unshift.apply(e,i),e.push.apply(e,c),u=e.length,l=Promise.resolve(t);d<u;)l=l.then(e[d++],e[d++]);return l}u=i.length;let p=t;for(d=0;d<u;){const e=i[d++],t=i[d++];try{p=e(p)}catch(e){t.call(this,e);break}}try{l=Re.call(this,p)}catch(e){return Promise.reject(e)}for(d=0,u=c.length;d<u;)l=l.then(c[d++],c[d++]);return l}getUri(e){return Y(fe((e=Ae(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}j.forEach(["delete","get","head","options"],(function(e){Ie.prototype[e]=function(t,s){return this.request(Ae(s||{},{method:e,url:t,data:(s||{}).data}))}})),j.forEach(["post","put","patch"],(function(e){function t(t){return function(s,r,o){return this.request(Ae(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:s,data:r}))}}Ie.prototype[e]=t(),Ie.prototype[e+"Form"]=t(!0)}));var De=Ie;class Fe{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const s=this;this.promise.then((e=>{if(!s._listeners)return;let t=s._listeners.length;for(;t-- >0;)s._listeners[t](e);s._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{s.subscribe(e),t=e})).then(e);return r.cancel=function(){s.unsubscribe(t)},r},e((function(e,r,o){s.reason||(s.reason=new pe(e,r,o),t(s.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Fe((function(t){e=t})),cancel:e}}}var Ne=Fe;const Le={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Le).forEach((([e,t])=>{Le[t]=e}));var Pe=Le;const ke=function e(t){const s=new De(t),o=r(De.prototype.request,s);return j.extend(o,De.prototype,s,{allOwnKeys:!0}),j.extend(o,s,null,{allOwnKeys:!0}),o.create=function(s){return e(Ae(t,s))},o}(se);ke.Axios=De,ke.CanceledError=pe,ke.CancelToken=Ne,ke.isCancel=de,ke.VERSION="1.5.1",ke.toFormData=V,ke.AxiosError=x,ke.Cancel=ke.CanceledError,ke.all=function(e){return Promise.all(e)},ke.spread=function(e){return function(t){return e.apply(null,t)}},ke.isAxiosError=function(e){return j.isObject(e)&&!0===e.isAxiosError},ke.mergeConfig=Ae,ke.AxiosHeaders=le,ke.formToJSON=e=>ee(j.isHTMLForm(e)?new FormData(e):e),ke.getAdapter=ge,ke.HttpStatusCode=Pe,ke.default=ke,e.exports=ke}},t={};function s(r){var o=t[r];if(void 0!==o)return o.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,s),n.exports}s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();var r={};return(()=>{"use strict";var e=r;const t=s(234),o=s(923),n=s(604),i=s(122),a=s(344),c=s(927),l=s(168);class u{}u.livenessDetection=t.livenessDetection,u.livenessSession=o.livenessSession,u.uploadIdentificationDocument=n.uploadIdentificationDocument,u.insertUploadIdentificationDocument=i.insertUploadIdentificationDocument,u.typification=a.typification,u.ocr=l.ocr,u.faceMatch=c.faceMatch,e.default=u})(),r.default})()));
@@ -1,7 +1,9 @@
1
1
  import { ApiLivenessSessionService, type ILivenessSessionResult } from '../../../../api/ApiLivenessSessionService';
2
2
  import { type IBaseSDKOptions } from '../../../../utils/types';
3
3
  import { SDKError } from '../../../../utils/error';
4
- export type TLivenessSessionOptions = Omit<IBaseSDKOptions, 'track'> & {
4
+ export type TLivenessSessionOptions = Omit<IBaseSDKOptions, 'track' | 'token'> & {
5
+ /** Token do usuario. Opcional quando apiKey for informada. */
6
+ token?: string;
5
7
  track?: string;
6
8
  customerRequestId?: string;
7
9
  onSessionCreated?: (sessionId: string) => void | Promise<void>;
@@ -2,7 +2,7 @@ import { type IServiceOptions } from './Service';
2
2
  import { type TFrameType, type TMediaType } from '../livenessDetection';
3
3
  export declare function uploadIdentificationDocument(options: IServiceOptions<TFrameType, TMediaType>): {
4
4
  startDocumentUpload: (file: TFrameType) => Promise<void>;
5
- startLivenessDetection: (startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<TFrameType, TMediaType>, "track" | "token"> & {
5
+ startLivenessDetection: (startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<TFrameType, TMediaType>, "token" | "track"> & {
6
6
  track?: string | undefined;
7
7
  token?: string | undefined;
8
8
  }) | undefined) => (Omit<{
@@ -14,7 +14,7 @@ export declare function uploadIdentificationDocument(options: IServiceOptions<TF
14
14
  getVideoStream?: (() => TMediaType) | undefined;
15
15
  }) | undefined;
16
16
  startFaceComparison: () => Promise<void>;
17
- startAll: (file: TFrameType, startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<TFrameType, TMediaType>, "track" | "token"> & {
17
+ startAll: (file: TFrameType, startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<TFrameType, TMediaType>, "token" | "track"> & {
18
18
  track?: string | undefined;
19
19
  token?: string | undefined;
20
20
  }) | undefined) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "santoid-sdk",
3
- "version": "7.0.0",
3
+ "version": "8.0.0",
4
4
  "description": "",
5
5
  "main": "client/index.js",
6
6
  "types": "client/index.d.ts",
@@ -3,7 +3,7 @@ import { type IServiceOptions } from '../../../../client/liveness/methods/upload
3
3
  import { type TFrameType, type TMediaType } from '../livenessDetection';
4
4
  export declare function uploadIdentificationDocument(options: IServiceOptions<TFrameType, TMediaType>): {
5
5
  startDocumentUpload: (file: import("ws").Data) => Promise<void>;
6
- startLivenessDetection: (startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<import("ws").Data, undefined>, "track" | "token"> & {
6
+ startLivenessDetection: (startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<import("ws").Data, undefined>, "token" | "track"> & {
7
7
  track?: string | undefined;
8
8
  token?: string | undefined;
9
9
  }) | undefined) => (Omit<{
@@ -15,7 +15,7 @@ export declare function uploadIdentificationDocument(options: IServiceOptions<TF
15
15
  getVideoStream?: (() => undefined) | undefined;
16
16
  }) | undefined;
17
17
  startFaceComparison: () => Promise<void>;
18
- startAll: (file: import("ws").Data, startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<import("ws").Data, undefined>, "track" | "token"> & {
18
+ startAll: (file: import("ws").Data, startLivenessDetectionOptions?: (Omit<import("../../../../utils/types").ISDKOptions<import("ws").Data, undefined>, "token" | "track"> & {
19
19
  track?: string | undefined;
20
20
  token?: string | undefined;
21
21
  }) | undefined) => void;
package/utils/index.d.ts CHANGED
@@ -6,3 +6,5 @@ export declare function callAsyncFunctionEveryXSeconds(fn: () => Promise<any>, x
6
6
  stop: boolean;
7
7
  }): () => void;
8
8
  export declare function retryAsyncFunctionXTimes<TReturnType>(requestAsyncFn: () => Promise<TReturnType>, retryCondition?: (err: unknown) => boolean, xTimes?: number, retryWaitTime?: number, retryTimeStep?: number): Promise<TReturnType>;
9
+ export declare const API_TOKEN_PREFIXES: string[];
10
+ export declare function looksLikeApiToken(token?: string): boolean;
package/utils/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retryAsyncFunctionXTimes = exports.callAsyncFunctionEveryXSeconds = exports.waitFor = exports.wait = exports.capitalizeFirstLetter = void 0;
3
+ exports.looksLikeApiToken = exports.API_TOKEN_PREFIXES = exports.retryAsyncFunctionXTimes = exports.callAsyncFunctionEveryXSeconds = exports.waitFor = exports.wait = exports.capitalizeFirstLetter = void 0;
4
4
  const axios_1 = require("axios");
5
5
  const constants_1 = require("./constants");
6
6
  function capitalizeFirstLetter(str) {
@@ -61,3 +61,14 @@ async function retryAsyncFunctionXTimes(requestAsyncFn, retryCondition = default
61
61
  }
62
62
  }
63
63
  exports.retryAsyncFunctionXTimes = retryAsyncFunctionXTimes;
64
+ // Prefixos que identificam um token de API. Mesmo criterio do orchestrator
65
+ // (infrastructure/auth/auth.go, getUserData) e do santoid-liveness
66
+ // (crud/api_token.py): sao chaves opacas, nao JWT, e tentar decodifica-las
67
+ // como JWT falharia.
68
+ exports.API_TOKEN_PREFIXES = ['st_', 'AIza'];
69
+ function looksLikeApiToken(token) {
70
+ if (!token)
71
+ return false;
72
+ return exports.API_TOKEN_PREFIXES.some((prefix) => token.startsWith(prefix));
73
+ }
74
+ exports.looksLikeApiToken = looksLikeApiToken;
package/utils/types.d.ts CHANGED
@@ -20,6 +20,14 @@ export interface IBaseWebSocket<TFrameType> {
20
20
  export type TWebSocketClass<TFrameType> = new (url: string) => IBaseWebSocket<TFrameType>;
21
21
  export interface IBaseSDKOptions {
22
22
  token: string;
23
+ /**
24
+ * Chave de API do SantoiD, enviada em x-api-key.
25
+ *
26
+ * Opcional: uma chave passada em `token` tambem e' reconhecida pelo prefixo
27
+ * (st_, AIza), como faz o orchestrator. Este campo existe para quando a
28
+ * chave nao seguir esse formato.
29
+ */
30
+ apiKey?: string;
23
31
  track: string;
24
32
  template?: string;
25
33
  customId?: string;