1
- const os = require ( 'os' ) ;
1
+ const os = require ( "os" ) ;
2
2
const https = require ( "https" ) ;
3
3
const { fetch, FormData, Agent } = require ( "undici" ) ;
4
4
const JSONbig = require ( "json-bigint" ) ( { storeAsString : false } ) ;
@@ -7,18 +7,18 @@ const { globalConfig } = require("./config.js");
7
7
const chalk = require ( "chalk" ) ;
8
8
9
9
class Client {
10
- CHUNK_SIZE = 5 * 1024 * 1024 ; // 5MB
10
+ CHUNK_SIZE = 5 * 1024 * 1024 ; // 5MB
11
11
12
12
constructor ( ) {
13
- this . endpoint = ' https://cloud.appwrite.io/v1' ;
13
+ this . endpoint = " https://cloud.appwrite.io/v1" ;
14
14
this . headers = {
15
- ' content-type' : '' ,
16
- ' x-sdk-name' : ' Command Line' ,
17
- ' x-sdk-platform' : ' console' ,
18
- ' x-sdk-language' : ' cli' ,
19
- ' x-sdk-version' : '6.0.1' ,
20
- ' user-agent' : `AppwriteCLI/6.0.1 (${ os . type ( ) } ${ os . version ( ) } ; ${ os . arch ( ) } )` ,
21
- ' X-Appwrite-Response-Format' : ' 1.6.0' ,
15
+ " content-type" : "" ,
16
+ " x-sdk-name" : " Command Line" ,
17
+ " x-sdk-platform" : " console" ,
18
+ " x-sdk-language" : " cli" ,
19
+ " x-sdk-version" : "6.1.0" ,
20
+ " user-agent" : `AppwriteCLI/6.1.0 (${ os . type ( ) } ${ os . version ( ) } ; ${ os . arch ( ) } )` ,
21
+ " X-Appwrite-Response-Format" : " 1.6.0" ,
22
22
} ;
23
23
}
24
24
@@ -37,76 +37,76 @@ class Client {
37
37
return this ;
38
38
}
39
39
40
- /**
41
- * Set Project
42
- *
43
- * Your project ID
44
- *
45
- * @param {string } project
46
- *
47
- * @return self
48
- */
49
- setProject ( project ) {
50
- this . addHeader ( 'X-Appwrite-Project' , project ) ;
51
-
52
- return this ;
53
- }
40
+ /**
41
+ * Set Project
42
+ *
43
+ * Your project ID
44
+ *
45
+ * @param {string } project
46
+ *
47
+ * @return self
48
+ */
49
+ setProject ( project ) {
50
+ this . addHeader ( "X-Appwrite-Project" , project ) ;
54
51
55
- /**
56
- * Set Key
57
- *
58
- * Your secret API key
59
- *
60
- * @param {string } key
61
- *
62
- * @return self
63
- */
64
- setKey ( key ) {
65
- this . addHeader ( 'X-Appwrite-Key' , key ) ;
66
-
67
- return this ;
68
- }
52
+ return this ;
53
+ }
69
54
70
- /**
71
- * Set JWT
72
- *
73
- * Your secret JSON Web Token
74
- *
75
- * @param {string } jwt
76
- *
77
- * @return self
78
- */
79
- setJWT ( jwt ) {
80
- this . addHeader ( 'X-Appwrite-JWT' , jwt ) ;
81
-
82
- return this ;
83
- }
55
+ /**
56
+ * Set Key
57
+ *
58
+ * Your secret API key
59
+ *
60
+ * @param {string } key
61
+ *
62
+ * @return self
63
+ */
64
+ setKey ( key ) {
65
+ this . addHeader ( "X-Appwrite-Key" , key ) ;
84
66
85
- /**
86
- * Set Locale
87
- *
88
- * @param {string } locale
89
- *
90
- * @return self
91
- */
92
- setLocale ( locale ) {
93
- this . addHeader ( 'X-Appwrite-Locale' , locale ) ;
94
-
95
- return this ;
96
- }
67
+ return this ;
68
+ }
97
69
98
- /**
99
- * Set Mode
100
- *
101
- * @param {string } mode
102
- *
103
- * @return self
104
- */
105
- setMode ( mode ) {
106
- this . addHeader ( 'X-Appwrite-Mode' , mode ) ;
107
-
108
- return this ;
109
- }
70
+ /**
71
+ * Set JWT
72
+ *
73
+ * Your secret JSON Web Token
74
+ *
75
+ * @param {string } jwt
76
+ *
77
+ * @return self
78
+ */
79
+ setJWT ( jwt ) {
80
+ this . addHeader ( "X-Appwrite-JWT" , jwt ) ;
81
+
82
+ return this ;
83
+ }
84
+
85
+ /**
86
+ * Set Locale
87
+ *
88
+ * @param {string } locale
89
+ *
90
+ * @return self
91
+ */
92
+ setLocale ( locale ) {
93
+ this . addHeader ( "X-Appwrite-Locale" , locale ) ;
94
+
95
+ return this ;
96
+ }
97
+
98
+ /**
99
+ * Set Mode
100
+ *
101
+ * @param {string } mode
102
+ *
103
+ * @return self
104
+ */
105
+ setMode ( mode ) {
106
+ this . addHeader ( "X-Appwrite-Mode" , mode ) ;
107
+
108
+ return this ;
109
+ }
110
110
111
111
/**
112
112
* Set self signed.
@@ -144,26 +144,34 @@ class Client {
144
144
return this ;
145
145
}
146
146
147
- async call ( method , path = "" , headers = { } , params = { } , responseType = "json" ) {
148
- headers = { ...this . headers , ...headers } ;
147
+ async call (
148
+ method ,
149
+ path = "" ,
150
+ headers = { } ,
151
+ params = { } ,
152
+ responseType = "json"
153
+ ) {
154
+ headers = { ...this . headers , ...headers } ;
149
155
const url = new URL ( this . endpoint + path ) ;
150
156
151
157
let body = undefined ;
152
158
153
159
if ( method . toUpperCase ( ) === "GET" ) {
154
160
url . search = new URLSearchParams ( Client . flatten ( params ) ) . toString ( ) ;
155
- } else if ( headers [ "content-type" ] ?. toLowerCase ( ) . startsWith ( "multipart/form-data" ) ) {
161
+ } else if (
162
+ headers [ "content-type" ] ?. toLowerCase ( ) . startsWith ( "multipart/form-data" )
163
+ ) {
156
164
delete headers [ "content-type" ] ;
157
165
const formData = new FormData ( ) ;
158
166
159
167
const flatParams = Client . flatten ( params ) ;
160
168
161
169
for ( const [ key , value ] of Object . entries ( flatParams ) ) {
162
- if ( value && value . type && value . type === "file" ) {
163
- formData . append ( key , value . file , value . filename ) ;
164
- } else {
165
- formData . append ( key , value ) ;
166
- }
170
+ if ( value && value . type && value . type === "file" ) {
171
+ formData . append ( key , value . file , value . filename ) ;
172
+ } else {
173
+ formData . append ( key , value ) ;
174
+ }
167
175
}
168
176
169
177
body = formData ;
@@ -178,15 +186,15 @@ class Client {
178
186
headers,
179
187
body,
180
188
dispatcher : new Agent ( {
181
- connect : {
182
- rejectUnauthorized : ! this . selfSigned ,
183
- } ,
189
+ connect : {
190
+ rejectUnauthorized : ! this . selfSigned ,
191
+ } ,
184
192
} ) ,
185
193
} ) ;
186
194
187
- const warnings = response . headers . get ( ' x-appwrite-warning' ) ;
195
+ const warnings = response . headers . get ( " x-appwrite-warning" ) ;
188
196
if ( warnings ) {
189
- warnings . split ( ';' ) . forEach ( ( warning ) => console . warn ( warning ) ) ;
197
+ warnings . split ( ";" ) . forEach ( ( warning ) => console . warn ( warning ) ) ;
190
198
}
191
199
} catch ( error ) {
192
200
throw new AppwriteException ( error . message ) ;
@@ -201,11 +209,19 @@ class Client {
201
209
throw new AppwriteException ( text , response . status , "" , text ) ;
202
210
}
203
211
204
- if ( path !== '/account' && json . code === 401 && json . type === 'user_more_factors_required' ) {
205
- console . log ( `${ chalk . cyan . bold ( "ℹ Info" ) } ${ chalk . cyan ( "Unusable account found, removing..." ) } ` ) ;
212
+ if (
213
+ path !== "/account" &&
214
+ json . code === 401 &&
215
+ json . type === "user_more_factors_required"
216
+ ) {
217
+ console . log (
218
+ `${ chalk . cyan . bold ( "ℹ Info" ) } ${ chalk . cyan (
219
+ "Unusable account found, removing..."
220
+ ) } `
221
+ ) ;
206
222
207
223
const current = globalConfig . getCurrentSession ( ) ;
208
- globalConfig . setCurrentSession ( '' ) ;
224
+ globalConfig . setCurrentSession ( "" ) ;
209
225
globalConfig . removeSession ( current ) ;
210
226
}
211
227
throw new AppwriteException ( json . message , json . code , json . type , json ) ;
@@ -231,12 +247,12 @@ class Client {
231
247
return json ;
232
248
}
233
249
234
- static flatten ( data , prefix = '' ) {
250
+ static flatten ( data , prefix = "" ) {
235
251
let output = { } ;
236
252
237
253
for ( const key in data ) {
238
254
let value = data [ key ] ;
239
- let finalKey = prefix ? prefix + '[' + key + ']' : key ;
255
+ let finalKey = prefix ? prefix + "[" + key + "]" : key ;
240
256
241
257
if ( Array . isArray ( value ) ) {
242
258
output = Object . assign ( output , Client . flatten ( value , finalKey ) ) ; // @todo : handle name collision here if needed
0 commit comments