appwrite-cli 13.0.0-rc.2 → 13.0.0-rc.3

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 (718) hide show
  1. package/.github/workflows/{npm-publish.yml → publish.yml} +1 -1
  2. package/CHANGELOG.md +106 -101
  3. package/LICENSE.md +2 -2
  4. package/README.md +36 -59
  5. package/cli.ts +152 -0
  6. package/dist/bundle.cjs +4613 -3653
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +145 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/index.d.ts +10 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +7 -142
  14. package/dist/index.js.map +1 -1
  15. package/dist/lib/client.d.ts.map +1 -1
  16. package/dist/lib/client.js +7 -6
  17. package/dist/lib/client.js.map +1 -1
  18. package/dist/lib/commands/config.d.ts +562 -0
  19. package/dist/lib/commands/config.d.ts.map +1 -0
  20. package/dist/lib/commands/config.js +416 -0
  21. package/dist/lib/commands/config.js.map +1 -0
  22. package/dist/lib/commands/db.d.ts +34 -0
  23. package/dist/lib/commands/db.d.ts.map +1 -0
  24. package/dist/lib/commands/db.js +247 -0
  25. package/dist/lib/commands/db.js.map +1 -0
  26. package/dist/lib/commands/errors.d.ts +68 -0
  27. package/dist/lib/commands/errors.d.ts.map +1 -0
  28. package/dist/lib/commands/errors.js +72 -0
  29. package/dist/lib/commands/errors.js.map +1 -0
  30. package/dist/lib/commands/init.d.ts.map +1 -1
  31. package/dist/lib/commands/init.js +15 -14
  32. package/dist/lib/commands/init.js.map +1 -1
  33. package/dist/lib/commands/pull.d.ts +104 -2
  34. package/dist/lib/commands/pull.d.ts.map +1 -1
  35. package/dist/lib/commands/pull.js +470 -281
  36. package/dist/lib/commands/pull.js.map +1 -1
  37. package/dist/lib/commands/push.d.ts +106 -0
  38. package/dist/lib/commands/push.d.ts.map +1 -1
  39. package/dist/lib/commands/push.js +1257 -1628
  40. package/dist/lib/commands/push.js.map +1 -1
  41. package/dist/lib/commands/run.js +1 -1
  42. package/dist/lib/commands/run.js.map +1 -1
  43. package/dist/lib/commands/schema.d.ts +59 -0
  44. package/dist/lib/commands/schema.d.ts.map +1 -0
  45. package/dist/lib/commands/schema.js +86 -0
  46. package/dist/lib/commands/schema.js.map +1 -0
  47. package/dist/lib/commands/services/account.d.ts.map +1 -1
  48. package/dist/lib/commands/services/account.js +86 -64
  49. package/dist/lib/commands/services/account.js.map +1 -1
  50. package/dist/lib/commands/services/console.d.ts.map +1 -1
  51. package/dist/lib/commands/services/console.js +4 -17
  52. package/dist/lib/commands/services/console.js.map +1 -1
  53. package/dist/lib/commands/services/databases.d.ts.map +1 -1
  54. package/dist/lib/commands/services/databases.js +160 -152
  55. package/dist/lib/commands/services/databases.js.map +1 -1
  56. package/dist/lib/commands/services/functions.d.ts.map +1 -1
  57. package/dist/lib/commands/services/functions.js +41 -33
  58. package/dist/lib/commands/services/functions.js.map +1 -1
  59. package/dist/lib/commands/services/graphql.d.ts.map +1 -1
  60. package/dist/lib/commands/services/graphql.js +3 -3
  61. package/dist/lib/commands/services/graphql.js.map +1 -1
  62. package/dist/lib/commands/services/health.d.ts.map +1 -1
  63. package/dist/lib/commands/services/health.js +24 -24
  64. package/dist/lib/commands/services/health.js.map +1 -1
  65. package/dist/lib/commands/services/locale.d.ts.map +1 -1
  66. package/dist/lib/commands/services/locale.js +9 -9
  67. package/dist/lib/commands/services/locale.js.map +1 -1
  68. package/dist/lib/commands/services/messaging.d.ts.map +1 -1
  69. package/dist/lib/commands/services/messaging.js +59 -59
  70. package/dist/lib/commands/services/messaging.js.map +1 -1
  71. package/dist/lib/commands/services/migrations.d.ts.map +1 -1
  72. package/dist/lib/commands/services/migrations.js +19 -19
  73. package/dist/lib/commands/services/migrations.js.map +1 -1
  74. package/dist/lib/commands/services/project.d.ts.map +1 -1
  75. package/dist/lib/commands/services/project.js +8 -8
  76. package/dist/lib/commands/services/project.js.map +1 -1
  77. package/dist/lib/commands/services/projects.d.ts.map +1 -1
  78. package/dist/lib/commands/services/projects.js +64 -64
  79. package/dist/lib/commands/services/projects.js.map +1 -1
  80. package/dist/lib/commands/services/proxy.d.ts.map +1 -1
  81. package/dist/lib/commands/services/proxy.js +11 -11
  82. package/dist/lib/commands/services/proxy.js.map +1 -1
  83. package/dist/lib/commands/services/sites.d.ts.map +1 -1
  84. package/dist/lib/commands/services/sites.js +41 -33
  85. package/dist/lib/commands/services/sites.js.map +1 -1
  86. package/dist/lib/commands/services/storage.d.ts.map +1 -1
  87. package/dist/lib/commands/services/storage.js +38 -16
  88. package/dist/lib/commands/services/storage.js.map +1 -1
  89. package/dist/lib/commands/services/tables-db.d.ts +3 -0
  90. package/dist/lib/commands/services/tables-db.d.ts.map +1 -0
  91. package/dist/lib/commands/services/{tablesdb.js → tables-db.js} +171 -163
  92. package/dist/lib/commands/services/tables-db.js.map +1 -0
  93. package/dist/lib/commands/services/teams.d.ts.map +1 -1
  94. package/dist/lib/commands/services/teams.js +16 -16
  95. package/dist/lib/commands/services/teams.js.map +1 -1
  96. package/dist/lib/commands/services/tokens.d.ts.map +1 -1
  97. package/dist/lib/commands/services/tokens.js +6 -6
  98. package/dist/lib/commands/services/tokens.js.map +1 -1
  99. package/dist/lib/commands/services/users.d.ts.map +1 -1
  100. package/dist/lib/commands/services/users.js +54 -54
  101. package/dist/lib/commands/services/users.js.map +1 -1
  102. package/dist/lib/commands/services/vcs.d.ts.map +1 -1
  103. package/dist/lib/commands/services/vcs.js +13 -13
  104. package/dist/lib/commands/services/vcs.js.map +1 -1
  105. package/dist/lib/commands/types.d.ts.map +1 -1
  106. package/dist/lib/commands/types.js +1 -1
  107. package/dist/lib/commands/types.js.map +1 -1
  108. package/dist/lib/commands/update.d.ts.map +1 -1
  109. package/dist/lib/commands/update.js +9 -8
  110. package/dist/lib/commands/update.js.map +1 -1
  111. package/dist/lib/commands/utils/attributes.d.ts +47 -0
  112. package/dist/lib/commands/utils/attributes.d.ts.map +1 -0
  113. package/dist/lib/commands/utils/attributes.js +514 -0
  114. package/dist/lib/commands/utils/attributes.js.map +1 -0
  115. package/dist/lib/commands/utils/change-approval.d.ts +25 -0
  116. package/dist/lib/commands/utils/change-approval.d.ts.map +1 -0
  117. package/dist/lib/commands/utils/change-approval.js +129 -0
  118. package/dist/lib/commands/utils/change-approval.js.map +1 -0
  119. package/dist/lib/commands/utils/database-sync.d.ts +10 -0
  120. package/dist/lib/commands/utils/database-sync.d.ts.map +1 -0
  121. package/dist/lib/commands/utils/database-sync.js +136 -0
  122. package/dist/lib/commands/utils/database-sync.js.map +1 -0
  123. package/dist/lib/commands/utils/deployment.d.ts +34 -0
  124. package/dist/lib/commands/utils/deployment.d.ts.map +1 -0
  125. package/dist/lib/commands/utils/deployment.js +109 -0
  126. package/dist/lib/commands/utils/deployment.js.map +1 -0
  127. package/dist/lib/commands/utils/error-formatter.d.ts +19 -0
  128. package/dist/lib/commands/utils/error-formatter.d.ts.map +1 -0
  129. package/dist/lib/commands/utils/error-formatter.js +333 -0
  130. package/dist/lib/commands/utils/error-formatter.js.map +1 -0
  131. package/dist/lib/commands/utils/pools.d.ts +16 -0
  132. package/dist/lib/commands/utils/pools.d.ts.map +1 -0
  133. package/dist/lib/commands/utils/pools.js +198 -0
  134. package/dist/lib/commands/utils/pools.js.map +1 -0
  135. package/dist/lib/config.d.ts +27 -26
  136. package/dist/lib/config.d.ts.map +1 -1
  137. package/dist/lib/config.js +8 -45
  138. package/dist/lib/config.js.map +1 -1
  139. package/dist/lib/constants.d.ts +14 -0
  140. package/dist/lib/constants.d.ts.map +1 -0
  141. package/dist/lib/constants.js +19 -0
  142. package/dist/lib/constants.js.map +1 -0
  143. package/dist/lib/emulation/docker.d.ts +4 -4
  144. package/dist/lib/emulation/docker.d.ts.map +1 -1
  145. package/dist/lib/emulation/docker.js +80 -67
  146. package/dist/lib/emulation/docker.js.map +1 -1
  147. package/dist/lib/parser.d.ts.map +1 -1
  148. package/dist/lib/parser.js +11 -10
  149. package/dist/lib/parser.js.map +1 -1
  150. package/dist/lib/questions.d.ts.map +1 -1
  151. package/dist/lib/questions.js +20 -20
  152. package/dist/lib/questions.js.map +1 -1
  153. package/dist/lib/sdks.d.ts.map +1 -1
  154. package/dist/lib/sdks.js +10 -11
  155. package/dist/lib/sdks.js.map +1 -1
  156. package/dist/lib/types.d.ts +0 -214
  157. package/dist/lib/types.d.ts.map +1 -1
  158. package/dist/lib/utils.d.ts +3 -0
  159. package/dist/lib/utils.d.ts.map +1 -1
  160. package/dist/lib/utils.js +42 -2
  161. package/dist/lib/utils.js.map +1 -1
  162. package/dist/package.json +12 -11
  163. package/docs/examples/account/create-anonymous-session.md +1 -0
  164. package/docs/examples/account/create-email-password-session.md +3 -0
  165. package/docs/examples/account/create-email-token.md +3 -0
  166. package/docs/examples/account/create-email-verification.md +2 -0
  167. package/docs/examples/account/create-jwt.md +1 -0
  168. package/docs/examples/account/create-magic-url-token.md +3 -0
  169. package/docs/examples/account/create-mfa-authenticator.md +2 -0
  170. package/docs/examples/account/create-mfa-challenge.md +2 -0
  171. package/docs/examples/account/create-mfa-recovery-codes.md +1 -0
  172. package/docs/examples/account/create-o-auth-2-session.md +2 -0
  173. package/docs/examples/account/create-o-auth-2-token.md +2 -0
  174. package/docs/examples/account/create-phone-token.md +3 -0
  175. package/docs/examples/account/create-phone-verification.md +1 -0
  176. package/docs/examples/account/create-push-target.md +3 -0
  177. package/docs/examples/account/create-recovery.md +3 -0
  178. package/docs/examples/account/create-session.md +3 -0
  179. package/docs/examples/account/create-verification.md +2 -0
  180. package/docs/examples/account/create.md +4 -0
  181. package/docs/examples/account/delete-identity.md +2 -0
  182. package/docs/examples/account/delete-mfa-authenticator.md +2 -0
  183. package/docs/examples/account/delete-push-target.md +2 -0
  184. package/docs/examples/account/delete-session.md +2 -0
  185. package/docs/examples/account/delete-sessions.md +1 -0
  186. package/docs/examples/account/delete.md +1 -0
  187. package/docs/examples/account/get-mfa-recovery-codes.md +1 -0
  188. package/docs/examples/account/get-prefs.md +1 -0
  189. package/docs/examples/account/get-session.md +2 -0
  190. package/docs/examples/account/get.md +1 -0
  191. package/docs/examples/account/list-identities.md +1 -0
  192. package/docs/examples/account/list-logs.md +1 -0
  193. package/docs/examples/account/list-mfa-factors.md +1 -0
  194. package/docs/examples/account/list-sessions.md +1 -0
  195. package/docs/examples/account/update-email-verification.md +3 -0
  196. package/docs/examples/account/update-email.md +3 -0
  197. package/docs/examples/account/update-magic-url-session.md +3 -0
  198. package/docs/examples/account/update-mfa-authenticator.md +3 -0
  199. package/docs/examples/account/update-mfa-challenge.md +3 -0
  200. package/docs/examples/account/update-mfa-recovery-codes.md +1 -0
  201. package/docs/examples/account/update-mfa.md +2 -0
  202. package/docs/examples/account/update-name.md +2 -0
  203. package/docs/examples/account/update-password.md +2 -0
  204. package/docs/examples/account/update-phone-session.md +3 -0
  205. package/docs/examples/account/update-phone-verification.md +3 -0
  206. package/docs/examples/account/update-phone.md +3 -0
  207. package/docs/examples/account/update-prefs.md +2 -0
  208. package/docs/examples/account/update-push-target.md +3 -0
  209. package/docs/examples/account/update-recovery.md +4 -0
  210. package/docs/examples/account/update-session.md +2 -0
  211. package/docs/examples/account/update-status.md +1 -0
  212. package/docs/examples/account/update-verification.md +3 -0
  213. package/docs/examples/console/get-resource.md +3 -0
  214. package/docs/examples/console/variables.md +1 -0
  215. package/docs/examples/databases/create-boolean-attribute.md +5 -0
  216. package/docs/examples/databases/create-collection.md +4 -0
  217. package/docs/examples/databases/create-datetime-attribute.md +5 -0
  218. package/docs/examples/databases/create-document.md +5 -0
  219. package/docs/examples/databases/create-documents.md +4 -0
  220. package/docs/examples/databases/create-email-attribute.md +5 -0
  221. package/docs/examples/databases/create-enum-attribute.md +6 -0
  222. package/docs/examples/databases/create-float-attribute.md +5 -0
  223. package/docs/examples/databases/create-index.md +6 -0
  224. package/docs/examples/databases/create-integer-attribute.md +5 -0
  225. package/docs/examples/databases/create-ip-attribute.md +5 -0
  226. package/docs/examples/databases/create-line-attribute.md +5 -0
  227. package/docs/examples/databases/create-operations.md +2 -0
  228. package/docs/examples/databases/create-point-attribute.md +5 -0
  229. package/docs/examples/databases/create-polygon-attribute.md +5 -0
  230. package/docs/examples/databases/create-relationship-attribute.md +5 -0
  231. package/docs/examples/databases/create-string-attribute.md +6 -0
  232. package/docs/examples/databases/create-transaction.md +1 -0
  233. package/docs/examples/databases/create-url-attribute.md +5 -0
  234. package/docs/examples/databases/create.md +3 -0
  235. package/docs/examples/databases/decrement-document-attribute.md +5 -0
  236. package/docs/examples/databases/delete-attribute.md +4 -0
  237. package/docs/examples/databases/delete-collection.md +3 -0
  238. package/docs/examples/databases/delete-document.md +4 -0
  239. package/docs/examples/databases/delete-documents.md +3 -0
  240. package/docs/examples/databases/delete-index.md +4 -0
  241. package/docs/examples/databases/delete-transaction.md +2 -0
  242. package/docs/examples/databases/delete.md +2 -0
  243. package/docs/examples/databases/get-attribute.md +4 -0
  244. package/docs/examples/databases/get-collection-usage.md +3 -0
  245. package/docs/examples/databases/get-collection.md +3 -0
  246. package/docs/examples/databases/get-document.md +4 -0
  247. package/docs/examples/databases/get-index.md +4 -0
  248. package/docs/examples/databases/get-transaction.md +2 -0
  249. package/docs/examples/databases/get-usage.md +2 -0
  250. package/docs/examples/databases/get.md +2 -0
  251. package/docs/examples/databases/increment-document-attribute.md +5 -0
  252. package/docs/examples/databases/list-attributes.md +3 -0
  253. package/docs/examples/databases/list-collection-logs.md +3 -0
  254. package/docs/examples/databases/list-collections.md +2 -0
  255. package/docs/examples/databases/list-document-logs.md +4 -0
  256. package/docs/examples/databases/list-documents.md +3 -0
  257. package/docs/examples/databases/list-indexes.md +3 -0
  258. package/docs/examples/databases/list-logs.md +2 -0
  259. package/docs/examples/databases/list-transactions.md +1 -0
  260. package/docs/examples/databases/list-usage.md +1 -0
  261. package/docs/examples/databases/list.md +1 -0
  262. package/docs/examples/databases/update-boolean-attribute.md +6 -0
  263. package/docs/examples/databases/update-collection.md +4 -0
  264. package/docs/examples/databases/update-datetime-attribute.md +6 -0
  265. package/docs/examples/databases/update-document.md +4 -0
  266. package/docs/examples/databases/update-documents.md +3 -0
  267. package/docs/examples/databases/update-email-attribute.md +6 -0
  268. package/docs/examples/databases/update-enum-attribute.md +7 -0
  269. package/docs/examples/databases/update-float-attribute.md +6 -0
  270. package/docs/examples/databases/update-integer-attribute.md +6 -0
  271. package/docs/examples/databases/update-ip-attribute.md +6 -0
  272. package/docs/examples/databases/update-line-attribute.md +5 -0
  273. package/docs/examples/databases/update-point-attribute.md +5 -0
  274. package/docs/examples/databases/update-polygon-attribute.md +5 -0
  275. package/docs/examples/databases/update-relationship-attribute.md +4 -0
  276. package/docs/examples/databases/update-string-attribute.md +6 -0
  277. package/docs/examples/databases/update-transaction.md +2 -0
  278. package/docs/examples/databases/update-url-attribute.md +6 -0
  279. package/docs/examples/databases/update.md +3 -0
  280. package/docs/examples/databases/upsert-document.md +4 -0
  281. package/docs/examples/databases/upsert-documents.md +4 -0
  282. package/docs/examples/functions/create-deployment.md +4 -0
  283. package/docs/examples/functions/create-duplicate-deployment.md +3 -0
  284. package/docs/examples/functions/create-execution.md +2 -0
  285. package/docs/examples/functions/create-template-deployment.md +7 -0
  286. package/docs/examples/functions/create-variable.md +4 -0
  287. package/docs/examples/functions/create-vcs-deployment.md +4 -0
  288. package/docs/examples/functions/create.md +4 -0
  289. package/docs/examples/functions/delete-deployment.md +3 -0
  290. package/docs/examples/functions/delete-execution.md +3 -0
  291. package/docs/examples/functions/delete-variable.md +3 -0
  292. package/docs/examples/functions/delete.md +2 -0
  293. package/docs/examples/functions/get-deployment-download.md +3 -0
  294. package/docs/examples/functions/get-deployment.md +3 -0
  295. package/docs/examples/functions/get-execution.md +3 -0
  296. package/docs/examples/functions/get-template.md +2 -0
  297. package/docs/examples/functions/get-usage.md +2 -0
  298. package/docs/examples/functions/get-variable.md +3 -0
  299. package/docs/examples/functions/get.md +2 -0
  300. package/docs/examples/functions/list-deployments.md +2 -0
  301. package/docs/examples/functions/list-executions.md +2 -0
  302. package/docs/examples/functions/list-runtimes.md +1 -0
  303. package/docs/examples/functions/list-specifications.md +1 -0
  304. package/docs/examples/functions/list-templates.md +1 -0
  305. package/docs/examples/functions/list-usage.md +1 -0
  306. package/docs/examples/functions/list-variables.md +2 -0
  307. package/docs/examples/functions/list.md +1 -0
  308. package/docs/examples/functions/update-deployment-status.md +3 -0
  309. package/docs/examples/functions/update-function-deployment.md +3 -0
  310. package/docs/examples/functions/update-variable.md +4 -0
  311. package/docs/examples/functions/update.md +3 -0
  312. package/docs/examples/graphql/mutation.md +2 -0
  313. package/docs/examples/graphql/query.md +2 -0
  314. package/docs/examples/health/get-antivirus.md +1 -0
  315. package/docs/examples/health/get-cache.md +1 -0
  316. package/docs/examples/health/get-certificate.md +1 -0
  317. package/docs/examples/health/get-db.md +1 -0
  318. package/docs/examples/health/get-failed-jobs.md +2 -0
  319. package/docs/examples/health/get-pub-sub.md +1 -0
  320. package/docs/examples/health/get-queue-builds.md +1 -0
  321. package/docs/examples/health/get-queue-certificates.md +1 -0
  322. package/docs/examples/health/get-queue-databases.md +1 -0
  323. package/docs/examples/health/get-queue-deletes.md +1 -0
  324. package/docs/examples/health/get-queue-functions.md +1 -0
  325. package/docs/examples/health/get-queue-logs.md +1 -0
  326. package/docs/examples/health/get-queue-mails.md +1 -0
  327. package/docs/examples/health/get-queue-messaging.md +1 -0
  328. package/docs/examples/health/get-queue-migrations.md +1 -0
  329. package/docs/examples/health/get-queue-stats-resources.md +1 -0
  330. package/docs/examples/health/get-queue-usage.md +1 -0
  331. package/docs/examples/health/get-queue-webhooks.md +1 -0
  332. package/docs/examples/health/get-storage-local.md +1 -0
  333. package/docs/examples/health/get-storage.md +1 -0
  334. package/docs/examples/health/get-time.md +1 -0
  335. package/docs/examples/health/get.md +1 -0
  336. package/docs/examples/locale/get.md +1 -0
  337. package/docs/examples/locale/list-codes.md +1 -0
  338. package/docs/examples/locale/list-continents.md +1 -0
  339. package/docs/examples/locale/list-countries-eu.md +1 -0
  340. package/docs/examples/locale/list-countries-phones.md +1 -0
  341. package/docs/examples/locale/list-countries.md +1 -0
  342. package/docs/examples/locale/list-currencies.md +1 -0
  343. package/docs/examples/locale/list-languages.md +1 -0
  344. package/docs/examples/messaging/create-apns-provider.md +3 -0
  345. package/docs/examples/messaging/create-email.md +4 -0
  346. package/docs/examples/messaging/create-fcm-provider.md +3 -0
  347. package/docs/examples/messaging/create-mailgun-provider.md +3 -0
  348. package/docs/examples/messaging/create-msg-91-provider.md +3 -0
  349. package/docs/examples/messaging/create-push.md +2 -0
  350. package/docs/examples/messaging/create-resend-provider.md +3 -0
  351. package/docs/examples/messaging/create-sendgrid-provider.md +3 -0
  352. package/docs/examples/messaging/create-sms.md +3 -0
  353. package/docs/examples/messaging/create-smtp-provider.md +4 -0
  354. package/docs/examples/messaging/create-subscriber.md +4 -0
  355. package/docs/examples/messaging/create-telesign-provider.md +3 -0
  356. package/docs/examples/messaging/create-textmagic-provider.md +3 -0
  357. package/docs/examples/messaging/create-topic.md +3 -0
  358. package/docs/examples/messaging/create-twilio-provider.md +3 -0
  359. package/docs/examples/messaging/create-vonage-provider.md +3 -0
  360. package/docs/examples/messaging/delete-provider.md +2 -0
  361. package/docs/examples/messaging/delete-subscriber.md +3 -0
  362. package/docs/examples/messaging/delete-topic.md +2 -0
  363. package/docs/examples/messaging/delete.md +2 -0
  364. package/docs/examples/messaging/get-message.md +2 -0
  365. package/docs/examples/messaging/get-provider.md +2 -0
  366. package/docs/examples/messaging/get-subscriber.md +3 -0
  367. package/docs/examples/messaging/get-topic.md +2 -0
  368. package/docs/examples/messaging/list-message-logs.md +2 -0
  369. package/docs/examples/messaging/list-messages.md +1 -0
  370. package/docs/examples/messaging/list-provider-logs.md +2 -0
  371. package/docs/examples/messaging/list-providers.md +1 -0
  372. package/docs/examples/messaging/list-subscriber-logs.md +2 -0
  373. package/docs/examples/messaging/list-subscribers.md +2 -0
  374. package/docs/examples/messaging/list-targets.md +2 -0
  375. package/docs/examples/messaging/list-topic-logs.md +2 -0
  376. package/docs/examples/messaging/list-topics.md +1 -0
  377. package/docs/examples/messaging/update-apns-provider.md +2 -0
  378. package/docs/examples/messaging/update-email.md +2 -0
  379. package/docs/examples/messaging/update-fcm-provider.md +2 -0
  380. package/docs/examples/messaging/update-mailgun-provider.md +2 -0
  381. package/docs/examples/messaging/update-msg-91-provider.md +2 -0
  382. package/docs/examples/messaging/update-push.md +2 -0
  383. package/docs/examples/messaging/update-resend-provider.md +2 -0
  384. package/docs/examples/messaging/update-sendgrid-provider.md +2 -0
  385. package/docs/examples/messaging/update-sms.md +2 -0
  386. package/docs/examples/messaging/update-smtp-provider.md +2 -0
  387. package/docs/examples/messaging/update-telesign-provider.md +2 -0
  388. package/docs/examples/messaging/update-textmagic-provider.md +2 -0
  389. package/docs/examples/messaging/update-topic.md +2 -0
  390. package/docs/examples/messaging/update-twilio-provider.md +2 -0
  391. package/docs/examples/messaging/update-vonage-provider.md +2 -0
  392. package/docs/examples/migrations/create-appwrite-migration.md +5 -0
  393. package/docs/examples/migrations/create-csv-export.md +3 -0
  394. package/docs/examples/migrations/create-csv-import.md +4 -0
  395. package/docs/examples/migrations/create-firebase-migration.md +3 -0
  396. package/docs/examples/migrations/create-n-host-migration.md +8 -0
  397. package/docs/examples/migrations/create-supabase-migration.md +7 -0
  398. package/docs/examples/migrations/delete.md +2 -0
  399. package/docs/examples/migrations/get-appwrite-report.md +5 -0
  400. package/docs/examples/migrations/get-firebase-report.md +3 -0
  401. package/docs/examples/migrations/get-n-host-report.md +8 -0
  402. package/docs/examples/migrations/get-supabase-report.md +7 -0
  403. package/docs/examples/migrations/get.md +2 -0
  404. package/docs/examples/migrations/list.md +1 -0
  405. package/docs/examples/migrations/retry.md +2 -0
  406. package/docs/examples/project/create-variable.md +3 -0
  407. package/docs/examples/project/delete-variable.md +2 -0
  408. package/docs/examples/project/get-usage.md +3 -0
  409. package/docs/examples/project/get-variable.md +2 -0
  410. package/docs/examples/project/list-variables.md +1 -0
  411. package/docs/examples/project/update-variable.md +3 -0
  412. package/docs/examples/projects/create-dev-key.md +4 -0
  413. package/docs/examples/projects/create-jwt.md +3 -0
  414. package/docs/examples/projects/create-key.md +4 -0
  415. package/docs/examples/projects/create-platform.md +4 -0
  416. package/docs/examples/projects/create-smtp-test.md +6 -0
  417. package/docs/examples/projects/create-webhook.md +6 -0
  418. package/docs/examples/projects/create.md +4 -0
  419. package/docs/examples/projects/delete-dev-key.md +3 -0
  420. package/docs/examples/projects/delete-email-template.md +4 -0
  421. package/docs/examples/projects/delete-key.md +3 -0
  422. package/docs/examples/projects/delete-platform.md +3 -0
  423. package/docs/examples/projects/delete-sms-template.md +4 -0
  424. package/docs/examples/projects/delete-webhook.md +3 -0
  425. package/docs/examples/projects/delete.md +2 -0
  426. package/docs/examples/projects/get-dev-key.md +3 -0
  427. package/docs/examples/projects/get-email-template.md +4 -0
  428. package/docs/examples/projects/get-key.md +3 -0
  429. package/docs/examples/projects/get-platform.md +3 -0
  430. package/docs/examples/projects/get-sms-template.md +4 -0
  431. package/docs/examples/projects/get-webhook.md +3 -0
  432. package/docs/examples/projects/get.md +2 -0
  433. package/docs/examples/projects/list-dev-keys.md +2 -0
  434. package/docs/examples/projects/list-keys.md +2 -0
  435. package/docs/examples/projects/list-platforms.md +2 -0
  436. package/docs/examples/projects/list-webhooks.md +2 -0
  437. package/docs/examples/projects/list.md +1 -0
  438. package/docs/examples/projects/update-api-status-all.md +3 -0
  439. package/docs/examples/projects/update-api-status.md +4 -0
  440. package/docs/examples/projects/update-auth-duration.md +3 -0
  441. package/docs/examples/projects/update-auth-limit.md +3 -0
  442. package/docs/examples/projects/update-auth-password-dictionary.md +3 -0
  443. package/docs/examples/projects/update-auth-password-history.md +3 -0
  444. package/docs/examples/projects/update-auth-sessions-limit.md +3 -0
  445. package/docs/examples/projects/update-auth-status.md +4 -0
  446. package/docs/examples/projects/update-dev-key.md +5 -0
  447. package/docs/examples/projects/update-email-template.md +6 -0
  448. package/docs/examples/projects/update-key.md +5 -0
  449. package/docs/examples/projects/update-memberships-privacy.md +5 -0
  450. package/docs/examples/projects/update-mock-numbers.md +3 -0
  451. package/docs/examples/projects/update-o-auth-2.md +3 -0
  452. package/docs/examples/projects/update-personal-data-check.md +3 -0
  453. package/docs/examples/projects/update-platform.md +4 -0
  454. package/docs/examples/projects/update-service-status-all.md +3 -0
  455. package/docs/examples/projects/update-service-status.md +4 -0
  456. package/docs/examples/projects/update-session-alerts.md +3 -0
  457. package/docs/examples/projects/update-session-invalidation.md +3 -0
  458. package/docs/examples/projects/update-sms-template.md +5 -0
  459. package/docs/examples/projects/update-smtp.md +3 -0
  460. package/docs/examples/projects/update-team.md +3 -0
  461. package/docs/examples/projects/update-webhook-signature.md +3 -0
  462. package/docs/examples/projects/update-webhook.md +7 -0
  463. package/docs/examples/projects/update.md +3 -0
  464. package/docs/examples/proxy/create-api-rule.md +2 -0
  465. package/docs/examples/proxy/create-function-rule.md +3 -0
  466. package/docs/examples/proxy/create-redirect-rule.md +6 -0
  467. package/docs/examples/proxy/create-site-rule.md +3 -0
  468. package/docs/examples/proxy/delete-rule.md +2 -0
  469. package/docs/examples/proxy/get-rule.md +2 -0
  470. package/docs/examples/proxy/list-rules.md +1 -0
  471. package/docs/examples/proxy/update-rule-verification.md +2 -0
  472. package/docs/examples/sites/create-deployment.md +4 -0
  473. package/docs/examples/sites/create-duplicate-deployment.md +3 -0
  474. package/docs/examples/sites/create-template-deployment.md +7 -0
  475. package/docs/examples/sites/create-variable.md +4 -0
  476. package/docs/examples/sites/create-vcs-deployment.md +4 -0
  477. package/docs/examples/sites/create.md +5 -0
  478. package/docs/examples/sites/delete-deployment.md +3 -0
  479. package/docs/examples/sites/delete-log.md +3 -0
  480. package/docs/examples/sites/delete-variable.md +3 -0
  481. package/docs/examples/sites/delete.md +2 -0
  482. package/docs/examples/sites/get-deployment-download.md +3 -0
  483. package/docs/examples/sites/get-deployment.md +3 -0
  484. package/docs/examples/sites/get-log.md +3 -0
  485. package/docs/examples/sites/get-template.md +2 -0
  486. package/docs/examples/sites/get-usage.md +2 -0
  487. package/docs/examples/sites/get-variable.md +3 -0
  488. package/docs/examples/sites/get.md +2 -0
  489. package/docs/examples/sites/list-deployments.md +2 -0
  490. package/docs/examples/sites/list-frameworks.md +1 -0
  491. package/docs/examples/sites/list-logs.md +2 -0
  492. package/docs/examples/sites/list-specifications.md +1 -0
  493. package/docs/examples/sites/list-templates.md +1 -0
  494. package/docs/examples/sites/list-usage.md +1 -0
  495. package/docs/examples/sites/list-variables.md +2 -0
  496. package/docs/examples/sites/list.md +1 -0
  497. package/docs/examples/sites/update-deployment-status.md +3 -0
  498. package/docs/examples/sites/update-site-deployment.md +3 -0
  499. package/docs/examples/sites/update-variable.md +4 -0
  500. package/docs/examples/sites/update.md +4 -0
  501. package/docs/examples/storage/create-bucket.md +3 -0
  502. package/docs/examples/storage/create-file.md +4 -0
  503. package/docs/examples/storage/delete-bucket.md +2 -0
  504. package/docs/examples/storage/delete-file.md +3 -0
  505. package/docs/examples/storage/get-bucket-usage.md +2 -0
  506. package/docs/examples/storage/get-bucket.md +2 -0
  507. package/docs/examples/storage/get-file-download.md +3 -0
  508. package/docs/examples/storage/get-file-preview.md +3 -0
  509. package/docs/examples/storage/get-file-view.md +3 -0
  510. package/docs/examples/storage/get-file.md +3 -0
  511. package/docs/examples/storage/get-usage.md +1 -0
  512. package/docs/examples/storage/list-buckets.md +1 -0
  513. package/docs/examples/storage/list-files.md +2 -0
  514. package/docs/examples/storage/update-bucket.md +3 -0
  515. package/docs/examples/storage/update-file.md +3 -0
  516. package/docs/examples/tablesdb/create-boolean-column.md +5 -0
  517. package/docs/examples/tablesdb/create-datetime-column.md +5 -0
  518. package/docs/examples/tablesdb/create-email-column.md +5 -0
  519. package/docs/examples/tablesdb/create-enum-column.md +6 -0
  520. package/docs/examples/tablesdb/create-float-column.md +5 -0
  521. package/docs/examples/tablesdb/create-index.md +6 -0
  522. package/docs/examples/tablesdb/create-integer-column.md +5 -0
  523. package/docs/examples/tablesdb/create-ip-column.md +5 -0
  524. package/docs/examples/tablesdb/create-line-column.md +5 -0
  525. package/docs/examples/tablesdb/create-operations.md +2 -0
  526. package/docs/examples/tablesdb/create-point-column.md +5 -0
  527. package/docs/examples/tablesdb/create-polygon-column.md +5 -0
  528. package/docs/examples/tablesdb/create-relationship-column.md +5 -0
  529. package/docs/examples/tablesdb/create-row.md +5 -0
  530. package/docs/examples/tablesdb/create-rows.md +4 -0
  531. package/docs/examples/tablesdb/create-string-column.md +6 -0
  532. package/docs/examples/tablesdb/create-table.md +4 -0
  533. package/docs/examples/tablesdb/create-transaction.md +1 -0
  534. package/docs/examples/tablesdb/create-url-column.md +5 -0
  535. package/docs/examples/tablesdb/create.md +3 -0
  536. package/docs/examples/tablesdb/decrement-row-column.md +5 -0
  537. package/docs/examples/tablesdb/delete-column.md +4 -0
  538. package/docs/examples/tablesdb/delete-index.md +4 -0
  539. package/docs/examples/tablesdb/delete-row.md +4 -0
  540. package/docs/examples/tablesdb/delete-rows.md +3 -0
  541. package/docs/examples/tablesdb/delete-table.md +3 -0
  542. package/docs/examples/tablesdb/delete-transaction.md +2 -0
  543. package/docs/examples/tablesdb/delete.md +2 -0
  544. package/docs/examples/tablesdb/get-column.md +4 -0
  545. package/docs/examples/tablesdb/get-index.md +4 -0
  546. package/docs/examples/tablesdb/get-row.md +4 -0
  547. package/docs/examples/tablesdb/get-table-usage.md +3 -0
  548. package/docs/examples/tablesdb/get-table.md +3 -0
  549. package/docs/examples/tablesdb/get-transaction.md +2 -0
  550. package/docs/examples/tablesdb/get-usage.md +2 -0
  551. package/docs/examples/tablesdb/get.md +2 -0
  552. package/docs/examples/tablesdb/increment-row-column.md +5 -0
  553. package/docs/examples/tablesdb/list-columns.md +3 -0
  554. package/docs/examples/tablesdb/list-indexes.md +3 -0
  555. package/docs/examples/tablesdb/list-row-logs.md +4 -0
  556. package/docs/examples/tablesdb/list-rows.md +3 -0
  557. package/docs/examples/tablesdb/list-table-logs.md +3 -0
  558. package/docs/examples/tablesdb/list-tables.md +2 -0
  559. package/docs/examples/tablesdb/list-transactions.md +1 -0
  560. package/docs/examples/tablesdb/list-usage.md +1 -0
  561. package/docs/examples/tablesdb/list.md +1 -0
  562. package/docs/examples/tablesdb/update-boolean-column.md +6 -0
  563. package/docs/examples/tablesdb/update-datetime-column.md +6 -0
  564. package/docs/examples/tablesdb/update-email-column.md +6 -0
  565. package/docs/examples/tablesdb/update-enum-column.md +7 -0
  566. package/docs/examples/tablesdb/update-float-column.md +6 -0
  567. package/docs/examples/tablesdb/update-integer-column.md +6 -0
  568. package/docs/examples/tablesdb/update-ip-column.md +6 -0
  569. package/docs/examples/tablesdb/update-line-column.md +5 -0
  570. package/docs/examples/tablesdb/update-point-column.md +5 -0
  571. package/docs/examples/tablesdb/update-polygon-column.md +5 -0
  572. package/docs/examples/tablesdb/update-relationship-column.md +4 -0
  573. package/docs/examples/tablesdb/update-row.md +4 -0
  574. package/docs/examples/tablesdb/update-rows.md +3 -0
  575. package/docs/examples/tablesdb/update-string-column.md +6 -0
  576. package/docs/examples/tablesdb/update-table.md +4 -0
  577. package/docs/examples/tablesdb/update-transaction.md +2 -0
  578. package/docs/examples/tablesdb/update-url-column.md +6 -0
  579. package/docs/examples/tablesdb/update.md +3 -0
  580. package/docs/examples/tablesdb/upsert-row.md +4 -0
  581. package/docs/examples/tablesdb/upsert-rows.md +4 -0
  582. package/docs/examples/teams/create-membership.md +3 -0
  583. package/docs/examples/teams/create.md +3 -0
  584. package/docs/examples/teams/delete-membership.md +3 -0
  585. package/docs/examples/teams/delete.md +2 -0
  586. package/docs/examples/teams/get-membership.md +3 -0
  587. package/docs/examples/teams/get-prefs.md +2 -0
  588. package/docs/examples/teams/get.md +2 -0
  589. package/docs/examples/teams/list-logs.md +2 -0
  590. package/docs/examples/teams/list-memberships.md +2 -0
  591. package/docs/examples/teams/list.md +1 -0
  592. package/docs/examples/teams/update-membership-status.md +5 -0
  593. package/docs/examples/teams/update-membership.md +4 -0
  594. package/docs/examples/teams/update-name.md +3 -0
  595. package/docs/examples/teams/update-prefs.md +3 -0
  596. package/docs/examples/tokens/create-file-token.md +3 -0
  597. package/docs/examples/tokens/delete.md +2 -0
  598. package/docs/examples/tokens/get.md +2 -0
  599. package/docs/examples/tokens/list.md +3 -0
  600. package/docs/examples/tokens/update.md +2 -0
  601. package/docs/examples/users/create-argon-2-user.md +4 -0
  602. package/docs/examples/users/create-bcrypt-user.md +4 -0
  603. package/docs/examples/users/create-jwt.md +2 -0
  604. package/docs/examples/users/create-md-5-user.md +4 -0
  605. package/docs/examples/users/create-mfa-recovery-codes.md +2 -0
  606. package/docs/examples/users/create-ph-pass-user.md +4 -0
  607. package/docs/examples/users/create-scrypt-modified-user.md +7 -0
  608. package/docs/examples/users/create-scrypt-user.md +9 -0
  609. package/docs/examples/users/create-session.md +2 -0
  610. package/docs/examples/users/create-sha-user.md +4 -0
  611. package/docs/examples/users/create-target.md +5 -0
  612. package/docs/examples/users/create-token.md +2 -0
  613. package/docs/examples/users/create.md +2 -0
  614. package/docs/examples/users/delete-identity.md +2 -0
  615. package/docs/examples/users/delete-mfa-authenticator.md +3 -0
  616. package/docs/examples/users/delete-session.md +3 -0
  617. package/docs/examples/users/delete-sessions.md +2 -0
  618. package/docs/examples/users/delete-target.md +3 -0
  619. package/docs/examples/users/delete.md +2 -0
  620. package/docs/examples/users/get-mfa-recovery-codes.md +2 -0
  621. package/docs/examples/users/get-prefs.md +2 -0
  622. package/docs/examples/users/get-target.md +3 -0
  623. package/docs/examples/users/get-usage.md +1 -0
  624. package/docs/examples/users/get.md +2 -0
  625. package/docs/examples/users/list-identities.md +1 -0
  626. package/docs/examples/users/list-logs.md +2 -0
  627. package/docs/examples/users/list-memberships.md +2 -0
  628. package/docs/examples/users/list-mfa-factors.md +2 -0
  629. package/docs/examples/users/list-sessions.md +2 -0
  630. package/docs/examples/users/list-targets.md +2 -0
  631. package/docs/examples/users/list.md +1 -0
  632. package/docs/examples/users/update-email-verification.md +3 -0
  633. package/docs/examples/users/update-email.md +3 -0
  634. package/docs/examples/users/update-labels.md +3 -0
  635. package/docs/examples/users/update-mfa-recovery-codes.md +2 -0
  636. package/docs/examples/users/update-mfa.md +3 -0
  637. package/docs/examples/users/update-name.md +3 -0
  638. package/docs/examples/users/update-password.md +3 -0
  639. package/docs/examples/users/update-phone-verification.md +3 -0
  640. package/docs/examples/users/update-phone.md +3 -0
  641. package/docs/examples/users/update-prefs.md +3 -0
  642. package/docs/examples/users/update-status.md +3 -0
  643. package/docs/examples/users/update-target.md +3 -0
  644. package/docs/examples/vcs/create-repository-detection.md +4 -0
  645. package/docs/examples/vcs/create-repository.md +4 -0
  646. package/docs/examples/vcs/delete-installation.md +2 -0
  647. package/docs/examples/vcs/get-installation.md +2 -0
  648. package/docs/examples/vcs/get-repository-contents.md +3 -0
  649. package/docs/examples/vcs/get-repository.md +3 -0
  650. package/docs/examples/vcs/list-installations.md +1 -0
  651. package/docs/examples/vcs/list-repositories.md +3 -0
  652. package/docs/examples/vcs/list-repository-branches.md +3 -0
  653. package/docs/examples/vcs/update-external-deployments.md +4 -0
  654. package/index.ts +25 -165
  655. package/install.ps1 +2 -2
  656. package/install.sh +1 -1
  657. package/lib/client.ts +14 -6
  658. package/lib/commands/config.ts +494 -0
  659. package/lib/commands/db.ts +324 -0
  660. package/lib/commands/errors.ts +93 -0
  661. package/lib/commands/init.ts +25 -14
  662. package/lib/commands/pull.ts +683 -420
  663. package/lib/commands/push.ts +1677 -2404
  664. package/lib/commands/run.ts +1 -1
  665. package/lib/commands/schema.ts +122 -0
  666. package/lib/commands/services/account.ts +200 -385
  667. package/lib/commands/services/console.ts +13 -34
  668. package/lib/commands/services/databases.ts +298 -1215
  669. package/lib/commands/services/functions.ts +115 -434
  670. package/lib/commands/services/graphql.ts +5 -2
  671. package/lib/commands/services/health.ts +87 -149
  672. package/lib/commands/services/locale.ts +36 -33
  673. package/lib/commands/services/messaging.ts +180 -999
  674. package/lib/commands/services/migrations.ts +54 -226
  675. package/lib/commands/services/project.ts +19 -23
  676. package/lib/commands/services/projects.ts +182 -714
  677. package/lib/commands/services/proxy.ts +30 -58
  678. package/lib/commands/services/sites.ts +107 -379
  679. package/lib/commands/services/storage.ts +93 -302
  680. package/lib/commands/services/tables-db.ts +1150 -0
  681. package/lib/commands/services/teams.ts +48 -110
  682. package/lib/commands/services/tokens.ts +16 -28
  683. package/lib/commands/services/users.ts +133 -403
  684. package/lib/commands/services/vcs.ts +48 -151
  685. package/lib/commands/types.ts +1 -1
  686. package/lib/commands/update.ts +13 -22
  687. package/lib/commands/utils/attributes.ts +719 -0
  688. package/lib/commands/utils/change-approval.ts +186 -0
  689. package/lib/commands/utils/database-sync.ts +180 -0
  690. package/lib/commands/utils/deployment.ts +184 -0
  691. package/lib/commands/utils/error-formatter.ts +417 -0
  692. package/lib/commands/utils/pools.ts +355 -0
  693. package/lib/config.ts +46 -82
  694. package/lib/constants.ts +22 -0
  695. package/lib/emulation/docker.ts +101 -87
  696. package/lib/parser.ts +16 -11
  697. package/lib/questions.ts +20 -21
  698. package/lib/sdks.ts +15 -11
  699. package/lib/types.ts +0 -229
  700. package/lib/utils.ts +45 -4
  701. package/package.json +12 -11
  702. package/scoop/appwrite.config.json +29 -19
  703. package/.github/workflows/build-verify.yml +0 -71
  704. package/bun.lock +0 -625
  705. package/dist/lib/commands/services/avatars.d.ts +0 -3
  706. package/dist/lib/commands/services/avatars.d.ts.map +0 -1
  707. package/dist/lib/commands/services/avatars.js +0 -118
  708. package/dist/lib/commands/services/avatars.js.map +0 -1
  709. package/dist/lib/commands/services/tablesdb.d.ts +0 -3
  710. package/dist/lib/commands/services/tablesdb.d.ts.map +0 -1
  711. package/dist/lib/commands/services/tablesdb.js.map +0 -1
  712. package/dist/scripts/generate-commands.d.ts +0 -2
  713. package/dist/scripts/generate-commands.d.ts.map +0 -1
  714. package/dist/scripts/generate-commands.js +0 -398
  715. package/dist/scripts/generate-commands.js.map +0 -1
  716. package/lib/commands/services/avatars.ts +0 -400
  717. package/lib/commands/services/tablesdb.ts +0 -1928
  718. package/scripts/generate-commands.ts +0 -539
@@ -0,0 +1,355 @@
1
+ import { getDatabasesService } from "../../services.js";
2
+ import { paginate } from "../../paginate.js";
3
+ import { log } from "../../parser.js";
4
+
5
+ export class Pools {
6
+ private STEP_SIZE = 100; // Resources
7
+ private POLL_DEBOUNCE = 2000; // Milliseconds
8
+ private pollMaxDebounces = 30;
9
+ private POLL_DEFAULT_VALUE = 30;
10
+
11
+ constructor(pollMaxDebounces?: number) {
12
+ if (pollMaxDebounces) {
13
+ this.pollMaxDebounces = pollMaxDebounces;
14
+ }
15
+ }
16
+
17
+ public setPollMaxDebounces(value: number): void {
18
+ this.pollMaxDebounces = value;
19
+ }
20
+
21
+ public getPollMaxDebounces(): number {
22
+ return this.pollMaxDebounces;
23
+ }
24
+
25
+ public wipeAttributes = async (
26
+ databaseId: string,
27
+ collectionId: string,
28
+ iteration: number = 1,
29
+ ): Promise<boolean> => {
30
+ if (iteration > this.pollMaxDebounces) {
31
+ return false;
32
+ }
33
+
34
+ const databasesService = await getDatabasesService();
35
+ const response = await databasesService.listAttributes(
36
+ databaseId,
37
+ collectionId,
38
+ [JSON.stringify({ method: "limit", values: [1] })],
39
+ );
40
+ const { total } = response;
41
+
42
+ if (total === 0) {
43
+ return true;
44
+ }
45
+
46
+ if (this.pollMaxDebounces === this.POLL_DEFAULT_VALUE) {
47
+ let steps = Math.max(1, Math.ceil(total / this.STEP_SIZE));
48
+ if (steps > 1 && iteration === 1) {
49
+ this.pollMaxDebounces *= steps;
50
+
51
+ log(
52
+ "Found a large number of attributes, increasing timeout to " +
53
+ (this.pollMaxDebounces * this.POLL_DEBOUNCE) / 1000 / 60 +
54
+ " minutes",
55
+ );
56
+ }
57
+ }
58
+
59
+ await new Promise((resolve) => setTimeout(resolve, this.POLL_DEBOUNCE));
60
+
61
+ return await this.wipeAttributes(databaseId, collectionId, iteration + 1);
62
+ };
63
+
64
+ public wipeIndexes = async (
65
+ databaseId: string,
66
+ collectionId: string,
67
+ iteration: number = 1,
68
+ ): Promise<boolean> => {
69
+ if (iteration > this.pollMaxDebounces) {
70
+ return false;
71
+ }
72
+
73
+ const databasesService = await getDatabasesService();
74
+ const response = await databasesService.listIndexes(
75
+ databaseId,
76
+ collectionId,
77
+ [JSON.stringify({ method: "limit", values: [1] })],
78
+ );
79
+ const { total } = response;
80
+
81
+ if (total === 0) {
82
+ return true;
83
+ }
84
+
85
+ if (this.pollMaxDebounces === this.POLL_DEFAULT_VALUE) {
86
+ let steps = Math.max(1, Math.ceil(total / this.STEP_SIZE));
87
+ if (steps > 1 && iteration === 1) {
88
+ this.pollMaxDebounces *= steps;
89
+
90
+ log(
91
+ "Found a large number of indexes, increasing timeout to " +
92
+ (this.pollMaxDebounces * this.POLL_DEBOUNCE) / 1000 / 60 +
93
+ " minutes",
94
+ );
95
+ }
96
+ }
97
+
98
+ await new Promise((resolve) => setTimeout(resolve, this.POLL_DEBOUNCE));
99
+
100
+ return await this.wipeIndexes(databaseId, collectionId, iteration + 1);
101
+ };
102
+
103
+ public waitForAttributeDeletion = async (
104
+ databaseId: string,
105
+ collectionId: string,
106
+ attributeKeys: any[],
107
+ iteration: number = 1,
108
+ ): Promise<boolean> => {
109
+ if (iteration > this.pollMaxDebounces) {
110
+ return false;
111
+ }
112
+
113
+ if (this.pollMaxDebounces === this.POLL_DEFAULT_VALUE) {
114
+ let steps = Math.max(1, Math.ceil(attributeKeys.length / this.STEP_SIZE));
115
+ if (steps > 1 && iteration === 1) {
116
+ this.pollMaxDebounces *= steps;
117
+
118
+ log(
119
+ "Found a large number of attributes to be deleted. Increasing timeout to " +
120
+ (this.pollMaxDebounces * this.POLL_DEBOUNCE) / 1000 / 60 +
121
+ " minutes",
122
+ );
123
+ }
124
+ }
125
+
126
+ const { attributes } = await paginate(
127
+ async (args: any) => {
128
+ const databasesService = await getDatabasesService();
129
+ return await databasesService.listAttributes({
130
+ databaseId: args.databaseId,
131
+ collectionId: args.collectionId,
132
+ queries: args.queries || [],
133
+ });
134
+ },
135
+ {
136
+ databaseId,
137
+ collectionId,
138
+ },
139
+ 100,
140
+ "attributes",
141
+ );
142
+
143
+ const ready = attributeKeys.filter((attribute: any) =>
144
+ attributes.some((a: any) => a.key === attribute.key),
145
+ );
146
+
147
+ if (ready.length === 0) {
148
+ return true;
149
+ }
150
+
151
+ await new Promise((resolve) => setTimeout(resolve, this.POLL_DEBOUNCE));
152
+
153
+ return await this.waitForAttributeDeletion(
154
+ databaseId,
155
+ collectionId,
156
+ attributeKeys,
157
+ iteration + 1,
158
+ );
159
+ };
160
+
161
+ public expectAttributes = async (
162
+ databaseId: string,
163
+ collectionId: string,
164
+ attributeKeys: string[],
165
+ iteration: number = 1,
166
+ ): Promise<boolean> => {
167
+ if (iteration > this.pollMaxDebounces) {
168
+ return false;
169
+ }
170
+
171
+ if (this.pollMaxDebounces === this.POLL_DEFAULT_VALUE) {
172
+ let steps = Math.max(1, Math.ceil(attributeKeys.length / this.STEP_SIZE));
173
+ if (steps > 1 && iteration === 1) {
174
+ this.pollMaxDebounces *= steps;
175
+
176
+ log(
177
+ "Creating a large number of attributes, increasing timeout to " +
178
+ (this.pollMaxDebounces * this.POLL_DEBOUNCE) / 1000 / 60 +
179
+ " minutes",
180
+ );
181
+ }
182
+ }
183
+
184
+ const { attributes } = await paginate(
185
+ async (args: any) => {
186
+ const databasesService = await getDatabasesService();
187
+ return await databasesService.listAttributes(
188
+ args.databaseId,
189
+ args.collectionId,
190
+ args.queries || [],
191
+ );
192
+ },
193
+ {
194
+ databaseId,
195
+ collectionId,
196
+ },
197
+ 100,
198
+ "attributes",
199
+ );
200
+
201
+ const ready = attributes
202
+ .filter((attribute: any) => {
203
+ if (attributeKeys.includes(attribute.key)) {
204
+ if (["stuck", "failed"].includes(attribute.status)) {
205
+ throw new Error(`Attribute '${attribute.key}' failed!`);
206
+ }
207
+
208
+ return attribute.status === "available";
209
+ }
210
+
211
+ return false;
212
+ })
213
+ .map((attribute: any) => attribute.key);
214
+
215
+ if (ready.length === attributeKeys.length) {
216
+ return true;
217
+ }
218
+
219
+ await new Promise((resolve) => setTimeout(resolve, this.POLL_DEBOUNCE));
220
+
221
+ return await this.expectAttributes(
222
+ databaseId,
223
+ collectionId,
224
+ attributeKeys,
225
+ iteration + 1,
226
+ );
227
+ };
228
+
229
+ public deleteIndexes = async (
230
+ databaseId: string,
231
+ collectionId: string,
232
+ indexesKeys: any[],
233
+ iteration: number = 1,
234
+ ): Promise<boolean> => {
235
+ if (iteration > this.pollMaxDebounces) {
236
+ return false;
237
+ }
238
+
239
+ if (this.pollMaxDebounces === this.POLL_DEFAULT_VALUE) {
240
+ let steps = Math.max(1, Math.ceil(indexesKeys.length / this.STEP_SIZE));
241
+ if (steps > 1 && iteration === 1) {
242
+ this.pollMaxDebounces *= steps;
243
+
244
+ log(
245
+ "Found a large number of indexes to be deleted. Increasing timeout to " +
246
+ (this.pollMaxDebounces * this.POLL_DEBOUNCE) / 1000 / 60 +
247
+ " minutes",
248
+ );
249
+ }
250
+ }
251
+
252
+ const { indexes } = await paginate(
253
+ async (args: any) => {
254
+ const databasesService = await getDatabasesService();
255
+ return await databasesService.listIndexes(
256
+ args.databaseId,
257
+ args.collectionId,
258
+ args.queries || [],
259
+ );
260
+ },
261
+ {
262
+ databaseId,
263
+ collectionId,
264
+ },
265
+ 100,
266
+ "indexes",
267
+ );
268
+
269
+ const indexKeySet = new Set(indexes.map((i: any) => i.key));
270
+ const ready = indexesKeys.filter((index: any) =>
271
+ indexKeySet.has(index.key),
272
+ );
273
+
274
+ if (ready.length === 0) {
275
+ return true;
276
+ }
277
+
278
+ await new Promise((resolve) => setTimeout(resolve, this.POLL_DEBOUNCE));
279
+
280
+ return await this.deleteIndexes(
281
+ databaseId,
282
+ collectionId,
283
+ indexesKeys,
284
+ iteration + 1,
285
+ );
286
+ };
287
+
288
+ public expectIndexes = async (
289
+ databaseId: string,
290
+ collectionId: string,
291
+ indexKeys: string[],
292
+ iteration: number = 1,
293
+ ): Promise<boolean> => {
294
+ if (iteration > this.pollMaxDebounces) {
295
+ return false;
296
+ }
297
+
298
+ if (this.pollMaxDebounces === this.POLL_DEFAULT_VALUE) {
299
+ let steps = Math.max(1, Math.ceil(indexKeys.length / this.STEP_SIZE));
300
+ if (steps > 1 && iteration === 1) {
301
+ this.pollMaxDebounces *= steps;
302
+
303
+ log(
304
+ "Creating a large number of indexes, increasing timeout to " +
305
+ (this.pollMaxDebounces * this.POLL_DEBOUNCE) / 1000 / 60 +
306
+ " minutes",
307
+ );
308
+ }
309
+ }
310
+
311
+ const { indexes } = await paginate(
312
+ async (args: any) => {
313
+ const databasesService = await getDatabasesService();
314
+ return await databasesService.listIndexes(
315
+ args.databaseId,
316
+ args.collectionId,
317
+ args.queries || [],
318
+ );
319
+ },
320
+ {
321
+ databaseId,
322
+ collectionId,
323
+ },
324
+ 100,
325
+ "indexes",
326
+ );
327
+
328
+ const ready = indexes
329
+ .filter((index: any) => {
330
+ if (indexKeys.includes(index.key)) {
331
+ if (["stuck", "failed"].includes(index.status)) {
332
+ throw new Error(`Index '${index.key}' failed!`);
333
+ }
334
+
335
+ return index.status === "available";
336
+ }
337
+
338
+ return false;
339
+ })
340
+ .map((index: any) => index.key);
341
+
342
+ if (ready.length >= indexKeys.length) {
343
+ return true;
344
+ }
345
+
346
+ await new Promise((resolve) => setTimeout(resolve, this.POLL_DEBOUNCE));
347
+
348
+ return await this.expectIndexes(
349
+ databaseId,
350
+ collectionId,
351
+ indexKeys,
352
+ iteration + 1,
353
+ );
354
+ };
355
+ }
package/lib/config.ts CHANGED
@@ -3,22 +3,26 @@ import fs from "fs";
3
3
  import _path from "path";
4
4
  import process from "process";
5
5
  import JSONbig from "json-bigint";
6
+ import type { Models } from "@appwrite.io/console";
6
7
  import type {
7
- BucketConfig,
8
- CollectionConfig,
8
+ BucketType,
9
+ CollectionType,
10
+ FunctionType,
11
+ ConfigType,
12
+ SettingsType,
13
+ SiteType,
14
+ TableType,
15
+ TeamType,
16
+ TopicType,
17
+ } from "./commands/config.js";
18
+ import type {
19
+ SessionData,
9
20
  ConfigData,
10
21
  Entity,
11
- FunctionConfig,
12
22
  GlobalConfigData,
13
- ProjectConfigData,
14
- ProjectSettings,
15
- RawProjectSettings,
16
- SessionData,
17
- SiteConfig,
18
- TableConfig,
19
- TeamConfig,
20
- TopicConfig,
21
23
  } from "./types.js";
24
+ import { createSettingsObject } from "./utils.js";
25
+ import { SDK_TITLE_LOWER } from "./constants.js";
22
26
 
23
27
  const JSONBigInt = JSONbig({ storeAsString: false });
24
28
 
@@ -302,9 +306,9 @@ class Config<T extends ConfigData = ConfigData> {
302
306
  }
303
307
  }
304
308
 
305
- class Local extends Config<ProjectConfigData> {
306
- static CONFIG_FILE_PATH = "appwrite.config.json";
307
- static CONFIG_FILE_PATH_LEGACY = "appwrite.json";
309
+ class Local extends Config<ConfigType> {
310
+ static CONFIG_FILE_PATH = `${SDK_TITLE_LOWER}.config.json`;
311
+ static CONFIG_FILE_PATH_LEGACY = `${SDK_TITLE_LOWER}.json`;
308
312
  configDirectoryPath = "";
309
313
 
310
314
  constructor(
@@ -347,21 +351,21 @@ class Local extends Config<ProjectConfigData> {
347
351
  }
348
352
 
349
353
  getEndpoint(): string {
350
- return (this.get("endpoint" as keyof ProjectConfigData) as string) || "";
354
+ return this.get("endpoint") || "";
351
355
  }
352
356
 
353
357
  setEndpoint(endpoint: string): void {
354
- this.set("endpoint" as any, endpoint);
358
+ this.set("endpoint", endpoint);
355
359
  }
356
360
 
357
- getSites(): SiteConfig[] {
361
+ getSites(): SiteType[] {
358
362
  if (!this.has("sites")) {
359
363
  return [];
360
364
  }
361
365
  return this.get("sites") ?? [];
362
366
  }
363
367
 
364
- getSite($id: string): SiteConfig | Record<string, never> {
368
+ getSite($id: string): SiteType | Record<string, never> {
365
369
  if (!this.has("sites")) {
366
370
  return {};
367
371
  }
@@ -376,7 +380,7 @@ class Local extends Config<ProjectConfigData> {
376
380
  return {};
377
381
  }
378
382
 
379
- addSite(props: SiteConfig): void {
383
+ addSite(props: SiteType): void {
380
384
  props = whitelistKeys(props, KeysSite, {
381
385
  vars: KeysVars,
382
386
  });
@@ -401,14 +405,14 @@ class Local extends Config<ProjectConfigData> {
401
405
  this.set("sites", sites);
402
406
  }
403
407
 
404
- getFunctions(): FunctionConfig[] {
408
+ getFunctions(): FunctionType[] {
405
409
  if (!this.has("functions")) {
406
410
  return [];
407
411
  }
408
412
  return this.get("functions") ?? [];
409
413
  }
410
414
 
411
- getFunction($id: string): FunctionConfig | Record<string, never> {
415
+ getFunction($id: string): FunctionType | Record<string, never> {
412
416
  if (!this.has("functions")) {
413
417
  return {};
414
418
  }
@@ -423,7 +427,7 @@ class Local extends Config<ProjectConfigData> {
423
427
  return {};
424
428
  }
425
429
 
426
- addFunction(props: FunctionConfig): void {
430
+ addFunction(props: FunctionType): void {
427
431
  props = whitelistKeys(props, KeysFunction, {
428
432
  vars: KeysVars,
429
433
  });
@@ -448,14 +452,14 @@ class Local extends Config<ProjectConfigData> {
448
452
  this.set("functions", functions);
449
453
  }
450
454
 
451
- getCollections(): CollectionConfig[] {
455
+ getCollections(): CollectionType[] {
452
456
  if (!this.has("collections")) {
453
457
  return [];
454
458
  }
455
459
  return this.get("collections") ?? [];
456
460
  }
457
461
 
458
- getCollection($id: string): CollectionConfig | Record<string, never> {
462
+ getCollection($id: string): CollectionType | Record<string, never> {
459
463
  if (!this.has("collections")) {
460
464
  return {};
461
465
  }
@@ -470,7 +474,7 @@ class Local extends Config<ProjectConfigData> {
470
474
  return {};
471
475
  }
472
476
 
473
- addCollection(props: CollectionConfig): void {
477
+ addCollection(props: CollectionType): void {
474
478
  props = whitelistKeys(props, KeysCollection, {
475
479
  attributes: KeysAttributes,
476
480
  indexes: KeyIndexes,
@@ -495,14 +499,14 @@ class Local extends Config<ProjectConfigData> {
495
499
  this.set("collections", collections);
496
500
  }
497
501
 
498
- getTables(): TableConfig[] {
502
+ getTables(): TableType[] {
499
503
  if (!this.has("tables")) {
500
504
  return [];
501
505
  }
502
506
  return this.get("tables") ?? [];
503
507
  }
504
508
 
505
- getTable($id: string): TableConfig | Record<string, never> {
509
+ getTable($id: string): TableType | Record<string, never> {
506
510
  if (!this.has("tables")) {
507
511
  return {};
508
512
  }
@@ -517,7 +521,7 @@ class Local extends Config<ProjectConfigData> {
517
521
  return {};
518
522
  }
519
523
 
520
- addTable(props: TableConfig): void {
524
+ addTable(props: TableType): void {
521
525
  props = whitelistKeys(props, KeysTable, {
522
526
  columns: KeysColumns,
523
527
  indexes: KeyIndexesColumns,
@@ -542,14 +546,14 @@ class Local extends Config<ProjectConfigData> {
542
546
  this.set("tables", tables);
543
547
  }
544
548
 
545
- getBuckets(): BucketConfig[] {
549
+ getBuckets(): BucketType[] {
546
550
  if (!this.has("buckets")) {
547
551
  return [];
548
552
  }
549
553
  return this.get("buckets") ?? [];
550
554
  }
551
555
 
552
- getBucket($id: string): BucketConfig | Record<string, never> {
556
+ getBucket($id: string): BucketType | Record<string, never> {
553
557
  if (!this.has("buckets")) {
554
558
  return {};
555
559
  }
@@ -564,7 +568,7 @@ class Local extends Config<ProjectConfigData> {
564
568
  return {};
565
569
  }
566
570
 
567
- addBucket(props: BucketConfig): void {
571
+ addBucket(props: BucketType): void {
568
572
  props = whitelistKeys(props, KeysStorage);
569
573
 
570
574
  if (!this.has("buckets")) {
@@ -583,14 +587,14 @@ class Local extends Config<ProjectConfigData> {
583
587
  this.set("buckets", buckets);
584
588
  }
585
589
 
586
- getMessagingTopics(): TopicConfig[] {
590
+ getMessagingTopics(): TopicType[] {
587
591
  if (!this.has("topics")) {
588
592
  return [];
589
593
  }
590
594
  return this.get("topics") ?? [];
591
595
  }
592
596
 
593
- getMessagingTopic($id: string): TopicConfig | Record<string, never> {
597
+ getMessagingTopic($id: string): TopicType | Record<string, never> {
594
598
  if (!this.has("topics")) {
595
599
  return {};
596
600
  }
@@ -605,7 +609,7 @@ class Local extends Config<ProjectConfigData> {
605
609
  return {};
606
610
  }
607
611
 
608
- addMessagingTopic(props: TopicConfig): void {
612
+ addMessagingTopic(props: TopicType): void {
609
613
  props = whitelistKeys(props, KeysTopics);
610
614
 
611
615
  if (!this.has("topics")) {
@@ -648,14 +652,14 @@ class Local extends Config<ProjectConfigData> {
648
652
  this._addDBEntity("databases", props, KeysDatabase);
649
653
  }
650
654
 
651
- getTeams(): TeamConfig[] {
655
+ getTeams(): TeamType[] {
652
656
  if (!this.has("teams")) {
653
657
  return [];
654
658
  }
655
659
  return this.get("teams") ?? [];
656
660
  }
657
661
 
658
- getTeam($id: string): TeamConfig | Record<string, never> {
662
+ getTeam($id: string): TeamType | Record<string, never> {
659
663
  if (!this.has("teams")) {
660
664
  return {};
661
665
  }
@@ -670,7 +674,7 @@ class Local extends Config<ProjectConfigData> {
670
674
  return {};
671
675
  }
672
676
 
673
- addTeam(props: TeamConfig): void {
677
+ addTeam(props: TeamType): void {
674
678
  props = whitelistKeys(props, KeysTeams);
675
679
  if (!this.has("teams")) {
676
680
  this.set("teams", []);
@@ -691,7 +695,7 @@ class Local extends Config<ProjectConfigData> {
691
695
  getProject(): {
692
696
  projectId?: string;
693
697
  projectName?: string;
694
- projectSettings?: ProjectSettings;
698
+ projectSettings?: SettingsType;
695
699
  } {
696
700
  if (!this.has("projectId")) {
697
701
  return {};
@@ -707,7 +711,7 @@ class Local extends Config<ProjectConfigData> {
707
711
  setProject(
708
712
  projectId: string,
709
713
  projectName: string = "",
710
- projectSettings?: RawProjectSettings,
714
+ project?: Models.Project,
711
715
  ): void {
712
716
  this.set("projectId", projectId);
713
717
 
@@ -715,56 +719,16 @@ class Local extends Config<ProjectConfigData> {
715
719
  this.set("projectName", projectName);
716
720
  }
717
721
 
718
- if (projectSettings === undefined) {
722
+ if (project === undefined) {
719
723
  return;
720
724
  }
721
725
 
722
- this.set("settings", this.createSettingsObject(projectSettings));
723
- }
724
-
725
- createSettingsObject(projectSettings: RawProjectSettings): ProjectSettings {
726
- return {
727
- services: {
728
- account: projectSettings.serviceStatusForAccount,
729
- avatars: projectSettings.serviceStatusForAvatars,
730
- databases: projectSettings.serviceStatusForDatabases,
731
- locale: projectSettings.serviceStatusForLocale,
732
- health: projectSettings.serviceStatusForHealth,
733
- storage: projectSettings.serviceStatusForStorage,
734
- teams: projectSettings.serviceStatusForTeams,
735
- users: projectSettings.serviceStatusForUsers,
736
- sites: projectSettings.serviceStatusForSites,
737
- functions: projectSettings.serviceStatusForFunctions,
738
- graphql: projectSettings.serviceStatusForGraphql,
739
- messaging: projectSettings.serviceStatusForMessaging,
740
- },
741
- auth: {
742
- methods: {
743
- jwt: projectSettings.authJWT,
744
- phone: projectSettings.authPhone,
745
- invites: projectSettings.authInvites,
746
- anonymous: projectSettings.authAnonymous,
747
- "email-otp": projectSettings.authEmailOtp,
748
- "magic-url": projectSettings.authUsersAuthMagicURL,
749
- "email-password": projectSettings.authEmailPassword,
750
- },
751
- security: {
752
- duration: projectSettings.authDuration,
753
- limit: projectSettings.authLimit,
754
- sessionsLimit: projectSettings.authSessionsLimit,
755
- passwordHistory: projectSettings.authPasswordHistory,
756
- passwordDictionary: projectSettings.authPasswordDictionary,
757
- personalDataCheck: projectSettings.authPersonalDataCheck,
758
- sessionAlerts: projectSettings.authSessionAlerts,
759
- mockNumbers: projectSettings.authMockNumbers,
760
- },
761
- },
762
- };
726
+ this.set("settings", createSettingsObject(project));
763
727
  }
764
728
  }
765
729
 
766
730
  class Global extends Config<GlobalConfigData> {
767
- static CONFIG_FILE_PATH = ".appwrite/prefs.json";
731
+ static CONFIG_FILE_PATH = `.${SDK_TITLE_LOWER}/prefs.json`;
768
732
 
769
733
  static PREFERENCE_CURRENT = "current" as const;
770
734
  static PREFERENCE_ENDPOINT = "endpoint" as const;
@@ -0,0 +1,22 @@
1
+ // SDK
2
+ export const SDK_TITLE = 'Appwrite';
3
+ export const SDK_TITLE_LOWER = 'appwrite';
4
+ export const SDK_VERSION = '13.0.0-rc.3';
5
+ export const SDK_NAME = 'Command Line';
6
+ export const SDK_PLATFORM = 'console';
7
+ export const SDK_LANGUAGE = 'cli';
8
+ export const SDK_LOGO = "\n _ _ _ ___ __ _____\n \/_\\ _ __ _ ____ ___ __(_) |_ ___ \/ __\\ \/ \/ \\_ \\\n \/\/_\\\\| '_ \\| '_ \\ \\ \/\\ \/ \/ '__| | __\/ _ \\ \/ \/ \/ \/ \/ \/\\\/\n \/ _ \\ |_) | |_) \\ V V \/| | | | || __\/ \/ \/___\/ \/___\/\\\/ \/_\n \\_\/ \\_\/ .__\/| .__\/ \\_\/\\_\/ |_| |_|\\__\\___| \\____\/\\____\/\\____\/\n |_| |_|\n\n";
9
+
10
+ // CLI
11
+ export const EXECUTABLE_NAME = 'appwrite';
12
+
13
+ // NPM
14
+ export const NPM_PACKAGE_NAME = 'appwrite-cli';
15
+ export const NPM_REGISTRY_URL = `https://registry.npmjs.org/${NPM_PACKAGE_NAME}/latest`;
16
+
17
+ // GitHub
18
+ export const GITHUB_REPO = 'appwrite/appwrite-cli';
19
+ export const GITHUB_RELEASES_URL = `https://github.com/${GITHUB_REPO}/releases`;
20
+
21
+ // API
22
+ export const DEFAULT_ENDPOINT = 'https://cloud.appwrite.io/v1';