@sogni-ai/expo-client 1.0.0-alpha.13 → 1.0.0-alpha.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [1.0.0-alpha.15](https://github.com/Sogni-AI/expo-client/compare/v1.0.0-alpha.14...v1.0.0-alpha.15) (2026-05-12)
2
+
3
+
4
+ ### Features
5
+
6
+ * **account:** add SSO login/signup via Google/Apple id_token ([d87aef6](https://github.com/Sogni-AI/expo-client/commit/d87aef676c9892245139222b25c8dc253afd5d5d))
7
+
8
+ # [1.0.0-alpha.14](https://github.com/Sogni-AI/expo-client/compare/v1.0.0-alpha.13...v1.0.0-alpha.14) (2026-05-12)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **media:** read upload bytes via arrayBuffer, not Blob ([90f99c5](https://github.com/Sogni-AI/expo-client/commit/90f99c532f888b0ec50a2bb9cca9a2fc84418cae))
14
+
1
15
  # [1.0.0-alpha.13](https://github.com/Sogni-AI/expo-client/compare/v1.0.0-alpha.12...v1.0.0-alpha.13) (2026-05-12)
2
16
 
3
17
 
package/README.md CHANGED
@@ -7,19 +7,23 @@ Expo / React Native SDK for the [Sogni Supernet](https://sogni.ai) — AI image,
7
7
  ## Install
8
8
 
9
9
  ```bash
10
- npx expo install @sogni-ai/expo-client@alpha expo-secure-store expo-standard-web-crypto
10
+ npx expo install @sogni-ai/expo-client@alpha expo-secure-store expo-standard-web-crypto react-native-url-polyfill
11
11
  ```
12
12
 
13
13
  ## Setup
14
14
 
15
- Polyfill `crypto.getRandomValues` at your app entry point (e.g. `app/_layout.tsx` for Expo Router or `App.tsx` for classic Expo):
15
+ At your app entry point (e.g. `app/_layout.tsx` for Expo Router or `App.tsx` for classic Expo) install two polyfills, in this order, **before any other SDK imports**:
16
16
 
17
17
  ```ts
18
+ import 'react-native-url-polyfill/auto';
18
19
  import { polyfillWebCrypto } from 'expo-standard-web-crypto';
19
20
  polyfillWebCrypto();
20
21
  ```
21
22
 
22
- This is required for the SDK to generate UUIDs and (optionally) fresh wallets. PBKDF2 for username+password login is done in pure JS via `@noble/hashes`, so no `crypto.subtle` polyfill is needed.
23
+ - **`react-native-url-polyfill/auto`** gives you a spec-compliant `URL` and `URLSearchParams`. RN's built-in URL polyfill is partial and varies across Expo SDK versions; the SDK uses URL operations the partial polyfill doesn't always implement consistently (`searchParams.set`, protocol mutation, relative URL resolution). The dedicated polyfill makes URL behavior identical across every supported version.
24
+ - **`polyfillWebCrypto()`** — installs `crypto.getRandomValues`, used by the SDK to generate UUIDs and (optionally) fresh wallets. PBKDF2 for username+password login is done in pure JS via `@noble/hashes`, so no `crypto.subtle` polyfill is needed.
25
+
26
+ > **Debug logging note:** the SDK uses `console.debug` for verbose traces (WebSocket frames, etc.). Metro silences `console.debug` by default in production-style runs, so these messages won't appear unless you raise the log level. Set `logLevel: 'info'` or `'warn'` in `SogniClient.create()` to send progress/error info through `console.info` / `console.warn` instead.
23
27
 
24
28
  ## Usage
25
29
 
@@ -84,6 +88,107 @@ const session = await sogni.account.signup({
84
88
  requires for signup. Wire it up via `react-native-turnstile` or an
85
89
  Expo-friendly equivalent.
86
90
 
91
+ ### Sign in / sign up with Google or Apple (SSO)
92
+
93
+ The Sogni server accepts Google and Apple `id_token` JWTs and resolves
94
+ them to a Sogni account with a custodial wallet. This is the
95
+ recommended flow for mobile apps because:
96
+
97
+ - **Zero friction on first launch.** One tap on the native Apple/Google sheet.
98
+ - **Survives uninstall + reinstall.** The user's Apple ID / Google account is
99
+ the recovery key — on reinstall, the same `id_token` resolves to the same
100
+ Sogni account server-side. No client-side storage required.
101
+ - **Same provider account works across devices** on the same OS.
102
+
103
+ Common login-or-signup pattern:
104
+
105
+ ```ts
106
+ import { SogniClient, ApiError } from '@sogni-ai/expo-client';
107
+
108
+ async function signInOrUp(sogni: SogniClient, idToken: string, provider: 'google' | 'apple') {
109
+ try {
110
+ return await sogni.account.loginWithSSO({ provider, idToken });
111
+ } catch (e) {
112
+ // Server returns errorCode 105 when no account exists for this IDP identity.
113
+ if (e instanceof ApiError && e.payload.errorCode === 105) {
114
+ const username = await promptForUsername(); // your app's UI
115
+ return await sogni.account.signupWithSSO({ provider, idToken, username });
116
+ }
117
+ throw e;
118
+ }
119
+ }
120
+ ```
121
+
122
+ #### Getting the `id_token`
123
+
124
+ **Apple — `expo-apple-authentication`:**
125
+
126
+ ```bash
127
+ npx expo install expo-apple-authentication
128
+ ```
129
+
130
+ ```ts
131
+ import * as AppleAuthentication from 'expo-apple-authentication';
132
+
133
+ const credential = await AppleAuthentication.signInAsync({
134
+ requestedScopes: [
135
+ AppleAuthentication.AppleAuthenticationScope.FULL_NAME,
136
+ AppleAuthentication.AppleAuthenticationScope.EMAIL
137
+ ]
138
+ });
139
+
140
+ if (credential.identityToken) {
141
+ await signInOrUp(sogni, credential.identityToken, 'apple');
142
+ }
143
+ ```
144
+
145
+ **Google — `@react-native-google-signin/google-signin` (or `expo-auth-session`):**
146
+
147
+ ```bash
148
+ npx expo install @react-native-google-signin/google-signin
149
+ ```
150
+
151
+ ```ts
152
+ import { GoogleSignin } from '@react-native-google-signin/google-signin';
153
+
154
+ GoogleSignin.configure({
155
+ iosClientId: '<your iOS OAuth client ID>',
156
+ webClientId: '<your Web OAuth client ID>' // also used as audience on Android
157
+ });
158
+
159
+ await GoogleSignin.hasPlayServices();
160
+ const { idToken } = await GoogleSignin.signIn();
161
+ if (idToken) {
162
+ await signInOrUp(sogni, idToken, 'google');
163
+ }
164
+ ```
165
+
166
+ #### Feature gating for SSO accounts
167
+
168
+ After `account.me()` resolves, `sogni.account.current.authMethod` is one
169
+ of `'password' | 'sso-google' | 'sso-apple'`. SSO accounts have a
170
+ custodial wallet, so a few server endpoints are restricted (the server
171
+ returns `403` with `errorCode 176` / `SSO_RESTRICTED`):
172
+
173
+ - Token withdrawal to an external wallet
174
+ - ERC-20 approve
175
+ - Email update (managed by the IDP)
176
+ - Staking with `source: 'wallet'`
177
+ - Unstaking / airdrop claim to `destination: 'stake'` on Etherlink
178
+
179
+ Use `authMethod` to hide UI for these operations:
180
+
181
+ ```ts
182
+ const isSSO = sogni.account.current.authMethod?.startsWith('sso-');
183
+
184
+ return (
185
+ <View>
186
+ {!isSSO && <Button title="Withdraw to Wallet" onPress={...} />}
187
+ {!isSSO && <Button title="Change Email" onPress={...} />}
188
+ </View>
189
+ );
190
+ ```
191
+
87
192
  ### Generate an image
88
193
 
89
194
  ```ts
@@ -1,6 +1,6 @@
1
1
  import ApiClient from '../ApiClient';
2
2
  import TypedEventEmitter from '../lib/TypedEventEmitter';
3
- import { AccountSnapshot, Balances, LoginData, MeData, SignupParams } from './types';
3
+ import { AccountSnapshot, Balances, LoginData, MeData, SSOLoginParams, SSOSignupParams, SignupParams } from './types';
4
4
  interface AccountEvents {
5
5
  change: AccountSnapshot;
6
6
  }
@@ -34,6 +34,26 @@ declare class AccountApi extends TypedEventEmitter<AccountEvents> {
34
34
  login(username: string, password: string, options?: {
35
35
  appSource?: string;
36
36
  }): Promise<LoginData>;
37
+ /**
38
+ * Log in via Google or Apple SSO. Pass the raw id_token from the platform
39
+ * SDK (`expo-auth-session` for Google, `expo-apple-authentication` for
40
+ * Apple). The Sogni server validates the JWT signature against the IDP's
41
+ * public keys, resolves the user's wallet by the IDP subject, and returns
42
+ * Sogni JWTs.
43
+ *
44
+ * Throws `ApiError` with `payload.errorCode === 105` if no account exists
45
+ * for this IDP identity yet — fall back to `signupWithSSO()` in that case.
46
+ */
47
+ loginWithSSO(params: SSOLoginParams): Promise<LoginData>;
48
+ /**
49
+ * Create a new Sogni account linked to a Google or Apple SSO identity. The
50
+ * server mints a custodial wallet via sogni-keymgr and returns Sogni JWTs;
51
+ * the user is automatically logged in on success.
52
+ *
53
+ * Common pattern: try `loginWithSSO()` first, fall back to this on
54
+ * `ApiError` 105 (account does not exist).
55
+ */
56
+ signupWithSSO(params: SSOSignupParams): Promise<LoginData>;
37
57
  /**
38
58
  * Create a new account. Derives the user's wallet on-device, signs the
39
59
  * EIP-712 signup payload, and exchanges it for JWT tokens (the user is
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Account/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAoC,MAAM,cAAc,CAAC;AAChE,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,SAAS,EACT,MAAM,EACN,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB,UAAU,aAAa;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,cAAM,UAAW,SAAQ,iBAAiB,CAAC,aAAa,CAAC;IACvD,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAgB;gBAE1B,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO;IAiClE,uDAAuD;IACvD,IAAI,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,CAEvC;IAED,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAInE;;;;OAIG;IACG,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,SAAS,CAAC;IAsBrB;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAuCtD,6EAA6E;IACvE,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;IAU3B;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC;IAMzC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAaf,SAAS;IAOvB,OAAO,CAAC,OAAO;CAMhB;AAUD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Account/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAoC,MAAM,cAAc,CAAC;AAChE,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACL,eAAe,EACf,QAAQ,EACR,SAAS,EACT,MAAM,EACN,cAAc,EACd,eAAe,EACf,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB,UAAU,aAAa;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,cAAM,UAAW,SAAQ,iBAAiB,CAAC,aAAa,CAAC;IACvD,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAgB;gBAE1B,MAAM,EAAE,SAAS,EAAE,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO;IAiClE,uDAAuD;IACvD,IAAI,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,CAEvC;IAED,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAInE;;;;OAIG;IACG,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,SAAS,CAAC;IAsBrB;;;;;;;;;OASG;IACG,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;IAgB9D;;;;;;;OAOG;IACG,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAoBhE;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC;IAuCtD,6EAA6E;IACvE,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC;IAY3B;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC;IAMzC;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAaf,SAAS;IAOvB,OAAO,CAAC,OAAO;CAMhB;AAUD,eAAe,UAAU,CAAC"}
@@ -85,6 +85,58 @@ class AccountApi extends TypedEventEmitter_1.default {
85
85
  });
86
86
  return res.data;
87
87
  }
88
+ /**
89
+ * Log in via Google or Apple SSO. Pass the raw id_token from the platform
90
+ * SDK (`expo-auth-session` for Google, `expo-apple-authentication` for
91
+ * Apple). The Sogni server validates the JWT signature against the IDP's
92
+ * public keys, resolves the user's wallet by the IDP subject, and returns
93
+ * Sogni JWTs.
94
+ *
95
+ * Throws `ApiError` with `payload.errorCode === 105` if no account exists
96
+ * for this IDP identity yet — fall back to `signupWithSSO()` in that case.
97
+ */
98
+ async loginWithSSO(params) {
99
+ const auth = this._client.auth;
100
+ if (!(auth instanceof AuthManager_1.TokenAuthManager)) {
101
+ throw new Error('loginWithSSO() requires token-based auth (the default)');
102
+ }
103
+ const appSource = params.appSource?.trim() || this._client.appSource;
104
+ const res = await this._client.rest.post('/v1/account/sso/login', {
105
+ provider: params.provider,
106
+ idToken: params.idToken,
107
+ rememberMe: params.rememberMe ?? true,
108
+ ...(appSource ? { appSource } : {})
109
+ });
110
+ await auth.authenticate({ token: res.data.token, refreshToken: res.data.refreshToken });
111
+ return res.data;
112
+ }
113
+ /**
114
+ * Create a new Sogni account linked to a Google or Apple SSO identity. The
115
+ * server mints a custodial wallet via sogni-keymgr and returns Sogni JWTs;
116
+ * the user is automatically logged in on success.
117
+ *
118
+ * Common pattern: try `loginWithSSO()` first, fall back to this on
119
+ * `ApiError` 105 (account does not exist).
120
+ */
121
+ async signupWithSSO(params) {
122
+ const auth = this._client.auth;
123
+ if (!(auth instanceof AuthManager_1.TokenAuthManager)) {
124
+ throw new Error('signupWithSSO() requires token-based auth (the default)');
125
+ }
126
+ const appSource = params.appSource?.trim() || this._client.appSource;
127
+ const res = await this._client.rest.post('/v1/account/sso/signup', {
128
+ appid: this._client.appId,
129
+ provider: params.provider,
130
+ idToken: params.idToken,
131
+ username: params.username,
132
+ subscribe: params.subscribe ? 1 : 0,
133
+ ...(params.referralCode ? { referralCode: params.referralCode } : {}),
134
+ rememberMe: params.rememberMe ?? true,
135
+ ...(appSource ? { appSource } : {})
136
+ });
137
+ await auth.authenticate({ token: res.data.token, refreshToken: res.data.refreshToken });
138
+ return res.data;
139
+ }
88
140
  /**
89
141
  * Create a new account. Derives the user's wallet on-device, signs the
90
142
  * EIP-712 signup payload, and exchanges it for JWT tokens (the user is
@@ -130,7 +182,9 @@ class AccountApi extends TypedEventEmitter_1.default {
130
182
  this._update({
131
183
  username: res.data.username,
132
184
  email: res.data.currentEmail,
133
- walletAddress: res.data.walletAddress
185
+ walletAddress: res.data.walletAddress,
186
+ // Legacy password accounts may omit the `auth` field; treat as 'password'.
187
+ authMethod: res.data.auth ?? 'password'
134
188
  });
135
189
  return res.data;
136
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Account/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Account/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { Balances } from '../ApiClient/WebSocketClient/events';
2
2
  import { SupernetType } from '../ApiClient/WebSocketClient/types';
3
3
  export type { Balances };
4
+ /** How the user originally authenticated. Drives feature gating on SSO accounts. */
5
+ export type AuthMethod = 'password' | 'sso-google' | 'sso-apple';
6
+ /** SSO identity providers supported by the Sogni API. */
7
+ export type SSOProvider = 'google' | 'apple';
4
8
  export interface MeData {
5
9
  currentEmail: string;
6
10
  username: string;
@@ -11,6 +15,15 @@ export interface MeData {
11
15
  discordServerMember?: boolean;
12
16
  discordUsername?: string;
13
17
  requestedUpdatedEmail?: string;
18
+ /**
19
+ * How the user originally authenticated.
20
+ *
21
+ * Legacy password accounts may omit this field — treat missing as
22
+ * `'password'`. Use this to hide UI that doesn't apply to SSO users (e.g.,
23
+ * "Change Email", "Withdraw to Wallet") since their wallet is custodial and
24
+ * their email is managed by the IDP.
25
+ */
26
+ auth?: AuthMethod;
14
27
  }
15
28
  export interface LoginData {
16
29
  token: string;
@@ -30,6 +43,46 @@ export interface SignupParams {
30
43
  /** Optional app source label for signup attribution. */
31
44
  appSource?: string;
32
45
  }
46
+ /**
47
+ * Parameters for `account.loginWithSSO()`. Pass the raw `idToken` JWT exactly
48
+ * as the Google or Apple SDK returned it — do NOT decode it client-side. The
49
+ * Sogni server validates the JWT signature against the IDP's public keys.
50
+ */
51
+ export interface SSOLoginParams {
52
+ provider: SSOProvider;
53
+ /** Raw id_token JWT from the Google or Apple SDK. */
54
+ idToken: string;
55
+ /**
56
+ * Whether to mint a long-lived refresh token. Mobile apps usually want
57
+ * `true` so the user stays logged in after backgrounding. Default true.
58
+ */
59
+ rememberMe?: boolean;
60
+ /** Optional app source label for analytics. */
61
+ appSource?: string;
62
+ }
63
+ /**
64
+ * Parameters for `account.signupWithSSO()` — first-time SSO account creation.
65
+ * On success the server mints a custodial wallet via sogni-keymgr and the
66
+ * user is automatically logged in.
67
+ */
68
+ export interface SSOSignupParams {
69
+ provider: SSOProvider;
70
+ /** Raw id_token JWT from the Google or Apple SDK. */
71
+ idToken: string;
72
+ /**
73
+ * Desired username (4-20 chars). Same validation rules as
74
+ * password-based signup. Lowercased server-side for indexing.
75
+ */
76
+ username: string;
77
+ /** Subscribe to product updates / newsletter. Default false. */
78
+ subscribe?: boolean;
79
+ /** Optional referral code from another Sogni user. */
80
+ referralCode?: string;
81
+ /** See SSOLoginParams.rememberMe. */
82
+ rememberMe?: boolean;
83
+ /** Optional app source label. */
84
+ appSource?: string;
85
+ }
33
86
  export interface AccountSnapshot {
34
87
  authenticated: boolean;
35
88
  networkStatus: 'connected' | 'disconnected' | 'connecting';
@@ -38,6 +91,11 @@ export interface AccountSnapshot {
38
91
  walletAddress: string | null;
39
92
  username: string | null;
40
93
  email: string | null;
94
+ /**
95
+ * How the current user authenticated, populated after `account.me()`. Null
96
+ * until me() resolves. Use this to gate UI for SSO accounts.
97
+ */
98
+ authMethod: AuthMethod | null;
41
99
  }
42
100
  export declare function emptyAccountSnapshot(): AccountSnapshot;
43
101
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Account/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;IAC3D,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,oBAAoB,IAAI,eAAe,CAatD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Account/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEzB,oFAAoF;AACpF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAEjE,yDAAyD;AACzD,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,MAAM;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,WAAW,CAAC;IACtB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,WAAW,GAAG,cAAc,GAAG,YAAY,CAAC;IAC3D,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,QAAQ,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;OAGG;IACH,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAgB,oBAAoB,IAAI,eAAe,CActD"}
@@ -12,7 +12,8 @@ function emptyAccountSnapshot() {
12
12
  },
13
13
  walletAddress: null,
14
14
  username: null,
15
- email: null
15
+ email: null,
16
+ authMethod: null
16
17
  };
17
18
  }
18
19
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Account/types.ts"],"names":[],"mappings":";;AA+CA,oDAaC;AAbD,SAAgB,oBAAoB;IAClC,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;YAC1D,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE;SAC/E;QACD,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Account/types.ts"],"names":[],"mappings":";;AA6GA,oDAcC;AAdD,SAAgB,oBAAoB;IAClC,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;YAC1D,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE;SAC/E;QACD,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import AccountApi from './Account';
2
- import { AccountSnapshot, Balances, LoginData, MeData, SignupParams } from './Account/types';
2
+ import { AccountSnapshot, AuthMethod, Balances, LoginData, MeData, SignupParams, SSOLoginParams, SSOProvider, SSOSignupParams } from './Account/types';
3
3
  import ChatApi from './Chat';
4
4
  import ChatStream from './Chat/ChatStream';
5
5
  import { parseToolCallArguments } from './Chat/tools';
@@ -14,7 +14,7 @@ import { ApiKeyAuthManager, AuthStorage, TokenAuthData } from './lib/AuthManager
14
14
  import ErrorData from './types/ErrorData';
15
15
  import { TokenType } from './types/token';
16
16
  import { LIB_VERSION } from './version';
17
- export type { AccountSnapshot, ApiErrorResponse, ApiResponse, AudioOutputFormat, AudioProjectParams, AuthenticatedEvent, AuthStorage, AvailableModel, Balances, BalanceUpdateEvent, ChangeNetworkEvent, ChatCompletionChunk, ChatCompletionParams, ChatCompletionResult, ChatMessage, ConnectedEvent, ContentPart, ControlNetMode, ControlNetName, ControlNetParams, DisconnectedEvent, ErrorData, ImageOutputFormat, ImageProjectParams, ImageUrlContentPart, Job, JobErrorReason, JobStatus, LLMModelInfo, LoginData, Logger, LogLevel, MediaInput, MeData, SignupParams, Project, ProjectParams, ProjectStatus, SupernetType, TextContentPart, ToastMessageEvent, TokenAuthData, TokenType, TokenUsage, ToolCall, ToolCallDelta, ToolChoice, ToolDefinition, ToolRound, VideoOutputFormat, VideoProjectParams };
17
+ export type { AccountSnapshot, ApiErrorResponse, ApiResponse, AudioOutputFormat, AudioProjectParams, AuthenticatedEvent, AuthStorage, AvailableModel, Balances, BalanceUpdateEvent, ChangeNetworkEvent, ChatCompletionChunk, ChatCompletionParams, ChatCompletionResult, ChatMessage, ConnectedEvent, ContentPart, ControlNetMode, ControlNetName, ControlNetParams, DisconnectedEvent, ErrorData, ImageOutputFormat, ImageProjectParams, ImageUrlContentPart, Job, JobErrorReason, JobStatus, LLMModelInfo, AuthMethod, LoginData, Logger, LogLevel, MediaInput, MeData, SignupParams, SSOLoginParams, SSOProvider, SSOSignupParams, Project, ProjectParams, ProjectStatus, SupernetType, TextContentPart, ToastMessageEvent, TokenAuthData, TokenType, TokenUsage, ToolCall, ToolCallDelta, ToolChoice, ToolDefinition, ToolRound, VideoOutputFormat, VideoProjectParams };
18
18
  export { ApiError, ApiKeyAuthManager, ChatStream, LIB_VERSION, parseToolCallArguments };
19
19
  export interface SogniClientConfig {
20
20
  /** Unique application ID. Multiple connections with the same ID will be rejected by the server. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -22,12 +22,22 @@ export interface MediaInputBody {
22
22
  /**
23
23
  * Convert a MediaInput into a fetch body for upload to a presigned PUT URL.
24
24
  *
25
- * For URI inputs: reads the file via fetch(uri).blob(), so it works with
26
- * `file://`, `content://`, `ph://`, and `http(s)://` URIs.
25
+ * Reads the URI via `fetch(uri).arrayBuffer()` and hands back a `Uint8Array`.
26
+ * We deliberately avoid `res.blob()` here for two reasons:
27
27
  *
28
- * For Uint8Array inputs: passes the bytes through. Caller must provide
29
- * the correct Content-Type via the `contentType` parameter; we cannot
30
- * reliably detect MIME from raw bytes in all cases.
28
+ * 1. React Native's `Blob` is a minimal polyfill without `.text()` or
29
+ * `.arrayBuffer()` (see `Libraries/Blob/Blob.js`), so working with the
30
+ * raw bytes is more portable than rolling with a Blob whose surface
31
+ * depends on platform version.
32
+ * 2. On iOS PhotoKit (`ph://`) URIs, `res.blob()` has been observed to
33
+ * silently return a 0-byte blob — we'd PUT an empty body and the server
34
+ * would store a corrupted image. Reading as an ArrayBuffer makes the
35
+ * byte count visible and lets us throw on empty input.
36
+ *
37
+ * For very large files (videos, raw audio), this buffers the whole payload
38
+ * in JS memory. Acceptable for typical image / short audio reference
39
+ * uploads. If you have raw bytes already (e.g. from `expo-file-system`),
40
+ * pass `Uint8Array` directly to skip the fetch.
31
41
  */
32
42
  export declare function toFetchBody(input: MediaInput, contentTypeOverride?: string): Promise<MediaInputBody>;
33
43
  //# sourceMappingURL=mediaInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mediaInput.d.ts","sourceRoot":"","sources":["../../../src/lib/mediaInput.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,IAAI,aAAa,CAEzE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,cAAc,CAAC,CAazB"}
1
+ {"version":3,"file":"mediaInput.d.ts","sourceRoot":"","sources":["../../../src/lib/mediaInput.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,IAAI,aAAa,CAEzE;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
@@ -8,12 +8,22 @@ function isMediaInputUri(input) {
8
8
  /**
9
9
  * Convert a MediaInput into a fetch body for upload to a presigned PUT URL.
10
10
  *
11
- * For URI inputs: reads the file via fetch(uri).blob(), so it works with
12
- * `file://`, `content://`, `ph://`, and `http(s)://` URIs.
11
+ * Reads the URI via `fetch(uri).arrayBuffer()` and hands back a `Uint8Array`.
12
+ * We deliberately avoid `res.blob()` here for two reasons:
13
13
  *
14
- * For Uint8Array inputs: passes the bytes through. Caller must provide
15
- * the correct Content-Type via the `contentType` parameter; we cannot
16
- * reliably detect MIME from raw bytes in all cases.
14
+ * 1. React Native's `Blob` is a minimal polyfill without `.text()` or
15
+ * `.arrayBuffer()` (see `Libraries/Blob/Blob.js`), so working with the
16
+ * raw bytes is more portable than rolling with a Blob whose surface
17
+ * depends on platform version.
18
+ * 2. On iOS PhotoKit (`ph://`) URIs, `res.blob()` has been observed to
19
+ * silently return a 0-byte blob — we'd PUT an empty body and the server
20
+ * would store a corrupted image. Reading as an ArrayBuffer makes the
21
+ * byte count visible and lets us throw on empty input.
22
+ *
23
+ * For very large files (videos, raw audio), this buffers the whole payload
24
+ * in JS memory. Acceptable for typical image / short audio reference
25
+ * uploads. If you have raw bytes already (e.g. from `expo-file-system`),
26
+ * pass `Uint8Array` directly to skip the fetch.
17
27
  */
18
28
  async function toFetchBody(input, contentTypeOverride) {
19
29
  if (input instanceof Uint8Array) {
@@ -23,10 +33,15 @@ async function toFetchBody(input, contentTypeOverride) {
23
33
  if (!res.ok) {
24
34
  throw new Error(`Failed to read media at ${input.uri}: HTTP ${res.status}`);
25
35
  }
26
- const blob = await res.blob();
36
+ const arrayBuffer = await res.arrayBuffer();
37
+ if (arrayBuffer.byteLength === 0) {
38
+ throw new Error(`Read 0 bytes from ${input.uri}. On iOS, ph:// PhotoKit URIs sometimes return empty bodies — copy the asset to a file:// path first (e.g. via expo-image-picker with allowsEditing or expo-image-manipulator).`);
39
+ }
40
+ const bytes = new Uint8Array(arrayBuffer);
41
+ const responseContentType = res.headers.get('content-type') ?? undefined;
27
42
  return {
28
- body: blob,
29
- contentType: contentTypeOverride ?? input.type ?? blob.type ?? undefined
43
+ body: bytes,
44
+ contentType: contentTypeOverride ?? input.type ?? responseContentType
30
45
  };
31
46
  }
32
47
  //# sourceMappingURL=mediaInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mediaInput.js","sourceRoot":"","sources":["../../../src/lib/mediaInput.ts"],"names":[],"mappings":";;AAkBA,0CAEC;AAiBD,kCAgBC;AAnCD,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC;AACrD,CAAC;AAOD;;;;;;;;;GASG;AACI,KAAK,UAAU,WAAW,CAC/B,KAAiB,EACjB,mBAA4B;IAE5B,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,KAA4B,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,mBAAmB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS;KACzE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mediaInput.js","sourceRoot":"","sources":["../../../src/lib/mediaInput.ts"],"names":[],"mappings":";;AAkBA,0CAEC;AA2BD,kCAuBC;AApDD,SAAgB,eAAe,CAAC,KAAiB;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC;AACrD,CAAC;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACI,KAAK,UAAU,WAAW,CAC/B,KAAiB,EACjB,mBAA4B;IAE5B,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,KAA4B,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,WAAW,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,CAAC,GAAG,iLAAiL,CAChN,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,KAA4B;QAClC,WAAW,EAAE,mBAAmB,IAAI,KAAK,CAAC,IAAI,IAAI,mBAAmB;KACtE,CAAC;AACJ,CAAC"}
@@ -80,6 +80,58 @@ class AccountApi extends TypedEventEmitter {
80
80
  });
81
81
  return res.data;
82
82
  }
83
+ /**
84
+ * Log in via Google or Apple SSO. Pass the raw id_token from the platform
85
+ * SDK (`expo-auth-session` for Google, `expo-apple-authentication` for
86
+ * Apple). The Sogni server validates the JWT signature against the IDP's
87
+ * public keys, resolves the user's wallet by the IDP subject, and returns
88
+ * Sogni JWTs.
89
+ *
90
+ * Throws `ApiError` with `payload.errorCode === 105` if no account exists
91
+ * for this IDP identity yet — fall back to `signupWithSSO()` in that case.
92
+ */
93
+ async loginWithSSO(params) {
94
+ const auth = this._client.auth;
95
+ if (!(auth instanceof TokenAuthManager)) {
96
+ throw new Error('loginWithSSO() requires token-based auth (the default)');
97
+ }
98
+ const appSource = params.appSource?.trim() || this._client.appSource;
99
+ const res = await this._client.rest.post('/v1/account/sso/login', {
100
+ provider: params.provider,
101
+ idToken: params.idToken,
102
+ rememberMe: params.rememberMe ?? true,
103
+ ...(appSource ? { appSource } : {})
104
+ });
105
+ await auth.authenticate({ token: res.data.token, refreshToken: res.data.refreshToken });
106
+ return res.data;
107
+ }
108
+ /**
109
+ * Create a new Sogni account linked to a Google or Apple SSO identity. The
110
+ * server mints a custodial wallet via sogni-keymgr and returns Sogni JWTs;
111
+ * the user is automatically logged in on success.
112
+ *
113
+ * Common pattern: try `loginWithSSO()` first, fall back to this on
114
+ * `ApiError` 105 (account does not exist).
115
+ */
116
+ async signupWithSSO(params) {
117
+ const auth = this._client.auth;
118
+ if (!(auth instanceof TokenAuthManager)) {
119
+ throw new Error('signupWithSSO() requires token-based auth (the default)');
120
+ }
121
+ const appSource = params.appSource?.trim() || this._client.appSource;
122
+ const res = await this._client.rest.post('/v1/account/sso/signup', {
123
+ appid: this._client.appId,
124
+ provider: params.provider,
125
+ idToken: params.idToken,
126
+ username: params.username,
127
+ subscribe: params.subscribe ? 1 : 0,
128
+ ...(params.referralCode ? { referralCode: params.referralCode } : {}),
129
+ rememberMe: params.rememberMe ?? true,
130
+ ...(appSource ? { appSource } : {})
131
+ });
132
+ await auth.authenticate({ token: res.data.token, refreshToken: res.data.refreshToken });
133
+ return res.data;
134
+ }
83
135
  /**
84
136
  * Create a new account. Derives the user's wallet on-device, signs the
85
137
  * EIP-712 signup payload, and exchanges it for JWT tokens (the user is
@@ -125,7 +177,9 @@ class AccountApi extends TypedEventEmitter {
125
177
  this._update({
126
178
  username: res.data.username,
127
179
  email: res.data.currentEmail,
128
- walletAddress: res.data.walletAddress
180
+ walletAddress: res.data.walletAddress,
181
+ // Legacy password accounts may omit the `auth` field; treat as 'password'.
182
+ authMethod: res.data.auth ?? 'password'
129
183
  });
130
184
  return res.data;
131
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Account/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Account/index.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,8 @@ export function emptyAccountSnapshot() {
9
9
  },
10
10
  walletAddress: null,
11
11
  username: null,
12
- email: null
12
+ email: null,
13
+ authMethod: null
13
14
  };
14
15
  }
15
16
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Account/types.ts"],"names":[],"mappings":"AA+CA,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;YAC1D,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE;SAC/E;QACD,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Account/types.ts"],"names":[],"mappings":"AA6GA,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,aAAa,EAAE,KAAK;QACpB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;YAC1D,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE;SAC/E;QACD,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;KACjB,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,22 @@ export function isMediaInputUri(input) {
4
4
  /**
5
5
  * Convert a MediaInput into a fetch body for upload to a presigned PUT URL.
6
6
  *
7
- * For URI inputs: reads the file via fetch(uri).blob(), so it works with
8
- * `file://`, `content://`, `ph://`, and `http(s)://` URIs.
7
+ * Reads the URI via `fetch(uri).arrayBuffer()` and hands back a `Uint8Array`.
8
+ * We deliberately avoid `res.blob()` here for two reasons:
9
9
  *
10
- * For Uint8Array inputs: passes the bytes through. Caller must provide
11
- * the correct Content-Type via the `contentType` parameter; we cannot
12
- * reliably detect MIME from raw bytes in all cases.
10
+ * 1. React Native's `Blob` is a minimal polyfill without `.text()` or
11
+ * `.arrayBuffer()` (see `Libraries/Blob/Blob.js`), so working with the
12
+ * raw bytes is more portable than rolling with a Blob whose surface
13
+ * depends on platform version.
14
+ * 2. On iOS PhotoKit (`ph://`) URIs, `res.blob()` has been observed to
15
+ * silently return a 0-byte blob — we'd PUT an empty body and the server
16
+ * would store a corrupted image. Reading as an ArrayBuffer makes the
17
+ * byte count visible and lets us throw on empty input.
18
+ *
19
+ * For very large files (videos, raw audio), this buffers the whole payload
20
+ * in JS memory. Acceptable for typical image / short audio reference
21
+ * uploads. If you have raw bytes already (e.g. from `expo-file-system`),
22
+ * pass `Uint8Array` directly to skip the fetch.
13
23
  */
14
24
  export async function toFetchBody(input, contentTypeOverride) {
15
25
  if (input instanceof Uint8Array) {
@@ -19,10 +29,15 @@ export async function toFetchBody(input, contentTypeOverride) {
19
29
  if (!res.ok) {
20
30
  throw new Error(`Failed to read media at ${input.uri}: HTTP ${res.status}`);
21
31
  }
22
- const blob = await res.blob();
32
+ const arrayBuffer = await res.arrayBuffer();
33
+ if (arrayBuffer.byteLength === 0) {
34
+ throw new Error(`Read 0 bytes from ${input.uri}. On iOS, ph:// PhotoKit URIs sometimes return empty bodies — copy the asset to a file:// path first (e.g. via expo-image-picker with allowsEditing or expo-image-manipulator).`);
35
+ }
36
+ const bytes = new Uint8Array(arrayBuffer);
37
+ const responseContentType = res.headers.get('content-type') ?? undefined;
23
38
  return {
24
- body: blob,
25
- contentType: contentTypeOverride ?? input.type ?? blob.type ?? undefined
39
+ body: bytes,
40
+ contentType: contentTypeOverride ?? input.type ?? responseContentType
26
41
  };
27
42
  }
28
43
  //# sourceMappingURL=mediaInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mediaInput.js","sourceRoot":"","sources":["../../../src/lib/mediaInput.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC;AACrD,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAiB,EACjB,mBAA4B;IAE5B,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,KAA4B,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO;QACL,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,mBAAmB,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS;KACzE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mediaInput.js","sourceRoot":"","sources":["../../../src/lib/mediaInput.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,eAAe,CAAC,KAAiB;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC;AACrD,CAAC;AAOD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAiB,EACjB,mBAA4B;IAE5B,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,EAAE,IAAI,EAAE,KAA4B,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IAClF,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,WAAW,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,CAAC,GAAG,iLAAiL,CAChN,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,KAA4B;QAClC,WAAW,EAAE,mBAAmB,IAAI,KAAK,CAAC,IAAI,IAAI,mBAAmB;KACtE,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sogni-ai/expo-client",
3
- "version": "1.0.0-alpha.13",
3
+ "version": "1.0.0-alpha.15",
4
4
  "description": "Sogni SDK for Expo/React Native - AI image, video & audio generation plus LLM chat via the Sogni Supernet",
5
5
  "keywords": [
6
6
  "sogni",
@@ -7,6 +7,8 @@ import {
7
7
  Balances,
8
8
  LoginData,
9
9
  MeData,
10
+ SSOLoginParams,
11
+ SSOSignupParams,
10
12
  SignupParams,
11
13
  emptyAccountSnapshot
12
14
  } from './types';
@@ -105,6 +107,60 @@ class AccountApi extends TypedEventEmitter<AccountEvents> {
105
107
  return res.data;
106
108
  }
107
109
 
110
+ /**
111
+ * Log in via Google or Apple SSO. Pass the raw id_token from the platform
112
+ * SDK (`expo-auth-session` for Google, `expo-apple-authentication` for
113
+ * Apple). The Sogni server validates the JWT signature against the IDP's
114
+ * public keys, resolves the user's wallet by the IDP subject, and returns
115
+ * Sogni JWTs.
116
+ *
117
+ * Throws `ApiError` with `payload.errorCode === 105` if no account exists
118
+ * for this IDP identity yet — fall back to `signupWithSSO()` in that case.
119
+ */
120
+ async loginWithSSO(params: SSOLoginParams): Promise<LoginData> {
121
+ const auth = this._client.auth;
122
+ if (!(auth instanceof TokenAuthManager)) {
123
+ throw new Error('loginWithSSO() requires token-based auth (the default)');
124
+ }
125
+ const appSource = params.appSource?.trim() || this._client.appSource;
126
+ const res = await this._client.rest.post<ApiResponse<LoginData>>('/v1/account/sso/login', {
127
+ provider: params.provider,
128
+ idToken: params.idToken,
129
+ rememberMe: params.rememberMe ?? true,
130
+ ...(appSource ? { appSource } : {})
131
+ });
132
+ await auth.authenticate({ token: res.data.token, refreshToken: res.data.refreshToken });
133
+ return res.data;
134
+ }
135
+
136
+ /**
137
+ * Create a new Sogni account linked to a Google or Apple SSO identity. The
138
+ * server mints a custodial wallet via sogni-keymgr and returns Sogni JWTs;
139
+ * the user is automatically logged in on success.
140
+ *
141
+ * Common pattern: try `loginWithSSO()` first, fall back to this on
142
+ * `ApiError` 105 (account does not exist).
143
+ */
144
+ async signupWithSSO(params: SSOSignupParams): Promise<LoginData> {
145
+ const auth = this._client.auth;
146
+ if (!(auth instanceof TokenAuthManager)) {
147
+ throw new Error('signupWithSSO() requires token-based auth (the default)');
148
+ }
149
+ const appSource = params.appSource?.trim() || this._client.appSource;
150
+ const res = await this._client.rest.post<ApiResponse<LoginData>>('/v1/account/sso/signup', {
151
+ appid: this._client.appId,
152
+ provider: params.provider,
153
+ idToken: params.idToken,
154
+ username: params.username,
155
+ subscribe: params.subscribe ? 1 : 0,
156
+ ...(params.referralCode ? { referralCode: params.referralCode } : {}),
157
+ rememberMe: params.rememberMe ?? true,
158
+ ...(appSource ? { appSource } : {})
159
+ });
160
+ await auth.authenticate({ token: res.data.token, refreshToken: res.data.refreshToken });
161
+ return res.data;
162
+ }
163
+
108
164
  /**
109
165
  * Create a new account. Derives the user's wallet on-device, signs the
110
166
  * EIP-712 signup payload, and exchanges it for JWT tokens (the user is
@@ -155,7 +211,9 @@ class AccountApi extends TypedEventEmitter<AccountEvents> {
155
211
  this._update({
156
212
  username: res.data.username,
157
213
  email: res.data.currentEmail,
158
- walletAddress: res.data.walletAddress
214
+ walletAddress: res.data.walletAddress,
215
+ // Legacy password accounts may omit the `auth` field; treat as 'password'.
216
+ authMethod: res.data.auth ?? 'password'
159
217
  });
160
218
  return res.data;
161
219
  }
@@ -3,6 +3,12 @@ import { SupernetType } from '../ApiClient/WebSocketClient/types';
3
3
 
4
4
  export type { Balances };
5
5
 
6
+ /** How the user originally authenticated. Drives feature gating on SSO accounts. */
7
+ export type AuthMethod = 'password' | 'sso-google' | 'sso-apple';
8
+
9
+ /** SSO identity providers supported by the Sogni API. */
10
+ export type SSOProvider = 'google' | 'apple';
11
+
6
12
  export interface MeData {
7
13
  currentEmail: string;
8
14
  username: string;
@@ -13,6 +19,15 @@ export interface MeData {
13
19
  discordServerMember?: boolean;
14
20
  discordUsername?: string;
15
21
  requestedUpdatedEmail?: string;
22
+ /**
23
+ * How the user originally authenticated.
24
+ *
25
+ * Legacy password accounts may omit this field — treat missing as
26
+ * `'password'`. Use this to hide UI that doesn't apply to SSO users (e.g.,
27
+ * "Change Email", "Withdraw to Wallet") since their wallet is custodial and
28
+ * their email is managed by the IDP.
29
+ */
30
+ auth?: AuthMethod;
16
31
  }
17
32
 
18
33
  export interface LoginData {
@@ -35,6 +50,48 @@ export interface SignupParams {
35
50
  appSource?: string;
36
51
  }
37
52
 
53
+ /**
54
+ * Parameters for `account.loginWithSSO()`. Pass the raw `idToken` JWT exactly
55
+ * as the Google or Apple SDK returned it — do NOT decode it client-side. The
56
+ * Sogni server validates the JWT signature against the IDP's public keys.
57
+ */
58
+ export interface SSOLoginParams {
59
+ provider: SSOProvider;
60
+ /** Raw id_token JWT from the Google or Apple SDK. */
61
+ idToken: string;
62
+ /**
63
+ * Whether to mint a long-lived refresh token. Mobile apps usually want
64
+ * `true` so the user stays logged in after backgrounding. Default true.
65
+ */
66
+ rememberMe?: boolean;
67
+ /** Optional app source label for analytics. */
68
+ appSource?: string;
69
+ }
70
+
71
+ /**
72
+ * Parameters for `account.signupWithSSO()` — first-time SSO account creation.
73
+ * On success the server mints a custodial wallet via sogni-keymgr and the
74
+ * user is automatically logged in.
75
+ */
76
+ export interface SSOSignupParams {
77
+ provider: SSOProvider;
78
+ /** Raw id_token JWT from the Google or Apple SDK. */
79
+ idToken: string;
80
+ /**
81
+ * Desired username (4-20 chars). Same validation rules as
82
+ * password-based signup. Lowercased server-side for indexing.
83
+ */
84
+ username: string;
85
+ /** Subscribe to product updates / newsletter. Default false. */
86
+ subscribe?: boolean;
87
+ /** Optional referral code from another Sogni user. */
88
+ referralCode?: string;
89
+ /** See SSOLoginParams.rememberMe. */
90
+ rememberMe?: boolean;
91
+ /** Optional app source label. */
92
+ appSource?: string;
93
+ }
94
+
38
95
  export interface AccountSnapshot {
39
96
  authenticated: boolean;
40
97
  networkStatus: 'connected' | 'disconnected' | 'connecting';
@@ -43,6 +100,11 @@ export interface AccountSnapshot {
43
100
  walletAddress: string | null;
44
101
  username: string | null;
45
102
  email: string | null;
103
+ /**
104
+ * How the current user authenticated, populated after `account.me()`. Null
105
+ * until me() resolves. Use this to gate UI for SSO accounts.
106
+ */
107
+ authMethod: AuthMethod | null;
46
108
  }
47
109
 
48
110
  export function emptyAccountSnapshot(): AccountSnapshot {
@@ -56,6 +118,7 @@ export function emptyAccountSnapshot(): AccountSnapshot {
56
118
  },
57
119
  walletAddress: null,
58
120
  username: null,
59
- email: null
121
+ email: null,
122
+ authMethod: null
60
123
  };
61
124
  }
package/src/index.ts CHANGED
@@ -1,5 +1,15 @@
1
1
  import AccountApi from './Account';
2
- import { AccountSnapshot, Balances, LoginData, MeData, SignupParams } from './Account/types';
2
+ import {
3
+ AccountSnapshot,
4
+ AuthMethod,
5
+ Balances,
6
+ LoginData,
7
+ MeData,
8
+ SignupParams,
9
+ SSOLoginParams,
10
+ SSOProvider,
11
+ SSOSignupParams
12
+ } from './Account/types';
3
13
  import ChatApi from './Chat';
4
14
  import ChatStream from './Chat/ChatStream';
5
15
  import { parseToolCallArguments } from './Chat/tools';
@@ -85,12 +95,16 @@ export type {
85
95
  JobErrorReason,
86
96
  JobStatus,
87
97
  LLMModelInfo,
98
+ AuthMethod,
88
99
  LoginData,
89
100
  Logger,
90
101
  LogLevel,
91
102
  MediaInput,
92
103
  MeData,
93
104
  SignupParams,
105
+ SSOLoginParams,
106
+ SSOProvider,
107
+ SSOSignupParams,
94
108
  Project,
95
109
  ProjectParams,
96
110
  ProjectStatus,
@@ -28,12 +28,22 @@ export interface MediaInputBody {
28
28
  /**
29
29
  * Convert a MediaInput into a fetch body for upload to a presigned PUT URL.
30
30
  *
31
- * For URI inputs: reads the file via fetch(uri).blob(), so it works with
32
- * `file://`, `content://`, `ph://`, and `http(s)://` URIs.
31
+ * Reads the URI via `fetch(uri).arrayBuffer()` and hands back a `Uint8Array`.
32
+ * We deliberately avoid `res.blob()` here for two reasons:
33
33
  *
34
- * For Uint8Array inputs: passes the bytes through. Caller must provide
35
- * the correct Content-Type via the `contentType` parameter; we cannot
36
- * reliably detect MIME from raw bytes in all cases.
34
+ * 1. React Native's `Blob` is a minimal polyfill without `.text()` or
35
+ * `.arrayBuffer()` (see `Libraries/Blob/Blob.js`), so working with the
36
+ * raw bytes is more portable than rolling with a Blob whose surface
37
+ * depends on platform version.
38
+ * 2. On iOS PhotoKit (`ph://`) URIs, `res.blob()` has been observed to
39
+ * silently return a 0-byte blob — we'd PUT an empty body and the server
40
+ * would store a corrupted image. Reading as an ArrayBuffer makes the
41
+ * byte count visible and lets us throw on empty input.
42
+ *
43
+ * For very large files (videos, raw audio), this buffers the whole payload
44
+ * in JS memory. Acceptable for typical image / short audio reference
45
+ * uploads. If you have raw bytes already (e.g. from `expo-file-system`),
46
+ * pass `Uint8Array` directly to skip the fetch.
37
47
  */
38
48
  export async function toFetchBody(
39
49
  input: MediaInput,
@@ -46,9 +56,16 @@ export async function toFetchBody(
46
56
  if (!res.ok) {
47
57
  throw new Error(`Failed to read media at ${input.uri}: HTTP ${res.status}`);
48
58
  }
49
- const blob = await res.blob();
59
+ const arrayBuffer = await res.arrayBuffer();
60
+ if (arrayBuffer.byteLength === 0) {
61
+ throw new Error(
62
+ `Read 0 bytes from ${input.uri}. On iOS, ph:// PhotoKit URIs sometimes return empty bodies — copy the asset to a file:// path first (e.g. via expo-image-picker with allowsEditing or expo-image-manipulator).`
63
+ );
64
+ }
65
+ const bytes = new Uint8Array(arrayBuffer);
66
+ const responseContentType = res.headers.get('content-type') ?? undefined;
50
67
  return {
51
- body: blob,
52
- contentType: contentTypeOverride ?? input.type ?? blob.type ?? undefined
68
+ body: bytes as unknown as BodyInit,
69
+ contentType: contentTypeOverride ?? input.type ?? responseContentType
53
70
  };
54
71
  }