react-native-appwrite 0.19.0 → 0.21.0

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 (156) hide show
  1. package/.github/workflows/publish.yml +9 -8
  2. package/CHANGELOG.md +12 -0
  3. package/LICENSE +1 -1
  4. package/README.md +3 -3
  5. package/dist/cjs/sdk.js +254 -64
  6. package/dist/cjs/sdk.js.map +1 -1
  7. package/dist/esm/sdk.js +250 -65
  8. package/dist/esm/sdk.js.map +1 -1
  9. package/docs/examples/account/create-anonymous-session.md +2 -0
  10. package/docs/examples/account/create-email-password-session.md +2 -0
  11. package/docs/examples/account/create-email-token.md +2 -0
  12. package/docs/examples/account/create-email-verification.md +2 -0
  13. package/docs/examples/account/create-jwt.md +5 -1
  14. package/docs/examples/account/create-magic-url-token.md +2 -0
  15. package/docs/examples/account/create-mfa-authenticator.md +2 -0
  16. package/docs/examples/account/create-mfa-challenge.md +2 -0
  17. package/docs/examples/account/create-mfa-recovery-codes.md +2 -0
  18. package/docs/examples/account/create-o-auth-2-session.md +2 -0
  19. package/docs/examples/account/create-o-auth-2-token.md +2 -0
  20. package/docs/examples/account/create-phone-token.md +2 -0
  21. package/docs/examples/account/create-phone-verification.md +2 -0
  22. package/docs/examples/account/create-push-target.md +2 -0
  23. package/docs/examples/account/create-recovery.md +2 -0
  24. package/docs/examples/account/create-session.md +2 -0
  25. package/docs/examples/account/create-verification.md +2 -0
  26. package/docs/examples/account/create.md +2 -0
  27. package/docs/examples/account/delete-identity.md +2 -0
  28. package/docs/examples/account/delete-mfa-authenticator.md +2 -0
  29. package/docs/examples/account/delete-push-target.md +2 -0
  30. package/docs/examples/account/delete-session.md +2 -0
  31. package/docs/examples/account/delete-sessions.md +2 -0
  32. package/docs/examples/account/get-mfa-recovery-codes.md +2 -0
  33. package/docs/examples/account/get-prefs.md +2 -0
  34. package/docs/examples/account/get-session.md +2 -0
  35. package/docs/examples/account/get.md +2 -0
  36. package/docs/examples/account/list-identities.md +2 -0
  37. package/docs/examples/account/list-logs.md +2 -0
  38. package/docs/examples/account/list-mfa-factors.md +2 -0
  39. package/docs/examples/account/list-sessions.md +2 -0
  40. package/docs/examples/account/update-email-verification.md +2 -0
  41. package/docs/examples/account/update-email.md +2 -0
  42. package/docs/examples/account/update-magic-url-session.md +2 -0
  43. package/docs/examples/account/update-mfa-authenticator.md +2 -0
  44. package/docs/examples/account/update-mfa-challenge.md +2 -0
  45. package/docs/examples/account/update-mfa-recovery-codes.md +2 -0
  46. package/docs/examples/account/update-mfa.md +2 -0
  47. package/docs/examples/account/update-name.md +2 -0
  48. package/docs/examples/account/update-password.md +2 -0
  49. package/docs/examples/account/update-phone-session.md +2 -0
  50. package/docs/examples/account/update-phone-verification.md +2 -0
  51. package/docs/examples/account/update-phone.md +2 -0
  52. package/docs/examples/account/update-prefs.md +2 -0
  53. package/docs/examples/account/update-push-target.md +2 -0
  54. package/docs/examples/account/update-recovery.md +2 -0
  55. package/docs/examples/account/update-session.md +2 -0
  56. package/docs/examples/account/update-status.md +2 -0
  57. package/docs/examples/account/update-verification.md +2 -0
  58. package/docs/examples/avatars/get-browser.md +2 -0
  59. package/docs/examples/avatars/get-credit-card.md +2 -0
  60. package/docs/examples/avatars/get-favicon.md +2 -0
  61. package/docs/examples/avatars/get-flag.md +2 -0
  62. package/docs/examples/avatars/get-image.md +2 -0
  63. package/docs/examples/avatars/get-initials.md +2 -0
  64. package/docs/examples/avatars/get-qr.md +2 -0
  65. package/docs/examples/avatars/get-screenshot.md +7 -5
  66. package/docs/examples/databases/create-document.md +2 -0
  67. package/docs/examples/databases/create-operations.md +2 -0
  68. package/docs/examples/databases/create-transaction.md +2 -0
  69. package/docs/examples/databases/decrement-document-attribute.md +2 -0
  70. package/docs/examples/databases/delete-document.md +2 -0
  71. package/docs/examples/databases/delete-transaction.md +2 -0
  72. package/docs/examples/databases/get-document.md +2 -0
  73. package/docs/examples/databases/get-transaction.md +2 -0
  74. package/docs/examples/databases/increment-document-attribute.md +2 -0
  75. package/docs/examples/databases/list-documents.md +2 -0
  76. package/docs/examples/databases/list-transactions.md +2 -0
  77. package/docs/examples/databases/update-document.md +9 -1
  78. package/docs/examples/databases/update-transaction.md +2 -0
  79. package/docs/examples/databases/upsert-document.md +9 -1
  80. package/docs/examples/functions/create-execution.md +2 -0
  81. package/docs/examples/functions/get-execution.md +2 -0
  82. package/docs/examples/functions/list-executions.md +2 -0
  83. package/docs/examples/graphql/mutation.md +2 -0
  84. package/docs/examples/graphql/query.md +2 -0
  85. package/docs/examples/locale/get.md +2 -0
  86. package/docs/examples/locale/list-codes.md +2 -0
  87. package/docs/examples/locale/list-continents.md +2 -0
  88. package/docs/examples/locale/list-countries-eu.md +2 -0
  89. package/docs/examples/locale/list-countries-phones.md +2 -0
  90. package/docs/examples/locale/list-countries.md +2 -0
  91. package/docs/examples/locale/list-currencies.md +2 -0
  92. package/docs/examples/locale/list-languages.md +2 -0
  93. package/docs/examples/messaging/create-subscriber.md +2 -0
  94. package/docs/examples/messaging/delete-subscriber.md +2 -0
  95. package/docs/examples/storage/create-file.md +2 -0
  96. package/docs/examples/storage/delete-file.md +2 -0
  97. package/docs/examples/storage/get-file-download.md +2 -0
  98. package/docs/examples/storage/get-file-preview.md +2 -0
  99. package/docs/examples/storage/get-file-view.md +2 -0
  100. package/docs/examples/storage/get-file.md +2 -0
  101. package/docs/examples/storage/list-files.md +2 -0
  102. package/docs/examples/storage/update-file.md +2 -0
  103. package/docs/examples/tablesdb/create-operations.md +2 -0
  104. package/docs/examples/tablesdb/create-row.md +2 -0
  105. package/docs/examples/tablesdb/create-transaction.md +2 -0
  106. package/docs/examples/tablesdb/decrement-row-column.md +2 -0
  107. package/docs/examples/tablesdb/delete-row.md +2 -0
  108. package/docs/examples/tablesdb/delete-transaction.md +2 -0
  109. package/docs/examples/tablesdb/get-row.md +2 -0
  110. package/docs/examples/tablesdb/get-transaction.md +2 -0
  111. package/docs/examples/tablesdb/increment-row-column.md +2 -0
  112. package/docs/examples/tablesdb/list-rows.md +2 -0
  113. package/docs/examples/tablesdb/list-transactions.md +2 -0
  114. package/docs/examples/tablesdb/update-row.md +9 -1
  115. package/docs/examples/tablesdb/update-transaction.md +2 -0
  116. package/docs/examples/tablesdb/upsert-row.md +9 -1
  117. package/docs/examples/teams/create-membership.md +2 -0
  118. package/docs/examples/teams/create.md +2 -0
  119. package/docs/examples/teams/delete-membership.md +2 -0
  120. package/docs/examples/teams/delete.md +2 -0
  121. package/docs/examples/teams/get-membership.md +2 -0
  122. package/docs/examples/teams/get-prefs.md +2 -0
  123. package/docs/examples/teams/get.md +2 -0
  124. package/docs/examples/teams/list-memberships.md +2 -0
  125. package/docs/examples/teams/list.md +2 -0
  126. package/docs/examples/teams/update-membership-status.md +2 -0
  127. package/docs/examples/teams/update-membership.md +2 -0
  128. package/docs/examples/teams/update-name.md +2 -0
  129. package/docs/examples/teams/update-prefs.md +2 -0
  130. package/package.json +6 -3
  131. package/rollup.config.js +3 -1
  132. package/src/channel.ts +132 -0
  133. package/src/client.ts +72 -10
  134. package/src/enums/browser-permission.ts +22 -0
  135. package/src/enums/o-auth-provider.ts +2 -1
  136. package/src/index.ts +3 -2
  137. package/src/models.ts +8 -0
  138. package/src/query.ts +54 -9
  139. package/src/services/account.ts +45 -16
  140. package/src/services/avatars.ts +20 -19
  141. package/src/services/databases.ts +5 -9
  142. package/src/services/graphql.ts +2 -2
  143. package/src/services/storage.ts +8 -8
  144. package/types/channel.d.ts +71 -0
  145. package/types/client.d.ts +2 -1
  146. package/types/enums/browser-permission.d.ts +22 -0
  147. package/types/enums/o-auth-provider.d.ts +2 -1
  148. package/types/index.d.ts +3 -2
  149. package/types/models.d.ts +8 -0
  150. package/types/query.d.ts +36 -6
  151. package/types/services/account.d.ts +17 -5
  152. package/types/services/avatars.d.ts +12 -11
  153. package/types/services/databases.d.ts +2 -2
  154. package/types/services/storage.d.ts +8 -8
  155. package/src/enums/output.ts +0 -9
  156. package/types/enums/output.d.ts +0 -9
package/dist/cjs/sdk.js CHANGED
@@ -1,8 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  var reactNative = require('react-native');
4
+ var JSONbigModule = require('json-bigint');
5
+ var BigNumber = require('bignumber.js');
4
6
  var FileSystem = require('expo-file-system');
5
7
 
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
6
10
  function _interopNamespace(e) {
7
11
  if (e && e.__esModule) return e;
8
12
  var n = Object.create(null);
@@ -21,6 +25,8 @@ function _interopNamespace(e) {
21
25
  return Object.freeze(n);
22
26
  }
23
27
 
28
+ var JSONbigModule__default = /*#__PURE__*/_interopDefaultLegacy(JSONbigModule);
29
+ var BigNumber__default = /*#__PURE__*/_interopDefaultLegacy(BigNumber);
24
30
  var FileSystem__namespace = /*#__PURE__*/_interopNamespace(FileSystem);
25
31
 
26
32
  /******************************************************************************
@@ -74,6 +80,28 @@ class Service {
74
80
  }
75
81
  Service.CHUNK_SIZE = 5 * 1024 * 1024; // 5MB
76
82
 
83
+ const JSONbigParser = JSONbigModule__default["default"]({ storeAsString: false });
84
+ const JSONbigSerializer = JSONbigModule__default["default"]({ useNativeBigInt: true });
85
+ const MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);
86
+ const MIN_SAFE = BigInt(Number.MIN_SAFE_INTEGER);
87
+ function reviver(_key, value) {
88
+ if (BigNumber__default["default"].isBigNumber(value)) {
89
+ if (value.isInteger()) {
90
+ const str = value.toFixed();
91
+ const bi = BigInt(str);
92
+ if (bi >= MIN_SAFE && bi <= MAX_SAFE) {
93
+ return Number(str);
94
+ }
95
+ return bi;
96
+ }
97
+ return value.toNumber();
98
+ }
99
+ return value;
100
+ }
101
+ const JSONbig$1 = {
102
+ parse: (text) => JSONbigParser.parse(text, reviver),
103
+ stringify: JSONbigSerializer.stringify
104
+ };
77
105
  class AppwriteException extends Error {
78
106
  constructor(message, code = 0, type = '', response = '') {
79
107
  super(message);
@@ -100,7 +128,7 @@ class Client {
100
128
  'x-sdk-name': 'React Native',
101
129
  'x-sdk-platform': 'client',
102
130
  'x-sdk-language': 'reactnative',
103
- 'x-sdk-version': '0.19.0',
131
+ 'x-sdk-version': '0.21.0',
104
132
  'X-Appwrite-Response-Format': '1.8.0',
105
133
  };
106
134
  this.realtime = {
@@ -109,6 +137,7 @@ class Client {
109
137
  heartbeat: undefined,
110
138
  url: '',
111
139
  channels: new Set(),
140
+ queries: new Set(),
112
141
  subscriptions: new Map(),
113
142
  subscriptionsCounter: 0,
114
143
  reconnect: true,
@@ -138,7 +167,7 @@ class Client {
138
167
  }
139
168
  this.realtime.heartbeat = window === null || window === void 0 ? void 0 : window.setInterval(() => {
140
169
  var _a;
141
- (_a = this.realtime.socket) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({
170
+ (_a = this.realtime.socket) === null || _a === void 0 ? void 0 : _a.send(JSONbig$1.stringify({
142
171
  type: 'ping'
143
172
  }));
144
173
  }, 20000);
@@ -155,6 +184,9 @@ class Client {
155
184
  this.realtime.channels.forEach(channel => {
156
185
  channels.append('channels[]', channel);
157
186
  });
187
+ this.realtime.queries.forEach(query => {
188
+ channels.append('queries[]', query);
189
+ });
158
190
  const url = this.config.endpointRealtime + '/realtime?' + channels.toString();
159
191
  if (url !== this.realtime.url || // Check if URL is present
160
192
  !this.realtime.socket || // Check if WebSocket has not been created
@@ -198,7 +230,7 @@ class Client {
198
230
  },
199
231
  onMessage: (event) => {
200
232
  try {
201
- const message = JSON.parse(event.data);
233
+ const message = JSONbig$1.parse(event.data);
202
234
  this.realtime.lastMessage = message;
203
235
  switch (message.type) {
204
236
  case 'event':
@@ -226,7 +258,7 @@ class Client {
226
258
  console.error(e);
227
259
  }
228
260
  },
229
- cleanUp: channels => {
261
+ cleanUp: (channels, queries) => {
230
262
  this.realtime.channels.forEach(channel => {
231
263
  if (channels.includes(channel)) {
232
264
  let found = Array.from(this.realtime.subscriptions).some(([_key, subscription]) => {
@@ -237,6 +269,17 @@ class Client {
237
269
  }
238
270
  }
239
271
  });
272
+ this.realtime.queries.forEach(query => {
273
+ if (queries.includes(query)) {
274
+ let found = Array.from(this.realtime.subscriptions).some(([_key, subscription]) => {
275
+ var _a;
276
+ return (_a = subscription.queries) === null || _a === void 0 ? void 0 : _a.includes(query);
277
+ });
278
+ if (!found) {
279
+ this.realtime.queries.delete(query);
280
+ }
281
+ }
282
+ });
240
283
  }
241
284
  };
242
285
  }
@@ -250,6 +293,9 @@ class Client {
250
293
  * @returns {this}
251
294
  */
252
295
  setEndpoint(endpoint) {
296
+ if (!endpoint || typeof endpoint !== 'string') {
297
+ throw new AppwriteException('Endpoint must be a valid string');
298
+ }
253
299
  if (!endpoint.startsWith('http://') && !endpoint.startsWith('https://')) {
254
300
  throw new AppwriteException('Invalid endpoint URL: ' + endpoint);
255
301
  }
@@ -265,6 +311,9 @@ class Client {
265
311
  * @returns {this}
266
312
  */
267
313
  setEndpointRealtime(endpointRealtime) {
314
+ if (!endpointRealtime || typeof endpointRealtime !== 'string') {
315
+ throw new AppwriteException('Endpoint must be a valid string');
316
+ }
268
317
  if (!endpointRealtime.startsWith('ws://') && !endpointRealtime.startsWith('wss://')) {
269
318
  throw new AppwriteException('Invalid realtime endpoint URL: ' + endpointRealtime);
270
319
  }
@@ -376,18 +425,21 @@ class Client {
376
425
  * @param {(payload: RealtimeMessage) => void} callback Is called on every realtime update.
377
426
  * @returns {() => void} Unsubscribes from events.
378
427
  */
379
- subscribe(channels, callback) {
428
+ subscribe(channels, callback, queries = []) {
380
429
  let channelArray = typeof channels === 'string' ? [channels] : channels;
381
430
  channelArray.forEach(channel => this.realtime.channels.add(channel));
431
+ const queryStrings = (queries !== null && queries !== void 0 ? queries : []).map(q => typeof q === 'string' ? q : q.toString());
432
+ queryStrings.forEach(query => this.realtime.queries.add(query));
382
433
  const counter = this.realtime.subscriptionsCounter++;
383
434
  this.realtime.subscriptions.set(counter, {
384
435
  channels: channelArray,
436
+ queries: queryStrings,
385
437
  callback
386
438
  });
387
439
  this.realtime.connect();
388
440
  return () => {
389
441
  this.realtime.subscriptions.delete(counter);
390
- this.realtime.cleanUp(channelArray);
442
+ this.realtime.cleanUp(channelArray, queryStrings);
391
443
  this.realtime.connect();
392
444
  };
393
445
  }
@@ -412,7 +464,7 @@ class Client {
412
464
  else {
413
465
  switch (headers['content-type']) {
414
466
  case 'application/json':
415
- options.body = JSON.stringify(params);
467
+ options.body = JSONbig$1.stringify(params);
416
468
  break;
417
469
  case 'multipart/form-data':
418
470
  let formData = new FormData();
@@ -439,7 +491,7 @@ class Client {
439
491
  warnings.split(';').forEach((warning) => console.warn('Warning: ' + warning));
440
492
  }
441
493
  if ((_a = response.headers.get('content-type')) === null || _a === void 0 ? void 0 : _a.includes('application/json')) {
442
- data = yield response.json();
494
+ data = JSONbig$1.parse(yield response.text());
443
495
  }
444
496
  else if (responseType === 'arrayBuffer') {
445
497
  data = yield response.arrayBuffer();
@@ -452,7 +504,7 @@ class Client {
452
504
  if (400 <= response.status) {
453
505
  let responseText = '';
454
506
  if ((_b = response.headers.get('content-type')) === null || _b === void 0 ? void 0 : _b.includes('application/json')) {
455
- responseText = JSON.stringify(data);
507
+ responseText = JSONbig$1.stringify(data);
456
508
  }
457
509
  else {
458
510
  responseText = data === null || data === void 0 ? void 0 : data.message;
@@ -614,15 +666,22 @@ class Account extends Service {
614
666
  'content-type': 'application/json',
615
667
  }, payload);
616
668
  }
617
- /**
618
- * Use this endpoint to create a JSON Web Token. You can use the resulting JWT to authenticate on behalf of the current user when working with the Appwrite server-side API and SDKs. The JWT secret is valid for 15 minutes from its creation and will be invalid if the user will logout in that time frame.
619
- *
620
- * @throws {AppwriteException}
621
- * @returns {Promise}
622
- */
623
- createJWT() {
669
+ createJWT(paramsOrFirst) {
670
+ let params;
671
+ if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
672
+ params = (paramsOrFirst || {});
673
+ }
674
+ else {
675
+ params = {
676
+ duration: paramsOrFirst
677
+ };
678
+ }
679
+ const duration = params.duration;
624
680
  const apiPath = '/account/jwts';
625
681
  const payload = {};
682
+ if (typeof duration !== 'undefined') {
683
+ payload['duration'] = duration;
684
+ }
626
685
  const uri = new URL(this.client.config.endpoint + apiPath);
627
686
  return this.client.call('post', uri, {
628
687
  'content-type': 'application/json',
@@ -678,7 +737,7 @@ class Account extends Service {
678
737
  }
679
738
  createMfaAuthenticator(paramsOrFirst) {
680
739
  let params;
681
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
740
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
682
741
  params = (paramsOrFirst || {});
683
742
  }
684
743
  else {
@@ -699,7 +758,7 @@ class Account extends Service {
699
758
  }
700
759
  createMFAAuthenticator(paramsOrFirst) {
701
760
  let params;
702
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
761
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
703
762
  params = (paramsOrFirst || {});
704
763
  }
705
764
  else {
@@ -720,7 +779,7 @@ class Account extends Service {
720
779
  }
721
780
  updateMfaAuthenticator(paramsOrFirst, ...rest) {
722
781
  let params;
723
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
782
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst || 'otp' in paramsOrFirst))) {
724
783
  params = (paramsOrFirst || {});
725
784
  }
726
785
  else {
@@ -749,7 +808,7 @@ class Account extends Service {
749
808
  }
750
809
  updateMFAAuthenticator(paramsOrFirst, ...rest) {
751
810
  let params;
752
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
811
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst || 'otp' in paramsOrFirst))) {
753
812
  params = (paramsOrFirst || {});
754
813
  }
755
814
  else {
@@ -778,7 +837,7 @@ class Account extends Service {
778
837
  }
779
838
  deleteMfaAuthenticator(paramsOrFirst) {
780
839
  let params;
781
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
840
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
782
841
  params = (paramsOrFirst || {});
783
842
  }
784
843
  else {
@@ -799,7 +858,7 @@ class Account extends Service {
799
858
  }
800
859
  deleteMFAAuthenticator(paramsOrFirst) {
801
860
  let params;
802
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'type' in paramsOrFirst)) {
861
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {
803
862
  params = (paramsOrFirst || {});
804
863
  }
805
864
  else {
@@ -820,7 +879,7 @@ class Account extends Service {
820
879
  }
821
880
  createMfaChallenge(paramsOrFirst) {
822
881
  let params;
823
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'factor' in paramsOrFirst)) {
882
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('factor' in paramsOrFirst))) {
824
883
  params = (paramsOrFirst || {});
825
884
  }
826
885
  else {
@@ -844,7 +903,7 @@ class Account extends Service {
844
903
  }
845
904
  createMFAChallenge(paramsOrFirst) {
846
905
  let params;
847
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'factor' in paramsOrFirst)) {
906
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('factor' in paramsOrFirst))) {
848
907
  params = (paramsOrFirst || {});
849
908
  }
850
909
  else {
@@ -1137,7 +1196,7 @@ class Account extends Service {
1137
1196
  }
1138
1197
  updatePrefs(paramsOrFirst) {
1139
1198
  let params;
1140
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'prefs' in paramsOrFirst)) {
1199
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('prefs' in paramsOrFirst))) {
1141
1200
  params = (paramsOrFirst || {});
1142
1201
  }
1143
1202
  else {
@@ -1337,7 +1396,7 @@ class Account extends Service {
1337
1396
  }
1338
1397
  createOAuth2Session(paramsOrFirst, ...rest) {
1339
1398
  let params;
1340
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'provider' in paramsOrFirst)) {
1399
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('provider' in paramsOrFirst || 'success' in paramsOrFirst || 'failure' in paramsOrFirst || 'scopes' in paramsOrFirst))) {
1341
1400
  params = (paramsOrFirst || {});
1342
1401
  }
1343
1402
  else {
@@ -1680,7 +1739,7 @@ class Account extends Service {
1680
1739
  }
1681
1740
  createOAuth2Token(paramsOrFirst, ...rest) {
1682
1741
  let params;
1683
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'provider' in paramsOrFirst)) {
1742
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('provider' in paramsOrFirst || 'success' in paramsOrFirst || 'failure' in paramsOrFirst || 'scopes' in paramsOrFirst))) {
1684
1743
  params = (paramsOrFirst || {});
1685
1744
  }
1686
1745
  else {
@@ -1914,7 +1973,7 @@ class Avatars extends Service {
1914
1973
  }
1915
1974
  getBrowser(paramsOrFirst, ...rest) {
1916
1975
  let params;
1917
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'code' in paramsOrFirst)) {
1976
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {
1918
1977
  params = (paramsOrFirst || {});
1919
1978
  }
1920
1979
  else {
@@ -1952,7 +2011,7 @@ class Avatars extends Service {
1952
2011
  }
1953
2012
  getCreditCard(paramsOrFirst, ...rest) {
1954
2013
  let params;
1955
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'code' in paramsOrFirst)) {
2014
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {
1956
2015
  params = (paramsOrFirst || {});
1957
2016
  }
1958
2017
  else {
@@ -2016,7 +2075,7 @@ class Avatars extends Service {
2016
2075
  }
2017
2076
  getFlag(paramsOrFirst, ...rest) {
2018
2077
  let params;
2019
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'code' in paramsOrFirst)) {
2078
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {
2020
2079
  params = (paramsOrFirst || {});
2021
2080
  }
2022
2081
  else {
@@ -2569,12 +2628,12 @@ class Avatars extends Service {
2569
2628
  * @param {number} longitude
2570
2629
  * @param {number} accuracy
2571
2630
  * @param {boolean} touch
2572
- * @param {string[]} permissions
2631
+ * @param {BrowserPermission[]} permissions
2573
2632
  * @param {number} sleep
2574
2633
  * @param {number} width
2575
2634
  * @param {number} height
2576
2635
  * @param {number} quality
2577
- * @param {Output} output
2636
+ * @param {ImageFormat} output
2578
2637
  * @throws {AppwriteException}
2579
2638
  * @returns {URL}
2580
2639
  */
@@ -2951,9 +3010,6 @@ class Databases extends Service {
2951
3010
  if (typeof documentId === 'undefined') {
2952
3011
  throw new AppwriteException('Missing required parameter: "documentId"');
2953
3012
  }
2954
- if (typeof data === 'undefined') {
2955
- throw new AppwriteException('Missing required parameter: "data"');
2956
- }
2957
3013
  const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{documentId}', documentId);
2958
3014
  const payload = {};
2959
3015
  if (typeof data !== 'undefined') {
@@ -3272,7 +3328,7 @@ class Graphql extends Service {
3272
3328
  }
3273
3329
  query(paramsOrFirst) {
3274
3330
  let params;
3275
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'query' in paramsOrFirst)) {
3331
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('query' in paramsOrFirst))) {
3276
3332
  params = (paramsOrFirst || {});
3277
3333
  }
3278
3334
  else {
@@ -3297,7 +3353,7 @@ class Graphql extends Service {
3297
3353
  }
3298
3354
  mutation(paramsOrFirst) {
3299
3355
  let params;
3300
- if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && 'query' in paramsOrFirst)) {
3356
+ if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('query' in paramsOrFirst))) {
3301
3357
  params = (paramsOrFirst || {});
3302
3358
  }
3303
3359
  else {
@@ -4891,6 +4947,7 @@ class Teams extends Service {
4891
4947
  }
4892
4948
  }
4893
4949
 
4950
+ const JSONbig = JSONbigModule__default["default"]({ useNativeBigInt: true });
4894
4951
  class Query {
4895
4952
  constructor(method, attribute, values) {
4896
4953
  this.method = method;
@@ -4905,7 +4962,7 @@ class Query {
4905
4962
  }
4906
4963
  }
4907
4964
  toString() {
4908
- return JSON.stringify({
4965
+ return JSONbig.stringify({
4909
4966
  method: this.method,
4910
4967
  attribute: this.attribute,
4911
4968
  values: this.values,
@@ -4914,12 +4971,34 @@ class Query {
4914
4971
  }
4915
4972
  Query.equal = (attribute, value) => new Query("equal", attribute, value).toString();
4916
4973
  Query.notEqual = (attribute, value) => new Query("notEqual", attribute, value).toString();
4974
+ /**
4975
+ * Filter resources where attribute matches a regular expression pattern.
4976
+ *
4977
+ * @param {string} attribute The attribute to filter on.
4978
+ * @param {string} pattern The regular expression pattern to match.
4979
+ * @returns {string}
4980
+ */
4981
+ Query.regex = (attribute, pattern) => new Query("regex", attribute, pattern).toString();
4917
4982
  Query.lessThan = (attribute, value) => new Query("lessThan", attribute, value).toString();
4918
4983
  Query.lessThanEqual = (attribute, value) => new Query("lessThanEqual", attribute, value).toString();
4919
4984
  Query.greaterThan = (attribute, value) => new Query("greaterThan", attribute, value).toString();
4920
4985
  Query.greaterThanEqual = (attribute, value) => new Query("greaterThanEqual", attribute, value).toString();
4921
4986
  Query.isNull = (attribute) => new Query("isNull", attribute).toString();
4922
4987
  Query.isNotNull = (attribute) => new Query("isNotNull", attribute).toString();
4988
+ /**
4989
+ * Filter resources where the specified attributes exist.
4990
+ *
4991
+ * @param {string[]} attributes The list of attributes that must exist.
4992
+ * @returns {string}
4993
+ */
4994
+ Query.exists = (attributes) => new Query("exists", undefined, attributes).toString();
4995
+ /**
4996
+ * Filter resources where the specified attributes do not exist.
4997
+ *
4998
+ * @param {string[]} attributes The list of attributes that must not exist.
4999
+ * @returns {string}
5000
+ */
5001
+ Query.notExists = (attributes) => new Query("notExists", undefined, attributes).toString();
4923
5002
  Query.between = (attribute, start, end) => new Query("between", attribute, [start, end]).toString();
4924
5003
  Query.startsWith = (attribute, value) => new Query("startsWith", attribute, value).toString();
4925
5004
  Query.endsWith = (attribute, value) => new Query("endsWith", attribute, value).toString();
@@ -4961,8 +5040,8 @@ Query.notSearch = (attribute, value) => new Query("notSearch", attribute, value)
4961
5040
  * Filter resources where attribute is not between start and end (exclusive).
4962
5041
  *
4963
5042
  * @param {string} attribute
4964
- * @param {string | number} start
4965
- * @param {string | number} end
5043
+ * @param {string | number | bigint} start
5044
+ * @param {string | number | bigint} end
4966
5045
  * @returns {string}
4967
5046
  */
4968
5047
  Query.notBetween = (attribute, start, end) => new Query("notBetween", attribute, [start, end]).toString();
@@ -5026,8 +5105,16 @@ Query.updatedAfter = (value) => Query.greaterThan("$updatedAt", value);
5026
5105
  * @returns {string}
5027
5106
  */
5028
5107
  Query.updatedBetween = (start, end) => Query.between("$updatedAt", start, end);
5029
- Query.or = (queries) => new Query("or", undefined, queries.map((query) => JSON.parse(query))).toString();
5030
- Query.and = (queries) => new Query("and", undefined, queries.map((query) => JSON.parse(query))).toString();
5108
+ Query.or = (queries) => new Query("or", undefined, queries.map((query) => JSONbig.parse(query))).toString();
5109
+ Query.and = (queries) => new Query("and", undefined, queries.map((query) => JSONbig.parse(query))).toString();
5110
+ /**
5111
+ * Filter array elements where at least one element matches all the specified queries.
5112
+ *
5113
+ * @param {string} attribute The attribute containing the array to filter on.
5114
+ * @param {string[]} queries The list of query strings to match against array elements.
5115
+ * @returns {string}
5116
+ */
5117
+ Query.elemMatch = (attribute, queries) => new Query("elemMatch", attribute, queries.map((query) => JSONbig.parse(query))).toString();
5031
5118
  /**
5032
5119
  * Filter resources where attribute is at a specific distance from the given coordinates.
5033
5120
  *
@@ -5270,6 +5357,94 @@ _a = ID, _ID_hexTimestamp = function _ID_hexTimestamp() {
5270
5357
  return hexTimestamp;
5271
5358
  };
5272
5359
 
5360
+ function normalize(id) {
5361
+ const trimmed = id.trim();
5362
+ return trimmed === "" ? "*" : trimmed;
5363
+ }
5364
+ class Channel {
5365
+ constructor(segments) {
5366
+ this.segments = segments;
5367
+ }
5368
+ next(segment, id = "*") {
5369
+ return new Channel([...this.segments, segment, normalize(id)]);
5370
+ }
5371
+ resolve(action) {
5372
+ return new Channel([...this.segments, action]);
5373
+ }
5374
+ toString() {
5375
+ return this.segments.join(".");
5376
+ }
5377
+ // --- DATABASE ROUTE ---
5378
+ // Only available on Channel<Database>
5379
+ collection(id = "*") {
5380
+ return this.next("collections", id);
5381
+ }
5382
+ // Only available on Channel<Collection>
5383
+ document(id = "*") {
5384
+ return this.next("documents", id);
5385
+ }
5386
+ // --- TABLESDB ROUTE ---
5387
+ table(id = "*") {
5388
+ return this.next("tables", id);
5389
+ }
5390
+ row(id = "*") {
5391
+ return this.next("rows", id);
5392
+ }
5393
+ // --- BUCKET ROUTE ---
5394
+ file(id = "*") {
5395
+ return this.next("files", id);
5396
+ }
5397
+ // --- TERMINAL ACTIONS ---
5398
+ // Restricted to the Actionable union
5399
+ create() {
5400
+ return this.resolve("create");
5401
+ }
5402
+ update() {
5403
+ return this.resolve("update");
5404
+ }
5405
+ delete() {
5406
+ return this.resolve("delete");
5407
+ }
5408
+ // --- ROOT FACTORIES ---
5409
+ static database(id = "*") {
5410
+ return new Channel(["databases", normalize(id)]);
5411
+ }
5412
+ static tablesdb(id = "*") {
5413
+ return new Channel(["tablesdb", normalize(id)]);
5414
+ }
5415
+ static bucket(id = "*") {
5416
+ return new Channel(["buckets", normalize(id)]);
5417
+ }
5418
+ static function(id = "*") {
5419
+ return new Channel(["functions", normalize(id)]);
5420
+ }
5421
+ static execution(id = "*") {
5422
+ return new Channel(["executions", normalize(id)]);
5423
+ }
5424
+ static team(id = "*") {
5425
+ return new Channel(["teams", normalize(id)]);
5426
+ }
5427
+ static membership(id = "*") {
5428
+ return new Channel(["memberships", normalize(id)]);
5429
+ }
5430
+ static account() {
5431
+ return "account";
5432
+ }
5433
+ // Global events
5434
+ static get documents() {
5435
+ return "documents";
5436
+ }
5437
+ static get rows() {
5438
+ return "rows";
5439
+ }
5440
+ static get files() {
5441
+ return "files";
5442
+ }
5443
+ static get executions() {
5444
+ return "executions";
5445
+ }
5446
+ }
5447
+
5273
5448
  exports.Condition = void 0;
5274
5449
  (function (Condition) {
5275
5450
  Condition["Equal"] = "equal";
@@ -5589,7 +5764,8 @@ exports.OAuthProvider = void 0;
5589
5764
  OAuthProvider["Yandex"] = "yandex";
5590
5765
  OAuthProvider["Zoho"] = "zoho";
5591
5766
  OAuthProvider["Zoom"] = "zoom";
5592
- OAuthProvider["Mock"] = "mock";
5767
+ OAuthProvider["GithubImagine"] = "githubImagine";
5768
+ OAuthProvider["GoogleImagine"] = "googleImagine";
5593
5769
  })(exports.OAuthProvider || (exports.OAuthProvider = {}));
5594
5770
 
5595
5771
  exports.Browser = void 0;
@@ -6259,16 +6435,40 @@ exports.Timezone = void 0;
6259
6435
  Timezone["Utc"] = "utc";
6260
6436
  })(exports.Timezone || (exports.Timezone = {}));
6261
6437
 
6262
- exports.Output = void 0;
6263
- (function (Output) {
6264
- Output["Jpg"] = "jpg";
6265
- Output["Jpeg"] = "jpeg";
6266
- Output["Png"] = "png";
6267
- Output["Webp"] = "webp";
6268
- Output["Heic"] = "heic";
6269
- Output["Avif"] = "avif";
6270
- Output["Gif"] = "gif";
6271
- })(exports.Output || (exports.Output = {}));
6438
+ exports.BrowserPermission = void 0;
6439
+ (function (BrowserPermission) {
6440
+ BrowserPermission["Geolocation"] = "geolocation";
6441
+ BrowserPermission["Camera"] = "camera";
6442
+ BrowserPermission["Microphone"] = "microphone";
6443
+ BrowserPermission["Notifications"] = "notifications";
6444
+ BrowserPermission["Midi"] = "midi";
6445
+ BrowserPermission["Push"] = "push";
6446
+ BrowserPermission["ClipboardRead"] = "clipboard-read";
6447
+ BrowserPermission["ClipboardWrite"] = "clipboard-write";
6448
+ BrowserPermission["PaymentHandler"] = "payment-handler";
6449
+ BrowserPermission["Usb"] = "usb";
6450
+ BrowserPermission["Bluetooth"] = "bluetooth";
6451
+ BrowserPermission["Accelerometer"] = "accelerometer";
6452
+ BrowserPermission["Gyroscope"] = "gyroscope";
6453
+ BrowserPermission["Magnetometer"] = "magnetometer";
6454
+ BrowserPermission["AmbientLightSensor"] = "ambient-light-sensor";
6455
+ BrowserPermission["BackgroundSync"] = "background-sync";
6456
+ BrowserPermission["PersistentStorage"] = "persistent-storage";
6457
+ BrowserPermission["ScreenWakeLock"] = "screen-wake-lock";
6458
+ BrowserPermission["WebShare"] = "web-share";
6459
+ BrowserPermission["XrSpatialTracking"] = "xr-spatial-tracking";
6460
+ })(exports.BrowserPermission || (exports.BrowserPermission = {}));
6461
+
6462
+ exports.ImageFormat = void 0;
6463
+ (function (ImageFormat) {
6464
+ ImageFormat["Jpg"] = "jpg";
6465
+ ImageFormat["Jpeg"] = "jpeg";
6466
+ ImageFormat["Png"] = "png";
6467
+ ImageFormat["Webp"] = "webp";
6468
+ ImageFormat["Heic"] = "heic";
6469
+ ImageFormat["Avif"] = "avif";
6470
+ ImageFormat["Gif"] = "gif";
6471
+ })(exports.ImageFormat || (exports.ImageFormat = {}));
6272
6472
 
6273
6473
  exports.ExecutionMethod = void 0;
6274
6474
  (function (ExecutionMethod) {
@@ -6294,17 +6494,6 @@ exports.ImageGravity = void 0;
6294
6494
  ImageGravity["BottomRight"] = "bottom-right";
6295
6495
  })(exports.ImageGravity || (exports.ImageGravity = {}));
6296
6496
 
6297
- exports.ImageFormat = void 0;
6298
- (function (ImageFormat) {
6299
- ImageFormat["Jpg"] = "jpg";
6300
- ImageFormat["Jpeg"] = "jpeg";
6301
- ImageFormat["Png"] = "png";
6302
- ImageFormat["Webp"] = "webp";
6303
- ImageFormat["Heic"] = "heic";
6304
- ImageFormat["Avif"] = "avif";
6305
- ImageFormat["Gif"] = "gif";
6306
- })(exports.ImageFormat || (exports.ImageFormat = {}));
6307
-
6308
6497
  exports.ExecutionTrigger = void 0;
6309
6498
  (function (ExecutionTrigger) {
6310
6499
  ExecutionTrigger["Http"] = "http";
@@ -6324,6 +6513,7 @@ exports.ExecutionStatus = void 0;
6324
6513
  exports.Account = Account;
6325
6514
  exports.AppwriteException = AppwriteException;
6326
6515
  exports.Avatars = Avatars;
6516
+ exports.Channel = Channel;
6327
6517
  exports.Client = Client;
6328
6518
  exports.Databases = Databases;
6329
6519
  exports.Functions = Functions;