@grabjs/superapp-sdk 2.0.0-beta.23 → 2.0.0-beta.28

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.
Files changed (167) hide show
  1. package/README.md +55 -55
  2. package/api-reference/api.json +44309 -0
  3. package/dist/index.d.ts +2163 -2607
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.js +1 -1
  6. package/package.json +14 -9
  7. package/skills/SKILL.md +368 -0
  8. package/api-reference/json/api.json +0 -27688
  9. package/api-reference/markdown/README.md +0 -194
  10. package/api-reference/markdown/classes/BaseModule.md +0 -123
  11. package/api-reference/markdown/classes/CameraModule.md +0 -177
  12. package/api-reference/markdown/classes/CheckoutModule.md +0 -181
  13. package/api-reference/markdown/classes/ContainerModule.md +0 -751
  14. package/api-reference/markdown/classes/DeviceCapabilityModule.md +0 -161
  15. package/api-reference/markdown/classes/FileModule.md +0 -178
  16. package/api-reference/markdown/classes/IdentityModule.md +0 -299
  17. package/api-reference/markdown/classes/LocaleModule.md +0 -161
  18. package/api-reference/markdown/classes/LocationModule.md +0 -239
  19. package/api-reference/markdown/classes/MediaModule.md +0 -219
  20. package/api-reference/markdown/classes/PlatformModule.md +0 -162
  21. package/api-reference/markdown/classes/ProfileModule.md +0 -224
  22. package/api-reference/markdown/classes/ScopeModule.md +0 -219
  23. package/api-reference/markdown/classes/StorageModule.md +0 -608
  24. package/api-reference/markdown/classes/SystemWebViewKitModule.md +0 -177
  25. package/api-reference/markdown/classes/UserAttributesModule.md +0 -164
  26. package/api-reference/markdown/functions/isClientError.md +0 -37
  27. package/api-reference/markdown/functions/isErrorResponse.md +0 -40
  28. package/api-reference/markdown/functions/isRedirection.md +0 -37
  29. package/api-reference/markdown/functions/isServerError.md +0 -37
  30. package/api-reference/markdown/functions/isSuccess.md +0 -39
  31. package/api-reference/markdown/globals.md +0 -176
  32. package/api-reference/markdown/interfaces/GrabAppInfo.md +0 -23
  33. package/api-reference/markdown/interfaces/InvokeOptions.md +0 -63
  34. package/api-reference/markdown/interfaces/Version.md +0 -23
  35. package/api-reference/markdown/interfaces/WrappedModule.md +0 -51
  36. package/api-reference/markdown/type-aliases/AuthorizeRequest.md +0 -79
  37. package/api-reference/markdown/type-aliases/AuthorizeResponse.md +0 -58
  38. package/api-reference/markdown/type-aliases/AuthorizeResult.md +0 -33
  39. package/api-reference/markdown/type-aliases/BackResponse.md +0 -37
  40. package/api-reference/markdown/type-aliases/BackResult.md +0 -8
  41. package/api-reference/markdown/type-aliases/BridgeClientError.md +0 -9
  42. package/api-reference/markdown/type-aliases/BridgeError.md +0 -8
  43. package/api-reference/markdown/type-aliases/BridgeRedirection.md +0 -8
  44. package/api-reference/markdown/type-aliases/BridgeResponse.md +0 -40
  45. package/api-reference/markdown/type-aliases/BridgeServerError.md +0 -8
  46. package/api-reference/markdown/type-aliases/BridgeStatusCode.md +0 -7
  47. package/api-reference/markdown/type-aliases/BridgeStream.md +0 -29
  48. package/api-reference/markdown/type-aliases/BridgeStreamHandlers.md +0 -25
  49. package/api-reference/markdown/type-aliases/BridgeSuccessResponse.md +0 -14
  50. package/api-reference/markdown/type-aliases/ClearAuthorizationArtifactsResponse.md +0 -18
  51. package/api-reference/markdown/type-aliases/ClearAuthorizationArtifactsResult.md +0 -8
  52. package/api-reference/markdown/type-aliases/CloseResponse.md +0 -37
  53. package/api-reference/markdown/type-aliases/CloseResult.md +0 -8
  54. package/api-reference/markdown/type-aliases/DRMContentConfig.md +0 -34
  55. package/api-reference/markdown/type-aliases/DRMPlaybackEvent.md +0 -43
  56. package/api-reference/markdown/type-aliases/DownloadFileRequest.md +0 -32
  57. package/api-reference/markdown/type-aliases/DownloadFileResponse.md +0 -48
  58. package/api-reference/markdown/type-aliases/DownloadFileResult.md +0 -11
  59. package/api-reference/markdown/type-aliases/ErrorResponse.md +0 -32
  60. package/api-reference/markdown/type-aliases/FetchEmailResponse.md +0 -58
  61. package/api-reference/markdown/type-aliases/FetchEmailResult.md +0 -21
  62. package/api-reference/markdown/type-aliases/GetAuthorizationArtifactsResponse.md +0 -42
  63. package/api-reference/markdown/type-aliases/GetAuthorizationArtifactsResult.md +0 -57
  64. package/api-reference/markdown/type-aliases/GetBooleanRequest.md +0 -21
  65. package/api-reference/markdown/type-aliases/GetBooleanResponse.md +0 -57
  66. package/api-reference/markdown/type-aliases/GetBooleanResult.md +0 -27
  67. package/api-reference/markdown/type-aliases/GetCoordinateResponse.md +0 -49
  68. package/api-reference/markdown/type-aliases/GetCoordinateResult.md +0 -29
  69. package/api-reference/markdown/type-aliases/GetCountryCodeResponse.md +0 -57
  70. package/api-reference/markdown/type-aliases/GetCountryCodeResult.md +0 -25
  71. package/api-reference/markdown/type-aliases/GetDoubleRequest.md +0 -21
  72. package/api-reference/markdown/type-aliases/GetDoubleResponse.md +0 -57
  73. package/api-reference/markdown/type-aliases/GetDoubleResult.md +0 -27
  74. package/api-reference/markdown/type-aliases/GetIntRequest.md +0 -21
  75. package/api-reference/markdown/type-aliases/GetIntResponse.md +0 -57
  76. package/api-reference/markdown/type-aliases/GetIntResult.md +0 -27
  77. package/api-reference/markdown/type-aliases/GetLanguageLocaleIdentifierResponse.md +0 -48
  78. package/api-reference/markdown/type-aliases/GetLanguageLocaleIdentifierResult.md +0 -31
  79. package/api-reference/markdown/type-aliases/GetSelectedTravelDestinationResponse.md +0 -48
  80. package/api-reference/markdown/type-aliases/GetSelectedTravelDestinationResult.md +0 -17
  81. package/api-reference/markdown/type-aliases/GetSessionParamsResponse.md +0 -40
  82. package/api-reference/markdown/type-aliases/GetSessionParamsResult.md +0 -27
  83. package/api-reference/markdown/type-aliases/GetStringRequest.md +0 -21
  84. package/api-reference/markdown/type-aliases/GetStringResponse.md +0 -57
  85. package/api-reference/markdown/type-aliases/GetStringResult.md +0 -27
  86. package/api-reference/markdown/type-aliases/HasAccessToResponse.md +0 -66
  87. package/api-reference/markdown/type-aliases/HasAccessToResult.md +0 -27
  88. package/api-reference/markdown/type-aliases/HideBackButtonResponse.md +0 -37
  89. package/api-reference/markdown/type-aliases/HideBackButtonResult.md +0 -8
  90. package/api-reference/markdown/type-aliases/HideLoaderResponse.md +0 -37
  91. package/api-reference/markdown/type-aliases/HideLoaderResult.md +0 -8
  92. package/api-reference/markdown/type-aliases/HideRefreshButtonResponse.md +0 -37
  93. package/api-reference/markdown/type-aliases/HideRefreshButtonResult.md +0 -8
  94. package/api-reference/markdown/type-aliases/IsConnectedResponse.md +0 -31
  95. package/api-reference/markdown/type-aliases/IsConnectedResult.md +0 -27
  96. package/api-reference/markdown/type-aliases/IsEsimSupportedResponse.md +0 -48
  97. package/api-reference/markdown/type-aliases/IsEsimSupportedResult.md +0 -17
  98. package/api-reference/markdown/type-aliases/ObserveDRMPlaybackResponse.md +0 -15
  99. package/api-reference/markdown/type-aliases/ObserveLocationChangeResponse.md +0 -15
  100. package/api-reference/markdown/type-aliases/OnContentLoadedResponse.md +0 -37
  101. package/api-reference/markdown/type-aliases/OnContentLoadedResult.md +0 -8
  102. package/api-reference/markdown/type-aliases/OnCtaTapRequest.md +0 -13
  103. package/api-reference/markdown/type-aliases/OnCtaTapResponse.md +0 -37
  104. package/api-reference/markdown/type-aliases/OnCtaTapResult.md +0 -8
  105. package/api-reference/markdown/type-aliases/OpenExternalLinkRequest.md +0 -13
  106. package/api-reference/markdown/type-aliases/OpenExternalLinkResponse.md +0 -46
  107. package/api-reference/markdown/type-aliases/OpenExternalLinkResult.md +0 -8
  108. package/api-reference/markdown/type-aliases/Platform.md +0 -7
  109. package/api-reference/markdown/type-aliases/PlayDRMContentResponse.md +0 -43
  110. package/api-reference/markdown/type-aliases/PlayDRMContentResult.md +0 -8
  111. package/api-reference/markdown/type-aliases/RedirectToSystemWebViewRequest.md +0 -23
  112. package/api-reference/markdown/type-aliases/RedirectToSystemWebViewResponse.md +0 -55
  113. package/api-reference/markdown/type-aliases/RedirectToSystemWebViewResult.md +0 -8
  114. package/api-reference/markdown/type-aliases/ReloadScopesResponse.md +0 -46
  115. package/api-reference/markdown/type-aliases/ReloadScopesResult.md +0 -8
  116. package/api-reference/markdown/type-aliases/RemoveAllResponse.md +0 -37
  117. package/api-reference/markdown/type-aliases/RemoveAllResult.md +0 -8
  118. package/api-reference/markdown/type-aliases/RemoveResponse.md +0 -46
  119. package/api-reference/markdown/type-aliases/RemoveResult.md +0 -8
  120. package/api-reference/markdown/type-aliases/ResponseStatusCode200.md +0 -34
  121. package/api-reference/markdown/type-aliases/ResponseStatusCode204.md +0 -20
  122. package/api-reference/markdown/type-aliases/ResponseStatusCode302.md +0 -20
  123. package/api-reference/markdown/type-aliases/ResponseStatusCode400.md +0 -7
  124. package/api-reference/markdown/type-aliases/ResponseStatusCode401.md +0 -7
  125. package/api-reference/markdown/type-aliases/ResponseStatusCode403.md +0 -7
  126. package/api-reference/markdown/type-aliases/ResponseStatusCode404.md +0 -7
  127. package/api-reference/markdown/type-aliases/ResponseStatusCode424.md +0 -7
  128. package/api-reference/markdown/type-aliases/ResponseStatusCode426.md +0 -12
  129. package/api-reference/markdown/type-aliases/ResponseStatusCode500.md +0 -7
  130. package/api-reference/markdown/type-aliases/ResponseStatusCode501.md +0 -12
  131. package/api-reference/markdown/type-aliases/ScanQRCodeRequest.md +0 -27
  132. package/api-reference/markdown/type-aliases/ScanQRCodeResponse.md +0 -64
  133. package/api-reference/markdown/type-aliases/ScanQRCodeResult.md +0 -21
  134. package/api-reference/markdown/type-aliases/SendAnalyticsEventRequest.md +0 -56
  135. package/api-reference/markdown/type-aliases/SendAnalyticsEventResponse.md +0 -46
  136. package/api-reference/markdown/type-aliases/SendAnalyticsEventResult.md +0 -8
  137. package/api-reference/markdown/type-aliases/SetBackgroundColorRequest.md +0 -13
  138. package/api-reference/markdown/type-aliases/SetBackgroundColorResponse.md +0 -46
  139. package/api-reference/markdown/type-aliases/SetBackgroundColorResult.md +0 -8
  140. package/api-reference/markdown/type-aliases/SetBooleanResponse.md +0 -46
  141. package/api-reference/markdown/type-aliases/SetBooleanResult.md +0 -8
  142. package/api-reference/markdown/type-aliases/SetDoubleResponse.md +0 -46
  143. package/api-reference/markdown/type-aliases/SetDoubleResult.md +0 -8
  144. package/api-reference/markdown/type-aliases/SetIntResponse.md +0 -46
  145. package/api-reference/markdown/type-aliases/SetIntResult.md +0 -8
  146. package/api-reference/markdown/type-aliases/SetStringResponse.md +0 -46
  147. package/api-reference/markdown/type-aliases/SetStringResult.md +0 -8
  148. package/api-reference/markdown/type-aliases/SetTitleRequest.md +0 -13
  149. package/api-reference/markdown/type-aliases/SetTitleResponse.md +0 -46
  150. package/api-reference/markdown/type-aliases/SetTitleResult.md +0 -8
  151. package/api-reference/markdown/type-aliases/ShowBackButtonResponse.md +0 -37
  152. package/api-reference/markdown/type-aliases/ShowBackButtonResult.md +0 -8
  153. package/api-reference/markdown/type-aliases/ShowLoaderResponse.md +0 -37
  154. package/api-reference/markdown/type-aliases/ShowLoaderResult.md +0 -8
  155. package/api-reference/markdown/type-aliases/ShowRefreshButtonResponse.md +0 -37
  156. package/api-reference/markdown/type-aliases/ShowRefreshButtonResult.md +0 -8
  157. package/api-reference/markdown/type-aliases/StatusCodeMap.md +0 -80
  158. package/api-reference/markdown/type-aliases/Subscription.md +0 -12
  159. package/api-reference/markdown/type-aliases/TriggerCheckoutRequest.md +0 -26
  160. package/api-reference/markdown/type-aliases/TriggerCheckoutResponse.md +0 -76
  161. package/api-reference/markdown/type-aliases/TriggerCheckoutResult.md +0 -75
  162. package/api-reference/markdown/type-aliases/VerifyEmailRequest.md +0 -32
  163. package/api-reference/markdown/type-aliases/VerifyEmailResponse.md +0 -55
  164. package/api-reference/markdown/type-aliases/VerifyEmailResult.md +0 -8
  165. package/api-reference/markdown/variables/ContainerAnalyticsEventData.md +0 -21
  166. package/api-reference/markdown/variables/ContainerAnalyticsEventName.md +0 -13
  167. package/api-reference/markdown/variables/ContainerAnalyticsEventState.md +0 -25
package/README.md CHANGED
@@ -42,7 +42,6 @@ All modules are instantiated with a simple constructor call:
42
42
  ```typescript
43
43
  import { ContainerModule, LocationModule, IdentityModule } from '@grabjs/superapp-sdk';
44
44
 
45
- // Initialize modules
46
45
  const container = new ContainerModule();
47
46
  const location = new LocationModule();
48
47
  const identity = new IdentityModule();
@@ -50,37 +49,31 @@ const identity = new IdentityModule();
50
49
 
51
50
  ### Handling Responses
52
51
 
53
- All SDK methods return a standardized response with HTTP-style status codes:
52
+ All SDK methods return a standardized response with HTTP-style status codes. Use type guards for response handling and type narrowing:
54
53
 
55
54
  ```typescript
56
- import { CameraModule } from '@grabjs/superapp-sdk';
55
+ import { CameraModule, isSuccess, isError } from '@grabjs/superapp-sdk';
57
56
 
58
57
  const camera = new CameraModule();
59
58
  const response = await camera.scanQRCode({ title: 'Scan Payment QR' });
60
59
 
61
- switch (response.status_code) {
62
- case 200:
63
- // Successfully scanned - result contains the QR code data
64
- console.log('QR Code scanned:', response.result.qrCode);
65
- break;
66
- case 204:
67
- // User cancelled the scanning operation
68
- console.log('Scanning cancelled');
69
- break;
70
- case 400:
71
- // Bad request - invalid request parameters
72
- console.error('Invalid request:', response.error);
73
- break;
74
- case 403:
75
- // Camera permission not granted to the Grab app
76
- console.error('Camera permission denied:', response.error);
77
- break;
78
- case 501:
79
- // Not implemented - not running in Grab app
80
- console.error('Requires Grab SuperApp environment');
81
- break;
82
- default:
83
- console.error('Unexpected error:', response);
60
+ if (isSuccess(response)) {
61
+ switch (response.status_code) {
62
+ case 200:
63
+ console.log('QR Code scanned:', response.result.qrCode);
64
+ break;
65
+ case 204:
66
+ console.log('Scanning cancelled');
67
+ break;
68
+ }
69
+ } else if (isError(response)) {
70
+ switch (response.status_code) {
71
+ case 403:
72
+ console.error('Camera permission denied:', response.error);
73
+ break;
74
+ default:
75
+ console.error('Request failed:', response.error);
76
+ }
84
77
  }
85
78
  ```
86
79
 
@@ -89,16 +82,13 @@ switch (response.status_code) {
89
82
  Some modules provide streaming methods for real-time data:
90
83
 
91
84
  ```typescript
92
- import { LocationModule } from '@grabjs/superapp-sdk';
85
+ import { LocationModule, isSuccess } from '@grabjs/superapp-sdk';
93
86
 
94
87
  const location = new LocationModule();
95
88
 
96
- // Subscribe to location updates
97
- const stream = location.observeLocationChange();
98
-
99
- const subscription = stream.subscribe({
89
+ const subscription = location.observeLocationChange().subscribe({
100
90
  next: (response) => {
101
- if (response.status_code === 200) {
91
+ if (isSuccess(response)) {
102
92
  console.log('Location:', response.result);
103
93
  }
104
94
  },
@@ -113,24 +103,22 @@ subscription.unsubscribe();
113
103
 
114
104
  ## Available Modules
115
105
 
116
- - **[ContainerModule](https://grab.github.io/superapp-sdk/classes/ContainerModule.html)** — Control the WebView container UI and lifecycle (header, loading indicators, analytics, connection verification)
117
-
118
- - **[IdentityModule](https://grab.github.io/superapp-sdk/classes/IdentityModule.html)** — Authenticate users via GrabID OAuth2/OIDC with PKCE support
119
-
120
- - **[LocationModule](https://grab.github.io/superapp-sdk/classes/LocationModule.html)** — Access device location services and subscribe to location updates
121
-
122
- - **[StorageModule](https://grab.github.io/superapp-sdk/classes/StorageModule.html)** — Persist key-value data locally with type-safe storage
123
-
124
106
  - **[CameraModule](https://grab.github.io/superapp-sdk/classes/CameraModule.html)** — Access device camera capabilities for QR code scanning
125
107
 
126
108
  - **[CheckoutModule](https://grab.github.io/superapp-sdk/classes/CheckoutModule.html)** — Trigger native checkout flows for payment processing
127
109
 
110
+ - **[ContainerModule](https://grab.github.io/superapp-sdk/classes/ContainerModule.html)** — Control the WebView container UI and lifecycle (header, loading indicators, analytics, connection verification)
111
+
128
112
  - **[DeviceCapabilityModule](https://grab.github.io/superapp-sdk/classes/DeviceCapabilityModule.html)** — Query device hardware capabilities
129
113
 
130
114
  - **[FileModule](https://grab.github.io/superapp-sdk/classes/FileModule.html)** — Handle file operations including downloading from remote URLs
131
115
 
116
+ - **[IdentityModule](https://grab.github.io/superapp-sdk/classes/IdentityModule.html)** — Authenticate users via GrabID OAuth2/OIDC with PKCE support
117
+
132
118
  - **[LocaleModule](https://grab.github.io/superapp-sdk/classes/LocaleModule.html)** — Access device locale and localization settings
133
119
 
120
+ - **[LocationModule](https://grab.github.io/superapp-sdk/classes/LocationModule.html)** — Access device location services and subscribe to location updates
121
+
134
122
  - **[MediaModule](https://grab.github.io/superapp-sdk/classes/MediaModule.html)** — Handle media playback including DRM-protected content
135
123
 
136
124
  - **[PlatformModule](https://grab.github.io/superapp-sdk/classes/PlatformModule.html)** — Access platform information and navigation controls
@@ -139,11 +127,15 @@ subscription.unsubscribe();
139
127
 
140
128
  - **[ScopeModule](https://grab.github.io/superapp-sdk/classes/ScopeModule.html)** — Manage permission scopes from GrabID
141
129
 
130
+ - **[SplashScreenModule](https://grab.github.io/superapp-sdk/classes/SplashScreenModule.html)** — Control the native splash/loading screen
131
+
132
+ - **[StorageModule](https://grab.github.io/superapp-sdk/classes/StorageModule.html)** — Persist key-value data locally with type-safe storage
133
+
142
134
  - **[SystemWebViewKitModule](https://grab.github.io/superapp-sdk/classes/SystemWebViewKitModule.html)** — Handle system WebView operations and external browser redirections
143
135
 
144
136
  - **[UserAttributesModule](https://grab.github.io/superapp-sdk/classes/UserAttributesModule.html)** — Access user attribute data
145
137
 
146
- > **Important:** Always call `ScopeModule.reloadScopes()` after an OAuth redirect to load the latest permissions from GrabID. Without this, module methods may return 403 errors even when permissions have been granted.
138
+ > **Important:** Always call `ScopeModule.reloadScopes()` on MiniApp launch and after OAuth before accessing protected resources scopes are not loaded automatically.
147
139
 
148
140
  ## Response Status Codes
149
141
 
@@ -165,30 +157,38 @@ The SDK uses HTTP-style status codes for all responses:
165
157
 
166
158
  ## Type Guards
167
159
 
168
- The SDK provides type guards for response validation:
160
+ The SDK provides type guards for response narrowing:
169
161
 
170
162
  ```typescript
171
- import { isSuccess, isErrorResponse, isClientError, isServerError } from '@grabjs/superapp-sdk';
172
-
173
- const response = await someModule.someMethod();
163
+ import {
164
+ isSuccess,
165
+ isError,
166
+ isOk,
167
+ isNoContent,
168
+ isClientError,
169
+ isServerError,
170
+ isFound,
171
+ isRedirection,
172
+ } from '@grabjs/superapp-sdk';
174
173
 
175
174
  if (isSuccess(response)) {
176
- // TypeScript knows response.result is available
177
- console.log(response.result);
175
+ // 200 or 204 use isOk() / isNoContent() to narrow further
178
176
  }
179
-
180
- if (isErrorResponse(response)) {
181
- // TypeScript knows response.error is available
182
- console.error(response.error);
177
+ if (isError(response)) {
178
+ // response.error: string is guaranteed
179
+ // use isClientError() / isServerError() to narrow further
180
+ }
181
+ if (isRedirection(response)) {
182
+ // 302 — use isFound() to narrow further
183
183
  }
184
184
  ```
185
185
 
186
186
  ## Best Practices
187
187
 
188
- 2. **Handle all status codes** in your switch statements, including unexpected ones.
188
+ 1. **Always check for success with type guards** before accessing `response.result`. Use `isSuccess()` and `isError()` for type-safe response handling.
189
189
 
190
- 3. **Use type guards** for cleaner response handling and better type inference.
190
+ 2. **Never use try/catch for SDK errors** SDK methods never throw. All failures are returned as responses with a numeric `status_code` and an `error` field.
191
191
 
192
- 4. **Call `reloadScopes()` when your MiniApp launches and after OAuth** before accessing protected resources.
192
+ 3. **Call `reloadScopes()` when your MiniApp launches and after OAuth** before accessing protected resources.
193
193
 
194
- 5. **Unsubscribe from streams** when your component unmounts or you no longer need updates.
194
+ 4. **Unsubscribe from streams** when your component unmounts or you no longer need updates.