@grabjs/superapp-sdk 2.0.0-beta.34 → 2.0.0-beta.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/api-reference/api.json +4981 -3457
- package/dist/index.d.ts +234 -18
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/skills/SKILL.md +7 -3
package/dist/index.js
CHANGED
|
@@ -4,4 +4,4 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the LICENSE file in the root
|
|
5
5
|
* directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).SuperAppSDK={})}(this,function(e){"use strict";var t,n={exports:{}},s=(t||(t=1,function(e){function t(e){var t=!1;return{isUnsubscribed:function(){return t},unsubscribe:function(){t||(e(),t=!0)}}}function n(e){return{subscribe:e,then:function(t,n){return new Promise(function(s,r){try{var o=null,a=!1;o=e({next:function(e){s(null==t?void 0:t(e)),o&&o.unsubscribe(),a=!0}}),a&&o&&o.unsubscribe()}catch(e){null==n?r(e):s(n(e))}})}}}function s(s,r){return r.funcNameToWrap,function(s,r){var o=r.callbackNameFunc,a=r.funcToWrap;return n(function(n){var r,i=o();return s[i]=function(t){if(function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(!e)return!1;var s=function(e){return Object.keys(e).concat(Object.getOwnPropertyNames(Object.getPrototypeOf(e)))}(e);return t.every(function(e){return 0<=s.indexOf(e)})}(t.result,"event"))t.result.event===e.StreamEvent.STREAM_TERMINATED&&r.unsubscribe();else{var s=t.result,o=t.error,a=t.status_code;n&&n.next&&n.next({result:null===s?void 0:s,error:null===o?void 0:o,status_code:null===a?void 0:a})}},a(i),r=t(function(){s[i]=void 0,n&&n.complete&&n.complete()})})}(s,function(e,t){var n={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(s=Object.getOwnPropertySymbols(e);r<s.length;r++)t.indexOf(s[r])<0&&(n[s[r]]=e[s[r]])}return n}(r,["funcNameToWrap"]))}(e.StreamEvent||(e.StreamEvent={})).STREAM_TERMINATED="STREAM_TERMINATED",e.createDataStream=n,e.createSubscription=t,e.getModuleEnvironment=function(e,t){return e[t]?"android":e.webkit&&e.webkit.messageHandlers&&e.webkit.messageHandlers[t]?"ios":void 0},e.wrapModule=function(e,t){var n;e[(n=t,"Wrapped"+n)]=function(e,t,n){return{invoke:function(r,o){return s(e,{funcNameToWrap:r,callbackNameFunc:function(){return function(e,t){var n=t.moduleName,s=t.funcName,r=0;return function(){for(var t,o,a="";(a=(t={moduleName:n,funcName:s,requestID:r}).moduleName+"_"+t.funcName+"Callback"+(null!==(o=t.requestID)?"_"+o:""))in e;)r+=1;return r+=1,a}()}(e,{moduleName:t,funcName:r})},funcToWrap:function(e){return n({callback:e,method:r,module:t,parameters:null!=o?o:{}})}})}}}(e,t,function(n){if(e[t]&&e[t][n.method]instanceof Function)e[t][n.method](JSON.stringify(n));else{if(!(e.webkit&&e.webkit.messageHandlers&&e.webkit.messageHandlers[t]))throw new Error("Unexpected method '"+n.method+"' for module '"+t+"'");e.webkit.messageHandlers[t].postMessage(n)}})},Object.defineProperty(e,"__esModule",{value:!0})}(n.exports)),n.exports);function r(e){return{lang:e?.lang??void 0,message:e?.message,abortEarly:e?.abortEarly??void 0,abortPipeEarly:e?.abortPipeEarly??void 0}}function o(e){const t=typeof e;return"string"===t?`"${e}"`:"number"===t||"bigint"===t||"boolean"===t?`${e}`:"object"===t||"function"===t?(e&&Object.getPrototypeOf(e)?.constructor?.name)??"null":t}function a(e,t,n,s,r){const a=r&&"input"in r?r.input:n.value,i=r?.expected??e.expects??null,c=r?.received??o(a),u={kind:e.kind,type:e.type,input:a,expected:i,received:c,message:`Invalid ${t}: ${i?`Expected ${i} but r`:"R"}eceived ${c}`,requirement:e.requirement,path:r?.path,issues:r?.issues,lang:s.lang,abortEarly:s.abortEarly,abortPipeEarly:s.abortPipeEarly},l="schema"===e.kind,d=r?.message??e.message??(e.reference,void u.lang)??(l?void u.lang:null)??s.message??void u.lang;void 0!==d&&(u.message="function"==typeof d?d(u):d),l&&(n.typed=!1),n.issues?n.issues.push(u):n.issues=[u]}function i(e){return{version:1,vendor:"valibot",validate:t=>e["~run"]({value:t},r())}}function c(e,t){return Object.hasOwn(e,t)&&"__proto__"!==t&&"prototype"!==t&&"constructor"!==t}function u(e,t){const n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??"never"}function l(e,t){return{kind:"validation",type:"min_length",reference:l,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&e.value.length<this.requirement&&a(this,"length",e,t,{received:`${e.value.length}`}),e}}}function d(e){return{kind:"validation",type:"url",reference:d,async:!1,expects:null,requirement(e){try{return new URL(e),!0}catch{return!1}},message:e,"~run"(e,t){return e.typed&&!this.requirement(e.value)&&a(this,"URL",e,t),e}}}function h(e,t,n){return"function"==typeof e.fallback?e.fallback(t,n):e.fallback}function p(e,t,n){return"function"==typeof e.default?e.default(t,n):e.default}function m(e){return{kind:"schema",type:"boolean",reference:m,expects:"boolean",async:!1,message:e,get"~standard"(){return i(this)},"~run"(e,t){return"boolean"==typeof e.value?e.typed=!0:a(this,"type",e,t),e}}}function g(e,t){return{kind:"schema",type:"literal",reference:g,expects:o(e),async:!1,literal:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){return e.value===this.literal?e.typed=!0:a(this,"type",e,t),e}}}function f(e,t){return{kind:"schema",type:"nullable",reference:f,expects:`(${e.expects} | null)`,async:!1,wrapped:e,default:t,get"~standard"(){return i(this)},"~run"(e,t){return null===e.value&&(void 0!==this.default&&(e.value=p(this,e,t)),null===e.value)?(e.typed=!0,e):this.wrapped["~run"](e,t)}}}function v(e){return{kind:"schema",type:"number",reference:v,expects:"number",async:!1,message:e,get"~standard"(){return i(this)},"~run"(e,t){return"number"!=typeof e.value||isNaN(e.value)?a(this,"type",e,t):e.typed=!0,e}}}function y(e,t){return{kind:"schema",type:"object",reference:y,expects:"Object",async:!1,entries:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const s in this.entries){const r=this.entries[s];if(s in n||("exact_optional"===r.type||"optional"===r.type||"nullish"===r.type)&&void 0!==r.default){const o=s in n?n[s]:p(r),a=r["~run"]({value:o},t);if(a.issues){const r={type:"object",origin:"value",input:n,key:s,value:o};for(const t of a.issues)t.path?t.path.unshift(r):t.path=[r],e.issues?.push(t);if(e.issues||(e.issues=a.issues),t.abortEarly){e.typed=!1;break}}a.typed||(e.typed=!1),e.value[s]=a.value}else if(void 0!==r.fallback)e.value[s]=h(r);else if("exact_optional"!==r.type&&"optional"!==r.type&&"nullish"!==r.type&&(a(this,"key",e,t,{input:void 0,expected:`"${s}"`,path:[{type:"object",origin:"key",input:n,key:s,value:n[s]}]}),t.abortEarly))break}}else a(this,"type",e,t);return e}}}function S(e,t){return{kind:"schema",type:"optional",reference:S,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:t,get"~standard"(){return i(this)},"~run"(e,t){return void 0===e.value&&(void 0!==this.default&&(e.value=p(this,e,t)),void 0===e.value)?(e.typed=!0,e):this.wrapped["~run"](e,t)}}}function w(e,t){return{kind:"schema",type:"picklist",reference:w,expects:u(e.map(o),"|"),async:!1,options:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){return this.options.includes(e.value)?e.typed=!0:a(this,"type",e,t),e}}}function k(e,t,n){return{kind:"schema",type:"record",reference:k,expects:"Object",async:!1,key:e,value:t,message:n,get"~standard"(){return i(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const s in n)if(c(n,s)){const r=n[s],o=this.key["~run"]({value:s},t);if(o.issues){const a={type:"object",origin:"key",input:n,key:s,value:r};for(const t of o.issues)t.path=[a],e.issues?.push(t);if(e.issues||(e.issues=o.issues),t.abortEarly){e.typed=!1;break}}const a=this.value["~run"]({value:r},t);if(a.issues){const o={type:"object",origin:"value",input:n,key:s,value:r};for(const t of a.issues)t.path?t.path.unshift(o):t.path=[o],e.issues?.push(t);if(e.issues||(e.issues=a.issues),t.abortEarly){e.typed=!1;break}}o.typed&&a.typed||(e.typed=!1),o.typed&&(e.value[o.value]=a.value)}}else a(this,"type",e,t);return e}}}function b(e){return{kind:"schema",type:"string",reference:b,expects:"string",async:!1,message:e,get"~standard"(){return i(this)},"~run"(e,t){return"string"==typeof e.value?e.typed=!0:a(this,"type",e,t),e}}}function R(e){let t;if(e)for(const n of e)t?t.push(...n.issues):t=n.issues;return t}function C(e,t){return{kind:"schema",type:"union",reference:C,expects:u(e.map(e=>e.expects),"|"),async:!1,options:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){let n,s,r;for(const o of this.options){const a=o["~run"]({value:e.value},t);if(a.typed){if(!a.issues){n=a;break}s?s.push(a):s=[a]}else r?r.push(a):r=[a]}if(n)return n;if(s){if(1===s.length)return s[0];a(this,"type",e,t,{issues:R(s)}),e.typed=!0}else{if(1===r?.length)return r[0];a(this,"type",e,t,{issues:R(r)})}return e}}}function x(){return{kind:"schema",type:"unknown",reference:x,expects:"unknown",async:!1,get"~standard"(){return i(this)},"~run":e=>(e.typed=!0,e)}}function E(...e){return{...e[0],pipe:e,get"~standard"(){return i(this)},"~run"(t,n){for(const s of e)if("metadata"!==s.kind){if(t.issues&&("schema"===s.kind||"transformation"===s.kind)){t.typed=!1;break}t.issues&&(n.abortEarly||n.abortPipeEarly)||(t=s["~run"](t,n))}return t}}}function _(e){return"object"==typeof e&&null!==e&&"message"in e&&"string"==typeof e.message}class A{constructor(e){this.moduleName=e}formatPrefix(e){return`[SuperAppSDK][${this.moduleName}.${e}]`}warn(e,t){console.warn(`${this.formatPrefix(e)} ${t}`)}error(e,t){console.error(`${this.formatPrefix(e)} ${t}`)}}function U(){if("undefined"==typeof window||!window.navigator)return null;const e=window.navigator.userAgent;return e?function(e){if(!e||"string"!=typeof e)return null;const t=e.match(/(Grab|GrabBeta|GrabBetaDebug|GrabTaxi|GrabEarlyAccess)\/v?([0-9]+)\.([0-9]+)\.([0-9]+) \(.*(Android|iOS).*\)/i);return t?{appName:t[1],version:{major:Number(t[2]),minor:Number(t[3]),patch:Number(t[4])},platform:t[5]}:null}(e):null}class M{get wrappedModule(){return window[`Wrapped${this.name}`]}constructor(e){if(this.name=e,this.logger=new A(e),!this.wrappedModule)try{s.wrapModule(window,this.name)}catch(e){throw new Error(`Failed to initialize ${this.name}${_(e)?`: ${e.message}`:""}`,{cause:e})}}validate(e,t){const n=function(e,t){const n=e["~run"]({value:t},r(void 0));return{typed:n.typed,success:!n.issues,output:n.value,issues:n.issues}}(e,t);return n.success?null:n.issues.map(e=>{const t=e.path?.map(e=>String(e.key)).join(".");return t?`${t}: ${e.message}`:e.message}).join(", ")}checkSupport(e){const t=U();return t?e(t)?null:{status_code:426,error:"Upgrade Required: This method requires a newer version of the Grab app"}:{status_code:501,error:"Not implemented: This method requires the Grab app environment"}}async invoke(e){const{method:t,params:n}=e;try{return U()?await this.wrappedModule.invoke(t,n):{status_code:501,error:"Not implemented: This method requires the Grab app environment"}}catch(e){return{status_code:500,error:`Failed to invoke method: ${_(e)?e.message:"Unknown error"}`}}}createErrorStream(e){return{subscribe:t=>(t?.next?.(e),t?.complete?.(),{isUnsubscribed:()=>!0,unsubscribe:()=>{}}),then:t=>Promise.resolve(e).then(t)}}invokeStream(e){const{method:t,params:n}=e;try{return U()?this.wrappedModule.invoke(t,n):this.createErrorStream({status_code:501,error:"Not implemented: This method requires the Grab app environment"})}catch(e){return this.createErrorStream({status_code:500,error:`Failed to invoke method: ${_(e)?e.message:"Unknown error"}`})}}}const $=e=>y({status_code:g(e),error:b()}),I=e=>y({status_code:g(200),result:e}),T=y({status_code:g(204)}),O=y({status_code:g(302)}),N=y({title:S(b())}),P=y({qrCode:b()}),B=C([I(P),T,$(400),$(403),$(500),$(501)]),L=k(b(),x()),D=function e(t,n,s){return{kind:"schema",type:"variant",reference:e,expects:"Object",async:!1,key:t,options:n,message:s,get"~standard"(){return i(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){let s,r=0,o=this.key,i=[];const c=(e,a)=>{for(const u of e.options){if("variant"===u.type)c(u,new Set(a).add(u.key));else{let e=!0,c=0;for(const t of a){const s=u.entries[t];if(t in n?s["~run"]({typed:!1,value:n[t]},{abortEarly:!0}).issues:"exact_optional"!==s.type&&"optional"!==s.type&&"nullish"!==s.type){e=!1,o!==t&&(r<c||r===c&&t in n&&!(o in n))&&(r=c,o=t,i=[]),o===t&&i.push(u.entries[t].expects);break}c++}if(e){const e=u["~run"]({value:n},t);(!s||!s.typed&&e.typed)&&(s=e)}}if(s&&!s.issues)break}};if(c(this,new Set([this.key])),s)return s;a(this,"type",e,t,{input:n[o],expected:u(i,"|"),path:[{type:"object",origin:"value",input:n,key:o,value:n[o]}]})}else a(this,"type",e,t);return e}}}("status",[y({status:g("success"),transactionID:b()}),y({status:g("failure"),transactionID:b(),errorMessage:b(),errorCode:b()}),y({status:g("pending"),transactionID:b()}),y({status:g("userInitiatedCancel")})]),G=C([I(D),$(400),$(500),$(501)]),j=C([I(m()),T,$(400),$(500),$(501)]),z=C([I(m()),T,$(400),$(500),$(501)]),q=C([I(m()),T,$(500),$(501)]),K=C([I(m()),T,$(500),$(501)]),F=C([I(m()),T,$(500),$(501)]),W=C([I(m()),T,$(500),$(501)]),V=C([I(m()),T,$(500),$(501)]),H=C([I(m()),T,$(500),$(501)]),Y=C([I(m()),T,$(500),$(501)]),Q=C([I(m()),T,$(500),$(501)]),J=C([I(m()),T,$(400),$(500),$(501)]),X=C([I(m()),$(500),$(501)]),Z=y({state:E(b(),l(1)),name:E(b(),l(1)),data:S(k(b(),x()))}),ee=C([I(m()),T,$(400),$(500),$(501)]),te=y({connected:m()}),ne=C([I(te),$(404)]),se=b(),re=C([I(se),T,$(500),$(501)]),oe=m(),ae=C([I(oe),$(500),$(501)]),ie=y({fileUrl:E(b(),d()),fileName:E(b(),l(1))}),ce=C([T,$(400),$(500),$(501)]);function ue(e){const t=new Uint32Array(e);crypto.getRandomValues(t);let n="";for(let s=0;s<e;s+=1)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(t[s]%62);return n}async function le(e){const t=(new TextEncoder).encode(e);return function(e){const t=new Uint8Array(e);let n="";for(let e=0;e<t.byteLength;e+=1)n+=String.fromCharCode(t[e]);return btoa(n).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(await crypto.subtle.digest("SHA-256",t))}function de(e,t){return e.major!==t.major?e.major>t.major:e.minor!==t.minor?e.minor>t.minor:e.patch>=t.patch}const he="grabid",pe={staging:"https://partner-api.stg-myteksi.com/grabid/v1/oauth2/.well-known/openid-configuration",production:"https://partner-api.grab.com/grabid/v1/oauth2/.well-known/openid-configuration"};class me extends Error{constructor(e,t){super(e),this.cause=t,this.name="AuthorizationConfigurationError"}}const ge=y({clientId:E(b(),l(1)),redirectUri:E(b(),d()),scope:E(b(),l(1)),environment:w(["staging","production"]),responseMode:S(w(["redirect","in_place"]))}),fe=y({code:b(),state:b()}),ve=C([I(fe),T,O,$(400),$(403),$(500),$(501)]),ye=y({state:b(),codeVerifier:b(),nonce:b(),redirectUri:b()}),Se=C([I(ye),T,$(400)]),we=C([T]);class ke extends M{constructor(){super("IdentityModule")}async fetchAuthorizationEndpoint(e){const t=pe[e];if(!t)throw new Error(`Invalid environment: ${e}. Must be 'staging' or 'production'`);try{const e=await fetch(t);if(!e.ok)throw console.error(`Failed to fetch OpenID configuration from ${t}: ${e.status} ${e.statusText}`),new me("Failed to fetch authorization configuration");const n=await e.json();if(!n.authorization_endpoint)throw console.error("authorization_endpoint not found in OpenID configuration response"),new me("Invalid authorization configuration");return n.authorization_endpoint}catch(e){if(console.error("Error fetching authorization endpoint:",e),e instanceof me)throw e;throw new Error("Something wrong happened when fetching authorization configuration",{cause:e})}}async generatePKCEArtifacts(){const e=ue(16),t=ue(32),n=(s=ue(64),btoa(s).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"));var s;return{nonce:e,state:t,codeVerifier:n,codeChallenge:await le(n),codeChallengeMethod:"S256"}}storePKCEArtifacts(e){this.setStorageItem("nonce",e.nonce),this.setStorageItem("state",e.state),this.setStorageItem("code_verifier",e.codeVerifier),this.setStorageItem("redirect_uri",e.redirectUri)}async getAuthorizationArtifacts(){const e=this.getStorageItem("state"),t=this.getStorageItem("code_verifier"),n=this.getStorageItem("nonce"),s=this.getStorageItem("redirect_uri");return null===e&&null===t&&null===n&&null===s?{status_code:204}:null!==e&&null!==t&&null!==n&&null!==s?{status_code:200,result:{state:e,codeVerifier:t,nonce:n,redirectUri:s}}:{status_code:400,error:"Inconsistent authorization artifacts in storage"}}async clearAuthorizationArtifacts(){return window.localStorage.removeItem(`${he}:nonce`),window.localStorage.removeItem(`${he}:state`),window.localStorage.removeItem(`${he}:code_verifier`),window.localStorage.removeItem(`${he}:redirect_uri`),window.localStorage.removeItem(`${he}:login_return_uri`),{status_code:204}}setStorageItem(e,t){window.localStorage.setItem(`${he}:${e}`,t)}getStorageItem(e){return window.localStorage.getItem(`${he}:${e}`)}static normalizeUrl(e){const t=new URL(e);return`${t.origin}${t.pathname}`}static buildAuthorizeUrl(e,t){return`${e}?${Object.entries(t).filter(e=>void 0!==e[1]&&null!==e[1]).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`}static shouldUseWebConsent(e){const t=U();return!t||"staging"!==e.environment&&!de(t.version,{major:5,minor:396,patch:0})}async performWebAuthorization(e){let t;this.setStorageItem("login_return_uri",window.location.href),this.setStorageItem("redirect_uri",e.redirectUri);try{t=await this.fetchAuthorizationEndpoint(e.environment)}catch(e){return{status_code:400,error:_(e)?e.message:"Could not fetch authorization endpoint"}}const n={client_id:e.clientId,scope:e.scope,response_type:"code",redirect_uri:e.redirectUri,nonce:e.nonce,state:e.state,code_challenge_method:e.codeChallengeMethod,code_challenge:e.codeChallenge},s=ke.buildAuthorizeUrl(t,n);return window.location.assign(s),{status_code:302}}async performNativeAuthorization(e){const t=await this.invoke({method:"authorize",params:{clientId:e.clientId,redirectUri:e.actualRedirectUri,scope:e.scope,nonce:e.nonce,state:e.state,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,responseMode:e.responseMode}}),n=this.validate(ve,t);return n&&this.logger.warn("authorize",`Unexpected response shape: ${n}`),t}async authorize(e){const t=this.validate(ge,e);if(t)return{status_code:400,error:t};const n=await this.generatePKCEArtifacts(),s=e.responseMode||"redirect",r="in_place"===s?ke.normalizeUrl(window.location.href):e.redirectUri;this.storePKCEArtifacts({...n,redirectUri:r});const o={clientId:e.clientId,redirectUri:e.redirectUri,scope:e.scope,nonce:n.nonce,state:n.state,codeChallenge:n.codeChallenge,codeChallengeMethod:n.codeChallengeMethod};if(ke.shouldUseWebConsent(e))return this.performWebAuthorization({...o,environment:e.environment});try{const t=await this.performNativeAuthorization({...o,actualRedirectUri:r,responseMode:s});return 400===t.status_code||403===t.status_code||500===t.status_code||501===t.status_code?(console.error(`Native authorization returned ${t.status_code}, falling back to web flow:`,t.error),this.performWebAuthorization({...o,environment:e.environment})):t}catch(t){return console.error("Native authorization failed, falling back to web flow:",t),this.performWebAuthorization({...o,environment:e.environment})}}}const be=b(),Re=C([I(be),T,$(400),$(500),$(501)]),Ce=y({latitude:v(),longitude:v()}),xe=C([I(Ce),$(403),$(424),$(500),$(501)]),Ee=b(),_e=C([I(Ee),T,$(403),$(424),$(500),$(501)]),Ae=y({type:w(["START_PLAYBACK","PROGRESS_PLAYBACK","START_SEEK","STOP_SEEK","STOP_PLAYBACK","CLOSE_PLAYBACK","PAUSE_PLAYBACK","RESUME_PLAYBACK","FAST_FORWARD_PLAYBACK","REWIND_PLAYBACK","ERROR_PLAYBACK","CHANGE_VOLUME"]),titleId:b(),position:v(),length:v()}),Ue=C([I(Ae),T,$(400),$(424),$(500),$(501)]),Me=C([I(Ae),$(500),$(501)]),$e=C([T,$(500),$(501)]),Ie=y({email:b()}),Te=C([I(Ie),T,$(400),$(403),$(426),$(500),$(501)]),Oe=y({email:S(E(b(),l(1))),skipUserInput:S(m())}),Ne=y({email:b()}),Pe=C([I(Ne),T,$(400),$(403),$(426),$(500),$(501)]);class Be extends M{constructor(){super("ProfileModule")}async fetchEmail(){const e=this.checkSupport(e=>de(e.version,Be.MINIMUM_VERSION));if(e)return e;const t=await this.invoke({method:"fetchEmail"}),n=this.validate(Te,t);return n&&this.logger.warn("fetchEmail",`Unexpected response shape: ${n}`),t}async verifyEmail(e){const t=this.checkSupport(e=>de(e.version,Be.MINIMUM_VERSION));if(t)return t;const n=this.validate(Oe,e??{});if(n)return{status_code:400,error:n};const s=await this.invoke({method:"verifyEmail",params:e}),r=this.validate(Pe,s);return r&&this.logger.warn("verifyEmail",`Unexpected response shape: ${r}`),s}}Be.MINIMUM_VERSION={major:5,minor:399,patch:0};const Le=y({module:E(b(),l(1)),method:E(b(),l(1))}),De=m(),Ge=C([I(De),$(400),$(424),$(500),$(501)]),je=C([T,$(424),$(500),$(501)]),ze=C([T,$(400),$(403),$(500),$(501)]),qe=y({key:E(b(),l(1))}),Ke=C([T,$(400),$(424),$(500),$(501)]),Fe=qe,We=y({value:f(m())}),Ve=C([I(We),$(400),$(424),$(500),$(501)]),He=C([T,$(400),$(424),$(500),$(501)]),Ye=qe,Qe=y({value:f(v())}),Je=C([I(Qe),$(400),$(424),$(500),$(501)]),Xe=C([T,$(400),$(424),$(500),$(501)]),Ze=qe,et=y({value:f(b())}),tt=C([I(et),$(400),$(424),$(500),$(501)]),nt=C([T,$(400),$(424),$(500),$(501)]),st=qe,rt=y({value:f(v())}),ot=C([I(rt),$(400),$(424),$(500),$(501)]),at=qe,it=C([T,$(400),$(424),$(500),$(501)]),ct=C([T,$(424),$(500),$(501)]),ut=y({url:E(b(),d())}),lt=C([I(b()),$(400),$(424),$(500),$(501)]),dt=b(),ht=C([I(dt),T,$(500),$(501)]);e.AuthorizeRequestSchema=ge,e.AuthorizeResponseSchema=ve,e.AuthorizeResultSchema=fe,e.BackResponseSchema=$e,e.BaseModule=M,e.CameraModule=class extends M{constructor(){super("CameraModule")}async scanQRCode(e={}){const t=this.validate(N,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"scanQRCode",params:e}),s=this.validate(B,n);return s&&this.logger.warn("scanQRCode",`Unexpected response shape: ${s}`),n}},e.CheckoutModule=class extends M{constructor(){super("CheckoutModule")}async triggerCheckout(e){const t=this.validate(L,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"triggerCheckout",params:e}),s=this.validate(G,n);return s&&this.logger.warn("triggerCheckout",`Unexpected response shape: ${s}`),n}},e.ClearAuthorizationArtifactsResponseSchema=we,e.CloseResponseSchema=V,e.ContainerAnalyticsEventData={TRANSACTION_AMOUNT:"transaction_amount",TRANSACTION_CURRENCY:"transaction_currency",PAGE:"page"},e.ContainerAnalyticsEventName={DEFAULT:"DEFAULT"},e.ContainerAnalyticsEventState={HOMEPAGE:"HOMEPAGE",CHECKOUT_PAGE:"CHECKOUT_PAGE",BOOKING_COMPLETION:"BOOKING_COMPLETION",CUSTOM:"CUSTOM"},e.ContainerModule=class extends M{constructor(){super("ContainerModule")}async setBackgroundColor(e){const t=await this.invoke({method:"setBackgroundColor",params:{backgroundColor:e}}),n=this.validate(j,t);return n&&this.logger.warn("setBackgroundColor",`Unexpected response shape: ${n}`),t}async setTitle(e){const t=await this.invoke({method:"setTitle",params:{title:e}}),n=this.validate(z,t);return n&&this.logger.warn("setTitle",`Unexpected response shape: ${n}`),t}async hideBackButton(){const e=await this.invoke({method:"hideBackButton"}),t=this.validate(q,e);return t&&this.logger.warn("hideBackButton",`Unexpected response shape: ${t}`),e}async showBackButton(){const e=await this.invoke({method:"showBackButton"}),t=this.validate(K,e);return t&&this.logger.warn("showBackButton",`Unexpected response shape: ${t}`),e}async hideRefreshButton(){const e=await this.invoke({method:"hideRefreshButton"}),t=this.validate(F,e);return t&&this.logger.warn("hideRefreshButton",`Unexpected response shape: ${t}`),e}async showRefreshButton(){const e=await this.invoke({method:"showRefreshButton"}),t=this.validate(W,e);return t&&this.logger.warn("showRefreshButton",`Unexpected response shape: ${t}`),e}async close(){const e=await this.invoke({method:"close"}),t=this.validate(V,e);return t&&this.logger.warn("close",`Unexpected response shape: ${t}`),e}async onContentLoaded(){const e=await this.invoke({method:"onContentLoaded"}),t=this.validate(H,e);return t&&this.logger.warn("onContentLoaded",`Unexpected response shape: ${t}`),e}async showLoader(){const e=await this.invoke({method:"showLoader"}),t=this.validate(Y,e);return t&&this.logger.warn("showLoader",`Unexpected response shape: ${t}`),e}async hideLoader(){const e=await this.invoke({method:"hideLoader"}),t=this.validate(Q,e);return t&&this.logger.warn("hideLoader",`Unexpected response shape: ${t}`),e}async openExternalLink(e){const t=await this.invoke({method:"openExternalLink",params:{url:e}}),n=this.validate(J,t);return n&&this.logger.warn("openExternalLink",`Unexpected response shape: ${n}`),t}async onCtaTap(e){const t=await this.invoke({method:"onCtaTap",params:{action:e}}),n=this.validate(X,t);return n&&this.logger.warn("onCtaTap",`Unexpected response shape: ${n}`),t}async sendAnalyticsEvent(e){const t=this.validate(Z,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"sendAnalyticsEvent",params:{state:e.state,name:e.name,data:e.data?JSON.stringify(e.data):null}}),s=this.validate(ee,n);return s&&this.logger.warn("sendAnalyticsEvent",`Unexpected response shape: ${s}`),n}async isConnected(){return null!==U()?{status_code:200,result:{connected:!0}}:{status_code:404,error:"Not connected to Grab app"}}async getSessionParams(){const e=await this.invoke({method:"getSessionParams"}),t=this.validate(re,e);return t&&this.logger.warn("getSessionParams",`Unexpected response shape: ${t}`),e}},e.DRMPlaybackEventSchema=Ae,e.DeviceCapabilityModule=class extends M{constructor(){super("DeviceCapabilityModule")}async isEsimSupported(){const e=await this.invoke({method:"isEsimSupported"}),t=this.validate(ae,e);return t&&this.logger.warn("isEsimSupported",`Unexpected response shape: ${t}`),e}},e.DismissSplashScreenResponseSchema=ze,e.DownloadFileRequestSchema=ie,e.DownloadFileResponseSchema=ce,e.FetchEmailResponseSchema=Te,e.FetchEmailResultSchema=Ie,e.FileModule=class extends M{constructor(){super("FileModule")}async downloadFile(e){const t=this.validate(ie,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"downloadFile",params:e}),s=this.validate(ce,n);return s&&this.logger.warn("downloadFile",`Unexpected response shape: ${s}`),n}},e.GetAuthorizationArtifactsResponseSchema=Se,e.GetAuthorizationArtifactsResultSchema=ye,e.GetBooleanRequestSchema=Fe,e.GetBooleanResponseSchema=Ve,e.GetBooleanResultSchema=We,e.GetCoordinateResponseSchema=xe,e.GetCoordinateResultSchema=Ce,e.GetCountryCodeResponseSchema=_e,e.GetCountryCodeResultSchema=Ee,e.GetDoubleRequestSchema=st,e.GetDoubleResponseSchema=ot,e.GetDoubleResultSchema=rt,e.GetIntRequestSchema=Ye,e.GetIntResponseSchema=Je,e.GetIntResultSchema=Qe,e.GetLanguageLocaleIdentifierResponseSchema=Re,e.GetLanguageLocaleIdentifierResultSchema=be,e.GetSelectedTravelDestinationResponseSchema=ht,e.GetSelectedTravelDestinationResultSchema=dt,e.GetSessionParamsResponseSchema=re,e.GetSessionParamsResultSchema=se,e.GetStringRequestSchema=Ze,e.GetStringResponseSchema=tt,e.GetStringResultSchema=et,e.HasAccessToRequestSchema=Le,e.HasAccessToResponseSchema=Ge,e.HasAccessToResultSchema=De,e.HideBackButtonResponseSchema=q,e.HideLoaderResponseSchema=Q,e.HideRefreshButtonResponseSchema=F,e.IdentityModule=ke,e.IsConnectedResponseSchema=ne,e.IsConnectedResultSchema=te,e.IsEsimSupportedResponseSchema=ae,e.IsEsimSupportedResultSchema=oe,e.LocaleModule=class extends M{constructor(){super("LocaleModule")}async getLanguageLocaleIdentifier(){const e=await this.invoke({method:"getLanguageLocaleIdentifier"}),t=this.validate(Re,e);return t&&this.logger.warn("getLanguageLocaleIdentifier",`Unexpected response shape: ${t}`),e}},e.LocationModule=class extends M{constructor(){super("LocationModule")}async getCoordinate(){const e=await this.invoke({method:"getCoordinate"}),t=this.validate(xe,e);return t&&this.logger.warn("getCoordinate",`Unexpected response shape: ${t}`),e}observeLocationChange(){return this.invokeStream({method:"observeLocationChange"})}async getCountryCode(){const e=await this.invoke({method:"getCountryCode"}),t=this.validate(_e,e);return t&&this.logger.warn("getCountryCode",`Unexpected response shape: ${t}`),e}},e.Logger=A,e.MediaModule=class extends M{constructor(){super("MediaModule")}async playDRMContent(e){const t=await this.invoke({method:"playDRMContent",params:{data:e}}),n=this.validate(Ue,t);return n&&this.logger.warn("playDRMContent",`Unexpected response shape: ${n}`),t}observePlayDRMContent(e){return this.invokeStream({method:"observePlayDRMContent",params:{data:e}})}},e.ObserveDRMPlaybackResponseSchema=Me,e.OnContentLoadedResponseSchema=H,e.OnCtaTapResponseSchema=X,e.OpenExternalLinkResponseSchema=J,e.PlatformModule=class extends M{constructor(){super("PlatformModule")}async back(){const e=await this.invoke({method:"back"}),t=this.validate($e,e);return t&&this.logger.warn("back",`Unexpected response shape: ${t}`),e}},e.PlayDRMContentResponseSchema=Ue,e.ProfileModule=Be,e.RedirectToSystemWebViewRequestSchema=ut,e.RedirectToSystemWebViewResponseSchema=lt,e.ReloadScopesResponseSchema=je,e.RemoveAllResponseSchema=ct,e.RemoveResponseSchema=it,e.ScanQRCodeRequestSchema=N,e.ScanQRCodeResponseSchema=B,e.ScanQRCodeResultSchema=P,e.ScopeModule=class extends M{constructor(){super("ScopeModule")}async hasAccessTo(e,t){const n={module:e,method:t},s=this.validate(Le,n);if(s)return{status_code:400,error:s};const r=await this.invoke({method:"hasAccessTo",params:n}),o=this.validate(Ge,r);return o&&this.logger.warn("hasAccessTo",`Unexpected response shape: ${o}`),r}async reloadScopes(){const e=await this.invoke({method:"reloadScopes"}),t=this.validate(je,e);return t&&this.logger.warn("reloadScopes",`Unexpected response shape: ${t}`),e}},e.SendAnalyticsEventRequestSchema=Z,e.SendAnalyticsEventResponseSchema=ee,e.SetBackgroundColorResponseSchema=j,e.SetBooleanResponseSchema=Ke,e.SetDoubleResponseSchema=nt,e.SetIntResponseSchema=He,e.SetStringResponseSchema=Xe,e.SetTitleResponseSchema=z,e.ShowBackButtonResponseSchema=K,e.ShowLoaderResponseSchema=Y,e.ShowRefreshButtonResponseSchema=W,e.SplashScreenModule=class extends M{constructor(){super("SplashScreenModule")}async dismiss(){const e=await this.invoke({method:"dismiss"}),t=this.validate(ze,e);return t&&this.logger.warn("dismiss",`Unexpected response shape: ${t}`),e}},e.StorageModule=class extends M{constructor(){super("StorageModule")}async setBoolean(e,t){const n=await this.invoke({method:"setBoolean",params:{key:e,value:t}}),s=this.validate(Ke,n);return s&&this.logger.warn("setBoolean",`Unexpected response shape: ${s}`),n}async getBoolean(e){const t={key:e},n=this.validate(Fe,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getBoolean",params:t}),r=this.validate(Ve,s);return r&&this.logger.warn("getBoolean",`Unexpected response shape: ${r}`),s}async setInt(e,t){const n=await this.invoke({method:"setInt",params:{key:e,value:t}}),s=this.validate(He,n);return s&&this.logger.warn("setInt",`Unexpected response shape: ${s}`),n}async getInt(e){const t={key:e},n=this.validate(Ye,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getInt",params:t}),r=this.validate(Je,s);return r&&this.logger.warn("getInt",`Unexpected response shape: ${r}`),s}async setString(e,t){const n=await this.invoke({method:"setString",params:{key:e,value:t}}),s=this.validate(Xe,n);return s&&this.logger.warn("setString",`Unexpected response shape: ${s}`),n}async getString(e){const t={key:e},n=this.validate(Ze,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getString",params:t}),r=this.validate(tt,s);return r&&this.logger.warn("getString",`Unexpected response shape: ${r}`),s}async setDouble(e,t){const n=await this.invoke({method:"setDouble",params:{key:e,value:t}}),s=this.validate(nt,n);return s&&this.logger.warn("setDouble",`Unexpected response shape: ${s}`),n}async getDouble(e){const t={key:e},n=this.validate(st,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getDouble",params:t}),r=this.validate(ot,s);return r&&this.logger.warn("getDouble",`Unexpected response shape: ${r}`),s}async remove(e){const t={key:e},n=this.validate(at,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"remove",params:t}),r=this.validate(it,s);return r&&this.logger.warn("remove",`Unexpected response shape: ${r}`),s}async removeAll(){const e=await this.invoke({method:"removeAll"}),t=this.validate(ct,e);return t&&this.logger.warn("removeAll",`Unexpected response shape: ${t}`),e}},e.SystemWebViewKitModule=class extends M{constructor(){super("SystemWebViewKitModule")}async redirectToSystemWebView(e){const t=this.validate(ut,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"redirectToSystemWebView",params:e}),s=this.validate(lt,n);return s&&this.logger.warn("redirectToSystemWebView",`Unexpected response shape: ${s}`),n}},e.TriggerCheckoutRequestSchema=L,e.TriggerCheckoutResponseSchema=G,e.TriggerCheckoutResultSchema=D,e.UserAttributesModule=class extends M{constructor(){super("UserAttributesModule")}async getSelectedTravelDestination(){const e=await this.invoke({method:"getSelectedTravelDestination"}),t=this.validate(ht,e);return t&&this.logger.warn("getSelectedTravelDestination",`Unexpected response shape: ${t}`),e}},e.VerifyEmailRequestSchema=Oe,e.VerifyEmailResponseSchema=Pe,e.VerifyEmailResultSchema=Ne,e.isClientError=function(e){const t=e.status_code;return 400===t||401===t||403===t||404===t||424===t||426===t},e.isError=function(e){return"string"==typeof e.error&&e.error.length>0},e.isFound=function(e){return 302===e.status_code},e.isNoContent=function(e){return 204===e.status_code},e.isOk=function(e){return 200===e.status_code},e.isRedirection=function(e){return 302===e.status_code},e.isServerError=function(e){return 500===e.status_code||501===e.status_code},e.isSuccess=function(e){return 200===e.status_code||204===e.status_code}});
|
|
7
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).SuperAppSDK={})}(this,function(e){"use strict";var t,n={exports:{}},s=(t||(t=1,function(e){function t(e){var t=!1;return{isUnsubscribed:function(){return t},unsubscribe:function(){t||(e(),t=!0)}}}function n(e){return{subscribe:e,then:function(t,n){return new Promise(function(s,r){try{var o=null,a=!1;o=e({next:function(e){s(null==t?void 0:t(e)),o&&o.unsubscribe(),a=!0}}),a&&o&&o.unsubscribe()}catch(e){null==n?r(e):s(n(e))}})}}}function s(s,r){return r.funcNameToWrap,function(s,r){var o=r.callbackNameFunc,a=r.funcToWrap;return n(function(n){var r,i=o();return s[i]=function(t){if(function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(!e)return!1;var s=function(e){return Object.keys(e).concat(Object.getOwnPropertyNames(Object.getPrototypeOf(e)))}(e);return t.every(function(e){return 0<=s.indexOf(e)})}(t.result,"event"))t.result.event===e.StreamEvent.STREAM_TERMINATED&&r.unsubscribe();else{var s=t.result,o=t.error,a=t.status_code;n&&n.next&&n.next({result:null===s?void 0:s,error:null===o?void 0:o,status_code:null===a?void 0:a})}},a(i),r=t(function(){s[i]=void 0,n&&n.complete&&n.complete()})})}(s,function(e,t){var n={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(s=Object.getOwnPropertySymbols(e);r<s.length;r++)t.indexOf(s[r])<0&&(n[s[r]]=e[s[r]])}return n}(r,["funcNameToWrap"]))}(e.StreamEvent||(e.StreamEvent={})).STREAM_TERMINATED="STREAM_TERMINATED",e.createDataStream=n,e.createSubscription=t,e.getModuleEnvironment=function(e,t){return e[t]?"android":e.webkit&&e.webkit.messageHandlers&&e.webkit.messageHandlers[t]?"ios":void 0},e.wrapModule=function(e,t){var n;e[(n=t,"Wrapped"+n)]=function(e,t,n){return{invoke:function(r,o){return s(e,{funcNameToWrap:r,callbackNameFunc:function(){return function(e,t){var n=t.moduleName,s=t.funcName,r=0;return function(){for(var t,o,a="";(a=(t={moduleName:n,funcName:s,requestID:r}).moduleName+"_"+t.funcName+"Callback"+(null!==(o=t.requestID)?"_"+o:""))in e;)r+=1;return r+=1,a}()}(e,{moduleName:t,funcName:r})},funcToWrap:function(e){return n({callback:e,method:r,module:t,parameters:null!=o?o:{}})}})}}}(e,t,function(n){if(e[t]&&e[t][n.method]instanceof Function)e[t][n.method](JSON.stringify(n));else{if(!(e.webkit&&e.webkit.messageHandlers&&e.webkit.messageHandlers[t]))throw new Error("Unexpected method '"+n.method+"' for module '"+t+"'");e.webkit.messageHandlers[t].postMessage(n)}})},Object.defineProperty(e,"__esModule",{value:!0})}(n.exports)),n.exports);function r(e){return{lang:e?.lang??void 0,message:e?.message,abortEarly:e?.abortEarly??void 0,abortPipeEarly:e?.abortPipeEarly??void 0}}function o(e){const t=typeof e;return"string"===t?`"${e}"`:"number"===t||"bigint"===t||"boolean"===t?`${e}`:"object"===t||"function"===t?(e&&Object.getPrototypeOf(e)?.constructor?.name)??"null":t}function a(e,t,n,s,r){const a=r&&"input"in r?r.input:n.value,i=r?.expected??e.expects??null,c=r?.received??o(a),u={kind:e.kind,type:e.type,input:a,expected:i,received:c,message:`Invalid ${t}: ${i?`Expected ${i} but r`:"R"}eceived ${c}`,requirement:e.requirement,path:r?.path,issues:r?.issues,lang:s.lang,abortEarly:s.abortEarly,abortPipeEarly:s.abortPipeEarly},l="schema"===e.kind,d=r?.message??e.message??(e.reference,void u.lang)??(l?void u.lang:null)??s.message??void u.lang;void 0!==d&&(u.message="function"==typeof d?d(u):d),l&&(n.typed=!1),n.issues?n.issues.push(u):n.issues=[u]}function i(e){return{version:1,vendor:"valibot",validate:t=>e["~run"]({value:t},r())}}function c(e,t){return Object.hasOwn(e,t)&&"__proto__"!==t&&"prototype"!==t&&"constructor"!==t}function u(e,t){const n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??"never"}function l(e,t){return{kind:"validation",type:"min_length",reference:l,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&e.value.length<this.requirement&&a(this,"length",e,t,{received:`${e.value.length}`}),e}}}function d(e){return{kind:"validation",type:"url",reference:d,async:!1,expects:null,requirement(e){try{return new URL(e),!0}catch{return!1}},message:e,"~run"(e,t){return e.typed&&!this.requirement(e.value)&&a(this,"URL",e,t),e}}}function h(e,t,n){return"function"==typeof e.fallback?e.fallback(t,n):e.fallback}function p(e,t,n){return"function"==typeof e.default?e.default(t,n):e.default}function m(e){return{kind:"schema",type:"boolean",reference:m,expects:"boolean",async:!1,message:e,get"~standard"(){return i(this)},"~run"(e,t){return"boolean"==typeof e.value?e.typed=!0:a(this,"type",e,t),e}}}function g(e,t){return{kind:"schema",type:"literal",reference:g,expects:o(e),async:!1,literal:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){return e.value===this.literal?e.typed=!0:a(this,"type",e,t),e}}}function f(e,t){return{kind:"schema",type:"nullable",reference:f,expects:`(${e.expects} | null)`,async:!1,wrapped:e,default:t,get"~standard"(){return i(this)},"~run"(e,t){return null===e.value&&(void 0!==this.default&&(e.value=p(this,e,t)),null===e.value)?(e.typed=!0,e):this.wrapped["~run"](e,t)}}}function v(e){return{kind:"schema",type:"number",reference:v,expects:"number",async:!1,message:e,get"~standard"(){return i(this)},"~run"(e,t){return"number"!=typeof e.value||isNaN(e.value)?a(this,"type",e,t):e.typed=!0,e}}}function y(e,t){return{kind:"schema",type:"object",reference:y,expects:"Object",async:!1,entries:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const s in this.entries){const r=this.entries[s];if(s in n||("exact_optional"===r.type||"optional"===r.type||"nullish"===r.type)&&void 0!==r.default){const o=s in n?n[s]:p(r),a=r["~run"]({value:o},t);if(a.issues){const r={type:"object",origin:"value",input:n,key:s,value:o};for(const t of a.issues)t.path?t.path.unshift(r):t.path=[r],e.issues?.push(t);if(e.issues||(e.issues=a.issues),t.abortEarly){e.typed=!1;break}}a.typed||(e.typed=!1),e.value[s]=a.value}else if(void 0!==r.fallback)e.value[s]=h(r);else if("exact_optional"!==r.type&&"optional"!==r.type&&"nullish"!==r.type&&(a(this,"key",e,t,{input:void 0,expected:`"${s}"`,path:[{type:"object",origin:"key",input:n,key:s,value:n[s]}]}),t.abortEarly))break}}else a(this,"type",e,t);return e}}}function S(e,t){return{kind:"schema",type:"optional",reference:S,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:t,get"~standard"(){return i(this)},"~run"(e,t){return void 0===e.value&&(void 0!==this.default&&(e.value=p(this,e,t)),void 0===e.value)?(e.typed=!0,e):this.wrapped["~run"](e,t)}}}function w(e,t){return{kind:"schema",type:"picklist",reference:w,expects:u(e.map(o),"|"),async:!1,options:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){return this.options.includes(e.value)?e.typed=!0:a(this,"type",e,t),e}}}function k(e,t,n){return{kind:"schema",type:"record",reference:k,expects:"Object",async:!1,key:e,value:t,message:n,get"~standard"(){return i(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const s in n)if(c(n,s)){const r=n[s],o=this.key["~run"]({value:s},t);if(o.issues){const a={type:"object",origin:"key",input:n,key:s,value:r};for(const t of o.issues)t.path=[a],e.issues?.push(t);if(e.issues||(e.issues=o.issues),t.abortEarly){e.typed=!1;break}}const a=this.value["~run"]({value:r},t);if(a.issues){const o={type:"object",origin:"value",input:n,key:s,value:r};for(const t of a.issues)t.path?t.path.unshift(o):t.path=[o],e.issues?.push(t);if(e.issues||(e.issues=a.issues),t.abortEarly){e.typed=!1;break}}o.typed&&a.typed||(e.typed=!1),o.typed&&(e.value[o.value]=a.value)}}else a(this,"type",e,t);return e}}}function b(e){return{kind:"schema",type:"string",reference:b,expects:"string",async:!1,message:e,get"~standard"(){return i(this)},"~run"(e,t){return"string"==typeof e.value?e.typed=!0:a(this,"type",e,t),e}}}function R(e){let t;if(e)for(const n of e)t?t.push(...n.issues):t=n.issues;return t}function C(e,t){return{kind:"schema",type:"union",reference:C,expects:u(e.map(e=>e.expects),"|"),async:!1,options:e,message:t,get"~standard"(){return i(this)},"~run"(e,t){let n,s,r;for(const o of this.options){const a=o["~run"]({value:e.value},t);if(a.typed){if(!a.issues){n=a;break}s?s.push(a):s=[a]}else r?r.push(a):r=[a]}if(n)return n;if(s){if(1===s.length)return s[0];a(this,"type",e,t,{issues:R(s)}),e.typed=!0}else{if(1===r?.length)return r[0];a(this,"type",e,t,{issues:R(r)})}return e}}}function _(){return{kind:"schema",type:"unknown",reference:_,expects:"unknown",async:!1,get"~standard"(){return i(this)},"~run":e=>(e.typed=!0,e)}}function E(...e){return{...e[0],pipe:e,get"~standard"(){return i(this)},"~run"(t,n){for(const s of e)if("metadata"!==s.kind){if(t.issues&&("schema"===s.kind||"transformation"===s.kind)){t.typed=!1;break}t.issues&&(n.abortEarly||n.abortPipeEarly)||(t=s["~run"](t,n))}return t}}}function x(e){return"object"==typeof e&&null!==e&&"message"in e&&"string"==typeof e.message}class A{constructor(e){this.moduleName=e}formatPrefix(e){return`[SuperAppSDK][${this.moduleName}.${e}]`}warn(e,t){console.warn(`${this.formatPrefix(e)} ${t}`)}error(e,t){console.error(`${this.formatPrefix(e)} ${t}`)}}function U(){if("undefined"==typeof window||!window.navigator)return null;const e=window.navigator.userAgent;return e?function(e){if(!e||"string"!=typeof e)return null;const t=e.match(/(Grab|GrabBeta|GrabBetaDebug|GrabTaxi|GrabEarlyAccess)\/v?([0-9]+)\.([0-9]+)\.([0-9]+) \(.*(Android|iOS).*\)/i);return t?{appName:t[1],version:{major:Number(t[2]),minor:Number(t[3]),patch:Number(t[4])},platform:t[5]}:null}(e):null}class M{get wrappedModule(){return window[`Wrapped${this.name}`]}constructor(e){if(this.name=e,this.logger=new A(e),!this.wrappedModule)try{s.wrapModule(window,this.name)}catch(e){throw new Error(`Failed to initialize ${this.name}${x(e)?`: ${e.message}`:""}`,{cause:e})}}validate(e,t){const n=function(e,t){const n=e["~run"]({value:t},r(void 0));return{typed:n.typed,success:!n.issues,output:n.value,issues:n.issues}}(e,t);return n.success?null:n.issues.map(e=>{const t=e.path?.map(e=>String(e.key)).join(".");return t?`${t}: ${e.message}`:e.message}).join(", ")}checkSupport(e){const t=U();return t?e(t)?null:{status_code:426,error:"Upgrade Required: This method requires a newer version of the Grab app"}:{status_code:501,error:"Not implemented: This method requires the Grab app environment"}}async invoke(e){const{method:t,params:n}=e;try{return U()?await this.wrappedModule.invoke(t,n):{status_code:501,error:"Not implemented: This method requires the Grab app environment"}}catch(e){return{status_code:500,error:`Failed to invoke method: ${x(e)?e.message:"Unknown error"}`}}}createErrorStream(e){return{subscribe:t=>(t?.next?.(e),t?.complete?.(),{isUnsubscribed:()=>!0,unsubscribe:()=>{}}),then:t=>Promise.resolve(e).then(t)}}invokeStream(e){const{method:t,params:n}=e;try{return U()?this.wrappedModule.invoke(t,n):this.createErrorStream({status_code:501,error:"Not implemented: This method requires the Grab app environment"})}catch(e){return this.createErrorStream({status_code:500,error:`Failed to invoke method: ${x(e)?e.message:"Unknown error"}`})}}}const $=e=>y({status_code:g(e),error:b()}),I=e=>y({status_code:g(200),result:e}),T=y({status_code:g(204)}),O=y({status_code:g(302)}),N=y({title:S(b())}),P=y({qrCode:b()}),B=C([I(P),T,$(400),$(403),$(500),$(501)]),L=k(b(),_()),D=function e(t,n,s){return{kind:"schema",type:"variant",reference:e,expects:"Object",async:!1,key:t,options:n,message:s,get"~standard"(){return i(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){let s,r=0,o=this.key,i=[];const c=(e,a)=>{for(const u of e.options){if("variant"===u.type)c(u,new Set(a).add(u.key));else{let e=!0,c=0;for(const t of a){const s=u.entries[t];if(t in n?s["~run"]({typed:!1,value:n[t]},{abortEarly:!0}).issues:"exact_optional"!==s.type&&"optional"!==s.type&&"nullish"!==s.type){e=!1,o!==t&&(r<c||r===c&&t in n&&!(o in n))&&(r=c,o=t,i=[]),o===t&&i.push(u.entries[t].expects);break}c++}if(e){const e=u["~run"]({value:n},t);(!s||!s.typed&&e.typed)&&(s=e)}}if(s&&!s.issues)break}};if(c(this,new Set([this.key])),s)return s;a(this,"type",e,t,{input:n[o],expected:u(i,"|"),path:[{type:"object",origin:"value",input:n,key:o,value:n[o]}]})}else a(this,"type",e,t);return e}}}("status",[y({status:g("success"),transactionID:b()}),y({status:g("failure"),transactionID:b(),errorMessage:b(),errorCode:b()}),y({status:g("pending"),transactionID:b()}),y({status:g("userInitiatedCancel")})]),G=C([I(D),$(400),$(500),$(501)]),j=C([I(m()),T,$(400),$(500),$(501)]),z=C([I(m()),T,$(400),$(500),$(501)]),q=C([I(m()),T,$(500),$(501)]),F=C([I(m()),T,$(500),$(501)]),K=C([I(m()),T,$(500),$(501)]),W=C([I(m()),T,$(500),$(501)]),H=C([I(m()),T,$(500),$(501)]),V=C([I(m()),T,$(500),$(501)]),Y=C([I(m()),T,$(500),$(501)]),Q=C([I(m()),T,$(500),$(501)]),J=C([I(m()),T,$(400),$(500),$(501)]),X=C([I(m()),$(500),$(501)]),Z=y({state:E(b(),l(1)),name:E(b(),l(1)),data:S(k(b(),_()))}),ee=C([I(m()),T,$(400),$(500),$(501)]),te=y({connected:m()}),ne=C([I(te),$(404)]),se=b(),re=C([I(se),T,$(500),$(501)]),oe=m(),ae=C([I(oe),$(500),$(501)]),ie=y({fileUrl:E(b(),d()),fileName:E(b(),l(1))}),ce=C([T,$(400),$(500),$(501)]);function ue(e){const t=new Uint32Array(e);crypto.getRandomValues(t);let n="";for(let s=0;s<e;s+=1)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(t[s]%62);return n}async function le(e){const t=(new TextEncoder).encode(e);return function(e){const t=new Uint8Array(e);let n="";for(let e=0;e<t.byteLength;e+=1)n+=String.fromCharCode(t[e]);return btoa(n).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}(await crypto.subtle.digest("SHA-256",t))}function de(e,t){return e.major!==t.major?e.major>t.major:e.minor!==t.minor?e.minor>t.minor:e.patch>=t.patch}const he="grabid",pe={staging:"https://partner-api.stg-myteksi.com/grabid/v1/oauth2/.well-known/openid-configuration",production:"https://partner-api.grab.com/grabid/v1/oauth2/.well-known/openid-configuration"};class me extends Error{constructor(e,t){super(e),this.cause=t,this.name="AuthorizationConfigurationError"}}const ge=y({clientId:E(b(),l(1)),redirectUri:E(b(),d()),scope:E(b(),l(1)),environment:w(["staging","production"]),responseMode:S(w(["redirect","in_place"]))}),fe=y({code:b(),state:b()}),ve=C([I(fe),T,O,$(400),$(403),$(500),$(501)]),ye=y({state:b(),codeVerifier:b(),nonce:b(),redirectUri:b()}),Se=C([I(ye),T,$(400)]),we=C([T]);class ke extends M{constructor(){super("IdentityModule")}async fetchAuthorizationEndpoint(e){const t=pe[e];if(!t)throw new Error(`Invalid environment: ${e}. Must be 'staging' or 'production'`);try{const e=await fetch(t);if(!e.ok)throw console.error(`Failed to fetch OpenID configuration from ${t}: ${e.status} ${e.statusText}`),new me("Failed to fetch authorization configuration");const n=await e.json();if(!n.authorization_endpoint)throw console.error("authorization_endpoint not found in OpenID configuration response"),new me("Invalid authorization configuration");return n.authorization_endpoint}catch(e){if(console.error("Error fetching authorization endpoint:",e),e instanceof me)throw e;throw new Error("Something wrong happened when fetching authorization configuration",{cause:e})}}async generatePKCEArtifacts(){const e=ue(16),t=ue(32),n=(s=ue(64),btoa(s).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"));var s;return{nonce:e,state:t,codeVerifier:n,codeChallenge:await le(n),codeChallengeMethod:"S256"}}storePKCEArtifacts(e){this.setStorageItem("nonce",e.nonce),this.setStorageItem("state",e.state),this.setStorageItem("code_verifier",e.codeVerifier),this.setStorageItem("redirect_uri",e.redirectUri)}async getAuthorizationArtifacts(){const e=this.getStorageItem("state"),t=this.getStorageItem("code_verifier"),n=this.getStorageItem("nonce"),s=this.getStorageItem("redirect_uri");return null===e&&null===t&&null===n&&null===s?{status_code:204}:null!==e&&null!==t&&null!==n&&null!==s?{status_code:200,result:{state:e,codeVerifier:t,nonce:n,redirectUri:s}}:{status_code:400,error:"Inconsistent authorization artifacts in storage"}}async clearAuthorizationArtifacts(){return window.localStorage.removeItem(`${he}:nonce`),window.localStorage.removeItem(`${he}:state`),window.localStorage.removeItem(`${he}:code_verifier`),window.localStorage.removeItem(`${he}:redirect_uri`),window.localStorage.removeItem(`${he}:login_return_uri`),{status_code:204}}setStorageItem(e,t){window.localStorage.setItem(`${he}:${e}`,t)}getStorageItem(e){return window.localStorage.getItem(`${he}:${e}`)}static normalizeUrl(e){const t=new URL(e);return`${t.origin}${t.pathname}`}static buildAuthorizeUrl(e,t){return`${e}?${Object.entries(t).filter(e=>void 0!==e[1]&&null!==e[1]).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}`}static shouldUseWebConsent(e){const t=U();return!t||"staging"!==e.environment&&!de(t.version,{major:5,minor:396,patch:0})}async performWebAuthorization(e){let t;this.setStorageItem("login_return_uri",window.location.href),this.setStorageItem("redirect_uri",e.redirectUri);try{t=await this.fetchAuthorizationEndpoint(e.environment)}catch(e){return{status_code:400,error:x(e)?e.message:"Could not fetch authorization endpoint"}}const n={client_id:e.clientId,scope:e.scope,response_type:"code",redirect_uri:e.redirectUri,nonce:e.nonce,state:e.state,code_challenge_method:e.codeChallengeMethod,code_challenge:e.codeChallenge},s=ke.buildAuthorizeUrl(t,n);return window.location.assign(s),{status_code:302}}async performNativeAuthorization(e){const t=await this.invoke({method:"authorize",params:{clientId:e.clientId,redirectUri:e.actualRedirectUri,scope:e.scope,nonce:e.nonce,state:e.state,codeChallenge:e.codeChallenge,codeChallengeMethod:e.codeChallengeMethod,responseMode:e.responseMode}}),n=this.validate(ve,t);return n&&this.logger.warn("authorize",`Unexpected response shape: ${n}`),t}async authorize(e){const t=this.validate(ge,e);if(t)return{status_code:400,error:t};const n=await this.generatePKCEArtifacts(),s=e.responseMode||"redirect",r="in_place"===s?ke.normalizeUrl(window.location.href):e.redirectUri;this.storePKCEArtifacts({...n,redirectUri:r});const o={clientId:e.clientId,redirectUri:e.redirectUri,scope:e.scope,nonce:n.nonce,state:n.state,codeChallenge:n.codeChallenge,codeChallengeMethod:n.codeChallengeMethod};if(ke.shouldUseWebConsent(e))return this.performWebAuthorization({...o,environment:e.environment});try{const t=await this.performNativeAuthorization({...o,actualRedirectUri:r,responseMode:s});return 400===t.status_code||403===t.status_code||500===t.status_code||501===t.status_code?(console.error(`Native authorization returned ${t.status_code}, falling back to web flow:`,t.error),this.performWebAuthorization({...o,environment:e.environment})):t}catch(t){return console.error("Native authorization failed, falling back to web flow:",t),this.performWebAuthorization({...o,environment:e.environment})}}}const be=b(),Re=C([I(be),T,$(400),$(500),$(501)]),Ce=y({latitude:v(),longitude:v()}),_e=C([I(Ce),$(403),$(424),$(500),$(501)]),Ee=b(),xe=C([I(Ee),T,$(403),$(424),$(500),$(501)]),Ae=y({type:w(["START_PLAYBACK","PROGRESS_PLAYBACK","START_SEEK","STOP_SEEK","STOP_PLAYBACK","CLOSE_PLAYBACK","PAUSE_PLAYBACK","RESUME_PLAYBACK","FAST_FORWARD_PLAYBACK","REWIND_PLAYBACK","ERROR_PLAYBACK","CHANGE_VOLUME"]),titleId:b(),position:v(),length:v()}),Ue=C([I(Ae),T,$(400),$(424),$(500),$(501)]),Me=C([I(Ae),$(500),$(501)]),$e=y({endpoint:b(),method:w(["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"]),headers:S(k(b(),b())),query:S(k(b(),b())),body:S(_()),timeout:S(v())}),Ie=k(b(),_()),Te=C([(Oe=Ie,y({status_code:v(),result:Oe})),y({status_code:v(),error:b()})]);var Oe;const Ne=C([T,$(500),$(501)]),Pe=y({email:b()}),Be=C([I(Pe),T,$(400),$(403),$(426),$(500),$(501)]),Le=y({email:S(E(b(),l(1))),skipUserInput:S(m())}),De=y({email:b()}),Ge=C([I(De),T,$(400),$(403),$(426),$(500),$(501)]);class je extends M{constructor(){super("ProfileModule")}async fetchEmail(){const e=this.checkSupport(e=>de(e.version,je.MINIMUM_VERSION));if(e)return e;const t=await this.invoke({method:"fetchEmail"}),n=this.validate(Be,t);return n&&this.logger.warn("fetchEmail",`Unexpected response shape: ${n}`),t}async verifyEmail(e){const t=this.checkSupport(e=>de(e.version,je.MINIMUM_VERSION));if(t)return t;const n=this.validate(Le,e??{});if(n)return{status_code:400,error:n};const s=await this.invoke({method:"verifyEmail",params:e}),r=this.validate(Ge,s);return r&&this.logger.warn("verifyEmail",`Unexpected response shape: ${r}`),s}}je.MINIMUM_VERSION={major:5,minor:399,patch:0};const ze=y({module:E(b(),l(1)),method:E(b(),l(1))}),qe=m(),Fe=C([I(qe),$(400),$(424),$(500),$(501)]),Ke=C([T,$(424),$(500),$(501)]),We=C([T,$(400),$(403),$(500),$(501)]),He=y({key:E(b(),l(1))}),Ve=C([T,$(400),$(424),$(500),$(501)]),Ye=He,Qe=y({value:f(m())}),Je=C([I(Qe),$(400),$(424),$(500),$(501)]),Xe=C([T,$(400),$(424),$(500),$(501)]),Ze=He,et=y({value:f(v())}),tt=C([I(et),$(400),$(424),$(500),$(501)]),nt=C([T,$(400),$(424),$(500),$(501)]),st=He,rt=y({value:f(b())}),ot=C([I(rt),$(400),$(424),$(500),$(501)]),at=C([T,$(400),$(424),$(500),$(501)]),it=He,ct=y({value:f(v())}),ut=C([I(ct),$(400),$(424),$(500),$(501)]),lt=He,dt=C([T,$(400),$(424),$(500),$(501)]),ht=C([T,$(424),$(500),$(501)]),pt=y({url:E(b(),d())}),mt=C([I(b()),$(400),$(424),$(500),$(501)]),gt=b(),ft=C([I(gt),T,$(500),$(501)]);e.AuthorizeRequestSchema=ge,e.AuthorizeResponseSchema=ve,e.AuthorizeResultSchema=fe,e.BackResponseSchema=Ne,e.BaseModule=M,e.CameraModule=class extends M{constructor(){super("CameraModule")}async scanQRCode(e={}){const t=this.validate(N,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"scanQRCode",params:e}),s=this.validate(B,n);return s&&this.logger.warn("scanQRCode",`Unexpected response shape: ${s}`),n}},e.CheckoutModule=class extends M{constructor(){super("CheckoutModule")}async triggerCheckout(e){const t=this.validate(L,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"triggerCheckout",params:e}),s=this.validate(G,n);return s&&this.logger.warn("triggerCheckout",`Unexpected response shape: ${s}`),n}},e.ClearAuthorizationArtifactsResponseSchema=we,e.CloseResponseSchema=H,e.ContainerAnalyticsEventData={TRANSACTION_AMOUNT:"transaction_amount",TRANSACTION_CURRENCY:"transaction_currency",PAGE:"page"},e.ContainerAnalyticsEventName={DEFAULT:"DEFAULT"},e.ContainerAnalyticsEventState={HOMEPAGE:"HOMEPAGE",CHECKOUT_PAGE:"CHECKOUT_PAGE",BOOKING_COMPLETION:"BOOKING_COMPLETION",CUSTOM:"CUSTOM"},e.ContainerModule=class extends M{constructor(){super("ContainerModule")}async setBackgroundColor(e){const t=await this.invoke({method:"setBackgroundColor",params:{backgroundColor:e}}),n=this.validate(j,t);return n&&this.logger.warn("setBackgroundColor",`Unexpected response shape: ${n}`),t}async setTitle(e){const t=await this.invoke({method:"setTitle",params:{title:e}}),n=this.validate(z,t);return n&&this.logger.warn("setTitle",`Unexpected response shape: ${n}`),t}async hideBackButton(){const e=await this.invoke({method:"hideBackButton"}),t=this.validate(q,e);return t&&this.logger.warn("hideBackButton",`Unexpected response shape: ${t}`),e}async showBackButton(){const e=await this.invoke({method:"showBackButton"}),t=this.validate(F,e);return t&&this.logger.warn("showBackButton",`Unexpected response shape: ${t}`),e}async hideRefreshButton(){const e=await this.invoke({method:"hideRefreshButton"}),t=this.validate(K,e);return t&&this.logger.warn("hideRefreshButton",`Unexpected response shape: ${t}`),e}async showRefreshButton(){const e=await this.invoke({method:"showRefreshButton"}),t=this.validate(W,e);return t&&this.logger.warn("showRefreshButton",`Unexpected response shape: ${t}`),e}async close(){const e=await this.invoke({method:"close"}),t=this.validate(H,e);return t&&this.logger.warn("close",`Unexpected response shape: ${t}`),e}async onContentLoaded(){const e=await this.invoke({method:"onContentLoaded"}),t=this.validate(V,e);return t&&this.logger.warn("onContentLoaded",`Unexpected response shape: ${t}`),e}async showLoader(){const e=await this.invoke({method:"showLoader"}),t=this.validate(Y,e);return t&&this.logger.warn("showLoader",`Unexpected response shape: ${t}`),e}async hideLoader(){const e=await this.invoke({method:"hideLoader"}),t=this.validate(Q,e);return t&&this.logger.warn("hideLoader",`Unexpected response shape: ${t}`),e}async openExternalLink(e){const t=await this.invoke({method:"openExternalLink",params:{url:e}}),n=this.validate(J,t);return n&&this.logger.warn("openExternalLink",`Unexpected response shape: ${n}`),t}async onCtaTap(e){const t=await this.invoke({method:"onCtaTap",params:{action:e}}),n=this.validate(X,t);return n&&this.logger.warn("onCtaTap",`Unexpected response shape: ${n}`),t}async sendAnalyticsEvent(e){const t=this.validate(Z,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"sendAnalyticsEvent",params:{state:e.state,name:e.name,data:e.data?JSON.stringify(e.data):null}}),s=this.validate(ee,n);return s&&this.logger.warn("sendAnalyticsEvent",`Unexpected response shape: ${s}`),n}async isConnected(){return null!==U()?{status_code:200,result:{connected:!0}}:{status_code:404,error:"Not connected to Grab app"}}async getSessionParams(){const e=await this.invoke({method:"getSessionParams"}),t=this.validate(re,e);return t&&this.logger.warn("getSessionParams",`Unexpected response shape: ${t}`),e}},e.DRMPlaybackEventSchema=Ae,e.DeviceModule=class extends M{constructor(){super("DeviceModule")}async isEsimSupported(){const e=await this.invoke({method:"isEsimSupported"}),t=this.validate(ae,e);return t&&this.logger.warn("isEsimSupported",`Unexpected response shape: ${t}`),e}},e.DismissSplashScreenResponseSchema=We,e.DownloadFileRequestSchema=ie,e.DownloadFileResponseSchema=ce,e.FetchEmailResponseSchema=Be,e.FetchEmailResultSchema=Pe,e.FileModule=class extends M{constructor(){super("FileModule")}async downloadFile(e){const t=this.validate(ie,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"downloadFile",params:e}),s=this.validate(ce,n);return s&&this.logger.warn("downloadFile",`Unexpected response shape: ${s}`),n}},e.GetAuthorizationArtifactsResponseSchema=Se,e.GetAuthorizationArtifactsResultSchema=ye,e.GetBooleanRequestSchema=Ye,e.GetBooleanResponseSchema=Je,e.GetBooleanResultSchema=Qe,e.GetCoordinateResponseSchema=_e,e.GetCoordinateResultSchema=Ce,e.GetCountryCodeResponseSchema=xe,e.GetCountryCodeResultSchema=Ee,e.GetDoubleRequestSchema=it,e.GetDoubleResponseSchema=ut,e.GetDoubleResultSchema=ct,e.GetIntRequestSchema=Ze,e.GetIntResponseSchema=tt,e.GetIntResultSchema=et,e.GetLanguageLocaleIdentifierResponseSchema=Re,e.GetLanguageLocaleIdentifierResultSchema=be,e.GetSelectedTravelDestinationResponseSchema=ft,e.GetSelectedTravelDestinationResultSchema=gt,e.GetSessionParamsResponseSchema=re,e.GetSessionParamsResultSchema=se,e.GetStringRequestSchema=st,e.GetStringResponseSchema=ot,e.GetStringResultSchema=rt,e.HasAccessToRequestSchema=ze,e.HasAccessToResponseSchema=Fe,e.HasAccessToResultSchema=qe,e.HideBackButtonResponseSchema=q,e.HideLoaderResponseSchema=Q,e.HideRefreshButtonResponseSchema=K,e.IdentityModule=ke,e.IsConnectedResponseSchema=ne,e.IsConnectedResultSchema=te,e.IsEsimSupportedResponseSchema=ae,e.IsEsimSupportedResultSchema=oe,e.LocaleModule=class extends M{constructor(){super("LocaleModule")}async getLanguageLocaleIdentifier(){const e=await this.invoke({method:"getLanguageLocaleIdentifier"}),t=this.validate(Re,e);return t&&this.logger.warn("getLanguageLocaleIdentifier",`Unexpected response shape: ${t}`),e}},e.LocationModule=class extends M{constructor(){super("LocationModule")}async getCoordinate(){const e=await this.invoke({method:"getCoordinate"}),t=this.validate(_e,e);return t&&this.logger.warn("getCoordinate",`Unexpected response shape: ${t}`),e}observeLocationChange(){return this.invokeStream({method:"observeLocationChange"})}async getCountryCode(){const e=await this.invoke({method:"getCountryCode"}),t=this.validate(xe,e);return t&&this.logger.warn("getCountryCode",`Unexpected response shape: ${t}`),e}},e.Logger=A,e.MediaModule=class extends M{constructor(){super("MediaModule")}async playDRMContent(e){const t=await this.invoke({method:"playDRMContent",params:{data:e}}),n=this.validate(Ue,t);return n&&this.logger.warn("playDRMContent",`Unexpected response shape: ${n}`),t}observePlayDRMContent(e){return this.invokeStream({method:"observePlayDRMContent",params:{data:e}})}},e.NetworkModule=class extends M{constructor(){super("NetworkModule")}async send(e){const t=this.validate($e,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"send",params:e});if(function(e){return"result"in e&&null!==e.result&&void 0!==e.result}(n)&&"string"==typeof n.result)try{const e=JSON.parse(n.result);return{...n,result:e}}catch{return{status_code:500,error:"Failed to parse response result as JSON"}}const s=this.validate(Te,n);return s&&this.logger.warn("send",`Unexpected response shape: ${s}`),n}},e.ObserveDRMPlaybackResponseSchema=Me,e.OnContentLoadedResponseSchema=V,e.OnCtaTapResponseSchema=X,e.OpenExternalLinkResponseSchema=J,e.PlatformModule=class extends M{constructor(){super("PlatformModule")}async back(){const e=await this.invoke({method:"back"}),t=this.validate(Ne,e);return t&&this.logger.warn("back",`Unexpected response shape: ${t}`),e}},e.PlayDRMContentResponseSchema=Ue,e.ProfileModule=je,e.RedirectToSystemWebViewRequestSchema=pt,e.RedirectToSystemWebViewResponseSchema=mt,e.ReloadScopesResponseSchema=Ke,e.RemoveAllResponseSchema=ht,e.RemoveResponseSchema=dt,e.ScanQRCodeRequestSchema=N,e.ScanQRCodeResponseSchema=B,e.ScanQRCodeResultSchema=P,e.ScopeModule=class extends M{constructor(){super("ScopeModule")}async hasAccessTo(e,t){const n={module:e,method:t},s=this.validate(ze,n);if(s)return{status_code:400,error:s};const r=await this.invoke({method:"hasAccessTo",params:n}),o=this.validate(Fe,r);return o&&this.logger.warn("hasAccessTo",`Unexpected response shape: ${o}`),r}async reloadScopes(){const e=await this.invoke({method:"reloadScopes"}),t=this.validate(Ke,e);return t&&this.logger.warn("reloadScopes",`Unexpected response shape: ${t}`),e}},e.SendAnalyticsEventRequestSchema=Z,e.SendAnalyticsEventResponseSchema=ee,e.SendRequestSchema=$e,e.SendResponseSchema=Te,e.SendResultSchema=Ie,e.SetBackgroundColorResponseSchema=j,e.SetBooleanResponseSchema=Ve,e.SetDoubleResponseSchema=at,e.SetIntResponseSchema=Xe,e.SetStringResponseSchema=nt,e.SetTitleResponseSchema=z,e.ShowBackButtonResponseSchema=F,e.ShowLoaderResponseSchema=Y,e.ShowRefreshButtonResponseSchema=W,e.SplashScreenModule=class extends M{constructor(){super("SplashScreenModule")}async dismiss(){const e=await this.invoke({method:"dismiss"}),t=this.validate(We,e);return t&&this.logger.warn("dismiss",`Unexpected response shape: ${t}`),e}},e.StorageModule=class extends M{constructor(){super("StorageModule")}async setBoolean(e,t){const n=await this.invoke({method:"setBoolean",params:{key:e,value:t}}),s=this.validate(Ve,n);return s&&this.logger.warn("setBoolean",`Unexpected response shape: ${s}`),n}async getBoolean(e){const t={key:e},n=this.validate(Ye,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getBoolean",params:t}),r=this.validate(Je,s);return r&&this.logger.warn("getBoolean",`Unexpected response shape: ${r}`),s}async setInt(e,t){const n=await this.invoke({method:"setInt",params:{key:e,value:t}}),s=this.validate(Xe,n);return s&&this.logger.warn("setInt",`Unexpected response shape: ${s}`),n}async getInt(e){const t={key:e},n=this.validate(Ze,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getInt",params:t}),r=this.validate(tt,s);return r&&this.logger.warn("getInt",`Unexpected response shape: ${r}`),s}async setString(e,t){const n=await this.invoke({method:"setString",params:{key:e,value:t}}),s=this.validate(nt,n);return s&&this.logger.warn("setString",`Unexpected response shape: ${s}`),n}async getString(e){const t={key:e},n=this.validate(st,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getString",params:t}),r=this.validate(ot,s);return r&&this.logger.warn("getString",`Unexpected response shape: ${r}`),s}async setDouble(e,t){const n=await this.invoke({method:"setDouble",params:{key:e,value:t}}),s=this.validate(at,n);return s&&this.logger.warn("setDouble",`Unexpected response shape: ${s}`),n}async getDouble(e){const t={key:e},n=this.validate(it,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"getDouble",params:t}),r=this.validate(ut,s);return r&&this.logger.warn("getDouble",`Unexpected response shape: ${r}`),s}async remove(e){const t={key:e},n=this.validate(lt,t);if(n)return{status_code:400,error:n};const s=await this.invoke({method:"remove",params:t}),r=this.validate(dt,s);return r&&this.logger.warn("remove",`Unexpected response shape: ${r}`),s}async removeAll(){const e=await this.invoke({method:"removeAll"}),t=this.validate(ht,e);return t&&this.logger.warn("removeAll",`Unexpected response shape: ${t}`),e}},e.SystemWebViewKitModule=class extends M{constructor(){super("SystemWebViewKitModule")}async redirectToSystemWebView(e){const t=this.validate(pt,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"redirectToSystemWebView",params:e}),s=this.validate(mt,n);return s&&this.logger.warn("redirectToSystemWebView",`Unexpected response shape: ${s}`),n}},e.TriggerCheckoutRequestSchema=L,e.TriggerCheckoutResponseSchema=G,e.TriggerCheckoutResultSchema=D,e.UserAttributesModule=class extends M{constructor(){super("UserAttributesModule")}async getSelectedTravelDestination(){const e=await this.invoke({method:"getSelectedTravelDestination"}),t=this.validate(ft,e);return t&&this.logger.warn("getSelectedTravelDestination",`Unexpected response shape: ${t}`),e}},e.VerifyEmailRequestSchema=Le,e.VerifyEmailResponseSchema=Ge,e.VerifyEmailResultSchema=De,e.isClientError=function(e){return e.status_code>=400&&e.status_code<500},e.isError=function(e){return e.status_code>=400&&e.status_code<600||"string"==typeof e.error&&e.error.length>0},e.isFound=function(e){return 302===e.status_code},e.isNoContent=function(e){return 204===e.status_code},e.isOk=function(e){return 200===e.status_code},e.isRedirection=function(e){return 302===e.status_code},e.isServerError=function(e){return e.status_code>=500&&e.status_code<600},e.isSuccess=function(e){return e.status_code>=200&&e.status_code<300}});
|
package/package.json
CHANGED
package/skills/SKILL.md
CHANGED
|
@@ -280,8 +280,8 @@ JSBridge module for controlling the WebView container.
|
|
|
280
280
|
- `showLoader(): Promise<{ status_code: 204 } | { error: string; status_code: 500 } | { error: string; status_code: 501 } | { result: boolean; status_code: 200 }>` — Show the full-screen loading indicator.
|
|
281
281
|
- `showRefreshButton(): Promise<{ status_code: 204 } | { error: string; status_code: 500 } | { error: string; status_code: 501 } | { result: boolean; status_code: 200 }>` — Show the refresh button on the container header.
|
|
282
282
|
|
|
283
|
-
#### `
|
|
284
|
-
JSBridge module for querying native device
|
|
283
|
+
#### `DeviceModule`
|
|
284
|
+
JSBridge module for querying native device information.
|
|
285
285
|
- `isEsimSupported(): Promise<{ error: string; status_code: 500 } | { error: string; status_code: 501 } | { result: boolean; status_code: 200 }>` — Checks whether the current device supports eSIM.
|
|
286
286
|
|
|
287
287
|
#### `FileModule`
|
|
@@ -316,6 +316,10 @@ JSBridge module for playing DRM-protected media content.
|
|
|
316
316
|
- `observePlayDRMContent(data: DRMContentConfig): ObserveDRMPlaybackResponse` — Observes DRM-protected media content playback events.
|
|
317
317
|
- `playDRMContent(data: DRMContentConfig): Promise<{ status_code: 204 } | { error: string; status_code: 400 } | { error: string; status_code: 500 } | { error: string; status_code: 501 } | { error: string; status_code: 424 } | { result: { length: number; position: number; titleId: string; type: "START_PLAYBACK" | "PROGRESS_PLAYBACK" | "START_SEEK" | "STOP_SEEK" | "STOP_PLAYBACK" | "CLOSE_PLAYBACK" | "PAUSE_PLAYBACK" | "RESUME_PLAYBACK" | "FAST_FORWARD_PLAYBACK" | "REWIND_PLAYBACK" | "ERROR_PLAYBACK" | "CHANGE_VOLUME" }; status_code: 200 }>` — Plays DRM-protected media content in the native media player.
|
|
318
318
|
|
|
319
|
+
#### `NetworkModule`
|
|
320
|
+
JSBridge module for making network requests via the native bridge.
|
|
321
|
+
- `send(request: { body?: unknown; endpoint: string; headers?: Record<string, string>; method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS"; query?: Record<string, string>; timeout?: number }): Promise<{ result: Record<string, unknown>; status_code: number } | { error: string; status_code: number }>` — Sends a network request via the native bridge.
|
|
322
|
+
|
|
319
323
|
#### `PlatformModule`
|
|
320
324
|
JSBridge module for controlling platform navigation.
|
|
321
325
|
- `back(): Promise<{ status_code: 204 } | { error: string; status_code: 500 } | { error: string; status_code: 501 }>` — Triggers the native platform back navigation.
|
|
@@ -402,7 +406,7 @@ isServerError<T>(response: T): response is Extract<T, { status_code: 500 | 501 }
|
|
|
402
406
|
```
|
|
403
407
|
|
|
404
408
|
#### `isSuccess`
|
|
405
|
-
Type guard to check if a JSBridge response is successful (status codes
|
|
409
|
+
Type guard to check if a JSBridge response is successful (2xx status codes).
|
|
406
410
|
```ts
|
|
407
411
|
isSuccess<T>(response: T): response is Extract<T, { status_code: 200 | 204 }>
|
|
408
412
|
```
|