appwrite-utils-cli 1.9.7 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/README.md +1004 -1004
  2. package/dist/adapters/index.d.ts +7 -8
  3. package/dist/adapters/index.js +7 -9
  4. package/dist/backups/operations/bucketBackup.js +2 -2
  5. package/dist/backups/operations/collectionBackup.d.ts +1 -1
  6. package/dist/backups/operations/collectionBackup.js +3 -3
  7. package/dist/backups/operations/comprehensiveBackup.d.ts +1 -1
  8. package/dist/backups/operations/comprehensiveBackup.js +2 -2
  9. package/dist/backups/tracking/centralizedTracking.d.ts +1 -1
  10. package/dist/backups/tracking/centralizedTracking.js +2 -2
  11. package/dist/cli/commands/configCommands.js +51 -7
  12. package/dist/cli/commands/databaseCommands.js +156 -104
  13. package/dist/cli/commands/functionCommands.js +3 -3
  14. package/dist/cli/commands/importFileCommands.d.ts +7 -0
  15. package/dist/cli/commands/importFileCommands.js +674 -0
  16. package/dist/cli/commands/schemaCommands.js +3 -3
  17. package/dist/cli/commands/storageCommands.js +2 -3
  18. package/dist/cli/commands/transferCommands.js +3 -5
  19. package/dist/collections/{attributes.d.ts → columns.d.ts} +1 -1
  20. package/dist/collections/{attributes.js → columns.js} +15 -9
  21. package/dist/collections/indexes.js +1 -3
  22. package/dist/collections/methods.d.ts +1 -1
  23. package/dist/collections/methods.js +38 -20
  24. package/dist/collections/tableOperations.d.ts +1 -0
  25. package/dist/collections/tableOperations.js +30 -11
  26. package/dist/collections/transferOperations.d.ts +1 -1
  27. package/dist/collections/transferOperations.js +3 -4
  28. package/dist/collections/wipeOperations.d.ts +4 -3
  29. package/dist/collections/wipeOperations.js +112 -39
  30. package/dist/databases/methods.js +2 -2
  31. package/dist/databases/setup.js +2 -2
  32. package/dist/examples/yamlTerminologyExample.js +2 -2
  33. package/dist/functions/deployments.d.ts +1 -1
  34. package/dist/functions/deployments.js +6 -6
  35. package/dist/functions/fnConfigDiscovery.js +2 -2
  36. package/dist/functions/methods.js +2 -2
  37. package/dist/functions/templates/count-docs-in-collection/README.md +53 -53
  38. package/dist/functions/templates/count-docs-in-collection/src/main.ts +159 -159
  39. package/dist/functions/templates/count-docs-in-collection/src/request.ts +8 -8
  40. package/dist/functions/templates/hono-typescript/README.md +285 -285
  41. package/dist/functions/templates/hono-typescript/src/adapters/request.ts +73 -73
  42. package/dist/functions/templates/hono-typescript/src/adapters/response.ts +105 -105
  43. package/dist/functions/templates/hono-typescript/src/app.ts +179 -179
  44. package/dist/functions/templates/hono-typescript/src/context.ts +102 -102
  45. package/{src/functions/templates/hono-typescript/src/index.ts → dist/functions/templates/hono-typescript/src/main.ts} +53 -53
  46. package/dist/functions/templates/hono-typescript/src/middleware/appwrite.ts +118 -118
  47. package/dist/functions/templates/typescript-node/README.md +31 -31
  48. package/dist/functions/templates/typescript-node/src/context.ts +102 -102
  49. package/dist/functions/templates/typescript-node/src/{index.ts → main.ts} +29 -29
  50. package/dist/functions/templates/uv/README.md +30 -30
  51. package/dist/functions/templates/uv/pyproject.toml +29 -29
  52. package/dist/functions/templates/uv/src/context.py +124 -124
  53. package/dist/functions/templates/uv/src/{index.py → main.py} +45 -45
  54. package/dist/init.js +1 -1
  55. package/dist/interactiveCLI.d.ts +6 -1
  56. package/dist/interactiveCLI.js +79 -25
  57. package/dist/main.js +125 -180
  58. package/dist/migrations/afterImportActions.js +2 -3
  59. package/dist/migrations/appwriteToX.d.ts +1 -1
  60. package/dist/migrations/appwriteToX.js +10 -8
  61. package/dist/migrations/comprehensiveTransfer.js +3 -5
  62. package/dist/migrations/dataLoader.d.ts +4 -2
  63. package/dist/migrations/dataLoader.js +42 -20
  64. package/dist/migrations/importController.d.ts +2 -0
  65. package/dist/migrations/importController.js +39 -24
  66. package/dist/migrations/importDataActions.js +3 -3
  67. package/dist/migrations/relationships.js +1 -2
  68. package/dist/migrations/services/DataTransformationService.js +2 -2
  69. package/dist/migrations/services/FileHandlerService.js +1 -1
  70. package/dist/migrations/services/ImportOrchestrator.d.ts +2 -0
  71. package/dist/migrations/services/ImportOrchestrator.js +15 -7
  72. package/dist/migrations/services/RateLimitManager.js +1 -1
  73. package/dist/migrations/services/RelationshipResolver.js +1 -1
  74. package/dist/migrations/services/UserMappingService.js +1 -1
  75. package/dist/migrations/services/ValidationService.js +1 -1
  76. package/dist/migrations/transfer.d.ts +8 -4
  77. package/dist/migrations/transfer.js +108 -55
  78. package/dist/migrations/yaml/YamlImportConfigLoader.js +52 -52
  79. package/dist/migrations/yaml/YamlImportIntegration.js +2 -2
  80. package/dist/migrations/yaml/generateImportSchemas.js +174 -174
  81. package/dist/setupCommands.d.ts +1 -1
  82. package/dist/setupCommands.js +5 -6
  83. package/dist/setupController.js +1 -1
  84. package/dist/shared/backupTracking.d.ts +1 -1
  85. package/dist/shared/backupTracking.js +2 -2
  86. package/dist/shared/confirmationDialogs.js +1 -1
  87. package/dist/shared/migrationHelpers.d.ts +1 -1
  88. package/dist/shared/migrationHelpers.js +4 -4
  89. package/dist/shared/operationQueue.d.ts +1 -1
  90. package/dist/shared/operationQueue.js +3 -4
  91. package/dist/shared/operationsTable.d.ts +1 -1
  92. package/dist/shared/operationsTable.js +35 -34
  93. package/dist/shared/operationsTableSchema.d.ts +3 -3
  94. package/dist/shared/operationsTableSchema.js +2 -2
  95. package/dist/shared/progressManager.js +1 -1
  96. package/dist/shared/selectionDialogs.d.ts +6 -0
  97. package/dist/shared/selectionDialogs.js +56 -12
  98. package/dist/storage/methods.d.ts +12 -0
  99. package/dist/storage/methods.js +92 -89
  100. package/dist/storage/schemas.d.ts +2 -2
  101. package/dist/tables/indexManager.d.ts +1 -1
  102. package/dist/tables/indexManager.js +2 -2
  103. package/dist/types.d.ts +2 -2
  104. package/dist/types.js +1 -1
  105. package/dist/users/methods.js +2 -3
  106. package/dist/utils/configMigration.js +1 -1
  107. package/dist/utils/index.d.ts +1 -1
  108. package/dist/utils/index.js +1 -1
  109. package/dist/utils/loadConfigs.d.ts +2 -2
  110. package/dist/utils/loadConfigs.js +6 -7
  111. package/dist/utils/setupFiles.js +139 -141
  112. package/dist/utilsController.d.ts +16 -9
  113. package/dist/utilsController.js +93 -68
  114. package/package.json +9 -3
  115. package/.appwrite/.yaml_schemas/appwrite-config.schema.json +0 -380
  116. package/.appwrite/.yaml_schemas/collection.schema.json +0 -255
  117. package/.appwrite/collections/Categories.yaml +0 -182
  118. package/.appwrite/collections/ExampleCollection.yaml +0 -36
  119. package/.appwrite/collections/Posts.yaml +0 -227
  120. package/.appwrite/collections/Users.yaml +0 -149
  121. package/.appwrite/config.yaml +0 -109
  122. package/.appwrite/import/README.md +0 -148
  123. package/.appwrite/import/categories-import.yaml +0 -129
  124. package/.appwrite/import/posts-import.yaml +0 -208
  125. package/.appwrite/import/users-import.yaml +0 -130
  126. package/.appwrite/importData/categories.json +0 -194
  127. package/.appwrite/importData/posts.json +0 -270
  128. package/.appwrite/importData/users.json +0 -220
  129. package/.appwrite/schemas/categories.json +0 -128
  130. package/.appwrite/schemas/exampleCollection.json +0 -52
  131. package/.appwrite/schemas/posts.json +0 -173
  132. package/.appwrite/schemas/users.json +0 -125
  133. package/CHANGELOG.md +0 -35
  134. package/CONFIG_TODO.md +0 -1189
  135. package/SELECTION_DIALOGS.md +0 -146
  136. package/SERVICE_IMPLEMENTATION_REPORT.md +0 -462
  137. package/dist/adapters/AdapterFactory.d.ts +0 -94
  138. package/dist/adapters/AdapterFactory.js +0 -420
  139. package/dist/adapters/DatabaseAdapter.d.ts +0 -243
  140. package/dist/adapters/DatabaseAdapter.js +0 -50
  141. package/dist/adapters/LegacyAdapter.d.ts +0 -50
  142. package/dist/adapters/LegacyAdapter.js +0 -615
  143. package/dist/adapters/TablesDBAdapter.d.ts +0 -45
  144. package/dist/adapters/TablesDBAdapter.js +0 -611
  145. package/dist/config/ConfigManager.d.ts +0 -450
  146. package/dist/config/ConfigManager.js +0 -650
  147. package/dist/config/configMigration.d.ts +0 -87
  148. package/dist/config/configMigration.js +0 -390
  149. package/dist/config/configValidation.d.ts +0 -66
  150. package/dist/config/configValidation.js +0 -358
  151. package/dist/config/index.d.ts +0 -8
  152. package/dist/config/index.js +0 -7
  153. package/dist/config/services/ConfigDiscoveryService.d.ts +0 -122
  154. package/dist/config/services/ConfigDiscoveryService.js +0 -322
  155. package/dist/config/services/ConfigLoaderService.d.ts +0 -129
  156. package/dist/config/services/ConfigLoaderService.js +0 -535
  157. package/dist/config/services/ConfigMergeService.d.ts +0 -208
  158. package/dist/config/services/ConfigMergeService.js +0 -308
  159. package/dist/config/services/ConfigValidationService.d.ts +0 -214
  160. package/dist/config/services/ConfigValidationService.js +0 -310
  161. package/dist/config/services/SessionAuthService.d.ts +0 -225
  162. package/dist/config/services/SessionAuthService.js +0 -456
  163. package/dist/config/services/__tests__/ConfigMergeService.test.d.ts +0 -1
  164. package/dist/config/services/__tests__/ConfigMergeService.test.js +0 -271
  165. package/dist/config/services/index.d.ts +0 -13
  166. package/dist/config/services/index.js +0 -10
  167. package/dist/config/yamlConfig.d.ts +0 -722
  168. package/dist/config/yamlConfig.js +0 -702
  169. package/dist/functions/pathResolution.d.ts +0 -37
  170. package/dist/functions/pathResolution.js +0 -185
  171. package/dist/functions/templates/count-docs-in-collection/package.json +0 -25
  172. package/dist/functions/templates/count-docs-in-collection/tsconfig.json +0 -28
  173. package/dist/functions/templates/hono-typescript/package.json +0 -26
  174. package/dist/functions/templates/hono-typescript/src/index.ts +0 -54
  175. package/dist/functions/templates/hono-typescript/tsconfig.json +0 -20
  176. package/dist/functions/templates/typescript-node/package.json +0 -25
  177. package/dist/functions/templates/typescript-node/tsconfig.json +0 -28
  178. package/dist/shared/attributeMapper.d.ts +0 -20
  179. package/dist/shared/attributeMapper.js +0 -203
  180. package/dist/shared/errorUtils.d.ts +0 -54
  181. package/dist/shared/errorUtils.js +0 -95
  182. package/dist/shared/functionManager.d.ts +0 -48
  183. package/dist/shared/functionManager.js +0 -348
  184. package/dist/shared/jsonSchemaGenerator.d.ts +0 -50
  185. package/dist/shared/jsonSchemaGenerator.js +0 -290
  186. package/dist/shared/logging.d.ts +0 -61
  187. package/dist/shared/logging.js +0 -116
  188. package/dist/shared/messageFormatter.d.ts +0 -39
  189. package/dist/shared/messageFormatter.js +0 -162
  190. package/dist/shared/pydanticModelGenerator.d.ts +0 -17
  191. package/dist/shared/pydanticModelGenerator.js +0 -615
  192. package/dist/shared/schemaGenerator.d.ts +0 -40
  193. package/dist/shared/schemaGenerator.js +0 -556
  194. package/dist/utils/ClientFactory.d.ts +0 -87
  195. package/dist/utils/ClientFactory.js +0 -212
  196. package/dist/utils/configDiscovery.d.ts +0 -78
  197. package/dist/utils/configDiscovery.js +0 -472
  198. package/dist/utils/constantsGenerator.d.ts +0 -31
  199. package/dist/utils/constantsGenerator.js +0 -321
  200. package/dist/utils/dataConverters.d.ts +0 -46
  201. package/dist/utils/dataConverters.js +0 -139
  202. package/dist/utils/directoryUtils.d.ts +0 -22
  203. package/dist/utils/directoryUtils.js +0 -59
  204. package/dist/utils/getClientFromConfig.d.ts +0 -39
  205. package/dist/utils/getClientFromConfig.js +0 -199
  206. package/dist/utils/helperFunctions.d.ts +0 -63
  207. package/dist/utils/helperFunctions.js +0 -156
  208. package/dist/utils/pathResolvers.d.ts +0 -53
  209. package/dist/utils/pathResolvers.js +0 -72
  210. package/dist/utils/projectConfig.d.ts +0 -122
  211. package/dist/utils/projectConfig.js +0 -206
  212. package/dist/utils/retryFailedPromises.d.ts +0 -2
  213. package/dist/utils/retryFailedPromises.js +0 -23
  214. package/dist/utils/sessionAuth.d.ts +0 -48
  215. package/dist/utils/sessionAuth.js +0 -164
  216. package/dist/utils/typeGuards.d.ts +0 -35
  217. package/dist/utils/typeGuards.js +0 -57
  218. package/dist/utils/validationRules.d.ts +0 -43
  219. package/dist/utils/validationRules.js +0 -42
  220. package/dist/utils/versionDetection.d.ts +0 -58
  221. package/dist/utils/versionDetection.js +0 -251
  222. package/dist/utils/yamlConverter.d.ts +0 -100
  223. package/dist/utils/yamlConverter.js +0 -428
  224. package/dist/utils/yamlLoader.d.ts +0 -70
  225. package/dist/utils/yamlLoader.js +0 -267
  226. package/scripts/copy-templates.ts +0 -23
  227. package/src/adapters/AdapterFactory.ts +0 -529
  228. package/src/adapters/DatabaseAdapter.ts +0 -319
  229. package/src/adapters/LegacyAdapter.ts +0 -844
  230. package/src/adapters/TablesDBAdapter.ts +0 -823
  231. package/src/adapters/index.ts +0 -37
  232. package/src/backups/operations/bucketBackup.ts +0 -277
  233. package/src/backups/operations/collectionBackup.ts +0 -310
  234. package/src/backups/operations/comprehensiveBackup.ts +0 -342
  235. package/src/backups/schemas/bucketManifest.ts +0 -78
  236. package/src/backups/schemas/comprehensiveManifest.ts +0 -76
  237. package/src/backups/tracking/centralizedTracking.ts +0 -352
  238. package/src/cli/commands/configCommands.ts +0 -201
  239. package/src/cli/commands/databaseCommands.ts +0 -879
  240. package/src/cli/commands/functionCommands.ts +0 -418
  241. package/src/cli/commands/schemaCommands.ts +0 -200
  242. package/src/cli/commands/storageCommands.ts +0 -152
  243. package/src/cli/commands/transferCommands.ts +0 -457
  244. package/src/collections/attributes.ts +0 -2020
  245. package/src/collections/attributes.ts.backup +0 -1555
  246. package/src/collections/indexes.ts +0 -352
  247. package/src/collections/methods.ts +0 -700
  248. package/src/collections/tableOperations.ts +0 -521
  249. package/src/collections/transferOperations.ts +0 -590
  250. package/src/collections/wipeOperations.ts +0 -346
  251. package/src/config/ConfigManager.ts +0 -849
  252. package/src/config/README.md +0 -274
  253. package/src/config/configMigration.ts +0 -575
  254. package/src/config/configValidation.ts +0 -445
  255. package/src/config/index.ts +0 -10
  256. package/src/config/services/ConfigDiscoveryService.ts +0 -410
  257. package/src/config/services/ConfigLoaderService.ts +0 -732
  258. package/src/config/services/ConfigMergeService.ts +0 -388
  259. package/src/config/services/ConfigValidationService.ts +0 -394
  260. package/src/config/services/SessionAuthService.ts +0 -565
  261. package/src/config/services/__tests__/ConfigMergeService.test.ts +0 -351
  262. package/src/config/services/index.ts +0 -29
  263. package/src/config/yamlConfig.ts +0 -761
  264. package/src/databases/methods.ts +0 -49
  265. package/src/databases/setup.ts +0 -77
  266. package/src/examples/yamlTerminologyExample.ts +0 -346
  267. package/src/functions/deployments.ts +0 -220
  268. package/src/functions/fnConfigDiscovery.ts +0 -103
  269. package/src/functions/methods.ts +0 -284
  270. package/src/functions/pathResolution.ts +0 -227
  271. package/src/functions/templates/count-docs-in-collection/README.md +0 -54
  272. package/src/functions/templates/count-docs-in-collection/package.json +0 -25
  273. package/src/functions/templates/count-docs-in-collection/src/main.ts +0 -159
  274. package/src/functions/templates/count-docs-in-collection/src/request.ts +0 -9
  275. package/src/functions/templates/count-docs-in-collection/tsconfig.json +0 -28
  276. package/src/functions/templates/hono-typescript/README.md +0 -286
  277. package/src/functions/templates/hono-typescript/package.json +0 -26
  278. package/src/functions/templates/hono-typescript/src/adapters/request.ts +0 -74
  279. package/src/functions/templates/hono-typescript/src/adapters/response.ts +0 -106
  280. package/src/functions/templates/hono-typescript/src/app.ts +0 -180
  281. package/src/functions/templates/hono-typescript/src/context.ts +0 -103
  282. package/src/functions/templates/hono-typescript/src/middleware/appwrite.ts +0 -119
  283. package/src/functions/templates/hono-typescript/tsconfig.json +0 -20
  284. package/src/functions/templates/typescript-node/README.md +0 -32
  285. package/src/functions/templates/typescript-node/package.json +0 -25
  286. package/src/functions/templates/typescript-node/src/context.ts +0 -103
  287. package/src/functions/templates/typescript-node/src/index.ts +0 -29
  288. package/src/functions/templates/typescript-node/tsconfig.json +0 -28
  289. package/src/functions/templates/uv/README.md +0 -31
  290. package/src/functions/templates/uv/pyproject.toml +0 -30
  291. package/src/functions/templates/uv/src/__init__.py +0 -0
  292. package/src/functions/templates/uv/src/context.py +0 -125
  293. package/src/functions/templates/uv/src/index.py +0 -46
  294. package/src/init.ts +0 -62
  295. package/src/interactiveCLI.ts +0 -1136
  296. package/src/main.ts +0 -1670
  297. package/src/migrations/afterImportActions.ts +0 -580
  298. package/src/migrations/appwriteToX.ts +0 -664
  299. package/src/migrations/comprehensiveTransfer.ts +0 -2285
  300. package/src/migrations/dataLoader.ts +0 -1702
  301. package/src/migrations/importController.ts +0 -428
  302. package/src/migrations/importDataActions.ts +0 -315
  303. package/src/migrations/relationships.ts +0 -334
  304. package/src/migrations/services/DataTransformationService.ts +0 -196
  305. package/src/migrations/services/FileHandlerService.ts +0 -311
  306. package/src/migrations/services/ImportOrchestrator.ts +0 -666
  307. package/src/migrations/services/RateLimitManager.ts +0 -363
  308. package/src/migrations/services/RelationshipResolver.ts +0 -461
  309. package/src/migrations/services/UserMappingService.ts +0 -345
  310. package/src/migrations/services/ValidationService.ts +0 -349
  311. package/src/migrations/transfer.ts +0 -1068
  312. package/src/migrations/yaml/YamlImportConfigLoader.ts +0 -439
  313. package/src/migrations/yaml/YamlImportIntegration.ts +0 -446
  314. package/src/migrations/yaml/generateImportSchemas.ts +0 -1354
  315. package/src/schemas/authUser.ts +0 -23
  316. package/src/setup.ts +0 -8
  317. package/src/setupCommands.ts +0 -603
  318. package/src/setupController.ts +0 -43
  319. package/src/shared/attributeMapper.ts +0 -229
  320. package/src/shared/backupMetadataSchema.ts +0 -93
  321. package/src/shared/backupTracking.ts +0 -211
  322. package/src/shared/confirmationDialogs.ts +0 -327
  323. package/src/shared/errorUtils.ts +0 -110
  324. package/src/shared/functionManager.ts +0 -537
  325. package/src/shared/jsonSchemaGenerator.ts +0 -383
  326. package/src/shared/logging.ts +0 -149
  327. package/src/shared/messageFormatter.ts +0 -208
  328. package/src/shared/migrationHelpers.ts +0 -232
  329. package/src/shared/operationLogger.ts +0 -20
  330. package/src/shared/operationQueue.ts +0 -377
  331. package/src/shared/operationsTable.ts +0 -338
  332. package/src/shared/operationsTableSchema.ts +0 -60
  333. package/src/shared/progressManager.ts +0 -278
  334. package/src/shared/pydanticModelGenerator.ts +0 -618
  335. package/src/shared/relationshipExtractor.ts +0 -214
  336. package/src/shared/schemaGenerator.ts +0 -644
  337. package/src/shared/selectionDialogs.ts +0 -749
  338. package/src/storage/backupCompression.ts +0 -88
  339. package/src/storage/methods.ts +0 -698
  340. package/src/storage/schemas.ts +0 -205
  341. package/src/tables/indexManager.ts +0 -409
  342. package/src/types/node-appwrite-tablesdb.d.ts +0 -44
  343. package/src/types.ts +0 -9
  344. package/src/users/methods.ts +0 -359
  345. package/src/utils/ClientFactory.ts +0 -240
  346. package/src/utils/configDiscovery.ts +0 -557
  347. package/src/utils/configMigration.ts +0 -348
  348. package/src/utils/constantsGenerator.ts +0 -369
  349. package/src/utils/dataConverters.ts +0 -159
  350. package/src/utils/directoryUtils.ts +0 -61
  351. package/src/utils/getClientFromConfig.ts +0 -257
  352. package/src/utils/helperFunctions.ts +0 -228
  353. package/src/utils/index.ts +0 -2
  354. package/src/utils/loadConfigs.ts +0 -449
  355. package/src/utils/pathResolvers.ts +0 -81
  356. package/src/utils/projectConfig.ts +0 -340
  357. package/src/utils/retryFailedPromises.ts +0 -29
  358. package/src/utils/sessionAuth.ts +0 -230
  359. package/src/utils/setupFiles.ts +0 -1238
  360. package/src/utils/typeGuards.ts +0 -65
  361. package/src/utils/validationRules.ts +0 -88
  362. package/src/utils/versionDetection.ts +0 -292
  363. package/src/utils/yamlConverter.ts +0 -542
  364. package/src/utils/yamlLoader.ts +0 -371
  365. package/src/utilsController.ts +0 -1213
  366. package/tests/README.md +0 -497
  367. package/tests/adapters/AdapterFactory.test.ts +0 -277
  368. package/tests/integration/syncOperations.test.ts +0 -463
  369. package/tests/jest.config.js +0 -25
  370. package/tests/migration/configMigration.test.ts +0 -546
  371. package/tests/setup.ts +0 -62
  372. package/tests/testUtils.ts +0 -340
  373. package/tests/utils/loadConfigs.test.ts +0 -350
  374. package/tests/validation/configValidation.test.ts +0 -412
  375. package/tmp-sync-test/.appwrite/collections/TestCollection.yaml +0 -7
  376. package/tsconfig.json +0 -44
package/dist/main.js CHANGED
@@ -5,22 +5,18 @@ import { hideBin } from "yargs/helpers";
5
5
  import { InteractiveCLI } from "./interactiveCLI.js";
6
6
  import { UtilsController } from "./utilsController.js";
7
7
  import { Databases, Storage } from "node-appwrite";
8
- import { getClient } from "./utils/getClientFromConfig.js";
8
+ import { getClient } from "appwrite-utils-helpers";
9
9
  import { fetchAllDatabases } from "./databases/methods.js";
10
10
  import { setupDirsFiles } from "./utils/setupFiles.js";
11
11
  import { fetchAllCollections } from "./collections/methods.js";
12
12
  import chalk from "chalk";
13
13
  import { listSpecifications } from "./functions/methods.js";
14
- import { MessageFormatter } from "./shared/messageFormatter.js";
14
+ import { MessageFormatter, logger, AuthenticationError } from "appwrite-utils-helpers";
15
15
  import { ConfirmationDialogs } from "./shared/confirmationDialogs.js";
16
16
  import { SelectionDialogs } from "./shared/selectionDialogs.js";
17
- import { logger } from "./shared/logging.js";
18
17
  import path from "path";
19
18
  import fs from "fs";
20
19
  import { createRequire } from "node:module";
21
- import { loadAppwriteProjectConfig, findAppwriteProjectConfig, projectConfigToAppwriteConfig, } from "./utils/projectConfig.js";
22
- import { hasSessionAuth, getAvailableSessions, getAuthenticationStatus, } from "./utils/sessionAuth.js";
23
- import { findYamlConfig, loadYamlConfigWithSession, } from "./config/yamlConfig.js";
24
20
  const require = createRequire(import.meta.url);
25
21
  if (!globalThis.require) {
26
22
  globalThis.require = require;
@@ -443,137 +439,85 @@ const argv = yargs(hideBin(process.argv))
443
439
  .option("sessionCookie", {
444
440
  type: "string",
445
441
  description: "Explicit session cookie to use for authentication",
442
+ })
443
+ .option("importFile", {
444
+ alias: ["import-file"],
445
+ type: "string",
446
+ description: "Import a CSV or JSON file directly into a table (no config needed)",
447
+ })
448
+ .option("targetDb", {
449
+ alias: ["target-db"],
450
+ type: "string",
451
+ description: "Target database ID for --importFile (prompted if omitted)",
452
+ })
453
+ .option("targetTable", {
454
+ alias: ["target-table"],
455
+ type: "string",
456
+ description: "Target table ID for --importFile (prompted if omitted)",
446
457
  })
447
458
  .parse();
448
459
  async function main() {
449
460
  const startTime = Date.now();
450
461
  const operationStats = {};
451
- // Early session detection for better user guidance
452
- const availableSessions = getAvailableSessions();
453
- let hasAnyValidSessions = availableSessions.length > 0;
454
462
  if (argv.it) {
455
- const cli = new InteractiveCLI(process.cwd());
463
+ const cli = new InteractiveCLI(process.cwd(), {
464
+ useSession: argv.useSession,
465
+ sessionCookie: argv.sessionCookie
466
+ });
456
467
  await cli.run();
457
468
  }
458
469
  else {
459
- // Enhanced config creation with session and project file support
460
- let directConfig = undefined;
461
- // Show authentication status on startup if no config provided
462
- if (!argv.config &&
463
- !argv.endpoint &&
464
- !argv.projectId &&
465
- !argv.apiKey &&
466
- !argv.useSession &&
467
- !argv.sessionCookie) {
468
- if (hasAnyValidSessions) {
469
- MessageFormatter.info(`Found ${availableSessions.length} available session(s)`, { prefix: "Auth" });
470
- availableSessions.forEach((session) => {
471
- MessageFormatter.info(` \u2022 ${session.projectId} (${session.email || "unknown"}) at ${session.endpoint}`, { prefix: "Auth" });
472
- });
473
- MessageFormatter.info("Use --session to enable session authentication", { prefix: "Auth" });
474
- }
475
- else {
476
- MessageFormatter.info("No active Appwrite sessions found", {
477
- prefix: "Auth",
478
- });
479
- MessageFormatter.info("\u2022 Run 'appwrite login' to authenticate with session", { prefix: "Auth" });
480
- MessageFormatter.info("\u2022 Or provide --apiKey for API key authentication", { prefix: "Auth" });
481
- }
482
- }
483
- // Priority 1: Check for appwrite.json project configuration
484
- const projectConfigPath = findAppwriteProjectConfig(process.cwd());
485
- if (projectConfigPath) {
486
- const projectConfig = loadAppwriteProjectConfig(projectConfigPath);
487
- if (projectConfig) {
488
- directConfig = projectConfigToAppwriteConfig(projectConfig);
489
- MessageFormatter.info(`Loaded project configuration from ${projectConfigPath}`, { prefix: "CLI" });
490
- }
491
- }
492
- // Priority 2: CLI arguments override project config
493
- if (argv.endpoint ||
494
- argv.projectId ||
495
- argv.apiKey ||
496
- argv.useSession ||
497
- argv.sessionCookie) {
498
- directConfig = {
499
- ...directConfig,
500
- appwriteEndpoint: argv.endpoint || directConfig?.appwriteEndpoint,
501
- appwriteProject: argv.projectId || directConfig?.appwriteProject,
502
- appwriteKey: argv.apiKey || directConfig?.appwriteKey,
470
+ // Non-interactive mode - pass auth flags through to controller
471
+ // ConfigManager will handle config discovery and auth decisions
472
+ // Users can provide credentials via CLI flags even without a config file
473
+ const controller = UtilsController.getInstance(process.cwd());
474
+ // Build init options from CLI flags
475
+ const initOptions = {
476
+ useSession: argv.useSession,
477
+ sessionCookie: argv.sessionCookie,
478
+ preferJson: argv.appwriteConfig,
479
+ };
480
+ // Add CLI overrides if provided - these can work even without a config file
481
+ if (argv.endpoint || argv.projectId || argv.apiKey) {
482
+ initOptions.overrides = {
483
+ appwriteEndpoint: argv.endpoint,
484
+ appwriteProject: argv.projectId,
485
+ appwriteKey: argv.apiKey,
503
486
  };
504
487
  }
505
- // Priority 3: Session authentication support with improved detection
506
- let sessionAuthAvailable = false;
507
- if (directConfig?.appwriteEndpoint && directConfig?.appwriteProject) {
508
- sessionAuthAvailable = hasSessionAuth(directConfig.appwriteEndpoint, directConfig.appwriteProject);
488
+ try {
489
+ await controller.init(initOptions);
509
490
  }
510
- if (argv.useSession || argv.sessionCookie) {
511
- if (argv.sessionCookie) {
512
- // Explicit session cookie provided
513
- MessageFormatter.info("Using explicit session cookie for authentication", { prefix: "Auth" });
514
- }
515
- else if (sessionAuthAvailable) {
516
- MessageFormatter.info("Session authentication detected and will be used", { prefix: "Auth" });
517
- }
518
- else {
519
- MessageFormatter.warning("Session authentication requested but no valid session found", { prefix: "Auth" });
520
- const availableSessions = getAvailableSessions();
521
- if (availableSessions.length > 0) {
522
- MessageFormatter.info(`Available sessions: ${availableSessions
523
- .map((s) => `${s.projectId} (${s.email || "unknown"})`)
524
- .join(", ")}`, { prefix: "Auth" });
525
- MessageFormatter.info("Use --session flag to enable session authentication", { prefix: "Auth" });
526
- }
527
- else {
528
- MessageFormatter.warning("No Appwrite CLI sessions found. Please run 'appwrite login' first.", { prefix: "Auth" });
529
- }
530
- MessageFormatter.error("Session authentication requested but not available", undefined, { prefix: "Auth" });
531
- return; // Exit early if session auth was requested but not available
491
+ catch (error) {
492
+ if (error instanceof AuthenticationError) {
493
+ MessageFormatter.error(error.getFormattedMessage(), undefined, { prefix: "Auth" });
494
+ process.exit(1);
532
495
  }
496
+ // Re-throw other errors
497
+ throw error;
533
498
  }
534
- else if (sessionAuthAvailable && !argv.apiKey) {
535
- // Auto-detect session authentication when no API key is provided
536
- MessageFormatter.info("Session authentication detected - no API key required", { prefix: "Auth" });
537
- MessageFormatter.info("Use --session flag to explicitly enable session authentication", { prefix: "Auth" });
538
- }
539
- // Enhanced session authentication support:
540
- // 1. If session auth is explicitly requested via flags, use it
541
- // 2. If no API key is provided but sessions are available, offer to use session auth
542
- // 3. Auto-detect session authentication when possible
543
- let finalDirectConfig = directConfig;
544
- if ((argv.useSession || argv.sessionCookie) &&
545
- (!directConfig ||
546
- !directConfig.appwriteEndpoint ||
547
- !directConfig.appwriteProject)) {
548
- // Don't pass incomplete directConfig - let UtilsController load YAML config normally
549
- finalDirectConfig = null;
499
+ // After init, check if we have a valid config (from file OR CLI overrides)
500
+ if (!controller.config) {
501
+ MessageFormatter.error("No Appwrite configuration available", undefined, { prefix: "CLI" });
502
+ MessageFormatter.info("Provide credentials via CLI flags (--endpoint, --projectId, --apiKey or --session)", { prefix: "CLI" });
503
+ MessageFormatter.info("Or create a config file using --setup", { prefix: "CLI" });
504
+ return;
550
505
  }
551
- else if (finalDirectConfig &&
552
- !finalDirectConfig.appwriteKey &&
553
- !argv.useSession &&
554
- !argv.sessionCookie) {
555
- // Auto-detect session authentication when no API key provided
556
- if (sessionAuthAvailable) {
557
- MessageFormatter.info("No API key provided, but session authentication is available", { prefix: "Auth" });
558
- MessageFormatter.info("Automatically using session authentication (add --session to suppress this message)", { prefix: "Auth" });
559
- // Implicitly enable session authentication
560
- argv.useSession = true;
506
+ const parsedArgv = argv;
507
+ if (argv.importFile) {
508
+ const { importFileFromPath, importFilePromptMissing } = await import("./cli/commands/importFileCommands.js");
509
+ if (!controller.adapter) {
510
+ MessageFormatter.error("No adapter available check your credentials", undefined, { prefix: "Import" });
511
+ return;
561
512
  }
562
- }
563
- // Create controller with session authentication support using singleton
564
- const controller = UtilsController.getInstance(process.cwd(), finalDirectConfig);
565
- // Pass session authentication and config options to the controller
566
- const initOptions = {};
567
- if (argv.useSession || argv.sessionCookie) {
568
- initOptions.useSession = true;
569
- if (argv.sessionCookie) {
570
- initOptions.sessionCookie = argv.sessionCookie;
513
+ if (parsedArgv.targetDb && parsedArgv.targetTable) {
514
+ await importFileFromPath(controller.adapter, argv.importFile, parsedArgv.targetDb, parsedArgv.targetTable);
571
515
  }
516
+ else {
517
+ await importFilePromptMissing(controller.adapter, controller.database, argv.importFile, parsedArgv.targetDb, parsedArgv.targetTable);
518
+ }
519
+ return;
572
520
  }
573
- if (argv.appwriteConfig) {
574
- initOptions.preferJson = true;
575
- }
576
- await controller.init(initOptions);
577
521
  if (argv.setup) {
578
522
  await setupDirsFiles(false, process.cwd());
579
523
  return;
@@ -584,7 +528,7 @@ async function main() {
584
528
  return;
585
529
  }
586
530
  if (argv.generateConstants) {
587
- const { ConstantsGenerator } = await import("./utils/constantsGenerator.js");
531
+ const { ConstantsGenerator } = await import("appwrite-utils-helpers");
588
532
  if (!controller.config) {
589
533
  MessageFormatter.error("No Appwrite configuration found", undefined, {
590
534
  prefix: "Constants",
@@ -650,7 +594,7 @@ async function main() {
650
594
  MessageFormatter.info(" • tables/ folder must not exist or be empty", { prefix: "Migration" });
651
595
  return;
652
596
  }
653
- const { migrateCollectionsToTables } = await import("./config/configMigration.js");
597
+ const { migrateCollectionsToTables } = await import("appwrite-utils-helpers");
654
598
  MessageFormatter.info("Starting collections to tables migration...", {
655
599
  prefix: "Migration",
656
600
  });
@@ -674,41 +618,9 @@ async function main() {
674
618
  }
675
619
  return;
676
620
  }
677
- if (!controller.config) {
678
- // Provide better guidance based on available authentication methods
679
- const availableSessions = getAvailableSessions();
680
- if (availableSessions.length > 0) {
681
- MessageFormatter.error("No Appwrite configuration found", undefined, {
682
- prefix: "CLI",
683
- });
684
- MessageFormatter.info("Available authentication options:", {
685
- prefix: "Auth",
686
- });
687
- MessageFormatter.info("• Session authentication: Add --session flag", {
688
- prefix: "Auth",
689
- });
690
- MessageFormatter.info("• API key authentication: Add --apiKey YOUR_API_KEY", { prefix: "Auth" });
691
- MessageFormatter.info(`• Available sessions: ${availableSessions
692
- .map((s) => `${s.projectId} (${s.email || "unknown"})`)
693
- .join(", ")}`, { prefix: "Auth" });
694
- }
695
- else {
696
- MessageFormatter.error("No Appwrite configuration found", undefined, {
697
- prefix: "CLI",
698
- });
699
- MessageFormatter.info("Authentication options:", { prefix: "Auth" });
700
- MessageFormatter.info("• Login with Appwrite CLI: Run 'appwrite login' then use --session flag", { prefix: "Auth" });
701
- MessageFormatter.info("• Use API key: Add --apiKey YOUR_API_KEY", {
702
- prefix: "Auth",
703
- });
704
- MessageFormatter.info("• Create config file: Run with --setup to initialize project configuration", { prefix: "Auth" });
705
- }
706
- return;
707
- }
708
- const parsedArgv = argv;
709
621
  // List backups if requested
710
622
  if (parsedArgv.listBackups) {
711
- const { AdapterFactory } = await import("./adapters/AdapterFactory.js");
623
+ const { AdapterFactory } = await import("appwrite-utils-helpers");
712
624
  const { listBackups } = await import("./shared/backupTracking.js");
713
625
  if (!controller.config) {
714
626
  MessageFormatter.error("No Appwrite configuration found", undefined, {
@@ -797,7 +709,7 @@ async function main() {
797
709
  // Comprehensive backup (all databases + all buckets)
798
710
  if (parsedArgv.comprehensiveBackup) {
799
711
  const { comprehensiveBackup } = await import("./backups/operations/comprehensiveBackup.js");
800
- const { AdapterFactory } = await import("./adapters/AdapterFactory.js");
712
+ const { AdapterFactory } = await import("appwrite-utils-helpers");
801
713
  // Get tracking database ID (interactive prompt if not specified)
802
714
  let trackingDatabaseId = parsedArgv.trackingDatabaseId;
803
715
  if (!trackingDatabaseId) {
@@ -971,7 +883,10 @@ async function main() {
971
883
  }
972
884
  // Build DatabaseSelection[] with tableIds per DB
973
885
  const databaseSelections = [];
974
- const allConfigItems = controller.config.collections || controller.config.tables || [];
886
+ const allConfigItems = [
887
+ ...(controller.config.collections || []),
888
+ ...(controller.config.tables || [])
889
+ ];
975
890
  let lastSelectedTableIds = null;
976
891
  for (const dbId of selectedDbIds) {
977
892
  const db = availableDatabases.find(d => d.$id === dbId);
@@ -987,8 +902,16 @@ async function main() {
987
902
  return one === dbId;
988
903
  return true; // eligible everywhere if unspecified
989
904
  });
990
- // Fetch available tables from remote for selection context
905
+ // Fetch available tables from remote for status/context
991
906
  const availableTables = await fetchAllCollections(dbId, controller.database);
907
+ const remoteTableIds = new Set(availableTables.map(table => table.$id));
908
+ const localItems = eligibleConfigItems;
909
+ const localItemIds = localItems.map(item => item.$id || item.id || item.tableId || item.name);
910
+ const localNewItems = localItems.filter(item => {
911
+ const itemId = item.$id || item.id || item.tableId || item.name;
912
+ return !remoteTableIds.has(itemId);
913
+ });
914
+ const localNewIds = localNewItems.map(item => item.$id || item.id || item.tableId || item.name);
992
915
  // Determine selected table IDs
993
916
  let selectedTableIds = [];
994
917
  if (parsedArgv.collectionIds) {
@@ -996,35 +919,57 @@ async function main() {
996
919
  selectedTableIds = parsedArgv.collectionIds.split(/[\,\s]+/).filter(Boolean);
997
920
  }
998
921
  else {
999
- // If we have a previous selection, offer to reuse it
922
+ const inquirer = (await import("inquirer")).default;
923
+ const choices = [];
1000
924
  if (lastSelectedTableIds && lastSelectedTableIds.length > 0) {
1001
- const inquirer = (await import("inquirer")).default;
1002
- const { reuseMode } = await inquirer.prompt([
1003
- {
1004
- type: "list",
1005
- name: "reuseMode",
1006
- message: `How do you want to select tables for ${db.name}?`,
1007
- choices: [
1008
- { name: `Use same selection as previous (${lastSelectedTableIds.length} items)`, value: "same" },
1009
- { name: `Filter by this database (manual select)`, value: "filter" },
1010
- { name: `Show all available in this database (manual select)`, value: "all" }
1011
- ],
1012
- default: "same"
1013
- }
1014
- ]);
1015
- if (reuseMode === "same") {
1016
- selectedTableIds = [...lastSelectedTableIds];
925
+ choices.push({
926
+ name: `Use same selection as previous (${lastSelectedTableIds.length} items)`,
927
+ value: "same"
928
+ });
929
+ }
930
+ if (localItemIds.length > 0) {
931
+ choices.push({
932
+ name: `Select all local items for ${db.name} (${localItemIds.length} items)`,
933
+ value: "all_local"
934
+ });
935
+ }
936
+ if (localNewIds.length > 0) {
937
+ choices.push({
938
+ name: `Select only new local items (not on remote) (${localNewIds.length} items)`,
939
+ value: "new_only"
940
+ });
941
+ }
942
+ choices.push({
943
+ name: "Manual selection",
944
+ value: "manual"
945
+ });
946
+ const { selectionMode } = await inquirer.prompt([
947
+ {
948
+ type: "list",
949
+ name: "selectionMode",
950
+ message: `How do you want to select tables for ${db.name}?`,
951
+ choices,
952
+ default: choices[0]?.value || "manual"
1017
953
  }
1018
- else if (reuseMode === "all") {
1019
- selectedTableIds = await SelectionDialogs.selectTablesForDatabase(dbId, db.name, availableTables, allConfigItems, { showSelectAll: false, allowNewOnly: false, defaultSelected: lastSelectedTableIds });
954
+ ]);
955
+ if (selectionMode === "same") {
956
+ selectedTableIds = [...(lastSelectedTableIds || [])];
957
+ }
958
+ else if (selectionMode === "all_local") {
959
+ selectedTableIds = [...localItemIds];
960
+ }
961
+ else if (selectionMode === "new_only") {
962
+ selectedTableIds = [...localNewIds];
963
+ }
964
+ else {
965
+ if (localItems.length === 0) {
966
+ MessageFormatter.warning(`No local tables/collections available for ${db.name}`, { prefix: "Push" });
967
+ selectedTableIds = [];
1020
968
  }
1021
969
  else {
1022
- selectedTableIds = await SelectionDialogs.selectTablesForDatabase(dbId, db.name, availableTables, eligibleConfigItems, { showSelectAll: false, allowNewOnly: true, defaultSelected: lastSelectedTableIds });
970
+ selectedTableIds = await SelectionDialogs.selectTablesForDatabase(dbId, db.name, localItems, availableTables, { showSelectAll: localItems.length > 1, allowNewOnly: false, defaultSelected: lastSelectedTableIds || [] });
1023
971
  }
1024
972
  }
1025
- else {
1026
- selectedTableIds = await SelectionDialogs.selectTablesForDatabase(dbId, db.name, availableTables, eligibleConfigItems, { showSelectAll: false, allowNewOnly: true, defaultSelected: [] });
1027
- }
1028
973
  }
1029
974
  databaseSelections.push({
1030
975
  databaseId: db.$id,
@@ -3,10 +3,9 @@ import { InputFile } from "node-appwrite/file";
3
3
  import path from "path";
4
4
  import fs from "fs";
5
5
  import os from "os";
6
- import { logger } from "../shared/logging.js";
6
+ import { logger, MessageFormatter } from "appwrite-utils-helpers";
7
7
  import { tryAwaitWithRetry, } from "appwrite-utils";
8
- import { getClientFromConfig } from "../utils/getClientFromConfig.js";
9
- import { MessageFormatter } from "../shared/messageFormatter.js";
8
+ import { getClientFromConfig } from "appwrite-utils-helpers";
10
9
  export const getDatabaseFromConfig = (config) => {
11
10
  getClientFromConfig(config); // Sets config.appwriteClient if missing
12
11
  return new Databases(config.appwriteClient);
@@ -1,6 +1,6 @@
1
1
  import { Storage, type Models } from "node-appwrite";
2
2
  import { type AppwriteConfig } from "appwrite-utils";
3
- import type { DatabaseAdapter } from "../adapters/DatabaseAdapter.js";
3
+ import type { DatabaseAdapter } from "appwrite-utils-helpers";
4
4
  import type { DatabaseSelection, BucketSelection } from "../shared/selectionDialogs.js";
5
5
  export declare class AppwriteToX {
6
6
  config: AppwriteConfig;
@@ -1,15 +1,14 @@
1
- import { SchemaGenerator } from "../shared/schemaGenerator.js";
2
- import { findYamlConfig } from "../config/yamlConfig.js";
1
+ import { SchemaGenerator, findYamlConfig } from "appwrite-utils-helpers";
3
2
  import { Client, Compression, Databases, Query, Storage, } from "node-appwrite";
4
3
  import { fetchAllCollections } from "../collections/methods.js";
5
4
  import { fetchAllDatabases } from "../databases/methods.js";
6
5
  import { CollectionSchema, attributeSchema, AppwriteConfigSchema, permissionsSchema, attributesSchema, indexesSchema, parseAttribute, } from "appwrite-utils";
7
6
  import { getDatabaseFromConfig } from "./afterImportActions.js";
8
- import { getAdapterFromConfig } from "../utils/getClientFromConfig.js";
7
+ import { getAdapterFromConfig } from "appwrite-utils-helpers";
9
8
  import { listBuckets } from "../storage/methods.js";
10
9
  import { listFunctions, listFunctionDeployments, getFunction } from "../functions/methods.js";
11
- import { MessageFormatter } from "../shared/messageFormatter.js";
12
- import { isLegacyDatabases } from "../utils/typeGuards.js";
10
+ import { MessageFormatter } from "appwrite-utils-helpers";
11
+ import { isLegacyDatabases } from "appwrite-utils-helpers";
13
12
  /**
14
13
  * Convert between collection and table terminology based on data structure
15
14
  */
@@ -80,8 +79,11 @@ export class AppwriteToX {
80
79
  const client = new Client();
81
80
  client
82
81
  .setEndpoint(this.config.appwriteEndpoint)
83
- .setProject(this.config.appwriteProject)
84
- .setKey(this.config.appwriteKey);
82
+ .setProject(this.config.appwriteProject);
83
+ // Only set API key if provided (session auth is alternative)
84
+ if (this.config.appwriteKey) {
85
+ client.setKey(this.config.appwriteKey);
86
+ }
85
87
  this.config.appwriteClient = client;
86
88
  }
87
89
  }
@@ -441,7 +443,7 @@ export class AppwriteToX {
441
443
  timeout: func.timeout || 15,
442
444
  enabled: func.enabled !== false,
443
445
  logging: func.logging !== false,
444
- entrypoint: func.entrypoint || "src/index.ts",
446
+ entrypoint: func.entrypoint || "src/main.ts",
445
447
  commands: func.commands || "npm install",
446
448
  scopes: Array.isArray(func.scopes) ? func.scopes : [],
447
449
  dirPath: `functions/${func.name}`,
@@ -1,10 +1,9 @@
1
1
  import { converterFunctions, tryAwaitWithRetry, parseAttribute, objectNeedsUpdate, } from "appwrite-utils";
2
2
  import { Client, Databases, Storage, Users, Functions, Teams, Query, AppwriteException, } from "node-appwrite";
3
3
  import { InputFile } from "node-appwrite/file";
4
- import { MessageFormatter } from "../shared/messageFormatter.js";
4
+ import { MessageFormatter, getClient } from "appwrite-utils-helpers";
5
5
  import { processQueue, queuedOperations } from "../shared/operationQueue.js";
6
6
  import { ProgressManager } from "../shared/progressManager.js";
7
- import { getClient } from "../utils/getClientFromConfig.js";
8
7
  import { transferDatabaseLocalToLocal, transferDatabaseLocalToRemote, transferStorageLocalToLocal, transferStorageLocalToRemote, transferUsersLocalToRemote, } from "./transfer.js";
9
8
  import { deployLocalFunction } from "../functions/deployments.js";
10
9
  import { listFunctions, downloadLatestFunctionDeployment, } from "../functions/methods.js";
@@ -12,8 +11,7 @@ import pLimit from "p-limit";
12
11
  import chalk from "chalk";
13
12
  import { join } from "node:path";
14
13
  import fs from "node:fs";
15
- import { getAdapter } from "../utils/getClientFromConfig.js";
16
- import { mapToCreateAttributeParams } from "../shared/attributeMapper.js";
14
+ import { getAdapter, mapToCreateAttributeParams } from "appwrite-utils-helpers";
17
15
  export class ComprehensiveTransfer {
18
16
  options;
19
17
  sourceClient;
@@ -714,7 +712,7 @@ export class ComprehensiveTransfer {
714
712
  specification: func.specification,
715
713
  dirPath: functionPath,
716
714
  };
717
- await deployLocalFunction(this.targetClient, func.name, functionConfig);
715
+ await deployLocalFunction(this.targetClient, func.name, functionConfig, undefined, this.tempDir);
718
716
  this.results.functions.transferred++;
719
717
  MessageFormatter.success(`Function ${func.name} transferred successfully`, { prefix: "Transfer" });
720
718
  }
@@ -606,6 +606,8 @@ export declare class DataLoader {
606
606
  private userIdSet;
607
607
  userExistsMap: Map<string, boolean>;
608
608
  private shouldWriteFile;
609
+ private _adapter;
610
+ private getAdapter;
609
611
  constructor(appwriteFolderPath: string, importDataActions: ImportDataActions, database: Databases, config: AppwriteConfig, shouldWriteFile?: boolean);
610
612
  getCollectionKey(name: string): string;
611
613
  /**
@@ -633,9 +635,9 @@ export declare class DataLoader {
633
635
  * @returns The transformed item.
634
636
  */
635
637
  transformData(item: any, attributeMappings: AttributeMappings): any;
636
- setupMaps(dbId: string): Promise<void>;
638
+ setupMaps(dbId: string, specificCollections?: string[]): Promise<void>;
637
639
  getAllUsers(): Promise<import("node-appwrite").Models.User<import("node-appwrite").Models.Preferences>[]>;
638
- start(dbId: string): Promise<void>;
640
+ start(dbId: string, specificCollections?: string[]): Promise<void>;
639
641
  /**
640
642
  * Deals with merged users by iterating through all collections in the configuration.
641
643
  * We have merged users if there are duplicate emails or phones in the import data.