@grabjs/superapp-sdk 2.0.0-beta.32 → 2.0.0-beta.34

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/dist/index.d.ts CHANGED
@@ -2294,9 +2294,7 @@ export declare type HasAccessToResponse = InferOutput<typeof HasAccessToResponse
2294
2294
  */
2295
2295
  export declare const HasAccessToResponseSchema: v.UnionSchema<[v.ObjectSchema<{
2296
2296
  readonly status_code: v.LiteralSchema<200, undefined>;
2297
- readonly result: v.ObjectSchema<{
2298
- readonly hasAccess: v.BooleanSchema<undefined>;
2299
- }, undefined>;
2297
+ readonly result: v.BooleanSchema<undefined>;
2300
2298
  }, undefined>, v.ObjectSchema<{
2301
2299
  readonly status_code: v.LiteralSchema<400, undefined>;
2302
2300
  readonly error: v.StringSchema<undefined>;
@@ -2312,18 +2310,18 @@ export declare const HasAccessToResponseSchema: v.UnionSchema<[v.ObjectSchema<{
2312
2310
  }, undefined>], undefined>;
2313
2311
 
2314
2312
  /**
2315
- * Result object containing the access check result.
2313
+ * Boolean result indicating whether the MiniApp has access to the specified API.
2316
2314
  *
2317
2315
  * @example
2318
2316
  * **Has access:**
2319
2317
  * ```typescript
2320
- * { hasAccess: true }
2318
+ * true
2321
2319
  * ```
2322
2320
  *
2323
2321
  * @example
2324
2322
  * **No access:**
2325
2323
  * ```typescript
2326
- * { hasAccess: false }
2324
+ * false
2327
2325
  * ```
2328
2326
  *
2329
2327
  * @public
@@ -2335,9 +2333,7 @@ export declare type HasAccessToResult = InferOutput<typeof HasAccessToResultSche
2335
2333
  *
2336
2334
  * @public
2337
2335
  */
2338
- export declare const HasAccessToResultSchema: v.ObjectSchema<{
2339
- readonly hasAccess: v.BooleanSchema<undefined>;
2340
- }, undefined>;
2336
+ export declare const HasAccessToResultSchema: v.BooleanSchema<undefined>;
2341
2337
 
2342
2338
  /**
2343
2339
  * Response when hiding the back button.
@@ -4132,7 +4128,7 @@ export declare class ScopeModule extends BaseModule {
4132
4128
  *
4133
4129
  * // Handle the response
4134
4130
  * if (isSuccess(response)) {
4135
- * console.log('Has access:', response.result.hasAccess);
4131
+ * console.log('Has access:', response.result);
4136
4132
  * } else if (isError(response)) {
4137
4133
  * console.error(`Error ${response.status_code}: ${response.error}`);
4138
4134
  * } else {
package/dist/index.esm.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
- var e,t={exports:{}},n=(e||(e=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(r,s){try{var o=null,a=!1;o=e({next:function(e){r(null==t?void 0:t(e)),o&&o.unsubscribe(),a=!0}}),a&&o&&o.unsubscribe()}catch(e){null==n?s(e):r(n(e))}})}}}function r(r,s){return s.funcNameToWrap,function(r,s){var o=s.callbackNameFunc,a=s.funcToWrap;return n(function(n){var s,i=o();return r[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 r=function(e){return Object.keys(e).concat(Object.getOwnPropertyNames(Object.getPrototypeOf(e)))}(e);return t.every(function(e){return 0<=r.indexOf(e)})}(t.result,"event"))t.result.event===e.StreamEvent.STREAM_TERMINATED&&s.unsubscribe();else{var r=t.result,o=t.error,a=t.status_code;n&&n.next&&n.next({result:null===r?void 0:r,error:null===o?void 0:o,status_code:null===a?void 0:a})}},a(i),s=t(function(){r[i]=void 0,n&&n.complete&&n.complete()})})}(r,function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&(n[r[s]]=e[r[s]])}return n}(s,["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(s,o){return r(e,{funcNameToWrap:s,callbackNameFunc:function(){return function(e,t){var n=t.moduleName,r=t.funcName,s=0;return function(){for(var t,o,a="";(a=(t={moduleName:n,funcName:r,requestID:s}).moduleName+"_"+t.funcName+"Callback"+(null!==(o=t.requestID)?"_"+o:""))in e;)s+=1;return s+=1,a}()}(e,{moduleName:t,funcName:s})},funcToWrap:function(e){return n({callback:e,method:s,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})}(t.exports)),t.exports);function r(e){return{lang:e?.lang??void 0,message:e?.message,abortEarly:e?.abortEarly??void 0,abortPipeEarly:e?.abortPipeEarly??void 0}}function s(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 o(e,t,n,r,o){const a=o&&"input"in o?o.input:n.value,i=o?.expected??e.expects??null,c=o?.received??s(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:o?.path,issues:o?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},d="schema"===e.kind,l=o?.message??e.message??(e.reference,void u.lang)??(d?void u.lang:null)??r.message??void u.lang;void 0!==l&&(u.message="function"==typeof l?l(u):l),d&&(n.typed=!1),n.issues?n.issues.push(u):n.issues=[u]}function a(e){return{version:1,vendor:"valibot",validate:t=>e["~run"]({value:t},r())}}function i(e,t){return Object.hasOwn(e,t)&&"__proto__"!==t&&"prototype"!==t&&"constructor"!==t}function c(e,t){const n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??"never"}function u(e,t){return{kind:"validation",type:"min_length",reference:u,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&e.value.length<this.requirement&&o(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)&&o(this,"URL",e,t),e}}}function l(e,t,n){return"function"==typeof e.fallback?e.fallback(t,n):e.fallback}function h(e,t,n){return"function"==typeof e.default?e.default(t,n):e.default}function p(e){return{kind:"schema",type:"boolean",reference:p,expects:"boolean",async:!1,message:e,get"~standard"(){return a(this)},"~run"(e,t){return"boolean"==typeof e.value?e.typed=!0:o(this,"type",e,t),e}}}function m(e,t){return{kind:"schema",type:"literal",reference:m,expects:s(e),async:!1,literal:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){return e.value===this.literal?e.typed=!0:o(this,"type",e,t),e}}}function g(e,t){return{kind:"schema",type:"nullable",reference:g,expects:`(${e.expects} | null)`,async:!1,wrapped:e,default:t,get"~standard"(){return a(this)},"~run"(e,t){return null===e.value&&(void 0!==this.default&&(e.value=h(this,e,t)),null===e.value)?(e.typed=!0,e):this.wrapped["~run"](e,t)}}}function f(e){return{kind:"schema",type:"number",reference:f,expects:"number",async:!1,message:e,get"~standard"(){return a(this)},"~run"(e,t){return"number"!=typeof e.value||isNaN(e.value)?o(this,"type",e,t):e.typed=!0,e}}}function v(e,t){return{kind:"schema",type:"object",reference:v,expects:"Object",async:!1,entries:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const r in this.entries){const s=this.entries[r];if(r in n||("exact_optional"===s.type||"optional"===s.type||"nullish"===s.type)&&void 0!==s.default){const o=r in n?n[r]:h(s),a=s["~run"]({value:o},t);if(a.issues){const s={type:"object",origin:"value",input:n,key:r,value:o};for(const t of a.issues)t.path?t.path.unshift(s):t.path=[s],e.issues?.push(t);if(e.issues||(e.issues=a.issues),t.abortEarly){e.typed=!1;break}}a.typed||(e.typed=!1),e.value[r]=a.value}else if(void 0!==s.fallback)e.value[r]=l(s);else if("exact_optional"!==s.type&&"optional"!==s.type&&"nullish"!==s.type&&(o(this,"key",e,t,{input:void 0,expected:`"${r}"`,path:[{type:"object",origin:"key",input:n,key:r,value:n[r]}]}),t.abortEarly))break}}else o(this,"type",e,t);return e}}}function y(e,t){return{kind:"schema",type:"optional",reference:y,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:t,get"~standard"(){return a(this)},"~run"(e,t){return void 0===e.value&&(void 0!==this.default&&(e.value=h(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:c(e.map(s),"|"),async:!1,options:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){return this.options.includes(e.value)?e.typed=!0:o(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 a(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const r in n)if(i(n,r)){const s=n[r],o=this.key["~run"]({value:r},t);if(o.issues){const a={type:"object",origin:"key",input:n,key:r,value:s};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:s},t);if(a.issues){const o={type:"object",origin:"value",input:n,key:r,value:s};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 o(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 a(this)},"~run"(e,t){return"string"==typeof e.value?e.typed=!0:o(this,"type",e,t),e}}}function _(e){let t;if(e)for(const n of e)t?t.push(...n.issues):t=n.issues;return t}function x(e,t){return{kind:"schema",type:"union",reference:x,expects:c(e.map(e=>e.expects),"|"),async:!1,options:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){let n,r,s;for(const o of this.options){const a=o["~run"]({value:e.value},t);if(a.typed){if(!a.issues){n=a;break}r?r.push(a):r=[a]}else s?s.push(a):s=[a]}if(n)return n;if(r){if(1===r.length)return r[0];o(this,"type",e,t,{issues:_(r)}),e.typed=!0}else{if(1===s?.length)return s[0];o(this,"type",e,t,{issues:_(s)})}return e}}}function S(){return{kind:"schema",type:"unknown",reference:S,expects:"unknown",async:!1,get"~standard"(){return a(this)},"~run":e=>(e.typed=!0,e)}}function E(...e){return{...e[0],pipe:e,get"~standard"(){return a(this)},"~run"(t,n){for(const r of e)if("metadata"!==r.kind){if(t.issues&&("schema"===r.kind||"transformation"===r.kind)){t.typed=!1;break}t.issues&&(n.abortEarly||n.abortPipeEarly)||(t=r["~run"](t,n))}return t}}}function U(e){return"object"==typeof e&&null!==e&&"message"in e&&"string"==typeof e.message}class C{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 $(){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 A{get wrappedModule(){return window[`Wrapped${this.name}`]}constructor(e){if(this.name=e,this.logger=new C(e),!this.wrappedModule)try{n.wrapModule(window,this.name)}catch(e){throw new Error(`Failed to initialize ${this.name}${U(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=$();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 $()?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: ${U(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 $()?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: ${U(e)?e.message:"Unknown error"}`})}}}function I(e){return 200===e.status_code||204===e.status_code}function M(e){return 200===e.status_code}function T(e){return 204===e.status_code}function O(e){return 302===e.status_code}function N(e){return 302===e.status_code}function P(e){const t=e.status_code;return 400===t||401===t||403===t||404===t||424===t||426===t}function R(e){return 500===e.status_code||501===e.status_code}function L(e){return"error"in e}const B=e=>v({status_code:m(e),error:b()}),j=e=>v({status_code:m(200),result:e}),D=v({status_code:m(204)}),z=v({status_code:m(302)}),K=v({title:y(b())}),G=v({qrCode:b()}),W=x([j(G),D,B(400),B(403),B(500),B(501)]);class F extends A{constructor(){super("CameraModule")}async scanQRCode(e={}){const t=this.validate(K,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"scanQRCode",params:e}),r=this.validate(W,n);return r&&this.logger.warn("scanQRCode",`Unexpected response shape: ${r}`),n}}const q=k(b(),S()),V=function e(t,n,r){return{kind:"schema",type:"variant",reference:e,expects:"Object",async:!1,key:t,options:n,message:r,get"~standard"(){return a(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){let r,s=0,a=this.key,i=[];const u=(e,o)=>{for(const c of e.options){if("variant"===c.type)u(c,new Set(o).add(c.key));else{let e=!0,u=0;for(const t of o){const r=c.entries[t];if(t in n?r["~run"]({typed:!1,value:n[t]},{abortEarly:!0}).issues:"exact_optional"!==r.type&&"optional"!==r.type&&"nullish"!==r.type){e=!1,a!==t&&(s<u||s===u&&t in n&&!(a in n))&&(s=u,a=t,i=[]),a===t&&i.push(c.entries[t].expects);break}u++}if(e){const e=c["~run"]({value:n},t);(!r||!r.typed&&e.typed)&&(r=e)}}if(r&&!r.issues)break}};if(u(this,new Set([this.key])),r)return r;o(this,"type",e,t,{input:n[a],expected:c(i,"|"),path:[{type:"object",origin:"value",input:n,key:a,value:n[a]}]})}else o(this,"type",e,t);return e}}}("status",[v({status:m("success"),transactionID:b()}),v({status:m("failure"),transactionID:b(),errorMessage:b(),errorCode:b()}),v({status:m("pending"),transactionID:b()}),v({status:m("userInitiatedCancel")})]),H=x([j(V),B(400),B(500),B(501)]);class Y extends A{constructor(){super("CheckoutModule")}async triggerCheckout(e){const t=this.validate(q,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"triggerCheckout",params:e}),r=this.validate(H,n);return r&&this.logger.warn("triggerCheckout",`Unexpected response shape: ${r}`),n}}const Q={HOMEPAGE:"HOMEPAGE",CHECKOUT_PAGE:"CHECKOUT_PAGE",BOOKING_COMPLETION:"BOOKING_COMPLETION",CUSTOM:"CUSTOM"},J={DEFAULT:"DEFAULT"},X={TRANSACTION_AMOUNT:"transaction_amount",TRANSACTION_CURRENCY:"transaction_currency",PAGE:"page"},Z=x([j(p()),D,B(400),B(500),B(501)]),ee=x([j(p()),D,B(400),B(500),B(501)]),te=x([j(p()),D,B(500),B(501)]),ne=x([j(p()),D,B(500),B(501)]),re=x([j(p()),D,B(500),B(501)]),se=x([j(p()),D,B(500),B(501)]),oe=x([j(p()),D,B(500),B(501)]),ae=x([j(p()),D,B(500),B(501)]),ie=x([j(p()),D,B(500),B(501)]),ce=x([j(p()),D,B(500),B(501)]),ue=x([j(p()),D,B(400),B(500),B(501)]),de=x([j(p()),B(500),B(501)]),le=v({state:E(b(),u(1)),name:E(b(),u(1)),data:y(k(b(),S()))}),he=x([j(p()),D,B(400),B(500),B(501)]),pe=v({connected:p()}),me=x([j(pe),B(404)]),ge=b(),fe=x([j(ge),D,B(500),B(501)]);class ve extends A{constructor(){super("ContainerModule")}async setBackgroundColor(e){const t=await this.invoke({method:"setBackgroundColor",params:{backgroundColor:e}}),n=this.validate(Z,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(ee,t);return n&&this.logger.warn("setTitle",`Unexpected response shape: ${n}`),t}async hideBackButton(){const e=await this.invoke({method:"hideBackButton"}),t=this.validate(te,e);return t&&this.logger.warn("hideBackButton",`Unexpected response shape: ${t}`),e}async showBackButton(){const e=await this.invoke({method:"showBackButton"}),t=this.validate(ne,e);return t&&this.logger.warn("showBackButton",`Unexpected response shape: ${t}`),e}async hideRefreshButton(){const e=await this.invoke({method:"hideRefreshButton"}),t=this.validate(re,e);return t&&this.logger.warn("hideRefreshButton",`Unexpected response shape: ${t}`),e}async showRefreshButton(){const e=await this.invoke({method:"showRefreshButton"}),t=this.validate(se,e);return t&&this.logger.warn("showRefreshButton",`Unexpected response shape: ${t}`),e}async close(){const e=await this.invoke({method:"close"}),t=this.validate(oe,e);return t&&this.logger.warn("close",`Unexpected response shape: ${t}`),e}async onContentLoaded(){const e=await this.invoke({method:"onContentLoaded"}),t=this.validate(ae,e);return t&&this.logger.warn("onContentLoaded",`Unexpected response shape: ${t}`),e}async showLoader(){const e=await this.invoke({method:"showLoader"}),t=this.validate(ie,e);return t&&this.logger.warn("showLoader",`Unexpected response shape: ${t}`),e}async hideLoader(){const e=await this.invoke({method:"hideLoader"}),t=this.validate(ce,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(ue,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(de,t);return n&&this.logger.warn("onCtaTap",`Unexpected response shape: ${n}`),t}async sendAnalyticsEvent(e){const t=this.validate(le,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}}),r=this.validate(he,n);return r&&this.logger.warn("sendAnalyticsEvent",`Unexpected response shape: ${r}`),n}async isConnected(){return null!==$()?{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(fe,e);return t&&this.logger.warn("getSessionParams",`Unexpected response shape: ${t}`),e}}const ye=p(),we=x([j(ye),B(500),B(501)]);class ke extends A{constructor(){super("DeviceCapabilityModule")}async isEsimSupported(){const e=await this.invoke({method:"isEsimSupported"}),t=this.validate(we,e);return t&&this.logger.warn("isEsimSupported",`Unexpected response shape: ${t}`),e}}const be=v({fileUrl:E(b(),d()),fileName:E(b(),u(1))}),_e=x([D,B(400),B(500),B(501)]);class xe extends A{constructor(){super("FileModule")}async downloadFile(e){const t=this.validate(be,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"downloadFile",params:e}),r=this.validate(_e,n);return r&&this.logger.warn("downloadFile",`Unexpected response shape: ${r}`),n}}function Se(e){const t=new Uint32Array(e);crypto.getRandomValues(t);let n="";for(let r=0;r<e;r+=1)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(t[r]%62);return n}async function Ee(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 Ue(e,t){return e.major!==t.major?e.major>t.major:e.minor!==t.minor?e.minor>t.minor:e.patch>=t.patch}const Ce="grabid",$e={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 Ae extends Error{constructor(e,t){super(e),this.cause=t,this.name="AuthorizationConfigurationError"}}const Ie=v({clientId:E(b(),u(1)),redirectUri:E(b(),d()),scope:E(b(),u(1)),environment:w(["staging","production"]),responseMode:y(w(["redirect","in_place"]))}),Me=v({code:b(),state:b()}),Te=x([j(Me),D,z,B(400),B(403),B(500),B(501)]),Oe=v({state:b(),codeVerifier:b(),nonce:b(),redirectUri:b()}),Ne=x([j(Oe),D,B(400)]),Pe=x([D]);class Re extends A{constructor(){super("IdentityModule")}async fetchAuthorizationEndpoint(e){const t=$e[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 Ae("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 Ae("Invalid authorization configuration");return n.authorization_endpoint}catch(e){if(console.error("Error fetching authorization endpoint:",e),e instanceof Ae)throw e;throw new Error("Something wrong happened when fetching authorization configuration",{cause:e})}}async generatePKCEArtifacts(){const e=Se(16),t=Se(32),n=(r=Se(64),btoa(r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"));var r;return{nonce:e,state:t,codeVerifier:n,codeChallenge:await Ee(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"),r=this.getStorageItem("redirect_uri");return null===e&&null===t&&null===n&&null===r?{status_code:204}:null!==e&&null!==t&&null!==n&&null!==r?{status_code:200,result:{state:e,codeVerifier:t,nonce:n,redirectUri:r}}:{status_code:400,error:"Inconsistent authorization artifacts in storage"}}async clearAuthorizationArtifacts(){return window.localStorage.removeItem(`${Ce}:nonce`),window.localStorage.removeItem(`${Ce}:state`),window.localStorage.removeItem(`${Ce}:code_verifier`),window.localStorage.removeItem(`${Ce}:redirect_uri`),window.localStorage.removeItem(`${Ce}:login_return_uri`),{status_code:204}}setStorageItem(e,t){window.localStorage.setItem(`${Ce}:${e}`,t)}getStorageItem(e){return window.localStorage.getItem(`${Ce}:${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=$();return!t||"staging"!==e.environment&&!Ue(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:U(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},r=Re.buildAuthorizeUrl(t,n);return window.location.assign(r),{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(Te,t);return n&&this.logger.warn("authorize",`Unexpected response shape: ${n}`),t}async authorize(e){const t=this.validate(Ie,e);if(t)return{status_code:400,error:t};const n=await this.generatePKCEArtifacts(),r=e.responseMode||"redirect",s="in_place"===r?Re.normalizeUrl(window.location.href):e.redirectUri;this.storePKCEArtifacts({...n,redirectUri:s});const o={clientId:e.clientId,redirectUri:e.redirectUri,scope:e.scope,nonce:n.nonce,state:n.state,codeChallenge:n.codeChallenge,codeChallengeMethod:n.codeChallengeMethod};if(Re.shouldUseWebConsent(e))return this.performWebAuthorization({...o,environment:e.environment});try{const t=await this.performNativeAuthorization({...o,actualRedirectUri:s,responseMode:r});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 Le=b(),Be=x([j(Le),D,B(400),B(500),B(501)]);class je extends A{constructor(){super("LocaleModule")}async getLanguageLocaleIdentifier(){const e=await this.invoke({method:"getLanguageLocaleIdentifier"}),t=this.validate(Be,e);return t&&this.logger.warn("getLanguageLocaleIdentifier",`Unexpected response shape: ${t}`),e}}const De=v({latitude:f(),longitude:f()}),ze=x([j(De),B(403),B(424),B(500),B(501)]),Ke=b(),Ge=x([j(Ke),D,B(403),B(424),B(500),B(501)]);class We extends A{constructor(){super("LocationModule")}async getCoordinate(){const e=await this.invoke({method:"getCoordinate"}),t=this.validate(ze,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(Ge,e);return t&&this.logger.warn("getCountryCode",`Unexpected response shape: ${t}`),e}}const Fe=v({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:f(),length:f()}),qe=x([j(Fe),D,B(400),B(424),B(500),B(501)]),Ve=x([j(Fe),B(500),B(501)]);class He extends A{constructor(){super("MediaModule")}async playDRMContent(e){const t=await this.invoke({method:"playDRMContent",params:{data:e}}),n=this.validate(qe,t);return n&&this.logger.warn("playDRMContent",`Unexpected response shape: ${n}`),t}observePlayDRMContent(e){return this.invokeStream({method:"observePlayDRMContent",params:{data:e}})}}const Ye=x([D,B(500),B(501)]);class Qe extends A{constructor(){super("PlatformModule")}async back(){const e=await this.invoke({method:"back"}),t=this.validate(Ye,e);return t&&this.logger.warn("back",`Unexpected response shape: ${t}`),e}}const Je=v({email:b()}),Xe=x([j(Je),D,B(400),B(403),B(426),B(500),B(501)]),Ze=v({email:y(E(b(),u(1))),skipUserInput:y(p())}),et=v({email:b()}),tt=x([j(et),D,B(400),B(403),B(426),B(500),B(501)]);class nt extends A{constructor(){super("ProfileModule")}async fetchEmail(){const e=this.checkSupport(e=>Ue(e.version,nt.MINIMUM_VERSION));if(e)return e;const t=await this.invoke({method:"fetchEmail"}),n=this.validate(Xe,t);return n&&this.logger.warn("fetchEmail",`Unexpected response shape: ${n}`),t}async verifyEmail(e){const t=this.checkSupport(e=>Ue(e.version,nt.MINIMUM_VERSION));if(t)return t;const n=this.validate(Ze,e??{});if(n)return{status_code:400,error:n};const r=await this.invoke({method:"verifyEmail",params:e}),s=this.validate(tt,r);return s&&this.logger.warn("verifyEmail",`Unexpected response shape: ${s}`),r}}nt.MINIMUM_VERSION={major:5,minor:399,patch:0};const rt=v({module:E(b(),u(1)),method:E(b(),u(1))}),st=v({hasAccess:p()}),ot=x([j(st),B(400),B(424),B(500),B(501)]),at=x([D,B(424),B(500),B(501)]);class it extends A{constructor(){super("ScopeModule")}async hasAccessTo(e,t){const n={module:e,method:t},r=this.validate(rt,n);if(r)return{status_code:400,error:r};const s=await this.invoke({method:"hasAccessTo",params:n}),o=this.validate(ot,s);return o&&this.logger.warn("hasAccessTo",`Unexpected response shape: ${o}`),s}async reloadScopes(){const e=await this.invoke({method:"reloadScopes"}),t=this.validate(at,e);return t&&this.logger.warn("reloadScopes",`Unexpected response shape: ${t}`),e}}const ct=x([D,B(400),B(403),B(500),B(501)]);class ut extends A{constructor(){super("SplashScreenModule")}async dismiss(){const e=await this.invoke({method:"dismiss"}),t=this.validate(ct,e);return t&&this.logger.warn("dismiss",`Unexpected response shape: ${t}`),e}}const dt=v({key:E(b(),u(1))}),lt=x([D,B(400),B(424),B(500),B(501)]),ht=dt,pt=v({value:g(p())}),mt=x([j(pt),B(400),B(424),B(500),B(501)]),gt=x([D,B(400),B(424),B(500),B(501)]),ft=dt,vt=v({value:g(f())}),yt=x([j(vt),B(400),B(424),B(500),B(501)]),wt=x([D,B(400),B(424),B(500),B(501)]),kt=dt,bt=v({value:g(b())}),_t=x([j(bt),B(400),B(424),B(500),B(501)]),xt=x([D,B(400),B(424),B(500),B(501)]),St=dt,Et=v({value:g(f())}),Ut=x([j(Et),B(400),B(424),B(500),B(501)]),Ct=dt,$t=x([D,B(400),B(424),B(500),B(501)]),At=x([D,B(424),B(500),B(501)]);class It extends A{constructor(){super("StorageModule")}async setBoolean(e,t){const n=await this.invoke({method:"setBoolean",params:{key:e,value:t}}),r=this.validate(lt,n);return r&&this.logger.warn("setBoolean",`Unexpected response shape: ${r}`),n}async getBoolean(e){const t={key:e},n=this.validate(ht,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getBoolean",params:t}),s=this.validate(mt,r);return s&&this.logger.warn("getBoolean",`Unexpected response shape: ${s}`),r}async setInt(e,t){const n=await this.invoke({method:"setInt",params:{key:e,value:t}}),r=this.validate(gt,n);return r&&this.logger.warn("setInt",`Unexpected response shape: ${r}`),n}async getInt(e){const t={key:e},n=this.validate(ft,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getInt",params:t}),s=this.validate(yt,r);return s&&this.logger.warn("getInt",`Unexpected response shape: ${s}`),r}async setString(e,t){const n=await this.invoke({method:"setString",params:{key:e,value:t}}),r=this.validate(wt,n);return r&&this.logger.warn("setString",`Unexpected response shape: ${r}`),n}async getString(e){const t={key:e},n=this.validate(kt,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getString",params:t}),s=this.validate(_t,r);return s&&this.logger.warn("getString",`Unexpected response shape: ${s}`),r}async setDouble(e,t){const n=await this.invoke({method:"setDouble",params:{key:e,value:t}}),r=this.validate(xt,n);return r&&this.logger.warn("setDouble",`Unexpected response shape: ${r}`),n}async getDouble(e){const t={key:e},n=this.validate(St,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getDouble",params:t}),s=this.validate(Ut,r);return s&&this.logger.warn("getDouble",`Unexpected response shape: ${s}`),r}async remove(e){const t={key:e},n=this.validate(Ct,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"remove",params:t}),s=this.validate($t,r);return s&&this.logger.warn("remove",`Unexpected response shape: ${s}`),r}async removeAll(){const e=await this.invoke({method:"removeAll"}),t=this.validate(At,e);return t&&this.logger.warn("removeAll",`Unexpected response shape: ${t}`),e}}const Mt=v({url:E(b(),d())}),Tt=x([j(b()),B(400),B(424),B(500),B(501)]);class Ot extends A{constructor(){super("SystemWebViewKitModule")}async redirectToSystemWebView(e){const t=this.validate(Mt,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"redirectToSystemWebView",params:e}),r=this.validate(Tt,n);return r&&this.logger.warn("redirectToSystemWebView",`Unexpected response shape: ${r}`),n}}const Nt=b(),Pt=x([j(Nt),D,B(500),B(501)]);class Rt extends A{constructor(){super("UserAttributesModule")}async getSelectedTravelDestination(){const e=await this.invoke({method:"getSelectedTravelDestination"}),t=this.validate(Pt,e);return t&&this.logger.warn("getSelectedTravelDestination",`Unexpected response shape: ${t}`),e}}export{Ie as AuthorizeRequestSchema,Te as AuthorizeResponseSchema,Me as AuthorizeResultSchema,Ye as BackResponseSchema,A as BaseModule,F as CameraModule,Y as CheckoutModule,Pe as ClearAuthorizationArtifactsResponseSchema,oe as CloseResponseSchema,X as ContainerAnalyticsEventData,J as ContainerAnalyticsEventName,Q as ContainerAnalyticsEventState,ve as ContainerModule,Fe as DRMPlaybackEventSchema,ke as DeviceCapabilityModule,ct as DismissSplashScreenResponseSchema,be as DownloadFileRequestSchema,_e as DownloadFileResponseSchema,Xe as FetchEmailResponseSchema,Je as FetchEmailResultSchema,xe as FileModule,Ne as GetAuthorizationArtifactsResponseSchema,Oe as GetAuthorizationArtifactsResultSchema,ht as GetBooleanRequestSchema,mt as GetBooleanResponseSchema,pt as GetBooleanResultSchema,ze as GetCoordinateResponseSchema,De as GetCoordinateResultSchema,Ge as GetCountryCodeResponseSchema,Ke as GetCountryCodeResultSchema,St as GetDoubleRequestSchema,Ut as GetDoubleResponseSchema,Et as GetDoubleResultSchema,ft as GetIntRequestSchema,yt as GetIntResponseSchema,vt as GetIntResultSchema,Be as GetLanguageLocaleIdentifierResponseSchema,Le as GetLanguageLocaleIdentifierResultSchema,Pt as GetSelectedTravelDestinationResponseSchema,Nt as GetSelectedTravelDestinationResultSchema,fe as GetSessionParamsResponseSchema,ge as GetSessionParamsResultSchema,kt as GetStringRequestSchema,_t as GetStringResponseSchema,bt as GetStringResultSchema,rt as HasAccessToRequestSchema,ot as HasAccessToResponseSchema,st as HasAccessToResultSchema,te as HideBackButtonResponseSchema,ce as HideLoaderResponseSchema,re as HideRefreshButtonResponseSchema,Re as IdentityModule,me as IsConnectedResponseSchema,pe as IsConnectedResultSchema,we as IsEsimSupportedResponseSchema,ye as IsEsimSupportedResultSchema,je as LocaleModule,We as LocationModule,C as Logger,He as MediaModule,Ve as ObserveDRMPlaybackResponseSchema,ae as OnContentLoadedResponseSchema,de as OnCtaTapResponseSchema,ue as OpenExternalLinkResponseSchema,Qe as PlatformModule,qe as PlayDRMContentResponseSchema,nt as ProfileModule,Mt as RedirectToSystemWebViewRequestSchema,Tt as RedirectToSystemWebViewResponseSchema,at as ReloadScopesResponseSchema,At as RemoveAllResponseSchema,$t as RemoveResponseSchema,K as ScanQRCodeRequestSchema,W as ScanQRCodeResponseSchema,G as ScanQRCodeResultSchema,it as ScopeModule,le as SendAnalyticsEventRequestSchema,he as SendAnalyticsEventResponseSchema,Z as SetBackgroundColorResponseSchema,lt as SetBooleanResponseSchema,xt as SetDoubleResponseSchema,gt as SetIntResponseSchema,wt as SetStringResponseSchema,ee as SetTitleResponseSchema,ne as ShowBackButtonResponseSchema,ie as ShowLoaderResponseSchema,se as ShowRefreshButtonResponseSchema,ut as SplashScreenModule,It as StorageModule,Ot as SystemWebViewKitModule,q as TriggerCheckoutRequestSchema,H as TriggerCheckoutResponseSchema,V as TriggerCheckoutResultSchema,Rt as UserAttributesModule,Ze as VerifyEmailRequestSchema,tt as VerifyEmailResponseSchema,et as VerifyEmailResultSchema,P as isClientError,L as isError,N as isFound,T as isNoContent,M as isOk,O as isRedirection,R as isServerError,I as isSuccess};
7
+ var e,t={exports:{}},n=(e||(e=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(r,s){try{var o=null,a=!1;o=e({next:function(e){r(null==t?void 0:t(e)),o&&o.unsubscribe(),a=!0}}),a&&o&&o.unsubscribe()}catch(e){null==n?s(e):r(n(e))}})}}}function r(r,s){return s.funcNameToWrap,function(r,s){var o=s.callbackNameFunc,a=s.funcToWrap;return n(function(n){var s,i=o();return r[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 r=function(e){return Object.keys(e).concat(Object.getOwnPropertyNames(Object.getPrototypeOf(e)))}(e);return t.every(function(e){return 0<=r.indexOf(e)})}(t.result,"event"))t.result.event===e.StreamEvent.STREAM_TERMINATED&&s.unsubscribe();else{var r=t.result,o=t.error,a=t.status_code;n&&n.next&&n.next({result:null===r?void 0:r,error:null===o?void 0:o,status_code:null===a?void 0:a})}},a(i),s=t(function(){r[i]=void 0,n&&n.complete&&n.complete()})})}(r,function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&(n[r[s]]=e[r[s]])}return n}(s,["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(s,o){return r(e,{funcNameToWrap:s,callbackNameFunc:function(){return function(e,t){var n=t.moduleName,r=t.funcName,s=0;return function(){for(var t,o,a="";(a=(t={moduleName:n,funcName:r,requestID:s}).moduleName+"_"+t.funcName+"Callback"+(null!==(o=t.requestID)?"_"+o:""))in e;)s+=1;return s+=1,a}()}(e,{moduleName:t,funcName:s})},funcToWrap:function(e){return n({callback:e,method:s,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})}(t.exports)),t.exports);function r(e){return{lang:e?.lang??void 0,message:e?.message,abortEarly:e?.abortEarly??void 0,abortPipeEarly:e?.abortPipeEarly??void 0}}function s(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 o(e,t,n,r,o){const a=o&&"input"in o?o.input:n.value,i=o?.expected??e.expects??null,c=o?.received??s(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:o?.path,issues:o?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},d="schema"===e.kind,l=o?.message??e.message??(e.reference,void u.lang)??(d?void u.lang:null)??r.message??void u.lang;void 0!==l&&(u.message="function"==typeof l?l(u):l),d&&(n.typed=!1),n.issues?n.issues.push(u):n.issues=[u]}function a(e){return{version:1,vendor:"valibot",validate:t=>e["~run"]({value:t},r())}}function i(e,t){return Object.hasOwn(e,t)&&"__proto__"!==t&&"prototype"!==t&&"constructor"!==t}function c(e,t){const n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??"never"}function u(e,t){return{kind:"validation",type:"min_length",reference:u,async:!1,expects:`>=${e}`,requirement:e,message:t,"~run"(e,t){return e.typed&&e.value.length<this.requirement&&o(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)&&o(this,"URL",e,t),e}}}function l(e,t,n){return"function"==typeof e.fallback?e.fallback(t,n):e.fallback}function h(e,t,n){return"function"==typeof e.default?e.default(t,n):e.default}function p(e){return{kind:"schema",type:"boolean",reference:p,expects:"boolean",async:!1,message:e,get"~standard"(){return a(this)},"~run"(e,t){return"boolean"==typeof e.value?e.typed=!0:o(this,"type",e,t),e}}}function m(e,t){return{kind:"schema",type:"literal",reference:m,expects:s(e),async:!1,literal:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){return e.value===this.literal?e.typed=!0:o(this,"type",e,t),e}}}function g(e,t){return{kind:"schema",type:"nullable",reference:g,expects:`(${e.expects} | null)`,async:!1,wrapped:e,default:t,get"~standard"(){return a(this)},"~run"(e,t){return null===e.value&&(void 0!==this.default&&(e.value=h(this,e,t)),null===e.value)?(e.typed=!0,e):this.wrapped["~run"](e,t)}}}function f(e){return{kind:"schema",type:"number",reference:f,expects:"number",async:!1,message:e,get"~standard"(){return a(this)},"~run"(e,t){return"number"!=typeof e.value||isNaN(e.value)?o(this,"type",e,t):e.typed=!0,e}}}function v(e,t){return{kind:"schema",type:"object",reference:v,expects:"Object",async:!1,entries:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const r in this.entries){const s=this.entries[r];if(r in n||("exact_optional"===s.type||"optional"===s.type||"nullish"===s.type)&&void 0!==s.default){const o=r in n?n[r]:h(s),a=s["~run"]({value:o},t);if(a.issues){const s={type:"object",origin:"value",input:n,key:r,value:o};for(const t of a.issues)t.path?t.path.unshift(s):t.path=[s],e.issues?.push(t);if(e.issues||(e.issues=a.issues),t.abortEarly){e.typed=!1;break}}a.typed||(e.typed=!1),e.value[r]=a.value}else if(void 0!==s.fallback)e.value[r]=l(s);else if("exact_optional"!==s.type&&"optional"!==s.type&&"nullish"!==s.type&&(o(this,"key",e,t,{input:void 0,expected:`"${r}"`,path:[{type:"object",origin:"key",input:n,key:r,value:n[r]}]}),t.abortEarly))break}}else o(this,"type",e,t);return e}}}function y(e,t){return{kind:"schema",type:"optional",reference:y,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:t,get"~standard"(){return a(this)},"~run"(e,t){return void 0===e.value&&(void 0!==this.default&&(e.value=h(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:c(e.map(s),"|"),async:!1,options:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){return this.options.includes(e.value)?e.typed=!0:o(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 a(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){e.typed=!0,e.value={};for(const r in n)if(i(n,r)){const s=n[r],o=this.key["~run"]({value:r},t);if(o.issues){const a={type:"object",origin:"key",input:n,key:r,value:s};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:s},t);if(a.issues){const o={type:"object",origin:"value",input:n,key:r,value:s};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 o(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 a(this)},"~run"(e,t){return"string"==typeof e.value?e.typed=!0:o(this,"type",e,t),e}}}function _(e){let t;if(e)for(const n of e)t?t.push(...n.issues):t=n.issues;return t}function x(e,t){return{kind:"schema",type:"union",reference:x,expects:c(e.map(e=>e.expects),"|"),async:!1,options:e,message:t,get"~standard"(){return a(this)},"~run"(e,t){let n,r,s;for(const o of this.options){const a=o["~run"]({value:e.value},t);if(a.typed){if(!a.issues){n=a;break}r?r.push(a):r=[a]}else s?s.push(a):s=[a]}if(n)return n;if(r){if(1===r.length)return r[0];o(this,"type",e,t,{issues:_(r)}),e.typed=!0}else{if(1===s?.length)return s[0];o(this,"type",e,t,{issues:_(s)})}return e}}}function S(){return{kind:"schema",type:"unknown",reference:S,expects:"unknown",async:!1,get"~standard"(){return a(this)},"~run":e=>(e.typed=!0,e)}}function E(...e){return{...e[0],pipe:e,get"~standard"(){return a(this)},"~run"(t,n){for(const r of e)if("metadata"!==r.kind){if(t.issues&&("schema"===r.kind||"transformation"===r.kind)){t.typed=!1;break}t.issues&&(n.abortEarly||n.abortPipeEarly)||(t=r["~run"](t,n))}return t}}}function U(e){return"object"==typeof e&&null!==e&&"message"in e&&"string"==typeof e.message}class C{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 $(){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 A{get wrappedModule(){return window[`Wrapped${this.name}`]}constructor(e){if(this.name=e,this.logger=new C(e),!this.wrappedModule)try{n.wrapModule(window,this.name)}catch(e){throw new Error(`Failed to initialize ${this.name}${U(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=$();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 $()?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: ${U(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 $()?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: ${U(e)?e.message:"Unknown error"}`})}}}function I(e){return 200===e.status_code||204===e.status_code}function M(e){return 200===e.status_code}function T(e){return 204===e.status_code}function O(e){return 302===e.status_code}function N(e){return 302===e.status_code}function P(e){const t=e.status_code;return 400===t||401===t||403===t||404===t||424===t||426===t}function R(e){return 500===e.status_code||501===e.status_code}function L(e){return"string"==typeof e.error&&e.error.length>0}const B=e=>v({status_code:m(e),error:b()}),j=e=>v({status_code:m(200),result:e}),D=v({status_code:m(204)}),z=v({status_code:m(302)}),K=v({title:y(b())}),G=v({qrCode:b()}),W=x([j(G),D,B(400),B(403),B(500),B(501)]);class F extends A{constructor(){super("CameraModule")}async scanQRCode(e={}){const t=this.validate(K,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"scanQRCode",params:e}),r=this.validate(W,n);return r&&this.logger.warn("scanQRCode",`Unexpected response shape: ${r}`),n}}const q=k(b(),S()),V=function e(t,n,r){return{kind:"schema",type:"variant",reference:e,expects:"Object",async:!1,key:t,options:n,message:r,get"~standard"(){return a(this)},"~run"(e,t){const n=e.value;if(n&&"object"==typeof n){let r,s=0,a=this.key,i=[];const u=(e,o)=>{for(const c of e.options){if("variant"===c.type)u(c,new Set(o).add(c.key));else{let e=!0,u=0;for(const t of o){const r=c.entries[t];if(t in n?r["~run"]({typed:!1,value:n[t]},{abortEarly:!0}).issues:"exact_optional"!==r.type&&"optional"!==r.type&&"nullish"!==r.type){e=!1,a!==t&&(s<u||s===u&&t in n&&!(a in n))&&(s=u,a=t,i=[]),a===t&&i.push(c.entries[t].expects);break}u++}if(e){const e=c["~run"]({value:n},t);(!r||!r.typed&&e.typed)&&(r=e)}}if(r&&!r.issues)break}};if(u(this,new Set([this.key])),r)return r;o(this,"type",e,t,{input:n[a],expected:c(i,"|"),path:[{type:"object",origin:"value",input:n,key:a,value:n[a]}]})}else o(this,"type",e,t);return e}}}("status",[v({status:m("success"),transactionID:b()}),v({status:m("failure"),transactionID:b(),errorMessage:b(),errorCode:b()}),v({status:m("pending"),transactionID:b()}),v({status:m("userInitiatedCancel")})]),H=x([j(V),B(400),B(500),B(501)]);class Y extends A{constructor(){super("CheckoutModule")}async triggerCheckout(e){const t=this.validate(q,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"triggerCheckout",params:e}),r=this.validate(H,n);return r&&this.logger.warn("triggerCheckout",`Unexpected response shape: ${r}`),n}}const Q={HOMEPAGE:"HOMEPAGE",CHECKOUT_PAGE:"CHECKOUT_PAGE",BOOKING_COMPLETION:"BOOKING_COMPLETION",CUSTOM:"CUSTOM"},J={DEFAULT:"DEFAULT"},X={TRANSACTION_AMOUNT:"transaction_amount",TRANSACTION_CURRENCY:"transaction_currency",PAGE:"page"},Z=x([j(p()),D,B(400),B(500),B(501)]),ee=x([j(p()),D,B(400),B(500),B(501)]),te=x([j(p()),D,B(500),B(501)]),ne=x([j(p()),D,B(500),B(501)]),re=x([j(p()),D,B(500),B(501)]),se=x([j(p()),D,B(500),B(501)]),oe=x([j(p()),D,B(500),B(501)]),ae=x([j(p()),D,B(500),B(501)]),ie=x([j(p()),D,B(500),B(501)]),ce=x([j(p()),D,B(500),B(501)]),ue=x([j(p()),D,B(400),B(500),B(501)]),de=x([j(p()),B(500),B(501)]),le=v({state:E(b(),u(1)),name:E(b(),u(1)),data:y(k(b(),S()))}),he=x([j(p()),D,B(400),B(500),B(501)]),pe=v({connected:p()}),me=x([j(pe),B(404)]),ge=b(),fe=x([j(ge),D,B(500),B(501)]);class ve extends A{constructor(){super("ContainerModule")}async setBackgroundColor(e){const t=await this.invoke({method:"setBackgroundColor",params:{backgroundColor:e}}),n=this.validate(Z,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(ee,t);return n&&this.logger.warn("setTitle",`Unexpected response shape: ${n}`),t}async hideBackButton(){const e=await this.invoke({method:"hideBackButton"}),t=this.validate(te,e);return t&&this.logger.warn("hideBackButton",`Unexpected response shape: ${t}`),e}async showBackButton(){const e=await this.invoke({method:"showBackButton"}),t=this.validate(ne,e);return t&&this.logger.warn("showBackButton",`Unexpected response shape: ${t}`),e}async hideRefreshButton(){const e=await this.invoke({method:"hideRefreshButton"}),t=this.validate(re,e);return t&&this.logger.warn("hideRefreshButton",`Unexpected response shape: ${t}`),e}async showRefreshButton(){const e=await this.invoke({method:"showRefreshButton"}),t=this.validate(se,e);return t&&this.logger.warn("showRefreshButton",`Unexpected response shape: ${t}`),e}async close(){const e=await this.invoke({method:"close"}),t=this.validate(oe,e);return t&&this.logger.warn("close",`Unexpected response shape: ${t}`),e}async onContentLoaded(){const e=await this.invoke({method:"onContentLoaded"}),t=this.validate(ae,e);return t&&this.logger.warn("onContentLoaded",`Unexpected response shape: ${t}`),e}async showLoader(){const e=await this.invoke({method:"showLoader"}),t=this.validate(ie,e);return t&&this.logger.warn("showLoader",`Unexpected response shape: ${t}`),e}async hideLoader(){const e=await this.invoke({method:"hideLoader"}),t=this.validate(ce,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(ue,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(de,t);return n&&this.logger.warn("onCtaTap",`Unexpected response shape: ${n}`),t}async sendAnalyticsEvent(e){const t=this.validate(le,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}}),r=this.validate(he,n);return r&&this.logger.warn("sendAnalyticsEvent",`Unexpected response shape: ${r}`),n}async isConnected(){return null!==$()?{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(fe,e);return t&&this.logger.warn("getSessionParams",`Unexpected response shape: ${t}`),e}}const ye=p(),we=x([j(ye),B(500),B(501)]);class ke extends A{constructor(){super("DeviceCapabilityModule")}async isEsimSupported(){const e=await this.invoke({method:"isEsimSupported"}),t=this.validate(we,e);return t&&this.logger.warn("isEsimSupported",`Unexpected response shape: ${t}`),e}}const be=v({fileUrl:E(b(),d()),fileName:E(b(),u(1))}),_e=x([D,B(400),B(500),B(501)]);class xe extends A{constructor(){super("FileModule")}async downloadFile(e){const t=this.validate(be,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"downloadFile",params:e}),r=this.validate(_e,n);return r&&this.logger.warn("downloadFile",`Unexpected response shape: ${r}`),n}}function Se(e){const t=new Uint32Array(e);crypto.getRandomValues(t);let n="";for(let r=0;r<e;r+=1)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(t[r]%62);return n}async function Ee(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 Ue(e,t){return e.major!==t.major?e.major>t.major:e.minor!==t.minor?e.minor>t.minor:e.patch>=t.patch}const Ce="grabid",$e={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 Ae extends Error{constructor(e,t){super(e),this.cause=t,this.name="AuthorizationConfigurationError"}}const Ie=v({clientId:E(b(),u(1)),redirectUri:E(b(),d()),scope:E(b(),u(1)),environment:w(["staging","production"]),responseMode:y(w(["redirect","in_place"]))}),Me=v({code:b(),state:b()}),Te=x([j(Me),D,z,B(400),B(403),B(500),B(501)]),Oe=v({state:b(),codeVerifier:b(),nonce:b(),redirectUri:b()}),Ne=x([j(Oe),D,B(400)]),Pe=x([D]);class Re extends A{constructor(){super("IdentityModule")}async fetchAuthorizationEndpoint(e){const t=$e[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 Ae("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 Ae("Invalid authorization configuration");return n.authorization_endpoint}catch(e){if(console.error("Error fetching authorization endpoint:",e),e instanceof Ae)throw e;throw new Error("Something wrong happened when fetching authorization configuration",{cause:e})}}async generatePKCEArtifacts(){const e=Se(16),t=Se(32),n=(r=Se(64),btoa(r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_"));var r;return{nonce:e,state:t,codeVerifier:n,codeChallenge:await Ee(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"),r=this.getStorageItem("redirect_uri");return null===e&&null===t&&null===n&&null===r?{status_code:204}:null!==e&&null!==t&&null!==n&&null!==r?{status_code:200,result:{state:e,codeVerifier:t,nonce:n,redirectUri:r}}:{status_code:400,error:"Inconsistent authorization artifacts in storage"}}async clearAuthorizationArtifacts(){return window.localStorage.removeItem(`${Ce}:nonce`),window.localStorage.removeItem(`${Ce}:state`),window.localStorage.removeItem(`${Ce}:code_verifier`),window.localStorage.removeItem(`${Ce}:redirect_uri`),window.localStorage.removeItem(`${Ce}:login_return_uri`),{status_code:204}}setStorageItem(e,t){window.localStorage.setItem(`${Ce}:${e}`,t)}getStorageItem(e){return window.localStorage.getItem(`${Ce}:${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=$();return!t||"staging"!==e.environment&&!Ue(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:U(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},r=Re.buildAuthorizeUrl(t,n);return window.location.assign(r),{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(Te,t);return n&&this.logger.warn("authorize",`Unexpected response shape: ${n}`),t}async authorize(e){const t=this.validate(Ie,e);if(t)return{status_code:400,error:t};const n=await this.generatePKCEArtifacts(),r=e.responseMode||"redirect",s="in_place"===r?Re.normalizeUrl(window.location.href):e.redirectUri;this.storePKCEArtifacts({...n,redirectUri:s});const o={clientId:e.clientId,redirectUri:e.redirectUri,scope:e.scope,nonce:n.nonce,state:n.state,codeChallenge:n.codeChallenge,codeChallengeMethod:n.codeChallengeMethod};if(Re.shouldUseWebConsent(e))return this.performWebAuthorization({...o,environment:e.environment});try{const t=await this.performNativeAuthorization({...o,actualRedirectUri:s,responseMode:r});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 Le=b(),Be=x([j(Le),D,B(400),B(500),B(501)]);class je extends A{constructor(){super("LocaleModule")}async getLanguageLocaleIdentifier(){const e=await this.invoke({method:"getLanguageLocaleIdentifier"}),t=this.validate(Be,e);return t&&this.logger.warn("getLanguageLocaleIdentifier",`Unexpected response shape: ${t}`),e}}const De=v({latitude:f(),longitude:f()}),ze=x([j(De),B(403),B(424),B(500),B(501)]),Ke=b(),Ge=x([j(Ke),D,B(403),B(424),B(500),B(501)]);class We extends A{constructor(){super("LocationModule")}async getCoordinate(){const e=await this.invoke({method:"getCoordinate"}),t=this.validate(ze,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(Ge,e);return t&&this.logger.warn("getCountryCode",`Unexpected response shape: ${t}`),e}}const Fe=v({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:f(),length:f()}),qe=x([j(Fe),D,B(400),B(424),B(500),B(501)]),Ve=x([j(Fe),B(500),B(501)]);class He extends A{constructor(){super("MediaModule")}async playDRMContent(e){const t=await this.invoke({method:"playDRMContent",params:{data:e}}),n=this.validate(qe,t);return n&&this.logger.warn("playDRMContent",`Unexpected response shape: ${n}`),t}observePlayDRMContent(e){return this.invokeStream({method:"observePlayDRMContent",params:{data:e}})}}const Ye=x([D,B(500),B(501)]);class Qe extends A{constructor(){super("PlatformModule")}async back(){const e=await this.invoke({method:"back"}),t=this.validate(Ye,e);return t&&this.logger.warn("back",`Unexpected response shape: ${t}`),e}}const Je=v({email:b()}),Xe=x([j(Je),D,B(400),B(403),B(426),B(500),B(501)]),Ze=v({email:y(E(b(),u(1))),skipUserInput:y(p())}),et=v({email:b()}),tt=x([j(et),D,B(400),B(403),B(426),B(500),B(501)]);class nt extends A{constructor(){super("ProfileModule")}async fetchEmail(){const e=this.checkSupport(e=>Ue(e.version,nt.MINIMUM_VERSION));if(e)return e;const t=await this.invoke({method:"fetchEmail"}),n=this.validate(Xe,t);return n&&this.logger.warn("fetchEmail",`Unexpected response shape: ${n}`),t}async verifyEmail(e){const t=this.checkSupport(e=>Ue(e.version,nt.MINIMUM_VERSION));if(t)return t;const n=this.validate(Ze,e??{});if(n)return{status_code:400,error:n};const r=await this.invoke({method:"verifyEmail",params:e}),s=this.validate(tt,r);return s&&this.logger.warn("verifyEmail",`Unexpected response shape: ${s}`),r}}nt.MINIMUM_VERSION={major:5,minor:399,patch:0};const rt=v({module:E(b(),u(1)),method:E(b(),u(1))}),st=p(),ot=x([j(st),B(400),B(424),B(500),B(501)]),at=x([D,B(424),B(500),B(501)]);class it extends A{constructor(){super("ScopeModule")}async hasAccessTo(e,t){const n={module:e,method:t},r=this.validate(rt,n);if(r)return{status_code:400,error:r};const s=await this.invoke({method:"hasAccessTo",params:n}),o=this.validate(ot,s);return o&&this.logger.warn("hasAccessTo",`Unexpected response shape: ${o}`),s}async reloadScopes(){const e=await this.invoke({method:"reloadScopes"}),t=this.validate(at,e);return t&&this.logger.warn("reloadScopes",`Unexpected response shape: ${t}`),e}}const ct=x([D,B(400),B(403),B(500),B(501)]);class ut extends A{constructor(){super("SplashScreenModule")}async dismiss(){const e=await this.invoke({method:"dismiss"}),t=this.validate(ct,e);return t&&this.logger.warn("dismiss",`Unexpected response shape: ${t}`),e}}const dt=v({key:E(b(),u(1))}),lt=x([D,B(400),B(424),B(500),B(501)]),ht=dt,pt=v({value:g(p())}),mt=x([j(pt),B(400),B(424),B(500),B(501)]),gt=x([D,B(400),B(424),B(500),B(501)]),ft=dt,vt=v({value:g(f())}),yt=x([j(vt),B(400),B(424),B(500),B(501)]),wt=x([D,B(400),B(424),B(500),B(501)]),kt=dt,bt=v({value:g(b())}),_t=x([j(bt),B(400),B(424),B(500),B(501)]),xt=x([D,B(400),B(424),B(500),B(501)]),St=dt,Et=v({value:g(f())}),Ut=x([j(Et),B(400),B(424),B(500),B(501)]),Ct=dt,$t=x([D,B(400),B(424),B(500),B(501)]),At=x([D,B(424),B(500),B(501)]);class It extends A{constructor(){super("StorageModule")}async setBoolean(e,t){const n=await this.invoke({method:"setBoolean",params:{key:e,value:t}}),r=this.validate(lt,n);return r&&this.logger.warn("setBoolean",`Unexpected response shape: ${r}`),n}async getBoolean(e){const t={key:e},n=this.validate(ht,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getBoolean",params:t}),s=this.validate(mt,r);return s&&this.logger.warn("getBoolean",`Unexpected response shape: ${s}`),r}async setInt(e,t){const n=await this.invoke({method:"setInt",params:{key:e,value:t}}),r=this.validate(gt,n);return r&&this.logger.warn("setInt",`Unexpected response shape: ${r}`),n}async getInt(e){const t={key:e},n=this.validate(ft,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getInt",params:t}),s=this.validate(yt,r);return s&&this.logger.warn("getInt",`Unexpected response shape: ${s}`),r}async setString(e,t){const n=await this.invoke({method:"setString",params:{key:e,value:t}}),r=this.validate(wt,n);return r&&this.logger.warn("setString",`Unexpected response shape: ${r}`),n}async getString(e){const t={key:e},n=this.validate(kt,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getString",params:t}),s=this.validate(_t,r);return s&&this.logger.warn("getString",`Unexpected response shape: ${s}`),r}async setDouble(e,t){const n=await this.invoke({method:"setDouble",params:{key:e,value:t}}),r=this.validate(xt,n);return r&&this.logger.warn("setDouble",`Unexpected response shape: ${r}`),n}async getDouble(e){const t={key:e},n=this.validate(St,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"getDouble",params:t}),s=this.validate(Ut,r);return s&&this.logger.warn("getDouble",`Unexpected response shape: ${s}`),r}async remove(e){const t={key:e},n=this.validate(Ct,t);if(n)return{status_code:400,error:n};const r=await this.invoke({method:"remove",params:t}),s=this.validate($t,r);return s&&this.logger.warn("remove",`Unexpected response shape: ${s}`),r}async removeAll(){const e=await this.invoke({method:"removeAll"}),t=this.validate(At,e);return t&&this.logger.warn("removeAll",`Unexpected response shape: ${t}`),e}}const Mt=v({url:E(b(),d())}),Tt=x([j(b()),B(400),B(424),B(500),B(501)]);class Ot extends A{constructor(){super("SystemWebViewKitModule")}async redirectToSystemWebView(e){const t=this.validate(Mt,e);if(t)return{status_code:400,error:t};const n=await this.invoke({method:"redirectToSystemWebView",params:e}),r=this.validate(Tt,n);return r&&this.logger.warn("redirectToSystemWebView",`Unexpected response shape: ${r}`),n}}const Nt=b(),Pt=x([j(Nt),D,B(500),B(501)]);class Rt extends A{constructor(){super("UserAttributesModule")}async getSelectedTravelDestination(){const e=await this.invoke({method:"getSelectedTravelDestination"}),t=this.validate(Pt,e);return t&&this.logger.warn("getSelectedTravelDestination",`Unexpected response shape: ${t}`),e}}export{Ie as AuthorizeRequestSchema,Te as AuthorizeResponseSchema,Me as AuthorizeResultSchema,Ye as BackResponseSchema,A as BaseModule,F as CameraModule,Y as CheckoutModule,Pe as ClearAuthorizationArtifactsResponseSchema,oe as CloseResponseSchema,X as ContainerAnalyticsEventData,J as ContainerAnalyticsEventName,Q as ContainerAnalyticsEventState,ve as ContainerModule,Fe as DRMPlaybackEventSchema,ke as DeviceCapabilityModule,ct as DismissSplashScreenResponseSchema,be as DownloadFileRequestSchema,_e as DownloadFileResponseSchema,Xe as FetchEmailResponseSchema,Je as FetchEmailResultSchema,xe as FileModule,Ne as GetAuthorizationArtifactsResponseSchema,Oe as GetAuthorizationArtifactsResultSchema,ht as GetBooleanRequestSchema,mt as GetBooleanResponseSchema,pt as GetBooleanResultSchema,ze as GetCoordinateResponseSchema,De as GetCoordinateResultSchema,Ge as GetCountryCodeResponseSchema,Ke as GetCountryCodeResultSchema,St as GetDoubleRequestSchema,Ut as GetDoubleResponseSchema,Et as GetDoubleResultSchema,ft as GetIntRequestSchema,yt as GetIntResponseSchema,vt as GetIntResultSchema,Be as GetLanguageLocaleIdentifierResponseSchema,Le as GetLanguageLocaleIdentifierResultSchema,Pt as GetSelectedTravelDestinationResponseSchema,Nt as GetSelectedTravelDestinationResultSchema,fe as GetSessionParamsResponseSchema,ge as GetSessionParamsResultSchema,kt as GetStringRequestSchema,_t as GetStringResponseSchema,bt as GetStringResultSchema,rt as HasAccessToRequestSchema,ot as HasAccessToResponseSchema,st as HasAccessToResultSchema,te as HideBackButtonResponseSchema,ce as HideLoaderResponseSchema,re as HideRefreshButtonResponseSchema,Re as IdentityModule,me as IsConnectedResponseSchema,pe as IsConnectedResultSchema,we as IsEsimSupportedResponseSchema,ye as IsEsimSupportedResultSchema,je as LocaleModule,We as LocationModule,C as Logger,He as MediaModule,Ve as ObserveDRMPlaybackResponseSchema,ae as OnContentLoadedResponseSchema,de as OnCtaTapResponseSchema,ue as OpenExternalLinkResponseSchema,Qe as PlatformModule,qe as PlayDRMContentResponseSchema,nt as ProfileModule,Mt as RedirectToSystemWebViewRequestSchema,Tt as RedirectToSystemWebViewResponseSchema,at as ReloadScopesResponseSchema,At as RemoveAllResponseSchema,$t as RemoveResponseSchema,K as ScanQRCodeRequestSchema,W as ScanQRCodeResponseSchema,G as ScanQRCodeResultSchema,it as ScopeModule,le as SendAnalyticsEventRequestSchema,he as SendAnalyticsEventResponseSchema,Z as SetBackgroundColorResponseSchema,lt as SetBooleanResponseSchema,xt as SetDoubleResponseSchema,gt as SetIntResponseSchema,wt as SetStringResponseSchema,ee as SetTitleResponseSchema,ne as ShowBackButtonResponseSchema,ie as ShowLoaderResponseSchema,se as ShowRefreshButtonResponseSchema,ut as SplashScreenModule,It as StorageModule,Ot as SystemWebViewKitModule,q as TriggerCheckoutRequestSchema,H as TriggerCheckoutResponseSchema,V as TriggerCheckoutResultSchema,Rt as UserAttributesModule,Ze as VerifyEmailRequestSchema,tt as VerifyEmailResponseSchema,et as VerifyEmailResultSchema,P as isClientError,L as isError,N as isFound,T as isNoContent,M as isOk,O as isRedirection,R as isServerError,I as isSuccess};
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=y({hasAccess: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"error"in e},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 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}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grabjs/superapp-sdk",
3
- "version": "2.0.0-beta.32",
3
+ "version": "2.0.0-beta.34",
4
4
  "description": "SDK for Grab SuperApp WebView.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
package/skills/SKILL.md CHANGED
@@ -328,7 +328,7 @@ JSBridge module for accessing user profile information.
328
328
 
329
329
  #### `ScopeModule`
330
330
  JSBridge module for checking and refreshing API access permissions.
331
- - `hasAccessTo(module: string, method: string): Promise<{ error: string; status_code: 400 } | { error: string; status_code: 500 } | { error: string; status_code: 501 } | { error: string; status_code: 424 } | { result: { hasAccess: boolean }; status_code: 200 }>` — Checks if the current client has access to a specific JSBridge API method.
331
+ - `hasAccessTo(module: string, method: string): Promise<{ error: string; status_code: 400 } | { error: string; status_code: 500 } | { error: string; status_code: 501 } | { result: boolean; status_code: 200 } | { error: string; status_code: 424 }>` — Checks if the current client has access to a specific JSBridge API method.
332
332
  - `reloadScopes(): Promise<{ status_code: 204 } | { error: string; status_code: 500 } | { error: string; status_code: 501 } | { error: string; status_code: 424 }>` — Requests to reload the consented OAuth scopes for the current client.
333
333
  This refreshes the permissions from the server.
334
334