react-native-appwrite 0.7.2 → 0.7.4

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 (112) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/README.md +1 -1
  3. package/dist/cjs/sdk.js +36 -84
  4. package/dist/cjs/sdk.js.map +1 -1
  5. package/dist/esm/sdk.js +36 -84
  6. package/dist/esm/sdk.js.map +1 -1
  7. package/docs/examples/account/create-anonymous-session.md +1 -1
  8. package/docs/examples/account/create-email-password-session.md +1 -1
  9. package/docs/examples/account/create-email-token.md +1 -1
  10. package/docs/examples/account/create-j-w-t.md +1 -1
  11. package/docs/examples/account/create-magic-u-r-l-token.md +1 -1
  12. package/docs/examples/account/create-mfa-authenticator.md +1 -1
  13. package/docs/examples/account/create-mfa-challenge.md +1 -1
  14. package/docs/examples/account/create-mfa-recovery-codes.md +1 -1
  15. package/docs/examples/account/create-o-auth2session.md +1 -1
  16. package/docs/examples/account/create-o-auth2token.md +1 -1
  17. package/docs/examples/account/create-phone-token.md +1 -1
  18. package/docs/examples/account/create-phone-verification.md +1 -1
  19. package/docs/examples/account/create-push-target.md +1 -1
  20. package/docs/examples/account/create-recovery.md +1 -1
  21. package/docs/examples/account/create-session.md +1 -1
  22. package/docs/examples/account/create-verification.md +1 -1
  23. package/docs/examples/account/create.md +1 -1
  24. package/docs/examples/account/delete-identity.md +1 -1
  25. package/docs/examples/account/delete-mfa-authenticator.md +1 -1
  26. package/docs/examples/account/delete-push-target.md +1 -1
  27. package/docs/examples/account/delete-session.md +1 -1
  28. package/docs/examples/account/delete-sessions.md +1 -1
  29. package/docs/examples/account/get-mfa-recovery-codes.md +1 -1
  30. package/docs/examples/account/get-prefs.md +1 -1
  31. package/docs/examples/account/get-session.md +1 -1
  32. package/docs/examples/account/get.md +1 -1
  33. package/docs/examples/account/list-identities.md +1 -1
  34. package/docs/examples/account/list-logs.md +1 -1
  35. package/docs/examples/account/list-mfa-factors.md +1 -1
  36. package/docs/examples/account/list-sessions.md +1 -1
  37. package/docs/examples/account/update-email.md +1 -1
  38. package/docs/examples/account/update-m-f-a.md +1 -1
  39. package/docs/examples/account/update-magic-u-r-l-session.md +1 -1
  40. package/docs/examples/account/update-mfa-authenticator.md +1 -1
  41. package/docs/examples/account/update-mfa-challenge.md +1 -1
  42. package/docs/examples/account/update-mfa-recovery-codes.md +1 -1
  43. package/docs/examples/account/update-name.md +1 -1
  44. package/docs/examples/account/update-password.md +1 -1
  45. package/docs/examples/account/update-phone-session.md +1 -1
  46. package/docs/examples/account/update-phone-verification.md +1 -1
  47. package/docs/examples/account/update-phone.md +1 -1
  48. package/docs/examples/account/update-prefs.md +1 -1
  49. package/docs/examples/account/update-push-target.md +1 -1
  50. package/docs/examples/account/update-recovery.md +1 -1
  51. package/docs/examples/account/update-session.md +1 -1
  52. package/docs/examples/account/update-status.md +1 -1
  53. package/docs/examples/account/update-verification.md +1 -1
  54. package/docs/examples/avatars/get-browser.md +1 -1
  55. package/docs/examples/avatars/get-credit-card.md +1 -1
  56. package/docs/examples/avatars/get-favicon.md +1 -1
  57. package/docs/examples/avatars/get-flag.md +1 -1
  58. package/docs/examples/avatars/get-image.md +1 -1
  59. package/docs/examples/avatars/get-initials.md +1 -1
  60. package/docs/examples/avatars/get-q-r.md +1 -1
  61. package/docs/examples/databases/create-document.md +1 -1
  62. package/docs/examples/databases/delete-document.md +1 -1
  63. package/docs/examples/databases/get-document.md +1 -1
  64. package/docs/examples/databases/list-documents.md +1 -1
  65. package/docs/examples/databases/update-document.md +1 -1
  66. package/docs/examples/functions/create-execution.md +1 -1
  67. package/docs/examples/functions/get-execution.md +1 -1
  68. package/docs/examples/functions/list-executions.md +1 -1
  69. package/docs/examples/graphql/mutation.md +1 -1
  70. package/docs/examples/graphql/query.md +1 -1
  71. package/docs/examples/locale/get.md +1 -1
  72. package/docs/examples/locale/list-codes.md +1 -1
  73. package/docs/examples/locale/list-continents.md +1 -1
  74. package/docs/examples/locale/list-countries-e-u.md +1 -1
  75. package/docs/examples/locale/list-countries-phones.md +1 -1
  76. package/docs/examples/locale/list-countries.md +1 -1
  77. package/docs/examples/locale/list-currencies.md +1 -1
  78. package/docs/examples/locale/list-languages.md +1 -1
  79. package/docs/examples/messaging/create-subscriber.md +1 -1
  80. package/docs/examples/messaging/delete-subscriber.md +1 -1
  81. package/docs/examples/storage/create-file.md +1 -1
  82. package/docs/examples/storage/delete-file.md +1 -1
  83. package/docs/examples/storage/get-file-download.md +1 -1
  84. package/docs/examples/storage/get-file-preview.md +1 -1
  85. package/docs/examples/storage/get-file-view.md +1 -1
  86. package/docs/examples/storage/get-file.md +1 -1
  87. package/docs/examples/storage/list-files.md +1 -1
  88. package/docs/examples/storage/update-file.md +1 -1
  89. package/docs/examples/teams/create-membership.md +1 -1
  90. package/docs/examples/teams/create.md +1 -1
  91. package/docs/examples/teams/delete-membership.md +1 -1
  92. package/docs/examples/teams/delete.md +1 -1
  93. package/docs/examples/teams/get-membership.md +1 -1
  94. package/docs/examples/teams/get-prefs.md +1 -1
  95. package/docs/examples/teams/get.md +1 -1
  96. package/docs/examples/teams/list-memberships.md +1 -1
  97. package/docs/examples/teams/list.md +1 -1
  98. package/docs/examples/teams/update-membership-status.md +1 -1
  99. package/docs/examples/teams/update-membership.md +1 -1
  100. package/docs/examples/teams/update-name.md +1 -1
  101. package/docs/examples/teams/update-prefs.md +1 -1
  102. package/package.json +3 -3
  103. package/src/client.ts +10 -3
  104. package/src/enums/o-auth-provider.ts +1 -0
  105. package/src/services/account.ts +0 -8
  106. package/src/services/databases.ts +0 -3
  107. package/src/services/functions.ts +0 -2
  108. package/src/services/locale.ts +0 -8
  109. package/src/services/storage.ts +0 -2
  110. package/src/services/teams.ts +0 -5
  111. package/types/enums/o-auth-provider.d.ts +1 -0
  112. package/types/services/databases.d.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -1 +1,6 @@
1
- # Change log
1
+ # Change log
2
+
3
+ ## 0.7.4
4
+
5
+ * Upgrade dependencies to resolve PlatformConstants error with Expo 53
6
+ * Update doc examples to use new multi-region endpoint
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Appwrite React Native SDK
2
2
 
3
3
  ![License](https://img.shields.io/github/license/appwrite/sdk-for-react-native.svg?style=flat-square)
4
- ![Version](https://img.shields.io/badge/api%20version-1.6.1-blue.svg?style=flat-square)
4
+ ![Version](https://img.shields.io/badge/api%20version-1.6.2-blue.svg?style=flat-square)
5
5
  [![Build Status](https://img.shields.io/travis/com/appwrite/sdk-generator?style=flat-square)](https://travis-ci.com/appwrite/sdk-generator)
6
6
  [![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite)
7
7
  [![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord)
package/dist/cjs/sdk.js CHANGED
@@ -99,7 +99,7 @@ class Client {
99
99
  'x-sdk-name': 'React Native',
100
100
  'x-sdk-platform': 'client',
101
101
  'x-sdk-language': 'reactnative',
102
- 'x-sdk-version': '0.7.2',
102
+ 'x-sdk-version': '0.7.4',
103
103
  'X-Appwrite-Response-Format': '1.6.0',
104
104
  };
105
105
  this.realtime = {
@@ -249,8 +249,11 @@ class Client {
249
249
  * @returns {this}
250
250
  */
251
251
  setEndpoint(endpoint) {
252
+ if (!endpoint.startsWith('http://') && !endpoint.startsWith('https://')) {
253
+ throw new AppwriteException('Invalid endpoint URL: ' + endpoint);
254
+ }
252
255
  this.config.endpoint = endpoint;
253
- this.config.endpointRealtime = this.config.endpointRealtime || this.config.endpoint.replace('https://', 'wss://').replace('http://', 'ws://');
256
+ this.config.endpointRealtime = endpoint.replace('https://', 'wss://').replace('http://', 'ws://');
254
257
  return this;
255
258
  }
256
259
  /**
@@ -261,6 +264,9 @@ class Client {
261
264
  * @returns {this}
262
265
  */
263
266
  setEndpointRealtime(endpointRealtime) {
267
+ if (!endpointRealtime.startsWith('ws://') && !endpointRealtime.startsWith('wss://')) {
268
+ throw new AppwriteException('Invalid realtime endpoint URL: ' + endpointRealtime);
269
+ }
264
270
  this.config.endpointRealtime = endpointRealtime;
265
271
  return this;
266
272
  }
@@ -464,9 +470,7 @@ class Account extends Service {
464
470
  const apiPath = '/account';
465
471
  const payload = {};
466
472
  const uri = new URL(this.client.config.endpoint + apiPath);
467
- return this.client.call('get', uri, {
468
- 'content-type': 'application/json',
469
- }, payload);
473
+ return this.client.call('get', uri, {}, payload);
470
474
  }
471
475
  /**
472
476
  * Use this endpoint to allow a new user to register a new account in your
@@ -562,9 +566,7 @@ class Account extends Service {
562
566
  payload['queries'] = queries;
563
567
  }
564
568
  const uri = new URL(this.client.config.endpoint + apiPath);
565
- return this.client.call('get', uri, {
566
- 'content-type': 'application/json',
567
- }, payload);
569
+ return this.client.call('get', uri, {}, payload);
568
570
  }
569
571
  /**
570
572
  * Delete an identity by its unique ID.
@@ -617,9 +619,7 @@ class Account extends Service {
617
619
  payload['queries'] = queries;
618
620
  }
619
621
  const uri = new URL(this.client.config.endpoint + apiPath);
620
- return this.client.call('get', uri, {
621
- 'content-type': 'application/json',
622
- }, payload);
622
+ return this.client.call('get', uri, {}, payload);
623
623
  }
624
624
  /**
625
625
  * Enable or disable MFA on an account.
@@ -773,9 +773,7 @@ class Account extends Service {
773
773
  const apiPath = '/account/mfa/factors';
774
774
  const payload = {};
775
775
  const uri = new URL(this.client.config.endpoint + apiPath);
776
- return this.client.call('get', uri, {
777
- 'content-type': 'application/json',
778
- }, payload);
776
+ return this.client.call('get', uri, {}, payload);
779
777
  }
780
778
  /**
781
779
  * Get recovery codes that can be used as backup for MFA flow. Before getting
@@ -790,9 +788,7 @@ class Account extends Service {
790
788
  const apiPath = '/account/mfa/recovery-codes';
791
789
  const payload = {};
792
790
  const uri = new URL(this.client.config.endpoint + apiPath);
793
- return this.client.call('get', uri, {
794
- 'content-type': 'application/json',
795
- }, payload);
791
+ return this.client.call('get', uri, {}, payload);
796
792
  }
797
793
  /**
798
794
  * Generate recovery codes as backup for MFA flow. It's recommended to
@@ -919,9 +915,7 @@ class Account extends Service {
919
915
  const apiPath = '/account/prefs';
920
916
  const payload = {};
921
917
  const uri = new URL(this.client.config.endpoint + apiPath);
922
- return this.client.call('get', uri, {
923
- 'content-type': 'application/json',
924
- }, payload);
918
+ return this.client.call('get', uri, {}, payload);
925
919
  }
926
920
  /**
927
921
  * Update currently logged in user account preferences. The object you pass is
@@ -1036,9 +1030,7 @@ class Account extends Service {
1036
1030
  const apiPath = '/account/sessions';
1037
1031
  const payload = {};
1038
1032
  const uri = new URL(this.client.config.endpoint + apiPath);
1039
- return this.client.call('get', uri, {
1040
- 'content-type': 'application/json',
1041
- }, payload);
1033
+ return this.client.call('get', uri, {}, payload);
1042
1034
  }
1043
1035
  /**
1044
1036
  * Delete all sessions from the user account and remove any sessions cookies
@@ -1260,9 +1252,7 @@ class Account extends Service {
1260
1252
  const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', sessionId);
1261
1253
  const payload = {};
1262
1254
  const uri = new URL(this.client.config.endpoint + apiPath);
1263
- return this.client.call('get', uri, {
1264
- 'content-type': 'application/json',
1265
- }, payload);
1255
+ return this.client.call('get', uri, {}, payload);
1266
1256
  }
1267
1257
  /**
1268
1258
  * Use this endpoint to extend a session's length. Extending a session is
@@ -2005,9 +1995,7 @@ class Databases extends Service {
2005
1995
  payload['queries'] = queries;
2006
1996
  }
2007
1997
  const uri = new URL(this.client.config.endpoint + apiPath);
2008
- return this.client.call('get', uri, {
2009
- 'content-type': 'application/json',
2010
- }, payload);
1998
+ return this.client.call('get', uri, {}, payload);
2011
1999
  }
2012
2000
  /**
2013
2001
  * Create a new Document. Before using this route, you should create a new
@@ -2015,7 +2003,6 @@ class Databases extends Service {
2015
2003
  * integration](https://appwrite.io/docs/server/databases#databasesCreateCollection)
2016
2004
  * API or directly from your database console.
2017
2005
  *
2018
- *
2019
2006
  * @param {string} databaseId
2020
2007
  * @param {string} collectionId
2021
2008
  * @param {string} documentId
@@ -2080,9 +2067,7 @@ class Databases extends Service {
2080
2067
  payload['queries'] = queries;
2081
2068
  }
2082
2069
  const uri = new URL(this.client.config.endpoint + apiPath);
2083
- return this.client.call('get', uri, {
2084
- 'content-type': 'application/json',
2085
- }, payload);
2070
+ return this.client.call('get', uri, {}, payload);
2086
2071
  }
2087
2072
  /**
2088
2073
  * Update a document by its unique ID. Using the patch method you can pass
@@ -2174,9 +2159,7 @@ class Functions extends Service {
2174
2159
  payload['search'] = search;
2175
2160
  }
2176
2161
  const uri = new URL(this.client.config.endpoint + apiPath);
2177
- return this.client.call('get', uri, {
2178
- 'content-type': 'application/json',
2179
- }, payload);
2162
+ return this.client.call('get', uri, {}, payload);
2180
2163
  }
2181
2164
  /**
2182
2165
  * Trigger a function execution. The returned object will return you the
@@ -2241,9 +2224,7 @@ class Functions extends Service {
2241
2224
  const apiPath = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', functionId).replace('{executionId}', executionId);
2242
2225
  const payload = {};
2243
2226
  const uri = new URL(this.client.config.endpoint + apiPath);
2244
- return this.client.call('get', uri, {
2245
- 'content-type': 'application/json',
2246
- }, payload);
2227
+ return this.client.call('get', uri, {}, payload);
2247
2228
  }
2248
2229
  }
2249
2230
 
@@ -2316,9 +2297,7 @@ class Locale extends Service {
2316
2297
  const apiPath = '/locale';
2317
2298
  const payload = {};
2318
2299
  const uri = new URL(this.client.config.endpoint + apiPath);
2319
- return this.client.call('get', uri, {
2320
- 'content-type': 'application/json',
2321
- }, payload);
2300
+ return this.client.call('get', uri, {}, payload);
2322
2301
  }
2323
2302
  /**
2324
2303
  * List of all locale codes in [ISO
@@ -2331,9 +2310,7 @@ class Locale extends Service {
2331
2310
  const apiPath = '/locale/codes';
2332
2311
  const payload = {};
2333
2312
  const uri = new URL(this.client.config.endpoint + apiPath);
2334
- return this.client.call('get', uri, {
2335
- 'content-type': 'application/json',
2336
- }, payload);
2313
+ return this.client.call('get', uri, {}, payload);
2337
2314
  }
2338
2315
  /**
2339
2316
  * List of all continents. You can use the locale header to get the data in a
@@ -2346,9 +2323,7 @@ class Locale extends Service {
2346
2323
  const apiPath = '/locale/continents';
2347
2324
  const payload = {};
2348
2325
  const uri = new URL(this.client.config.endpoint + apiPath);
2349
- return this.client.call('get', uri, {
2350
- 'content-type': 'application/json',
2351
- }, payload);
2326
+ return this.client.call('get', uri, {}, payload);
2352
2327
  }
2353
2328
  /**
2354
2329
  * List of all countries. You can use the locale header to get the data in a
@@ -2361,9 +2336,7 @@ class Locale extends Service {
2361
2336
  const apiPath = '/locale/countries';
2362
2337
  const payload = {};
2363
2338
  const uri = new URL(this.client.config.endpoint + apiPath);
2364
- return this.client.call('get', uri, {
2365
- 'content-type': 'application/json',
2366
- }, payload);
2339
+ return this.client.call('get', uri, {}, payload);
2367
2340
  }
2368
2341
  /**
2369
2342
  * List of all countries that are currently members of the EU. You can use the
@@ -2376,9 +2349,7 @@ class Locale extends Service {
2376
2349
  const apiPath = '/locale/countries/eu';
2377
2350
  const payload = {};
2378
2351
  const uri = new URL(this.client.config.endpoint + apiPath);
2379
- return this.client.call('get', uri, {
2380
- 'content-type': 'application/json',
2381
- }, payload);
2352
+ return this.client.call('get', uri, {}, payload);
2382
2353
  }
2383
2354
  /**
2384
2355
  * List of all countries phone codes. You can use the locale header to get the
@@ -2391,9 +2362,7 @@ class Locale extends Service {
2391
2362
  const apiPath = '/locale/countries/phones';
2392
2363
  const payload = {};
2393
2364
  const uri = new URL(this.client.config.endpoint + apiPath);
2394
- return this.client.call('get', uri, {
2395
- 'content-type': 'application/json',
2396
- }, payload);
2365
+ return this.client.call('get', uri, {}, payload);
2397
2366
  }
2398
2367
  /**
2399
2368
  * List of all currencies, including currency symbol, name, plural, and
@@ -2407,9 +2376,7 @@ class Locale extends Service {
2407
2376
  const apiPath = '/locale/currencies';
2408
2377
  const payload = {};
2409
2378
  const uri = new URL(this.client.config.endpoint + apiPath);
2410
- return this.client.call('get', uri, {
2411
- 'content-type': 'application/json',
2412
- }, payload);
2379
+ return this.client.call('get', uri, {}, payload);
2413
2380
  }
2414
2381
  /**
2415
2382
  * List of all languages classified by ISO 639-1 including 2-letter code, name
@@ -2422,9 +2389,7 @@ class Locale extends Service {
2422
2389
  const apiPath = '/locale/languages';
2423
2390
  const payload = {};
2424
2391
  const uri = new URL(this.client.config.endpoint + apiPath);
2425
- return this.client.call('get', uri, {
2426
- 'content-type': 'application/json',
2427
- }, payload);
2392
+ return this.client.call('get', uri, {}, payload);
2428
2393
  }
2429
2394
  }
2430
2395
 
@@ -2515,9 +2480,7 @@ class Storage extends Service {
2515
2480
  payload['search'] = search;
2516
2481
  }
2517
2482
  const uri = new URL(this.client.config.endpoint + apiPath);
2518
- return this.client.call('get', uri, {
2519
- 'content-type': 'application/json',
2520
- }, payload);
2483
+ return this.client.call('get', uri, {}, payload);
2521
2484
  }
2522
2485
  /**
2523
2486
  * Create a new file. Before using this route, you should create a new bucket
@@ -2638,9 +2601,7 @@ class Storage extends Service {
2638
2601
  const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', bucketId).replace('{fileId}', fileId);
2639
2602
  const payload = {};
2640
2603
  const uri = new URL(this.client.config.endpoint + apiPath);
2641
- return this.client.call('get', uri, {
2642
- 'content-type': 'application/json',
2643
- }, payload);
2604
+ return this.client.call('get', uri, {}, payload);
2644
2605
  }
2645
2606
  /**
2646
2607
  * Update a file by its unique ID. Only users with write permissions have
@@ -2845,9 +2806,7 @@ class Teams extends Service {
2845
2806
  payload['search'] = search;
2846
2807
  }
2847
2808
  const uri = new URL(this.client.config.endpoint + apiPath);
2848
- return this.client.call('get', uri, {
2849
- 'content-type': 'application/json',
2850
- }, payload);
2809
+ return this.client.call('get', uri, {}, payload);
2851
2810
  }
2852
2811
  /**
2853
2812
  * Create a new team. The user who creates the team will automatically be
@@ -2897,9 +2856,7 @@ class Teams extends Service {
2897
2856
  const apiPath = '/teams/{teamId}'.replace('{teamId}', teamId);
2898
2857
  const payload = {};
2899
2858
  const uri = new URL(this.client.config.endpoint + apiPath);
2900
- return this.client.call('get', uri, {
2901
- 'content-type': 'application/json',
2902
- }, payload);
2859
+ return this.client.call('get', uri, {}, payload);
2903
2860
  }
2904
2861
  /**
2905
2862
  * Update the team's name by its unique ID.
@@ -2969,9 +2926,7 @@ class Teams extends Service {
2969
2926
  payload['search'] = search;
2970
2927
  }
2971
2928
  const uri = new URL(this.client.config.endpoint + apiPath);
2972
- return this.client.call('get', uri, {
2973
- 'content-type': 'application/json',
2974
- }, payload);
2929
+ return this.client.call('get', uri, {}, payload);
2975
2930
  }
2976
2931
  /**
2977
2932
  * Invite a new member to join your team. Provide an ID for existing users, or
@@ -3058,9 +3013,7 @@ class Teams extends Service {
3058
3013
  const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', teamId).replace('{membershipId}', membershipId);
3059
3014
  const payload = {};
3060
3015
  const uri = new URL(this.client.config.endpoint + apiPath);
3061
- return this.client.call('get', uri, {
3062
- 'content-type': 'application/json',
3063
- }, payload);
3016
+ return this.client.call('get', uri, {}, payload);
3064
3017
  }
3065
3018
  /**
3066
3019
  * Modify the roles of a team member. Only team members with the owner role
@@ -3176,9 +3129,7 @@ class Teams extends Service {
3176
3129
  const apiPath = '/teams/{teamId}/prefs'.replace('{teamId}', teamId);
3177
3130
  const payload = {};
3178
3131
  const uri = new URL(this.client.config.endpoint + apiPath);
3179
- return this.client.call('get', uri, {
3180
- 'content-type': 'application/json',
3181
- }, payload);
3132
+ return this.client.call('get', uri, {}, payload);
3182
3133
  }
3183
3134
  /**
3184
3135
  * Update the team's preferences by its unique ID. The object you pass is
@@ -3419,6 +3370,7 @@ exports.OAuthProvider = void 0;
3419
3370
  OAuthProvider["Dropbox"] = "dropbox";
3420
3371
  OAuthProvider["Etsy"] = "etsy";
3421
3372
  OAuthProvider["Facebook"] = "facebook";
3373
+ OAuthProvider["Figma"] = "figma";
3422
3374
  OAuthProvider["Github"] = "github";
3423
3375
  OAuthProvider["Gitlab"] = "gitlab";
3424
3376
  OAuthProvider["Google"] = "google";