appwrite-cli 13.0.0-rc.1 → 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 (430) hide show
  1. package/.github/workflows/publish.yml +68 -0
  2. package/CHANGELOG.md +10 -1
  3. package/LICENSE.md +1 -1
  4. package/README.md +3 -3
  5. package/cli.ts +152 -0
  6. package/dist/bundle.cjs +95813 -0
  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 +2 -3
  16. package/dist/lib/client.d.ts.map +1 -1
  17. package/dist/lib/client.js +57 -45
  18. package/dist/lib/client.js.map +1 -1
  19. package/dist/lib/commands/config.d.ts +562 -0
  20. package/dist/lib/commands/config.d.ts.map +1 -0
  21. package/dist/lib/commands/config.js +416 -0
  22. package/dist/lib/commands/config.js.map +1 -0
  23. package/dist/lib/commands/db.d.ts +34 -0
  24. package/dist/lib/commands/db.d.ts.map +1 -0
  25. package/dist/lib/commands/db.js +247 -0
  26. package/dist/lib/commands/db.js.map +1 -0
  27. package/dist/lib/commands/errors.d.ts +68 -0
  28. package/dist/lib/commands/errors.d.ts.map +1 -0
  29. package/dist/lib/commands/errors.js +72 -0
  30. package/dist/lib/commands/errors.js.map +1 -0
  31. package/dist/lib/commands/generic.d.ts +2 -2
  32. package/dist/lib/commands/generic.d.ts.map +1 -1
  33. package/dist/lib/commands/generic.js +170 -157
  34. package/dist/lib/commands/generic.js.map +1 -1
  35. package/dist/lib/commands/init.d.ts +1 -1
  36. package/dist/lib/commands/init.d.ts.map +1 -1
  37. package/dist/lib/commands/init.js +201 -192
  38. package/dist/lib/commands/init.js.map +1 -1
  39. package/dist/lib/commands/pull.d.ts +105 -3
  40. package/dist/lib/commands/pull.d.ts.map +1 -1
  41. package/dist/lib/commands/pull.js +530 -370
  42. package/dist/lib/commands/pull.js.map +1 -1
  43. package/dist/lib/commands/push.d.ts +106 -0
  44. package/dist/lib/commands/push.d.ts.map +1 -1
  45. package/dist/lib/commands/push.js +1432 -1830
  46. package/dist/lib/commands/push.js.map +1 -1
  47. package/dist/lib/commands/run.d.ts +1 -1
  48. package/dist/lib/commands/run.d.ts.map +1 -1
  49. package/dist/lib/commands/run.js +129 -127
  50. package/dist/lib/commands/run.js.map +1 -1
  51. package/dist/lib/commands/schema.d.ts +59 -0
  52. package/dist/lib/commands/schema.d.ts.map +1 -0
  53. package/dist/lib/commands/schema.js +86 -0
  54. package/dist/lib/commands/schema.js.map +1 -0
  55. package/dist/lib/commands/services/account.d.ts +3 -0
  56. package/dist/lib/commands/services/account.d.ts.map +1 -0
  57. package/dist/lib/commands/services/account.js +328 -0
  58. package/dist/lib/commands/services/account.js.map +1 -0
  59. package/dist/lib/commands/services/console.d.ts +3 -0
  60. package/dist/lib/commands/services/console.d.ts.map +1 -0
  61. package/dist/lib/commands/services/console.js +28 -0
  62. package/dist/lib/commands/services/console.js.map +1 -0
  63. package/dist/lib/commands/services/databases.d.ts +3 -0
  64. package/dist/lib/commands/services/databases.d.ts.map +1 -0
  65. package/dist/lib/commands/services/databases.js +620 -0
  66. package/dist/lib/commands/services/databases.js.map +1 -0
  67. package/dist/lib/commands/services/functions.d.ts +3 -0
  68. package/dist/lib/commands/services/functions.d.ts.map +1 -0
  69. package/dist/lib/commands/services/functions.js +266 -0
  70. package/dist/lib/commands/services/functions.js.map +1 -0
  71. package/dist/lib/commands/services/graphql.d.ts +3 -0
  72. package/dist/lib/commands/services/graphql.d.ts.map +1 -0
  73. package/dist/lib/commands/services/graphql.js +28 -0
  74. package/dist/lib/commands/services/graphql.js.map +1 -0
  75. package/dist/lib/commands/services/health.d.ts +3 -0
  76. package/dist/lib/commands/services/health.d.ts.map +1 -0
  77. package/dist/lib/commands/services/health.js +123 -0
  78. package/dist/lib/commands/services/health.js.map +1 -0
  79. package/dist/lib/commands/services/locale.d.ts +3 -0
  80. package/dist/lib/commands/services/locale.d.ts.map +1 -0
  81. package/dist/lib/commands/services/locale.js +52 -0
  82. package/dist/lib/commands/services/locale.js.map +1 -0
  83. package/dist/lib/commands/services/messaging.d.ts +3 -0
  84. package/dist/lib/commands/services/messaging.d.ts.map +1 -0
  85. package/dist/lib/commands/services/messaging.js +505 -0
  86. package/dist/lib/commands/services/messaging.js.map +1 -0
  87. package/dist/lib/commands/services/migrations.d.ts +3 -0
  88. package/dist/lib/commands/services/migrations.d.ts.map +1 -0
  89. package/dist/lib/commands/services/migrations.js +135 -0
  90. package/dist/lib/commands/services/migrations.js.map +1 -0
  91. package/dist/lib/commands/services/project.d.ts +3 -0
  92. package/dist/lib/commands/services/project.d.ts.map +1 -0
  93. package/dist/lib/commands/services/project.js +54 -0
  94. package/dist/lib/commands/services/project.js.map +1 -0
  95. package/dist/lib/commands/services/projects.d.ts +3 -0
  96. package/dist/lib/commands/services/projects.d.ts.map +1 -0
  97. package/dist/lib/commands/services/projects.js +415 -0
  98. package/dist/lib/commands/services/projects.js.map +1 -0
  99. package/dist/lib/commands/services/proxy.d.ts +3 -0
  100. package/dist/lib/commands/services/proxy.d.ts.map +1 -0
  101. package/dist/lib/commands/services/proxy.js +68 -0
  102. package/dist/lib/commands/services/proxy.js.map +1 -0
  103. package/dist/lib/commands/services/sites.d.ts +3 -0
  104. package/dist/lib/commands/services/sites.d.ts.map +1 -0
  105. package/dist/lib/commands/services/sites.js +250 -0
  106. package/dist/lib/commands/services/sites.js.map +1 -0
  107. package/dist/lib/commands/services/storage.d.ts +3 -0
  108. package/dist/lib/commands/services/storage.d.ts.map +1 -0
  109. package/dist/lib/commands/services/storage.js +175 -0
  110. package/dist/lib/commands/services/storage.js.map +1 -0
  111. package/dist/lib/commands/services/tables-db.d.ts +3 -0
  112. package/dist/lib/commands/services/tables-db.d.ts.map +1 -0
  113. package/dist/lib/commands/services/tables-db.js +613 -0
  114. package/dist/lib/commands/services/tables-db.js.map +1 -0
  115. package/dist/lib/commands/services/teams.d.ts +3 -0
  116. package/dist/lib/commands/services/teams.d.ts.map +1 -0
  117. package/dist/lib/commands/services/teams.js +123 -0
  118. package/dist/lib/commands/services/teams.js.map +1 -0
  119. package/dist/lib/commands/services/tokens.d.ts +3 -0
  120. package/dist/lib/commands/services/tokens.d.ts.map +1 -0
  121. package/dist/lib/commands/services/tokens.js +49 -0
  122. package/dist/lib/commands/services/tokens.js.map +1 -0
  123. package/dist/lib/commands/services/users.d.ts +3 -0
  124. package/dist/lib/commands/services/users.d.ts.map +1 -0
  125. package/dist/lib/commands/services/users.js +312 -0
  126. package/dist/lib/commands/services/users.js.map +1 -0
  127. package/dist/lib/commands/services/vcs.d.ts +3 -0
  128. package/dist/lib/commands/services/vcs.d.ts.map +1 -0
  129. package/dist/lib/commands/services/vcs.js +87 -0
  130. package/dist/lib/commands/services/vcs.js.map +1 -0
  131. package/dist/lib/commands/types.d.ts +1 -1
  132. package/dist/lib/commands/types.d.ts.map +1 -1
  133. package/dist/lib/commands/types.js +53 -57
  134. package/dist/lib/commands/types.js.map +1 -1
  135. package/dist/lib/commands/update.d.ts +1 -1
  136. package/dist/lib/commands/update.d.ts.map +1 -1
  137. package/dist/lib/commands/update.js +69 -69
  138. package/dist/lib/commands/update.js.map +1 -1
  139. package/dist/lib/commands/utils/attributes.d.ts +47 -0
  140. package/dist/lib/commands/utils/attributes.d.ts.map +1 -0
  141. package/dist/lib/commands/utils/attributes.js +514 -0
  142. package/dist/lib/commands/utils/attributes.js.map +1 -0
  143. package/dist/lib/commands/utils/change-approval.d.ts +25 -0
  144. package/dist/lib/commands/utils/change-approval.d.ts.map +1 -0
  145. package/dist/lib/commands/utils/change-approval.js +129 -0
  146. package/dist/lib/commands/utils/change-approval.js.map +1 -0
  147. package/dist/lib/commands/utils/database-sync.d.ts +10 -0
  148. package/dist/lib/commands/utils/database-sync.d.ts.map +1 -0
  149. package/dist/lib/commands/utils/database-sync.js +136 -0
  150. package/dist/lib/commands/utils/database-sync.js.map +1 -0
  151. package/dist/lib/commands/utils/deployment.d.ts +34 -0
  152. package/dist/lib/commands/utils/deployment.d.ts.map +1 -0
  153. package/dist/lib/commands/utils/deployment.js +109 -0
  154. package/dist/lib/commands/utils/deployment.js.map +1 -0
  155. package/dist/lib/commands/utils/error-formatter.d.ts +19 -0
  156. package/dist/lib/commands/utils/error-formatter.d.ts.map +1 -0
  157. package/dist/lib/commands/utils/error-formatter.js +333 -0
  158. package/dist/lib/commands/utils/error-formatter.js.map +1 -0
  159. package/dist/lib/commands/utils/pools.d.ts +16 -0
  160. package/dist/lib/commands/utils/pools.d.ts.map +1 -0
  161. package/dist/lib/commands/utils/pools.js +198 -0
  162. package/dist/lib/commands/utils/pools.js.map +1 -0
  163. package/dist/lib/config.d.ts +41 -40
  164. package/dist/lib/config.d.ts.map +1 -1
  165. package/dist/lib/config.js +264 -239
  166. package/dist/lib/config.js.map +1 -1
  167. package/dist/lib/constants.d.ts +14 -0
  168. package/dist/lib/constants.d.ts.map +1 -0
  169. package/dist/lib/constants.js +19 -0
  170. package/dist/lib/constants.js.map +1 -0
  171. package/dist/lib/emulation/docker.d.ts +4 -12
  172. package/dist/lib/emulation/docker.d.ts.map +1 -1
  173. package/dist/lib/emulation/docker.js +159 -142
  174. package/dist/lib/emulation/docker.js.map +1 -1
  175. package/dist/lib/emulation/utils.d.ts +1 -1
  176. package/dist/lib/emulation/utils.d.ts.map +1 -1
  177. package/dist/lib/emulation/utils.js +55 -58
  178. package/dist/lib/emulation/utils.js.map +1 -1
  179. package/dist/lib/id.d.ts +1 -1
  180. package/dist/lib/id.d.ts.map +1 -1
  181. package/dist/lib/id.js +13 -18
  182. package/dist/lib/id.js.map +1 -1
  183. package/dist/lib/paginate.d.ts +3 -4
  184. package/dist/lib/paginate.d.ts.map +1 -1
  185. package/dist/lib/paginate.js +7 -10
  186. package/dist/lib/paginate.js.map +1 -1
  187. package/dist/lib/parser.d.ts +1 -1
  188. package/dist/lib/parser.d.ts.map +1 -1
  189. package/dist/lib/parser.js +92 -103
  190. package/dist/lib/parser.js.map +1 -1
  191. package/dist/lib/questions.d.ts +1 -1
  192. package/dist/lib/questions.d.ts.map +1 -1
  193. package/dist/lib/questions.js +381 -385
  194. package/dist/lib/questions.js.map +1 -1
  195. package/dist/lib/sdks.d.ts +1 -1
  196. package/dist/lib/sdks.d.ts.map +1 -1
  197. package/dist/lib/sdks.js +39 -30
  198. package/dist/lib/sdks.js.map +1 -1
  199. package/dist/lib/services.d.ts +13 -0
  200. package/dist/lib/services.d.ts.map +1 -0
  201. package/dist/lib/services.js +47 -0
  202. package/dist/lib/services.js.map +1 -0
  203. package/dist/lib/spinner.d.ts +1 -1
  204. package/dist/lib/spinner.d.ts.map +1 -1
  205. package/dist/lib/spinner.js +25 -27
  206. package/dist/lib/spinner.js.map +1 -1
  207. package/dist/lib/type-generation/attribute.d.ts +1 -1
  208. package/dist/lib/type-generation/attribute.d.ts.map +1 -1
  209. package/dist/lib/type-generation/attribute.js +14 -17
  210. package/dist/lib/type-generation/attribute.js.map +1 -1
  211. package/dist/lib/type-generation/languages/csharp.d.ts +1 -1
  212. package/dist/lib/type-generation/languages/csharp.d.ts.map +1 -1
  213. package/dist/lib/type-generation/languages/csharp.js +34 -34
  214. package/dist/lib/type-generation/languages/csharp.js.map +1 -1
  215. package/dist/lib/type-generation/languages/dart.d.ts +1 -1
  216. package/dist/lib/type-generation/languages/dart.d.ts.map +1 -1
  217. package/dist/lib/type-generation/languages/dart.js +57 -57
  218. package/dist/lib/type-generation/languages/dart.js.map +1 -1
  219. package/dist/lib/type-generation/languages/java.d.ts +1 -1
  220. package/dist/lib/type-generation/languages/java.d.ts.map +1 -1
  221. package/dist/lib/type-generation/languages/java.js +35 -35
  222. package/dist/lib/type-generation/languages/java.js.map +1 -1
  223. package/dist/lib/type-generation/languages/javascript.d.ts +1 -1
  224. package/dist/lib/type-generation/languages/javascript.d.ts.map +1 -1
  225. package/dist/lib/type-generation/languages/javascript.js +45 -44
  226. package/dist/lib/type-generation/languages/javascript.js.map +1 -1
  227. package/dist/lib/type-generation/languages/kotlin.d.ts +1 -1
  228. package/dist/lib/type-generation/languages/kotlin.d.ts.map +1 -1
  229. package/dist/lib/type-generation/languages/kotlin.js +35 -35
  230. package/dist/lib/type-generation/languages/kotlin.js.map +1 -1
  231. package/dist/lib/type-generation/languages/language.d.ts.map +1 -1
  232. package/dist/lib/type-generation/languages/language.js +32 -37
  233. package/dist/lib/type-generation/languages/language.js.map +1 -1
  234. package/dist/lib/type-generation/languages/php.d.ts +1 -1
  235. package/dist/lib/type-generation/languages/php.d.ts.map +1 -1
  236. package/dist/lib/type-generation/languages/php.js +34 -34
  237. package/dist/lib/type-generation/languages/php.js.map +1 -1
  238. package/dist/lib/type-generation/languages/swift.d.ts +1 -1
  239. package/dist/lib/type-generation/languages/swift.d.ts.map +1 -1
  240. package/dist/lib/type-generation/languages/swift.js +35 -35
  241. package/dist/lib/type-generation/languages/swift.js.map +1 -1
  242. package/dist/lib/type-generation/languages/typescript.d.ts +1 -1
  243. package/dist/lib/type-generation/languages/typescript.d.ts.map +1 -1
  244. package/dist/lib/type-generation/languages/typescript.js +49 -46
  245. package/dist/lib/type-generation/languages/typescript.js.map +1 -1
  246. package/dist/lib/types.d.ts +38 -108
  247. package/dist/lib/types.d.ts.map +1 -1
  248. package/dist/lib/types.js +1 -2
  249. package/dist/lib/utils.d.ts +3 -0
  250. package/dist/lib/utils.d.ts.map +1 -1
  251. package/dist/lib/utils.js +142 -98
  252. package/dist/lib/utils.js.map +1 -1
  253. package/dist/lib/validations.d.ts.map +1 -1
  254. package/dist/lib/validations.js +2 -6
  255. package/dist/lib/validations.js.map +1 -1
  256. package/dist/package.json +68 -0
  257. package/index.ts +25 -149
  258. package/install.ps1 +2 -2
  259. package/install.sh +1 -1
  260. package/lib/client.ts +261 -220
  261. package/lib/commands/config.ts +494 -0
  262. package/lib/commands/db.ts +324 -0
  263. package/lib/commands/errors.ts +93 -0
  264. package/lib/commands/generic.ts +371 -269
  265. package/lib/commands/init.ts +631 -519
  266. package/lib/commands/pull.ts +827 -453
  267. package/lib/commands/push.ts +2191 -2349
  268. package/lib/commands/run.ts +382 -302
  269. package/lib/commands/schema.ts +122 -0
  270. package/lib/commands/services/account.ts +647 -0
  271. package/lib/commands/services/console.ts +52 -0
  272. package/lib/commands/services/databases.ts +1163 -0
  273. package/lib/commands/services/functions.ts +536 -0
  274. package/lib/commands/services/graphql.ts +50 -0
  275. package/lib/commands/services/health.ts +260 -0
  276. package/lib/commands/services/locale.ts +102 -0
  277. package/lib/commands/services/messaging.ts +1052 -0
  278. package/lib/commands/services/migrations.ts +249 -0
  279. package/lib/commands/services/project.ts +112 -0
  280. package/lib/commands/services/projects.ts +785 -0
  281. package/lib/commands/services/proxy.ts +135 -0
  282. package/lib/commands/services/sites.ts +505 -0
  283. package/lib/commands/services/storage.ts +338 -0
  284. package/lib/commands/services/tables-db.ts +1150 -0
  285. package/lib/commands/services/teams.ts +232 -0
  286. package/lib/commands/services/tokens.ts +94 -0
  287. package/lib/commands/services/users.ts +616 -0
  288. package/lib/commands/services/vcs.ts +165 -0
  289. package/lib/commands/types.ts +145 -118
  290. package/lib/commands/update.ts +189 -159
  291. package/lib/commands/utils/attributes.ts +719 -0
  292. package/lib/commands/utils/change-approval.ts +186 -0
  293. package/lib/commands/utils/database-sync.ts +180 -0
  294. package/lib/commands/utils/deployment.ts +184 -0
  295. package/lib/commands/utils/error-formatter.ts +417 -0
  296. package/lib/commands/utils/pools.ts +355 -0
  297. package/lib/config.ts +766 -687
  298. package/lib/constants.ts +22 -0
  299. package/lib/emulation/docker.ts +277 -216
  300. package/lib/emulation/utils.ts +188 -174
  301. package/lib/id.ts +23 -23
  302. package/lib/paginate.ts +69 -55
  303. package/lib/parser.ts +220 -189
  304. package/lib/questions.ts +1024 -948
  305. package/lib/sdks.ts +84 -51
  306. package/lib/services.ts +72 -0
  307. package/lib/spinner.ts +112 -99
  308. package/lib/type-generation/attribute.ts +15 -14
  309. package/lib/type-generation/languages/csharp.ts +71 -60
  310. package/lib/type-generation/languages/dart.ts +106 -93
  311. package/lib/type-generation/languages/java.ts +69 -58
  312. package/lib/type-generation/languages/javascript.ts +84 -73
  313. package/lib/type-generation/languages/kotlin.ts +71 -60
  314. package/lib/type-generation/languages/language.ts +103 -95
  315. package/lib/type-generation/languages/php.ts +67 -56
  316. package/lib/type-generation/languages/swift.ts +71 -60
  317. package/lib/type-generation/languages/typescript.ts +93 -76
  318. package/lib/types.ts +50 -125
  319. package/lib/utils.ts +304 -233
  320. package/lib/validations.ts +17 -14
  321. package/package.json +31 -22
  322. package/scoop/appwrite.config.json +3 -3
  323. package/tsconfig.json +7 -13
  324. package/.github/workflows/autoclose.yml +0 -11
  325. package/.github/workflows/npm-publish.yml +0 -49
  326. package/dist/lib/commands/account.d.ts +0 -379
  327. package/dist/lib/commands/account.d.ts.map +0 -1
  328. package/dist/lib/commands/account.js +0 -1228
  329. package/dist/lib/commands/account.js.map +0 -1
  330. package/dist/lib/commands/console.d.ts +0 -20
  331. package/dist/lib/commands/console.d.ts.map +0 -1
  332. package/dist/lib/commands/console.js +0 -78
  333. package/dist/lib/commands/console.js.map +0 -1
  334. package/dist/lib/commands/databases.d.ts +0 -732
  335. package/dist/lib/commands/databases.d.ts.map +0 -1
  336. package/dist/lib/commands/databases.js +0 -2196
  337. package/dist/lib/commands/databases.js.map +0 -1
  338. package/dist/lib/commands/functions.d.ts +0 -310
  339. package/dist/lib/commands/functions.d.ts.map +0 -1
  340. package/dist/lib/commands/functions.js +0 -1100
  341. package/dist/lib/commands/functions.js.map +0 -1
  342. package/dist/lib/commands/graphql.d.ts +0 -19
  343. package/dist/lib/commands/graphql.d.ts.map +0 -1
  344. package/dist/lib/commands/graphql.js +0 -77
  345. package/dist/lib/commands/graphql.js.map +0 -1
  346. package/dist/lib/commands/health.d.ts +0 -153
  347. package/dist/lib/commands/health.d.ts.map +0 -1
  348. package/dist/lib/commands/health.js +0 -464
  349. package/dist/lib/commands/health.js.map +0 -1
  350. package/dist/lib/commands/locale.d.ts +0 -53
  351. package/dist/lib/commands/locale.d.ts.map +0 -1
  352. package/dist/lib/commands/locale.js +0 -165
  353. package/dist/lib/commands/locale.js.map +0 -1
  354. package/dist/lib/commands/messaging.d.ts +0 -588
  355. package/dist/lib/commands/messaging.d.ts.map +0 -1
  356. package/dist/lib/commands/messaging.js +0 -2042
  357. package/dist/lib/commands/messaging.js.map +0 -1
  358. package/dist/lib/commands/migrations.d.ts +0 -150
  359. package/dist/lib/commands/migrations.d.ts.map +0 -1
  360. package/dist/lib/commands/migrations.js +0 -524
  361. package/dist/lib/commands/migrations.js.map +0 -1
  362. package/dist/lib/commands/organizations.d.ts +0 -11
  363. package/dist/lib/commands/organizations.d.ts.map +0 -1
  364. package/dist/lib/commands/organizations.js +0 -31
  365. package/dist/lib/commands/organizations.js.map +0 -1
  366. package/dist/lib/commands/project.d.ts +0 -53
  367. package/dist/lib/commands/project.d.ts.map +0 -1
  368. package/dist/lib/commands/project.js +0 -176
  369. package/dist/lib/commands/project.js.map +0 -1
  370. package/dist/lib/commands/projects.d.ts +0 -516
  371. package/dist/lib/commands/projects.d.ts.map +0 -1
  372. package/dist/lib/commands/projects.js +0 -1590
  373. package/dist/lib/commands/projects.js.map +0 -1
  374. package/dist/lib/commands/proxy.d.ts +0 -71
  375. package/dist/lib/commands/proxy.d.ts.map +0 -1
  376. package/dist/lib/commands/proxy.js +0 -240
  377. package/dist/lib/commands/proxy.js.map +0 -1
  378. package/dist/lib/commands/sites.d.ts +0 -296
  379. package/dist/lib/commands/sites.d.ts.map +0 -1
  380. package/dist/lib/commands/sites.js +0 -1046
  381. package/dist/lib/commands/sites.js.map +0 -1
  382. package/dist/lib/commands/storage.d.ts +0 -170
  383. package/dist/lib/commands/storage.d.ts.map +0 -1
  384. package/dist/lib/commands/storage.js +0 -651
  385. package/dist/lib/commands/storage.js.map +0 -1
  386. package/dist/lib/commands/tables-db.d.ts +0 -728
  387. package/dist/lib/commands/tables-db.d.ts.map +0 -1
  388. package/dist/lib/commands/tables-db.js +0 -2198
  389. package/dist/lib/commands/tables-db.js.map +0 -1
  390. package/dist/lib/commands/teams.d.ts +0 -129
  391. package/dist/lib/commands/teams.d.ts.map +0 -1
  392. package/dist/lib/commands/teams.js +0 -403
  393. package/dist/lib/commands/teams.js.map +0 -1
  394. package/dist/lib/commands/tokens.d.ts +0 -48
  395. package/dist/lib/commands/tokens.d.ts.map +0 -1
  396. package/dist/lib/commands/tokens.js +0 -156
  397. package/dist/lib/commands/tokens.js.map +0 -1
  398. package/dist/lib/commands/users.d.ts +0 -382
  399. package/dist/lib/commands/users.d.ts.map +0 -1
  400. package/dist/lib/commands/users.js +0 -1195
  401. package/dist/lib/commands/users.js.map +0 -1
  402. package/dist/lib/commands/vcs.d.ts +0 -92
  403. package/dist/lib/commands/vcs.d.ts.map +0 -1
  404. package/dist/lib/commands/vcs.js +0 -276
  405. package/dist/lib/commands/vcs.js.map +0 -1
  406. package/dist/lib/exception.d.ts +0 -8
  407. package/dist/lib/exception.d.ts.map +0 -1
  408. package/dist/lib/exception.js +0 -16
  409. package/dist/lib/exception.js.map +0 -1
  410. package/lib/commands/account.ts +0 -1867
  411. package/lib/commands/console.ts +0 -112
  412. package/lib/commands/databases.ts +0 -3272
  413. package/lib/commands/functions.ts +0 -1587
  414. package/lib/commands/graphql.ts +0 -110
  415. package/lib/commands/health.ts +0 -753
  416. package/lib/commands/locale.ts +0 -270
  417. package/lib/commands/messaging.ts +0 -2878
  418. package/lib/commands/migrations.ts +0 -754
  419. package/lib/commands/organizations.ts +0 -46
  420. package/lib/commands/project.ts +0 -266
  421. package/lib/commands/projects.ts +0 -2370
  422. package/lib/commands/proxy.ts +0 -357
  423. package/lib/commands/sites.ts +0 -1514
  424. package/lib/commands/storage.ts +0 -919
  425. package/lib/commands/tables-db.ts +0 -3260
  426. package/lib/commands/teams.ts +0 -609
  427. package/lib/commands/tokens.ts +0 -232
  428. package/lib/commands/users.ts +0 -1804
  429. package/lib/commands/vcs.ts +0 -428
  430. package/lib/exception.ts +0 -20
@@ -1,27 +1,425 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.pull = exports.pullResources = void 0;
7
- const fs = require("fs");
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const tar = require("tar");
10
- const commander_1 = require("commander");
11
- const inquirer_1 = __importDefault(require("inquirer"));
12
- const messaging_1 = require("./messaging");
13
- const teams_1 = require("./teams");
14
- const projects_1 = require("./projects");
15
- const functions_1 = require("./functions");
16
- const sites_1 = require("./sites");
17
- const databases_1 = require("./databases");
18
- const tables_db_1 = require("./tables-db");
19
- const storage_1 = require("./storage");
20
- const config_1 = require("../config");
21
- const paginate_1 = require("../paginate");
22
- const questions_1 = require("../questions");
23
- const parser_1 = require("../parser");
24
- const pullResources = async ({ skipDeprecated = false } = {}) => {
1
+ import fs from "fs";
2
+ import path from "path";
3
+ import chalk from "chalk";
4
+ import { Command } from "commander";
5
+ import inquirer from "inquirer";
6
+ import { Databases, Functions, Messaging, Projects, Sites, Storage, TablesDB, Teams, Query, } from "@appwrite.io/console";
7
+ import { getFunctionsService, getSitesService } from "../services.js";
8
+ import { sdkForProject, sdkForConsole } from "../sdks.js";
9
+ import { localConfig } from "../config.js";
10
+ import { paginate } from "../paginate.js";
11
+ import { questionsPullFunctions, questionsPullFunctionsCode, questionsPullSites, questionsPullSitesCode, questionsPullResources, } from "../questions.js";
12
+ import { cliConfig, success, log, warn, error, actionRunner, commandDescriptions, } from "../parser.js";
13
+ import { createSettingsObject } from "../utils.js";
14
+ import { ProjectNotInitializedError } from "./errors.js";
15
+ import { downloadDeploymentCode } from "./utils/deployment.js";
16
+ async function createPullInstance() {
17
+ const projectClient = await sdkForProject();
18
+ const consoleClient = await sdkForConsole();
19
+ const pullInstance = new Pull(projectClient, consoleClient);
20
+ pullInstance.setConfigDirectoryPath(localConfig.configDirectoryPath);
21
+ return pullInstance;
22
+ }
23
+ export class Pull {
24
+ projectClient;
25
+ consoleClient;
26
+ configDirectoryPath;
27
+ silent;
28
+ constructor(projectClient, consoleClient, silent = false) {
29
+ this.projectClient = projectClient;
30
+ this.consoleClient = consoleClient;
31
+ this.configDirectoryPath = process.cwd();
32
+ this.silent = silent;
33
+ }
34
+ /**
35
+ * Set the base directory path for config files and resources
36
+ */
37
+ setConfigDirectoryPath(path) {
38
+ this.configDirectoryPath = path;
39
+ }
40
+ /**
41
+ * Log a message (respects silent mode)
42
+ */
43
+ log(message) {
44
+ if (!this.silent) {
45
+ log(message);
46
+ }
47
+ }
48
+ /**
49
+ * Log a success message (respects silent mode)
50
+ */
51
+ success(message) {
52
+ if (!this.silent) {
53
+ success(message);
54
+ }
55
+ }
56
+ /**
57
+ * Log a warning message (respects silent mode)
58
+ */
59
+ warn(message) {
60
+ if (!this.silent) {
61
+ warn(message);
62
+ }
63
+ }
64
+ /**
65
+ * Pull resources from Appwrite project and return updated config
66
+ *
67
+ * @param config - Current configuration object
68
+ * @param options - Pull options specifying which resources to pull
69
+ * @returns Updated configuration object with pulled resources
70
+ */
71
+ async pullResources(config, options = { all: true, skipDeprecated: true }) {
72
+ const { skipDeprecated = true } = options;
73
+ if (!config.projectId) {
74
+ throw new ProjectNotInitializedError();
75
+ }
76
+ const updatedConfig = { ...config };
77
+ const shouldPullAll = options.all === true;
78
+ if (shouldPullAll || options.settings) {
79
+ const settings = await this.pullSettings(config.projectId);
80
+ updatedConfig.settings = settings.settings;
81
+ updatedConfig.projectName = settings.projectName;
82
+ }
83
+ if (shouldPullAll || options.functions) {
84
+ const functions = await this.pullFunctions({
85
+ code: options.noCode === true ? false : true,
86
+ withVariables: options.withVariables,
87
+ });
88
+ updatedConfig.functions = functions;
89
+ }
90
+ if (shouldPullAll || options.sites) {
91
+ const sites = await this.pullSites({
92
+ code: options.noCode === true ? false : true,
93
+ withVariables: options.withVariables,
94
+ });
95
+ updatedConfig.sites = sites;
96
+ }
97
+ if (shouldPullAll || options.tables) {
98
+ const { databases, tables } = await this.pullTables();
99
+ updatedConfig.databases = databases;
100
+ updatedConfig.tables = tables;
101
+ }
102
+ if (options.collections || (shouldPullAll && !skipDeprecated)) {
103
+ const { databases, collections } = await this.pullCollections();
104
+ updatedConfig.databases = databases;
105
+ updatedConfig.collections = collections;
106
+ }
107
+ if (shouldPullAll || options.buckets) {
108
+ const buckets = await this.pullBuckets();
109
+ updatedConfig.buckets = buckets;
110
+ }
111
+ if (shouldPullAll || options.teams) {
112
+ const teams = await this.pullTeams();
113
+ updatedConfig.teams = teams;
114
+ }
115
+ if (shouldPullAll || options.topics) {
116
+ const topics = await this.pullMessagingTopics();
117
+ updatedConfig.topics = topics;
118
+ }
119
+ return updatedConfig;
120
+ }
121
+ /**
122
+ * Pull project settings
123
+ */
124
+ async pullSettings(projectId) {
125
+ this.log("Pulling project settings ...");
126
+ const projectsService = new Projects(this.consoleClient);
127
+ const project = await projectsService.get({ projectId: projectId });
128
+ this.success(`Successfully pulled ${chalk.bold("all")} project settings.`);
129
+ return {
130
+ projectName: project.name,
131
+ settings: createSettingsObject(project),
132
+ project,
133
+ };
134
+ }
135
+ /**
136
+ * Pull functions from the project
137
+ */
138
+ async pullFunctions(options = {}) {
139
+ this.log("Fetching functions ...");
140
+ const functionsService = new Functions(this.projectClient);
141
+ let functions;
142
+ if (options.functionIds && options.functionIds.length > 0) {
143
+ functions = await Promise.all(options.functionIds.map((id) => functionsService.get({
144
+ functionId: id,
145
+ })));
146
+ }
147
+ else {
148
+ const fetchResponse = await functionsService.list({
149
+ queries: [Query.limit(1)],
150
+ });
151
+ if (fetchResponse["functions"].length <= 0) {
152
+ this.log("No functions found.");
153
+ this.success(`Successfully pulled ${chalk.bold(0)} functions.`);
154
+ return [];
155
+ }
156
+ const { functions: allFunctions } = await paginate(async () => new Functions(this.projectClient).list(), {}, 100, "functions");
157
+ functions = allFunctions;
158
+ }
159
+ const result = [];
160
+ for (const func of functions) {
161
+ this.log(`Pulling function ${chalk.bold(func.name)} ...`);
162
+ const funcPath = `functions/${func.name}`;
163
+ const absoluteFuncPath = path.resolve(this.configDirectoryPath, funcPath);
164
+ const holdingVars = func.vars || [];
165
+ const functionConfig = {
166
+ $id: func.$id,
167
+ name: func.name,
168
+ runtime: func.runtime,
169
+ path: funcPath,
170
+ entrypoint: func.entrypoint,
171
+ execute: func.execute,
172
+ enabled: func.enabled,
173
+ logging: func.logging,
174
+ events: func.events,
175
+ schedule: func.schedule,
176
+ timeout: func.timeout,
177
+ commands: func.commands,
178
+ scopes: func.scopes,
179
+ specification: func.specification,
180
+ };
181
+ result.push(functionConfig);
182
+ if (!fs.existsSync(absoluteFuncPath)) {
183
+ fs.mkdirSync(absoluteFuncPath, { recursive: true });
184
+ }
185
+ if (options.code !== false) {
186
+ await downloadDeploymentCode({
187
+ resourceId: func["$id"],
188
+ resourcePath: absoluteFuncPath,
189
+ holdingVars,
190
+ withVariables: options.withVariables,
191
+ listDeployments: () => functionsService.listDeployments({
192
+ functionId: func["$id"],
193
+ queries: [Query.limit(1), Query.orderDesc("$id")],
194
+ }),
195
+ getDownloadUrl: (deploymentId) => functionsService.getDeploymentDownload({
196
+ functionId: func["$id"],
197
+ deploymentId,
198
+ }),
199
+ projectClient: this.projectClient,
200
+ });
201
+ }
202
+ }
203
+ if (options.code === false) {
204
+ this.warn("Source code download skipped.");
205
+ }
206
+ this.success(`Successfully pulled ${chalk.bold(result.length)} functions.`);
207
+ return result;
208
+ }
209
+ /**
210
+ * Pull sites from the project
211
+ */
212
+ async pullSites(options = {}) {
213
+ this.log("Fetching sites ...");
214
+ const sitesService = new Sites(this.projectClient);
215
+ let sites;
216
+ if (options.siteIds && options.siteIds.length > 0) {
217
+ sites = await Promise.all(options.siteIds.map((id) => sitesService.get({
218
+ siteId: id,
219
+ })));
220
+ }
221
+ else {
222
+ const fetchResponse = await sitesService.list({
223
+ queries: [Query.limit(1)],
224
+ });
225
+ if (fetchResponse["sites"].length <= 0) {
226
+ this.log("No sites found.");
227
+ this.success(`Successfully pulled ${chalk.bold(0)} sites.`);
228
+ return [];
229
+ }
230
+ const { sites: fetchedSites } = await paginate(async () => new Sites(this.projectClient).list(), {}, 100, "sites");
231
+ sites = fetchedSites;
232
+ }
233
+ const result = [];
234
+ for (const site of sites) {
235
+ this.log(`Pulling site ${chalk.bold(site.name)} ...`);
236
+ const sitePath = `sites/${site.name}`;
237
+ const absoluteSitePath = path.resolve(this.configDirectoryPath, sitePath);
238
+ const holdingVars = site.vars || [];
239
+ const siteConfig = {
240
+ $id: site.$id,
241
+ name: site.name,
242
+ path: sitePath,
243
+ framework: site.framework,
244
+ enabled: site.enabled,
245
+ logging: site.logging,
246
+ timeout: site.timeout,
247
+ buildRuntime: site.buildRuntime,
248
+ adapter: site.adapter,
249
+ installCommand: site.installCommand,
250
+ buildCommand: site.buildCommand,
251
+ outputDirectory: site.outputDirectory,
252
+ fallbackFile: site.fallbackFile,
253
+ specification: site.specification,
254
+ };
255
+ result.push(siteConfig);
256
+ if (!fs.existsSync(absoluteSitePath)) {
257
+ fs.mkdirSync(absoluteSitePath, { recursive: true });
258
+ }
259
+ if (options.code !== false) {
260
+ await downloadDeploymentCode({
261
+ resourceId: site["$id"],
262
+ resourcePath: absoluteSitePath,
263
+ holdingVars,
264
+ withVariables: options.withVariables,
265
+ listDeployments: () => sitesService.listDeployments({
266
+ siteId: site["$id"],
267
+ queries: [Query.limit(1), Query.orderDesc("$id")],
268
+ }),
269
+ getDownloadUrl: (deploymentId) => sitesService.getDeploymentDownload({
270
+ siteId: site["$id"],
271
+ deploymentId,
272
+ }),
273
+ projectClient: this.projectClient,
274
+ });
275
+ }
276
+ }
277
+ if (options.code === false) {
278
+ this.warn("Source code download skipped.");
279
+ }
280
+ this.success(`Successfully pulled ${chalk.bold(result.length)} sites.`);
281
+ return result;
282
+ }
283
+ /**
284
+ * Pull collections from the project (deprecated)
285
+ */
286
+ async pullCollections() {
287
+ this.warn("appwrite pull collection has been deprecated. Please consider using 'appwrite pull tables' instead");
288
+ this.log("Fetching collections ...");
289
+ const databasesService = new Databases(this.projectClient);
290
+ const fetchResponse = await databasesService.list([Query.limit(1)]);
291
+ if (fetchResponse["databases"].length <= 0) {
292
+ this.log("No collections found.");
293
+ this.success(`Successfully pulled ${chalk.bold(0)} collections from ${chalk.bold(0)} databases.`);
294
+ return { databases: [], collections: [] };
295
+ }
296
+ const { databases } = await paginate(async () => new Databases(this.projectClient).list(), {}, 100, "databases");
297
+ const allDatabases = [];
298
+ const allCollections = [];
299
+ for (const database of databases) {
300
+ this.log(`Pulling all collections from ${chalk.bold(database.name)} database ...`);
301
+ allDatabases.push(database);
302
+ const { collections } = await paginate(async () => new Databases(this.projectClient).listCollections(database.$id), {}, 100, "collections");
303
+ for (const collection of collections) {
304
+ allCollections.push({
305
+ ...collection,
306
+ $createdAt: undefined,
307
+ $updatedAt: undefined,
308
+ });
309
+ }
310
+ }
311
+ this.success(`Successfully pulled ${chalk.bold(allCollections.length)} collections from ${chalk.bold(allDatabases.length)} databases.`);
312
+ return {
313
+ databases: allDatabases,
314
+ collections: allCollections,
315
+ };
316
+ }
317
+ /**
318
+ * Pull tables from the project
319
+ */
320
+ async pullTables() {
321
+ this.log("Fetching tables ...");
322
+ const tablesDBService = new TablesDB(this.projectClient);
323
+ const fetchResponse = await tablesDBService.list({
324
+ queries: [Query.limit(1)],
325
+ });
326
+ if (fetchResponse["databases"].length <= 0) {
327
+ this.log("No tables found.");
328
+ this.success(`Successfully pulled ${chalk.bold(0)} tables from ${chalk.bold(0)} tableDBs.`);
329
+ return { databases: [], tables: [] };
330
+ }
331
+ const { databases } = await paginate(async () => new TablesDB(this.projectClient).list(), {}, 100, "databases");
332
+ const allDatabases = [];
333
+ const allTables = [];
334
+ for (const database of databases) {
335
+ this.log(`Pulling all tables from ${chalk.bold(database.name)} database ...`);
336
+ allDatabases.push(database);
337
+ const { tables } = await paginate(async () => new TablesDB(this.projectClient).listTables(database.$id), {}, 100, "tables");
338
+ for (const table of tables) {
339
+ allTables.push({
340
+ ...table,
341
+ $createdAt: undefined,
342
+ $updatedAt: undefined,
343
+ });
344
+ }
345
+ }
346
+ this.success(`Successfully pulled ${chalk.bold(allTables.length)} tables from ${chalk.bold(allDatabases.length)} tableDBs.`);
347
+ return {
348
+ databases: allDatabases,
349
+ tables: allTables,
350
+ };
351
+ }
352
+ /**
353
+ * Pull storage buckets from the project
354
+ */
355
+ async pullBuckets() {
356
+ this.log("Fetching buckets ...");
357
+ const storageService = new Storage(this.projectClient);
358
+ const fetchResponse = await storageService.listBuckets({
359
+ queries: [Query.limit(1)],
360
+ });
361
+ if (fetchResponse["buckets"].length <= 0) {
362
+ this.log("No buckets found.");
363
+ this.success(`Successfully pulled ${chalk.bold(0)} buckets.`);
364
+ return [];
365
+ }
366
+ const { buckets } = await paginate(async () => new Storage(this.projectClient).listBuckets(), {}, 100, "buckets");
367
+ for (const bucket of buckets) {
368
+ this.log(`Pulling bucket ${chalk.bold(bucket.name)} ...`);
369
+ }
370
+ this.success(`Successfully pulled ${chalk.bold(buckets.length)} buckets.`);
371
+ return buckets;
372
+ }
373
+ /**
374
+ * Pull teams from the project
375
+ */
376
+ async pullTeams() {
377
+ this.log("Fetching teams ...");
378
+ const teamsService = new Teams(this.projectClient);
379
+ const fetchResponse = await teamsService.list({
380
+ queries: [Query.limit(1)],
381
+ });
382
+ if (fetchResponse["teams"].length <= 0) {
383
+ this.log("No teams found.");
384
+ this.success(`Successfully pulled ${chalk.bold(0)} teams.`);
385
+ return [];
386
+ }
387
+ const { teams } = await paginate(async () => new Teams(this.projectClient).list(), {}, 100, "teams");
388
+ for (const team of teams) {
389
+ this.log(`Pulling team ${chalk.bold(team.name)} ...`);
390
+ }
391
+ this.success(`Successfully pulled ${chalk.bold(teams.length)} teams.`);
392
+ return teams;
393
+ }
394
+ /**
395
+ * Pull messaging topics from the project
396
+ */
397
+ async pullMessagingTopics() {
398
+ this.log("Fetching topics ...");
399
+ const messagingService = new Messaging(this.projectClient);
400
+ const fetchResponse = await messagingService.listTopics({
401
+ queries: [Query.limit(1)],
402
+ });
403
+ if (fetchResponse["topics"].length <= 0) {
404
+ this.log("No topics found.");
405
+ this.success(`Successfully pulled ${chalk.bold(0)} topics.`);
406
+ return [];
407
+ }
408
+ const { topics } = await paginate(async () => new Messaging(this.projectClient).listTopics(), {}, 100, "topics");
409
+ for (const topic of topics) {
410
+ this.log(`Pulling topic ${chalk.bold(topic.name)} ...`);
411
+ }
412
+ this.success(`Successfully pulled ${chalk.bold(topics.length)} topics.`);
413
+ return topics;
414
+ }
415
+ }
416
+ /** Helper methods for CLI commands */
417
+ export const pullResources = async ({ skipDeprecated = true, } = {}) => {
418
+ const project = localConfig.getProject();
419
+ if (!project.projectId) {
420
+ error("Project configuration not found. Please run 'appwrite init project' to initialize your project first.");
421
+ process.exit(1);
422
+ }
25
423
  const actions = {
26
424
  settings: pullSettings,
27
425
  functions: pullFunctions,
@@ -30,426 +428,188 @@ const pullResources = async ({ skipDeprecated = false } = {}) => {
30
428
  tables: pullTable,
31
429
  buckets: pullBucket,
32
430
  teams: pullTeam,
33
- messages: pullMessagingTopic
431
+ messages: pullMessagingTopic,
34
432
  };
35
433
  if (skipDeprecated) {
36
434
  delete actions.collections;
37
435
  }
38
- if (parser_1.cliConfig.all) {
436
+ if (cliConfig.all) {
39
437
  for (let action of Object.values(actions)) {
40
- parser_1.cliConfig.all = true;
438
+ cliConfig.all = true;
41
439
  await action({ returnOnZero: true });
42
440
  }
43
441
  }
44
442
  else {
45
- const answers = await inquirer_1.default.prompt(questions_1.questionsPullResources[0]);
443
+ const answers = await inquirer.prompt([questionsPullResources[0]]);
46
444
  const action = actions[answers.resource];
47
445
  if (action !== undefined) {
48
446
  await action({ returnOnZero: true });
49
447
  }
50
448
  }
51
449
  };
52
- exports.pullResources = pullResources;
53
450
  const pullSettings = async () => {
54
- (0, parser_1.log)("Pulling project settings ...");
55
- try {
56
- let response = await (0, projects_1.projectsGet)({
57
- parseOutput: false,
58
- projectId: config_1.localConfig.getProject().projectId
59
- });
60
- config_1.localConfig.setProject(response.$id, response.name, response);
61
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold('all')} project settings.`);
62
- }
63
- catch (e) {
64
- throw e;
65
- }
451
+ const pullInstance = await createPullInstance();
452
+ const projectId = localConfig.getProject().projectId;
453
+ const settings = await pullInstance.pullSettings(projectId);
454
+ localConfig.setProject(projectId, settings.projectName, settings.project);
66
455
  };
67
- const pullFunctions = async ({ code, withVariables } = {}) => {
68
- process.chdir(config_1.localConfig.configDirectoryPath);
69
- (0, parser_1.log)("Fetching functions ...");
70
- let total = 0;
71
- const fetchResponse = await (0, functions_1.functionsList)({
72
- queries: [JSON.stringify({ method: 'limit', values: [1] })],
73
- parseOutput: false
74
- });
456
+ const pullFunctions = async ({ code, withVariables, } = {}) => {
457
+ const functionsService = await getFunctionsService();
458
+ const fetchResponse = await functionsService.list([Query.limit(1)]);
75
459
  if (fetchResponse["functions"].length <= 0) {
76
- (0, parser_1.log)("No functions found.");
77
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} functions.`);
460
+ log("No functions found.");
461
+ success(`Successfully pulled ${chalk.bold(0)} functions.`);
78
462
  return;
79
463
  }
80
- const functions = parser_1.cliConfig.all
81
- ? (await (0, paginate_1.paginate)(functions_1.functionsList, { parseOutput: false }, 100, 'functions')).functions
82
- : (await inquirer_1.default.prompt(questions_1.questionsPullFunctions)).functions;
83
- let allowCodePull = parser_1.cliConfig.force === true ? true : null;
84
- for (let func of functions) {
85
- total++;
86
- (0, parser_1.log)(`Pulling function ${chalk_1.default.bold(func['name'])} ...`);
87
- const localFunction = config_1.localConfig.getFunction(func.$id);
88
- func['path'] = localFunction['path'];
89
- if (!localFunction['path']) {
90
- func['path'] = `functions/${func.name}`;
91
- }
92
- const holdingVars = func['vars'];
93
- // We don't save var in to the config
94
- delete func['vars'];
95
- config_1.localConfig.addFunction(func);
96
- if (!fs.existsSync(func['path'])) {
97
- fs.mkdirSync(func['path'], { recursive: true });
98
- }
99
- if (code === false) {
100
- (0, parser_1.warn)("Source code download skipped.");
101
- continue;
102
- }
103
- if (allowCodePull === null) {
104
- const codeAnswer = await inquirer_1.default.prompt(questions_1.questionsPullFunctionsCode);
105
- allowCodePull = codeAnswer.override;
106
- }
107
- if (!allowCodePull) {
108
- continue;
109
- }
110
- let deploymentId = null;
111
- try {
112
- const fetchResponse = await (0, functions_1.functionsListDeployments)({
113
- functionId: func['$id'],
114
- queries: [
115
- JSON.stringify({ method: 'limit', values: [1] }),
116
- JSON.stringify({ method: 'orderDesc', values: ['$id'] })
117
- ],
118
- parseOutput: false
119
- });
120
- if (fetchResponse['total'] > 0) {
121
- deploymentId = fetchResponse['deployments'][0]['$id'];
122
- }
123
- }
124
- catch {
125
- }
126
- if (deploymentId === null) {
127
- (0, parser_1.log)("Source code download skipped because function doesn't have any available deployment");
128
- continue;
129
- }
130
- (0, parser_1.log)("Pulling latest deployment code ...");
131
- const compressedFileName = `${func['$id']}-${+new Date()}.tar.gz`;
132
- await (0, functions_1.functionsGetDeploymentDownload)({
133
- functionId: func['$id'],
134
- deploymentId,
135
- destination: compressedFileName,
136
- overrideForCli: true,
137
- parseOutput: false
138
- });
139
- tar.extract({
140
- sync: true,
141
- cwd: func['path'],
142
- file: compressedFileName,
143
- strict: false,
144
- });
145
- fs.rmSync(compressedFileName);
146
- if (withVariables) {
147
- const envFileLocation = `${func['path']}/.env`;
148
- try {
149
- fs.rmSync(envFileLocation);
150
- }
151
- catch {
152
- }
153
- fs.writeFileSync(envFileLocation, holdingVars.map((r) => `${r.key}=${r.value}\n`).join(''));
154
- }
464
+ const functionsToCheck = cliConfig.all
465
+ ? (await paginate(async () => (await getFunctionsService()).list(), {}, 100, "functions")).functions
466
+ : (await inquirer.prompt(questionsPullFunctions)).functions;
467
+ let allowCodePull = cliConfig.force === true ? true : null;
468
+ if (code !== false && allowCodePull === null) {
469
+ const codeAnswer = await inquirer.prompt(questionsPullFunctionsCode);
470
+ allowCodePull = codeAnswer.override;
471
+ }
472
+ const shouldPullCode = code !== false && allowCodePull === true;
473
+ const selectedFunctionIds = functionsToCheck.map((f) => f.$id);
474
+ const pullInstance = await createPullInstance();
475
+ const functions = await pullInstance.pullFunctions({
476
+ code: shouldPullCode,
477
+ withVariables,
478
+ functionIds: selectedFunctionIds,
479
+ });
480
+ for (const func of functions) {
481
+ const localFunction = localConfig.getFunction(func.$id);
482
+ func["path"] = localFunction["path"] || func["path"];
483
+ localConfig.addFunction(func);
155
484
  }
156
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} functions.`);
157
485
  };
158
- const pullSites = async ({ code, withVariables } = {}) => {
159
- process.chdir(config_1.localConfig.configDirectoryPath);
160
- (0, parser_1.log)("Fetching sites ...");
161
- let total = 0;
162
- const fetchResponse = await (0, sites_1.sitesList)({
163
- queries: [JSON.stringify({ method: 'limit', values: [1] })],
164
- parseOutput: false
486
+ const pullSites = async ({ code, withVariables, } = {}) => {
487
+ const sitesService = await getSitesService();
488
+ const fetchResponse = await sitesService.list({
489
+ queries: [Query.limit(1)],
165
490
  });
166
491
  if (fetchResponse["sites"].length <= 0) {
167
- (0, parser_1.log)("No sites found.");
168
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} sites.`);
492
+ log("No sites found.");
493
+ success(`Successfully pulled ${chalk.bold(0)} sites.`);
169
494
  return;
170
495
  }
171
- const sites = parser_1.cliConfig.all
172
- ? (await (0, paginate_1.paginate)(sites_1.sitesList, { parseOutput: false }, 100, 'sites')).sites
173
- : (await inquirer_1.default.prompt(questions_1.questionsPullSites)).sites;
174
- let allowCodePull = parser_1.cliConfig.force === true ? true : null;
175
- for (let site of sites) {
176
- total++;
177
- (0, parser_1.log)(`Pulling site ${chalk_1.default.bold(site['name'])} ...`);
178
- const localSite = config_1.localConfig.getSite(site.$id);
179
- site['path'] = localSite['path'];
180
- if (!localSite['path']) {
181
- site['path'] = `sites/${site.name}`;
182
- }
183
- const holdingVars = site['vars'];
184
- // We don't save var in to the config
185
- delete site['vars'];
186
- config_1.localConfig.addSite(site);
187
- if (!fs.existsSync(site['path'])) {
188
- fs.mkdirSync(site['path'], { recursive: true });
189
- }
190
- if (code === false) {
191
- (0, parser_1.warn)("Source code download skipped.");
192
- continue;
193
- }
194
- if (allowCodePull === null) {
195
- const codeAnswer = await inquirer_1.default.prompt(questions_1.questionsPullSitesCode);
196
- allowCodePull = codeAnswer.override;
197
- }
198
- if (!allowCodePull) {
199
- continue;
200
- }
201
- let deploymentId = null;
202
- try {
203
- const fetchResponse = await (0, sites_1.sitesListDeployments)({
204
- siteId: site['$id'],
205
- queries: [
206
- JSON.stringify({ method: 'limit', values: [1] }),
207
- JSON.stringify({ method: 'orderDesc', values: ['$id'] })
208
- ],
209
- parseOutput: false
210
- });
211
- if (fetchResponse['total'] > 0) {
212
- deploymentId = fetchResponse['deployments'][0]['$id'];
213
- }
214
- }
215
- catch {
216
- }
217
- if (deploymentId === null) {
218
- (0, parser_1.log)("Source code download skipped because site doesn't have any available deployment");
219
- continue;
220
- }
221
- (0, parser_1.log)("Pulling latest deployment code ...");
222
- const compressedFileName = `${site['$id']}-${+new Date()}.tar.gz`;
223
- await (0, sites_1.sitesGetDeploymentDownload)({
224
- siteId: site['$id'],
225
- deploymentId,
226
- destination: compressedFileName,
227
- overrideForCli: true,
228
- parseOutput: false
229
- });
230
- tar.extract({
231
- sync: true,
232
- cwd: site['path'],
233
- file: compressedFileName,
234
- strict: false,
235
- });
236
- fs.rmSync(compressedFileName);
237
- if (withVariables) {
238
- const envFileLocation = `${site['path']}/.env`;
239
- try {
240
- fs.rmSync(envFileLocation);
241
- }
242
- catch {
243
- }
244
- fs.writeFileSync(envFileLocation, holdingVars.map((r) => `${r.key}=${r.value}\n`).join(''));
245
- }
496
+ const sitesToCheck = cliConfig.all
497
+ ? (await paginate(async () => (await getSitesService()).list(), {}, 100, "sites")).sites
498
+ : (await inquirer.prompt(questionsPullSites)).sites;
499
+ let allowCodePull = cliConfig.force === true ? true : null;
500
+ if (code !== false && allowCodePull === null) {
501
+ const codeAnswer = await inquirer.prompt(questionsPullSitesCode);
502
+ allowCodePull = codeAnswer.override;
503
+ }
504
+ const shouldPullCode = code !== false && allowCodePull === true;
505
+ const selectedSiteIds = sitesToCheck.map((s) => s.$id);
506
+ const pullInstance = await createPullInstance();
507
+ const sites = await pullInstance.pullSites({
508
+ code: shouldPullCode,
509
+ withVariables,
510
+ siteIds: selectedSiteIds,
511
+ });
512
+ for (const site of sites) {
513
+ const localSite = localConfig.getSite(site.$id);
514
+ site["path"] = localSite["path"] || site["path"];
515
+ localConfig.addSite(site);
246
516
  }
247
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} sites.`);
248
517
  };
249
518
  const pullCollection = async () => {
250
- (0, parser_1.warn)("appwrite pull collection has been deprecated. Please consider using 'appwrite pull tables' instead");
251
- (0, parser_1.log)("Fetching collections ...");
252
- let totalDatabases = 0;
253
- let totalCollections = 0;
254
- const fetchResponse = await (0, databases_1.databasesList)({
255
- queries: [JSON.stringify({ method: 'limit', values: [1] })],
256
- parseOutput: false
257
- });
258
- if (fetchResponse["databases"].length <= 0) {
259
- (0, parser_1.log)("No collections found.");
260
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(totalCollections)} collections from ${chalk_1.default.bold(totalDatabases)} databases.`);
261
- return;
519
+ const pullInstance = await createPullInstance();
520
+ const { databases, collections } = await pullInstance.pullCollections();
521
+ for (const database of databases) {
522
+ localConfig.addDatabase(database);
262
523
  }
263
- let databases = parser_1.cliConfig.ids;
264
- if (databases.length === 0) {
265
- if (parser_1.cliConfig.all) {
266
- databases = (await (0, paginate_1.paginate)(databases_1.databasesList, { parseOutput: false }, 100, 'databases')).databases.map((database) => database.$id);
267
- }
268
- else {
269
- databases = (await inquirer_1.default.prompt(questions_1.questionsPullCollection)).databases;
270
- }
524
+ for (const collection of collections) {
525
+ localConfig.addCollection(collection);
271
526
  }
272
- for (const databaseId of databases) {
273
- const database = await (0, databases_1.databasesGet)({
274
- databaseId,
275
- parseOutput: false
276
- });
277
- totalDatabases++;
278
- (0, parser_1.log)(`Pulling all collections from ${chalk_1.default.bold(database['name'])} database ...`);
279
- config_1.localConfig.addDatabase(database);
280
- const { collections } = await (0, paginate_1.paginate)(databases_1.databasesListCollections, {
281
- databaseId,
282
- parseOutput: false
283
- }, 100, 'collections');
284
- for (const collection of collections) {
285
- totalCollections++;
286
- config_1.localConfig.addCollection({
287
- ...collection,
288
- '$createdAt': undefined,
289
- '$updatedAt': undefined
290
- });
291
- }
292
- }
293
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(totalCollections)} collections from ${chalk_1.default.bold(totalDatabases)} databases.`);
294
527
  };
295
528
  const pullTable = async () => {
296
- (0, parser_1.log)("Fetching tables ...");
297
- let totalTablesDBs = 0;
298
- let totalTables = 0;
299
- const fetchResponse = await (0, tables_db_1.tablesDBList)({
300
- queries: [JSON.stringify({ method: 'limit', values: [1] })],
301
- parseOutput: false
302
- });
303
- if (fetchResponse["databases"].length <= 0) {
304
- (0, parser_1.log)("No tables found.");
305
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(totalTables)} tables from ${chalk_1.default.bold(totalTablesDBs)} tableDBs.`);
306
- return;
529
+ const pullInstance = await createPullInstance();
530
+ const { databases, tables } = await pullInstance.pullTables();
531
+ for (const database of databases) {
532
+ localConfig.addTablesDB(database);
307
533
  }
308
- let databases = parser_1.cliConfig.ids;
309
- if (databases.length === 0) {
310
- if (parser_1.cliConfig.all) {
311
- databases = (await (0, paginate_1.paginate)(tables_db_1.tablesDBList, { parseOutput: false }, 100, 'databases')).databases.map((database) => database.$id);
312
- }
313
- else {
314
- databases = (await inquirer_1.default.prompt(questions_1.questionsPullCollection)).databases;
315
- }
534
+ for (const table of tables) {
535
+ localConfig.addTable(table);
316
536
  }
317
- for (const databaseId of databases) {
318
- const database = await (0, tables_db_1.tablesDBGet)({
319
- databaseId,
320
- parseOutput: false
321
- });
322
- totalTablesDBs++;
323
- (0, parser_1.log)(`Pulling all tables from ${chalk_1.default.bold(database['name'])} database ...`);
324
- config_1.localConfig.addTablesDB(database);
325
- const { tables } = await (0, paginate_1.paginate)(tables_db_1.tablesDBListTables, {
326
- databaseId,
327
- parseOutput: false
328
- }, 100, 'tables');
329
- for (const table of tables) {
330
- totalTables++;
331
- config_1.localConfig.addTable({
332
- ...table,
333
- '$createdAt': undefined,
334
- '$updatedAt': undefined
335
- });
336
- }
337
- }
338
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(totalTables)} tables from ${chalk_1.default.bold(totalTablesDBs)} tableDBs.`);
339
537
  };
340
538
  const pullBucket = async () => {
341
- (0, parser_1.log)("Fetching buckets ...");
342
- let total = 0;
343
- const fetchResponse = await (0, storage_1.storageListBuckets)({
344
- queries: [JSON.stringify({ method: 'limit', values: [1] })],
345
- parseOutput: false
346
- });
347
- if (fetchResponse["buckets"].length <= 0) {
348
- (0, parser_1.log)("No buckets found.");
349
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} buckets.`);
350
- return;
351
- }
352
- const { buckets } = await (0, paginate_1.paginate)(storage_1.storageListBuckets, { parseOutput: false }, 100, 'buckets');
539
+ const pullInstance = await createPullInstance();
540
+ const buckets = await pullInstance.pullBuckets();
353
541
  for (const bucket of buckets) {
354
- total++;
355
- (0, parser_1.log)(`Pulling bucket ${chalk_1.default.bold(bucket['name'])} ...`);
356
- config_1.localConfig.addBucket(bucket);
542
+ localConfig.addBucket(bucket);
357
543
  }
358
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} buckets.`);
359
544
  };
360
545
  const pullTeam = async () => {
361
- (0, parser_1.log)("Fetching teams ...");
362
- let total = 0;
363
- const fetchResponse = await (0, teams_1.teamsList)({
364
- queries: [JSON.stringify({ method: 'limit', values: [1] })],
365
- parseOutput: false
366
- });
367
- if (fetchResponse["teams"].length <= 0) {
368
- (0, parser_1.log)("No teams found.");
369
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} teams.`);
370
- return;
371
- }
372
- const { teams } = await (0, paginate_1.paginate)(teams_1.teamsList, { parseOutput: false }, 100, 'teams');
546
+ const pullInstance = await createPullInstance();
547
+ const teams = await pullInstance.pullTeams();
373
548
  for (const team of teams) {
374
- total++;
375
- (0, parser_1.log)(`Pulling team ${chalk_1.default.bold(team['name'])} ...`);
376
- config_1.localConfig.addTeam(team);
549
+ localConfig.addTeam(team);
377
550
  }
378
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} teams.`);
379
551
  };
380
552
  const pullMessagingTopic = async () => {
381
- (0, parser_1.log)("Fetching topics ...");
382
- let total = 0;
383
- const fetchResponse = await (0, messaging_1.messagingListTopics)({
384
- queries: [JSON.stringify({ method: 'limit', values: [1] })],
385
- parseOutput: false
386
- });
387
- if (fetchResponse["topics"].length <= 0) {
388
- (0, parser_1.log)("No topics found.");
389
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} topics.`);
390
- return;
391
- }
392
- const { topics } = await (0, paginate_1.paginate)(messaging_1.messagingListTopics, { parseOutput: false }, 100, 'topics');
553
+ const pullInstance = await createPullInstance();
554
+ const topics = await pullInstance.pullMessagingTopics();
393
555
  for (const topic of topics) {
394
- total++;
395
- (0, parser_1.log)(`Pulling topic ${chalk_1.default.bold(topic['name'])} ...`);
396
- config_1.localConfig.addMessagingTopic(topic);
556
+ localConfig.addMessagingTopic(topic);
397
557
  }
398
- (0, parser_1.success)(`Successfully pulled ${chalk_1.default.bold(total)} topics.`);
399
558
  };
400
- exports.pull = new commander_1.Command("pull")
401
- .description(parser_1.commandDescriptions['pull'])
402
- .action((0, parser_1.actionRunner)(() => (0, exports.pullResources)({ skipDeprecated: true })));
403
- exports.pull
559
+ /** Commander.js exports */
560
+ export const pull = new Command("pull")
561
+ .description(commandDescriptions["pull"])
562
+ .action(actionRunner(() => pullResources({ skipDeprecated: true })));
563
+ pull
404
564
  .command("all")
405
- .description("Pull all resource.")
406
- .action((0, parser_1.actionRunner)(() => {
407
- parser_1.cliConfig.all = true;
408
- return (0, exports.pullResources)({
409
- skipDeprecated: true
565
+ .description("Pull all resources")
566
+ .action(actionRunner(() => {
567
+ cliConfig.all = true;
568
+ return pullResources({
569
+ skipDeprecated: true,
410
570
  });
411
571
  }));
412
- exports.pull
572
+ pull
413
573
  .command("settings")
414
574
  .description("Pull your Appwrite project name, services and auth settings")
415
- .action((0, parser_1.actionRunner)(pullSettings));
416
- exports.pull
575
+ .action(actionRunner(pullSettings));
576
+ pull
417
577
  .command("function")
418
578
  .alias("functions")
419
579
  .description("Pull your Appwrite cloud function")
420
580
  .option("--no-code", "Don't pull the function's code")
421
- .option("--with-variables", `Pull function variables. ${chalk_1.default.red('recommend for testing purposes only')}`)
422
- .action((0, parser_1.actionRunner)(pullFunctions));
423
- exports.pull
581
+ .option("--with-variables", `Pull function variables. ${chalk.red("recommend for testing purposes only")}`)
582
+ .action(actionRunner(pullFunctions));
583
+ pull
424
584
  .command("site")
425
585
  .alias("sites")
426
586
  .description("Pull your Appwrite site")
427
587
  .option("--no-code", "Don't pull the site's code")
428
- .option("--with-variables", `Pull site variables. ${chalk_1.default.red('recommend for testing purposes only')}`)
429
- .action((0, parser_1.actionRunner)(pullSites));
430
- exports.pull
588
+ .option("--with-variables", `Pull site variables. ${chalk.red("recommend for testing purposes only")}`)
589
+ .action(actionRunner(pullSites));
590
+ pull
431
591
  .command("collection")
432
592
  .alias("collections")
433
593
  .description("Pull your Appwrite collections (deprecated, please use 'pull tables' instead)")
434
- .action((0, parser_1.actionRunner)(pullCollection));
435
- exports.pull
594
+ .action(actionRunner(pullCollection));
595
+ pull
436
596
  .command("table")
437
597
  .alias("tables")
438
598
  .description("Pull your Appwrite tables")
439
- .action((0, parser_1.actionRunner)(pullTable));
440
- exports.pull
599
+ .action(actionRunner(pullTable));
600
+ pull
441
601
  .command("bucket")
442
602
  .alias("buckets")
443
603
  .description("Pull your Appwrite buckets")
444
- .action((0, parser_1.actionRunner)(pullBucket));
445
- exports.pull
604
+ .action(actionRunner(pullBucket));
605
+ pull
446
606
  .command("team")
447
607
  .alias("teams")
448
608
  .description("Pull your Appwrite teams")
449
- .action((0, parser_1.actionRunner)(pullTeam));
450
- exports.pull
609
+ .action(actionRunner(pullTeam));
610
+ pull
451
611
  .command("topic")
452
612
  .alias("topics")
453
613
  .description("Pull your Appwrite messaging topics")
454
- .action((0, parser_1.actionRunner)(pullMessagingTopic));
614
+ .action(actionRunner(pullMessagingTopic));
455
615
  //# sourceMappingURL=pull.js.map