revisium 1.2.1 → 2.0.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 (513) hide show
  1. package/.github/workflows/ci.yml +12 -2
  2. package/README.md +66 -27
  3. package/codecov.yml +12 -1
  4. package/dist/e2e/setup/global-setup.d.ts +1 -0
  5. package/dist/e2e/setup/global-setup.js +30 -0
  6. package/dist/e2e/setup/global-setup.js.map +1 -0
  7. package/dist/e2e/setup/global-teardown.d.ts +1 -0
  8. package/dist/e2e/setup/global-teardown.js +40 -0
  9. package/dist/e2e/setup/global-teardown.js.map +1 -0
  10. package/dist/e2e/setup/test-setup.d.ts +1 -0
  11. package/dist/e2e/setup/test-setup.js +22 -0
  12. package/dist/e2e/setup/test-setup.js.map +1 -0
  13. package/dist/e2e/utils/api-client.d.ts +39 -0
  14. package/dist/e2e/utils/api-client.js +185 -0
  15. package/dist/e2e/utils/api-client.js.map +1 -0
  16. package/dist/e2e/utils/cli-runner.d.ts +17 -0
  17. package/dist/e2e/utils/cli-runner.js +65 -0
  18. package/dist/e2e/utils/cli-runner.js.map +1 -0
  19. package/dist/e2e/utils/constants.d.ts +10 -0
  20. package/dist/e2e/utils/constants.js +14 -0
  21. package/dist/e2e/utils/constants.js.map +1 -0
  22. package/dist/e2e/utils/docker-helper.d.ts +3 -0
  23. package/dist/e2e/utils/docker-helper.js +34 -0
  24. package/dist/e2e/utils/docker-helper.js.map +1 -0
  25. package/dist/e2e/utils/index.d.ts +5 -0
  26. package/dist/e2e/utils/index.js +22 -0
  27. package/dist/e2e/utils/index.js.map +1 -0
  28. package/dist/e2e/utils/test-project.d.ts +5 -0
  29. package/dist/e2e/utils/test-project.js +32 -0
  30. package/dist/e2e/utils/test-project.js.map +1 -0
  31. package/dist/package.json +18 -8
  32. package/dist/src/__generated__/api.d.ts +374 -373
  33. package/dist/src/__generated__/api.js +161 -161
  34. package/dist/src/__generated__/api.js.map +1 -1
  35. package/dist/src/app.module.js +32 -55
  36. package/dist/src/app.module.js.map +1 -1
  37. package/dist/src/commands/base-sync.command.d.ts +35 -0
  38. package/dist/src/commands/{sync-data.command.js → base-sync.command.js} +53 -87
  39. package/dist/src/commands/base-sync.command.js.map +1 -0
  40. package/dist/src/commands/base.command.d.ts +1 -11
  41. package/dist/src/commands/base.command.js +3 -68
  42. package/dist/src/commands/base.command.js.map +1 -1
  43. package/dist/src/commands/migration/apply-migrations.command.d.ts +22 -0
  44. package/dist/src/commands/{apply-migrations.command.js → migration/apply-migrations.command.js} +31 -34
  45. package/dist/src/commands/migration/apply-migrations.command.js.map +1 -0
  46. package/dist/src/commands/migration/migration.command.js.map +1 -0
  47. package/dist/src/commands/migration/save-migrations.command.d.ts +16 -0
  48. package/dist/src/commands/{save-migrations.command.js → migration/save-migrations.command.js} +16 -17
  49. package/dist/src/commands/migration/save-migrations.command.js.map +1 -0
  50. package/dist/src/commands/rows/rows.command.js.map +1 -0
  51. package/dist/src/commands/rows/save-rows.command.d.ts +20 -0
  52. package/dist/src/commands/{save-rows.command.js → rows/save-rows.command.js} +28 -68
  53. package/dist/src/commands/rows/save-rows.command.js.map +1 -0
  54. package/dist/src/commands/rows/upload-rows.command.d.ts +32 -0
  55. package/dist/src/commands/rows/upload-rows.command.js +213 -0
  56. package/dist/src/commands/rows/upload-rows.command.js.map +1 -0
  57. package/dist/src/commands/{create-migrations.command.d.ts → schema/create-migrations.command.d.ts} +4 -3
  58. package/dist/src/commands/{create-migrations.command.js → schema/create-migrations.command.js} +17 -14
  59. package/dist/src/commands/schema/create-migrations.command.js.map +1 -0
  60. package/dist/src/commands/schema/save-schema.command.d.ts +16 -0
  61. package/dist/src/commands/schema/save-schema.command.js +86 -0
  62. package/dist/src/commands/schema/save-schema.command.js.map +1 -0
  63. package/dist/src/commands/schema/schema.command.js.map +1 -0
  64. package/dist/src/commands/sync/sync-all.command.d.ts +13 -0
  65. package/dist/src/commands/sync/sync-all.command.js +91 -0
  66. package/dist/src/commands/sync/sync-all.command.js.map +1 -0
  67. package/dist/src/commands/sync/sync-data.command.d.ts +12 -0
  68. package/dist/src/commands/sync/sync-data.command.js +72 -0
  69. package/dist/src/commands/sync/sync-data.command.js.map +1 -0
  70. package/dist/src/commands/sync/sync-schema.command.d.ts +11 -0
  71. package/dist/src/commands/sync/sync-schema.command.js +66 -0
  72. package/dist/src/commands/sync/sync-schema.command.js.map +1 -0
  73. package/dist/src/commands/sync/sync.command.js.map +1 -0
  74. package/dist/src/coverage.d.ts +1 -0
  75. package/dist/src/coverage.js +17 -0
  76. package/dist/src/coverage.js.map +1 -0
  77. package/dist/src/main.js +19 -5
  78. package/dist/src/main.js.map +1 -1
  79. package/dist/src/services/common/index.d.ts +3 -0
  80. package/dist/src/services/common/index.js +10 -0
  81. package/dist/src/services/common/index.js.map +1 -0
  82. package/dist/src/services/common/interactive.service.js.map +1 -0
  83. package/dist/src/services/{json-validator.service.js → common/json-validator.service.js} +5 -5
  84. package/dist/src/services/common/json-validator.service.js.map +1 -0
  85. package/dist/src/services/common/logger.service.d.ts +33 -0
  86. package/dist/src/services/common/logger.service.js +118 -0
  87. package/dist/src/services/common/logger.service.js.map +1 -0
  88. package/dist/src/services/connection/api-client-adapter.d.ts +5 -0
  89. package/dist/src/services/connection/api-client-adapter.js +49 -0
  90. package/dist/src/services/connection/api-client-adapter.js.map +1 -0
  91. package/dist/src/services/connection/api-client.d.ts +11 -0
  92. package/dist/src/services/connection/api-client.js +66 -0
  93. package/dist/src/services/connection/api-client.js.map +1 -0
  94. package/dist/src/services/connection/connection-factory.service.d.ts +24 -0
  95. package/dist/src/services/connection/connection-factory.service.js +103 -0
  96. package/dist/src/services/connection/connection-factory.service.js.map +1 -0
  97. package/dist/src/services/connection/connection.service.d.ts +90 -0
  98. package/dist/src/services/connection/connection.service.js +67 -0
  99. package/dist/src/services/connection/connection.service.js.map +1 -0
  100. package/dist/src/services/connection/index.d.ts +4 -0
  101. package/dist/src/services/connection/index.js +12 -0
  102. package/dist/src/services/connection/index.js.map +1 -0
  103. package/dist/src/services/index.d.ts +4 -0
  104. package/dist/src/services/index.js +21 -0
  105. package/dist/src/services/index.js.map +1 -0
  106. package/dist/src/services/sync/commit-revision.service.d.ts +16 -0
  107. package/dist/src/services/sync/commit-revision.service.js +88 -0
  108. package/dist/src/services/sync/commit-revision.service.js.map +1 -0
  109. package/dist/src/services/sync/file-row-loader.service.d.ts +12 -0
  110. package/dist/src/services/sync/file-row-loader.service.js +65 -0
  111. package/dist/src/services/sync/file-row-loader.service.js.map +1 -0
  112. package/dist/src/services/sync/index.d.ts +7 -0
  113. package/dist/src/services/sync/index.js +19 -0
  114. package/dist/src/services/sync/index.js.map +1 -0
  115. package/dist/src/services/{row-sync.service.d.ts → sync/row-sync.service.d.ts} +12 -38
  116. package/dist/src/services/sync/row-sync.service.js +155 -0
  117. package/dist/src/services/sync/row-sync.service.js.map +1 -0
  118. package/dist/src/services/sync/sync-api.service.d.ts +14 -0
  119. package/dist/src/services/sync/sync-api.service.js +57 -0
  120. package/dist/src/services/sync/sync-api.service.js.map +1 -0
  121. package/dist/src/services/{sync-data.service.d.ts → sync/sync-data.service.d.ts} +4 -4
  122. package/dist/src/services/{sync-data.service.js → sync/sync-data.service.js} +35 -50
  123. package/dist/src/services/sync/sync-data.service.js.map +1 -0
  124. package/dist/src/services/{sync-schema.service.d.ts → sync/sync-schema.service.d.ts} +4 -2
  125. package/dist/src/services/{sync-schema.service.js → sync/sync-schema.service.js} +19 -15
  126. package/dist/src/services/sync/sync-schema.service.js.map +1 -0
  127. package/dist/src/services/sync/table-dependency.service.js.map +1 -0
  128. package/dist/src/services/url/auth-prompt.service.d.ts +19 -0
  129. package/dist/src/services/url/auth-prompt.service.js +63 -0
  130. package/dist/src/services/url/auth-prompt.service.js.map +1 -0
  131. package/dist/src/services/url/index.d.ts +3 -0
  132. package/dist/src/services/url/index.js +10 -0
  133. package/dist/src/services/url/index.js.map +1 -0
  134. package/dist/src/services/url/url-builder.service.d.ts +32 -0
  135. package/dist/src/services/url/url-builder.service.js +156 -0
  136. package/dist/src/services/url/url-builder.service.js.map +1 -0
  137. package/dist/src/services/url/url-parser.service.d.ts +21 -0
  138. package/dist/src/services/url/url-parser.service.js +135 -0
  139. package/dist/src/services/url/url-parser.service.js.map +1 -0
  140. package/dist/src/types/errors.d.ts +12 -0
  141. package/dist/src/types/errors.js +31 -0
  142. package/dist/src/types/errors.js.map +1 -0
  143. package/dist/src/utils/error-formatter.utils.d.ts +8 -0
  144. package/dist/src/utils/error-formatter.utils.js +22 -0
  145. package/dist/src/utils/error-formatter.utils.js.map +1 -0
  146. package/dist/src/utils/paginated-fetcher.d.ts +34 -0
  147. package/dist/src/utils/paginated-fetcher.js +50 -0
  148. package/dist/src/utils/paginated-fetcher.js.map +1 -0
  149. package/dist/src/utils/progress.d.ts +24 -0
  150. package/dist/src/utils/progress.js +29 -0
  151. package/dist/src/utils/progress.js.map +1 -0
  152. package/dist/src/utils/stats-formatter.utils.d.ts +14 -0
  153. package/dist/src/utils/stats-formatter.utils.js +50 -0
  154. package/dist/src/utils/stats-formatter.utils.js.map +1 -0
  155. package/dist/tsconfig.build.tsbuildinfo +1 -1
  156. package/docs/authentication.md +52 -23
  157. package/docs/configuration.md +21 -26
  158. package/docs/docker-deployment.md +244 -75
  159. package/docs/url-format.md +131 -7
  160. package/e2e/docker-compose.e2e.yml +31 -0
  161. package/e2e/fixtures/demo-quests/migrations.json +965 -0
  162. package/e2e/fixtures/demo-quests/rows/abilities/crystal_shield.json +35 -0
  163. package/e2e/fixtures/demo-quests/rows/abilities/fireball.json +35 -0
  164. package/e2e/fixtures/demo-quests/rows/abilities/stealth.json +35 -0
  165. package/e2e/fixtures/demo-quests/rows/classes/archer.json +13 -0
  166. package/e2e/fixtures/demo-quests/rows/classes/mage.json +13 -0
  167. package/e2e/fixtures/demo-quests/rows/classes/rogue.json +13 -0
  168. package/e2e/fixtures/demo-quests/rows/classes/warrior.json +13 -0
  169. package/e2e/fixtures/demo-quests/rows/effects/blinding_light.json +27 -0
  170. package/e2e/fixtures/demo-quests/rows/effects/fire_shield.json +27 -0
  171. package/e2e/fixtures/demo-quests/rows/effects/frost_ring.json +27 -0
  172. package/e2e/fixtures/demo-quests/rows/effects/haste.json +27 -0
  173. package/e2e/fixtures/demo-quests/rows/effects/healing_ray.json +27 -0
  174. package/e2e/fixtures/demo-quests/rows/effects/ice_arrow.json +27 -0
  175. package/e2e/fixtures/demo-quests/rows/effects/magic_barrier.json +27 -0
  176. package/e2e/fixtures/demo-quests/rows/effects/mana_shield.json +27 -0
  177. package/e2e/fixtures/demo-quests/rows/effects/poison_cloud.json +27 -0
  178. package/e2e/fixtures/demo-quests/rows/effects/stone_skin.json +27 -0
  179. package/e2e/fixtures/demo-quests/rows/effects/whirlwind_blades.json +27 -0
  180. package/e2e/fixtures/demo-quests/rows/factions/black_order.json +13 -0
  181. package/e2e/fixtures/demo-quests/rows/factions/desert_nomads.json +13 -0
  182. package/e2e/fixtures/demo-quests/rows/factions/forest_elves.json +13 -0
  183. package/e2e/fixtures/demo-quests/rows/factions/guardians.json +13 -0
  184. package/e2e/fixtures/demo-quests/rows/factions/holy_crusaders.json +13 -0
  185. package/e2e/fixtures/demo-quests/rows/factions/hunters.json +13 -0
  186. package/e2e/fixtures/demo-quests/rows/factions/iron_legion.json +13 -0
  187. package/e2e/fixtures/demo-quests/rows/factions/mages_guild.json +13 -0
  188. package/e2e/fixtures/demo-quests/rows/factions/shadow_assassins.json +13 -0
  189. package/e2e/fixtures/demo-quests/rows/factions/thieves.json +13 -0
  190. package/e2e/fixtures/demo-quests/rows/item_types/accessory.json +13 -0
  191. package/e2e/fixtures/demo-quests/rows/item_types/armor.json +13 -0
  192. package/e2e/fixtures/demo-quests/rows/item_types/potion.json +13 -0
  193. package/e2e/fixtures/demo-quests/rows/item_types/weapon.json +13 -0
  194. package/e2e/fixtures/demo-quests/rows/items/crystal_armor.json +39 -0
  195. package/e2e/fixtures/demo-quests/rows/items/enchanted_staff.json +39 -0
  196. package/e2e/fixtures/demo-quests/rows/items/flaming_sword.json +39 -0
  197. package/e2e/fixtures/demo-quests/rows/items/healing_potion.json +32 -0
  198. package/e2e/fixtures/demo-quests/rows/items/shadow_dagger.json +39 -0
  199. package/e2e/fixtures/demo-quests/rows/locations/burning_pit.json +67 -0
  200. package/e2e/fixtures/demo-quests/rows/locations/crystal_maze.json +67 -0
  201. package/e2e/fixtures/demo-quests/rows/locations/frostwind_pass.json +67 -0
  202. package/e2e/fixtures/demo-quests/rows/locations/frozen_lake.json +67 -0
  203. package/e2e/fixtures/demo-quests/rows/locations/glittering_cavern.json +67 -0
  204. package/e2e/fixtures/demo-quests/rows/locations/mystic_clearing.json +67 -0
  205. package/e2e/fixtures/demo-quests/rows/locations/scorched_dunes.json +84 -0
  206. package/e2e/fixtures/demo-quests/rows/locations/whispering_grove.json +67 -0
  207. package/e2e/fixtures/demo-quests/rows/npcs/crystal_keeper.json +41 -0
  208. package/e2e/fixtures/demo-quests/rows/npcs/desert_raider.json +41 -0
  209. package/e2e/fixtures/demo-quests/rows/npcs/enchanted_druid.json +41 -0
  210. package/e2e/fixtures/demo-quests/rows/npcs/forest_guardian.json +41 -0
  211. package/e2e/fixtures/demo-quests/rows/npcs/frost_guardian.json +41 -0
  212. package/e2e/fixtures/demo-quests/rows/quest_types/escort_quest.json +13 -0
  213. package/e2e/fixtures/demo-quests/rows/quest_types/exploration_quest.json +13 -0
  214. package/e2e/fixtures/demo-quests/rows/quest_types/fetch_quest.json +13 -0
  215. package/e2e/fixtures/demo-quests/rows/quest_types/kill_quest.json +13 -0
  216. package/e2e/fixtures/demo-quests/rows/quests/okhota_raider.json +70 -0
  217. package/e2e/fixtures/demo-quests/rows/quests/poisk_staff.json +84 -0
  218. package/e2e/fixtures/demo-quests/rows/quests/zashita_labirint.json +75 -0
  219. package/e2e/fixtures/demo-quests/rows/regions/crystal_caves.json +13 -0
  220. package/e2e/fixtures/demo-quests/rows/regions/desert_wastes.json +13 -0
  221. package/e2e/fixtures/demo-quests/rows/regions/enchanted_forest.json +13 -0
  222. package/e2e/fixtures/demo-quests/rows/regions/northern_mountains.json +13 -0
  223. package/e2e/fixtures/demo-quests/rows/skills/blok_shhitom.json +18 -0
  224. package/e2e/fixtures/demo-quests/rows/skills/boevoy_klich.json +18 -0
  225. package/e2e/fixtures/demo-quests/rows/skills/charodeyskiy_i.json +18 -0
  226. package/e2e/fixtures/demo-quests/rows/skills/charodeyskiy_v.json +18 -0
  227. package/e2e/fixtures/demo-quests/rows/skills/iscelenie.json +18 -0
  228. package/e2e/fixtures/demo-quests/rows/skills/ledyanaya_bron.json +18 -0
  229. package/e2e/fixtures/demo-quests/rows/skills/ognennyy_shar.json +18 -0
  230. package/e2e/fixtures/demo-quests/rows/skills/shhit_many.json +18 -0
  231. package/e2e/fixtures/demo-quests/rows/skills/sprint.json +18 -0
  232. package/e2e/fixtures/demo-quests/rows/skills/ukreplenie.json +18 -0
  233. package/e2e/fixtures/demo-quests/rows/skills/usilenie_uklo.json +18 -0
  234. package/e2e/fixtures/demo-quests/rows/skills/vnutrenniy_og.json +18 -0
  235. package/e2e/fixtures/demo-quests/rows/stats/agility.json +13 -0
  236. package/e2e/fixtures/demo-quests/rows/stats/armor_penetration.json +13 -0
  237. package/e2e/fixtures/demo-quests/rows/stats/attack_speed.json +13 -0
  238. package/e2e/fixtures/demo-quests/rows/stats/block_chance.json +13 -0
  239. package/e2e/fixtures/demo-quests/rows/stats/cooldown_reduction.json +13 -0
  240. package/e2e/fixtures/demo-quests/rows/stats/critical_chance.json +13 -0
  241. package/e2e/fixtures/demo-quests/rows/stats/critical_damage.json +13 -0
  242. package/e2e/fixtures/demo-quests/rows/stats/defense.json +13 -0
  243. package/e2e/fixtures/demo-quests/rows/stats/evasion.json +13 -0
  244. package/e2e/fixtures/demo-quests/rows/stats/health.json +13 -0
  245. package/e2e/fixtures/demo-quests/rows/stats/health_regeneration.json +13 -0
  246. package/e2e/fixtures/demo-quests/rows/stats/intelligence.json +13 -0
  247. package/e2e/fixtures/demo-quests/rows/stats/magic_resistance.json +13 -0
  248. package/e2e/fixtures/demo-quests/rows/stats/mana.json +13 -0
  249. package/e2e/fixtures/demo-quests/rows/stats/mana_regeneration.json +13 -0
  250. package/e2e/fixtures/demo-quests/rows/stats/movement_speed.json +13 -0
  251. package/e2e/fixtures/demo-quests/rows/stats/resilience.json +13 -0
  252. package/e2e/fixtures/demo-quests/rows/stats/spell_power.json +13 -0
  253. package/e2e/fixtures/demo-quests/rows/stats/stamina.json +13 -0
  254. package/e2e/fixtures/demo-quests/rows/stats/strength.json +13 -0
  255. package/e2e/fixtures/demo-quests/schemas/abilities.json +83 -0
  256. package/e2e/fixtures/demo-quests/schemas/classes.json +18 -0
  257. package/e2e/fixtures/demo-quests/schemas/effects.json +79 -0
  258. package/e2e/fixtures/demo-quests/schemas/factions.json +18 -0
  259. package/e2e/fixtures/demo-quests/schemas/files.json +13 -0
  260. package/e2e/fixtures/demo-quests/schemas/item_types.json +18 -0
  261. package/e2e/fixtures/demo-quests/schemas/items.json +126 -0
  262. package/e2e/fixtures/demo-quests/schemas/locations.json +84 -0
  263. package/e2e/fixtures/demo-quests/schemas/npcs.json +95 -0
  264. package/e2e/fixtures/demo-quests/schemas/quest_types.json +18 -0
  265. package/e2e/fixtures/demo-quests/schemas/quests.json +248 -0
  266. package/e2e/fixtures/demo-quests/schemas/regions.json +18 -0
  267. package/e2e/fixtures/demo-quests/schemas/skills.json +43 -0
  268. package/e2e/fixtures/demo-quests/schemas/stats.json +18 -0
  269. package/e2e/jest-e2e.json +17 -0
  270. package/e2e/setup/global-setup.ts +38 -0
  271. package/e2e/setup/global-teardown.ts +44 -0
  272. package/e2e/setup/test-setup.ts +32 -0
  273. package/e2e/tests/01-auth.e2e-spec.ts +159 -0
  274. package/e2e/tests/02-schema.e2e-spec.ts +173 -0
  275. package/e2e/tests/03-migrate.e2e-spec.ts +172 -0
  276. package/e2e/tests/04-rows.e2e-spec.ts +443 -0
  277. package/e2e/tests/05-sync.e2e-spec.ts +568 -0
  278. package/e2e/tests/06-options.e2e-spec.ts +283 -0
  279. package/e2e/utils/api-client.ts +286 -0
  280. package/e2e/utils/cli-runner.ts +99 -0
  281. package/e2e/utils/constants.ts +11 -0
  282. package/e2e/utils/docker-helper.ts +49 -0
  283. package/e2e/utils/index.ts +5 -0
  284. package/e2e/utils/test-project.ts +38 -0
  285. package/eslint.config.mjs +13 -0
  286. package/nyc.config.js +19 -0
  287. package/package.json +18 -8
  288. package/scripts/merge-coverage.js +130 -0
  289. package/sonar-project.properties +3 -3
  290. package/src/__generated__/api.ts +927 -926
  291. package/src/app.module.ts +42 -46
  292. package/src/commands/{sync-data.command.ts → base-sync.command.ts} +75 -100
  293. package/src/commands/base.command.ts +3 -52
  294. package/src/commands/{apply-migrations.command.ts → migration/apply-migrations.command.ts} +31 -35
  295. package/src/commands/{migration.command.ts → migration/migration.command.ts} +2 -2
  296. package/src/commands/{save-migrations.command.ts → migration/save-migrations.command.ts} +14 -17
  297. package/src/commands/{rows.command.ts → rows/rows.command.ts} +2 -2
  298. package/src/commands/rows/save-rows.command.ts +144 -0
  299. package/src/commands/rows/upload-rows.command.ts +281 -0
  300. package/src/commands/{create-migrations.command.ts → schema/create-migrations.command.ts} +14 -21
  301. package/src/commands/schema/save-schema.command.ts +95 -0
  302. package/src/commands/{schema.command.ts → schema/schema.command.ts} +2 -2
  303. package/src/commands/sync/sync-all.command.ts +119 -0
  304. package/src/commands/sync/sync-data.command.ts +83 -0
  305. package/src/commands/sync/sync-schema.command.ts +67 -0
  306. package/src/commands/{sync.command.ts → sync/sync.command.ts} +3 -3
  307. package/src/coverage.ts +21 -0
  308. package/src/main.ts +21 -5
  309. package/src/services/common/__tests__/interactive.service.spec.ts +117 -0
  310. package/src/services/common/index.ts +3 -0
  311. package/src/services/common/logger.service.ts +137 -0
  312. package/src/services/connection/__tests__/connection.service.spec.ts +292 -0
  313. package/src/services/connection/api-client-adapter.ts +58 -0
  314. package/src/services/connection/api-client.ts +92 -0
  315. package/src/services/connection/connection-factory.service.ts +142 -0
  316. package/src/services/connection/connection.service.ts +64 -0
  317. package/src/services/connection/index.ts +11 -0
  318. package/src/services/index.ts +4 -0
  319. package/src/services/sync/__tests__/file-row-loader.service.spec.ts +157 -0
  320. package/src/services/sync/__tests__/row-sync.service.spec.ts +253 -0
  321. package/src/services/{__tests__ → sync/__tests__}/table-dependency.service.spec.ts +1 -1
  322. package/src/services/sync/commit-revision.service.ts +132 -0
  323. package/src/services/sync/file-row-loader.service.ts +81 -0
  324. package/src/services/sync/index.ts +17 -0
  325. package/src/services/sync/row-sync.service.ts +304 -0
  326. package/src/services/sync/sync-api.service.ts +50 -0
  327. package/src/services/{sync-data.service.ts → sync/sync-data.service.ts} +45 -74
  328. package/src/services/{sync-schema.service.ts → sync/sync-schema.service.ts} +22 -17
  329. package/src/services/{__tests__ → url/__tests__}/url-builder.service.spec.ts +26 -12
  330. package/src/services/url/auth-prompt.service.ts +73 -0
  331. package/src/services/url/index.ts +10 -0
  332. package/src/services/url/url-builder.service.ts +221 -0
  333. package/src/services/url/url-parser.service.ts +168 -0
  334. package/src/types/errors.ts +35 -0
  335. package/src/utils/__tests__/error-formatter.utils.spec.ts +94 -0
  336. package/src/utils/__tests__/parse-boolean.utils.spec.ts +69 -0
  337. package/src/utils/__tests__/stats-formatter.utils.spec.ts +138 -0
  338. package/src/utils/error-formatter.utils.ts +34 -0
  339. package/src/utils/paginated-fetcher.ts +94 -0
  340. package/src/utils/progress.ts +53 -0
  341. package/src/utils/stats-formatter.utils.ts +62 -0
  342. package/dist/src/commands/apply-migrations.command.d.ts +0 -26
  343. package/dist/src/commands/apply-migrations.command.js.map +0 -1
  344. package/dist/src/commands/apply-patches.command.d.ts +0 -35
  345. package/dist/src/commands/apply-patches.command.js +0 -308
  346. package/dist/src/commands/apply-patches.command.js.map +0 -1
  347. package/dist/src/commands/base-patch.command.d.ts +0 -24
  348. package/dist/src/commands/base-patch.command.js +0 -62
  349. package/dist/src/commands/base-patch.command.js.map +0 -1
  350. package/dist/src/commands/create-migrations.command.js.map +0 -1
  351. package/dist/src/commands/migration.command.js.map +0 -1
  352. package/dist/src/commands/patches.command.d.ts +0 -5
  353. package/dist/src/commands/patches.command.js +0 -39
  354. package/dist/src/commands/patches.command.js.map +0 -1
  355. package/dist/src/commands/preview-patches.command.d.ts +0 -11
  356. package/dist/src/commands/preview-patches.command.js +0 -64
  357. package/dist/src/commands/preview-patches.command.js.map +0 -1
  358. package/dist/src/commands/rows.command.js.map +0 -1
  359. package/dist/src/commands/save-migrations.command.d.ts +0 -16
  360. package/dist/src/commands/save-migrations.command.js.map +0 -1
  361. package/dist/src/commands/save-patches.command.d.ts +0 -29
  362. package/dist/src/commands/save-patches.command.js +0 -162
  363. package/dist/src/commands/save-patches.command.js.map +0 -1
  364. package/dist/src/commands/save-rows.command.d.ts +0 -23
  365. package/dist/src/commands/save-rows.command.js.map +0 -1
  366. package/dist/src/commands/save-schema.command.d.ts +0 -19
  367. package/dist/src/commands/save-schema.command.js +0 -105
  368. package/dist/src/commands/save-schema.command.js.map +0 -1
  369. package/dist/src/commands/schema.command.js.map +0 -1
  370. package/dist/src/commands/sync-all.command.d.ts +0 -33
  371. package/dist/src/commands/sync-all.command.js +0 -196
  372. package/dist/src/commands/sync-all.command.js.map +0 -1
  373. package/dist/src/commands/sync-data.command.d.ts +0 -31
  374. package/dist/src/commands/sync-data.command.js.map +0 -1
  375. package/dist/src/commands/sync-schema.command.d.ts +0 -26
  376. package/dist/src/commands/sync-schema.command.js +0 -140
  377. package/dist/src/commands/sync-schema.command.js.map +0 -1
  378. package/dist/src/commands/sync.command.js.map +0 -1
  379. package/dist/src/commands/upload-rows.command.d.ts +0 -61
  380. package/dist/src/commands/upload-rows.command.js +0 -618
  381. package/dist/src/commands/upload-rows.command.js.map +0 -1
  382. package/dist/src/commands/validate-patches.command.d.ts +0 -16
  383. package/dist/src/commands/validate-patches.command.js +0 -91
  384. package/dist/src/commands/validate-patches.command.js.map +0 -1
  385. package/dist/src/config/json-value-patch-schema.d.ts +0 -2
  386. package/dist/src/config/json-value-patch-schema.js +0 -49
  387. package/dist/src/config/json-value-patch-schema.js.map +0 -1
  388. package/dist/src/config/patch-file.schema.d.ts +0 -3
  389. package/dist/src/config/patch-file.schema.js +0 -110
  390. package/dist/src/config/patch-file.schema.js.map +0 -1
  391. package/dist/src/services/commit-revision.service.d.ts +0 -23
  392. package/dist/src/services/commit-revision.service.js +0 -87
  393. package/dist/src/services/commit-revision.service.js.map +0 -1
  394. package/dist/src/services/core-api.service.d.ts +0 -20
  395. package/dist/src/services/core-api.service.js +0 -86
  396. package/dist/src/services/core-api.service.js.map +0 -1
  397. package/dist/src/services/draft-revision.service.d.ts +0 -14
  398. package/dist/src/services/draft-revision.service.js +0 -45
  399. package/dist/src/services/draft-revision.service.js.map +0 -1
  400. package/dist/src/services/interactive.service.js.map +0 -1
  401. package/dist/src/services/json-validator.service.js.map +0 -1
  402. package/dist/src/services/patch-diff.service.d.ts +0 -15
  403. package/dist/src/services/patch-diff.service.js +0 -149
  404. package/dist/src/services/patch-diff.service.js.map +0 -1
  405. package/dist/src/services/patch-generator.service.d.ts +0 -4
  406. package/dist/src/services/patch-generator.service.js +0 -33
  407. package/dist/src/services/patch-generator.service.js.map +0 -1
  408. package/dist/src/services/patch-loader.service.d.ts +0 -15
  409. package/dist/src/services/patch-loader.service.js +0 -146
  410. package/dist/src/services/patch-loader.service.js.map +0 -1
  411. package/dist/src/services/patch-validation.service.d.ts +0 -30
  412. package/dist/src/services/patch-validation.service.js +0 -223
  413. package/dist/src/services/patch-validation.service.js.map +0 -1
  414. package/dist/src/services/resolve-options.service.d.ts +0 -15
  415. package/dist/src/services/resolve-options.service.js +0 -45
  416. package/dist/src/services/resolve-options.service.js.map +0 -1
  417. package/dist/src/services/row-sync.service.js +0 -274
  418. package/dist/src/services/row-sync.service.js.map +0 -1
  419. package/dist/src/services/sync-api.service.d.ts +0 -35
  420. package/dist/src/services/sync-api.service.js +0 -165
  421. package/dist/src/services/sync-api.service.js.map +0 -1
  422. package/dist/src/services/sync-data.service.js.map +0 -1
  423. package/dist/src/services/sync-schema.service.js.map +0 -1
  424. package/dist/src/services/table-dependency.service.js.map +0 -1
  425. package/dist/src/services/url-builder.service.d.ts +0 -52
  426. package/dist/src/services/url-builder.service.js +0 -292
  427. package/dist/src/services/url-builder.service.js.map +0 -1
  428. package/dist/src/types/json-patch.types.d.ts +0 -21
  429. package/dist/src/types/json-patch.types.js +0 -3
  430. package/dist/src/types/json-patch.types.js.map +0 -1
  431. package/dist/src/types/patch.types.d.ts +0 -50
  432. package/dist/src/types/patch.types.js +0 -3
  433. package/dist/src/types/patch.types.js.map +0 -1
  434. package/dist/src/utils/diff-formatter.utils.d.ts +0 -3
  435. package/dist/src/utils/diff-formatter.utils.js +0 -45
  436. package/dist/src/utils/diff-formatter.utils.js.map +0 -1
  437. package/docs/patches-commands.md +0 -188
  438. package/src/commands/__tests__/apply-migrations.command.spec.ts +0 -398
  439. package/src/commands/__tests__/apply-patches.command.spec.ts +0 -1126
  440. package/src/commands/__tests__/base.command.spec.ts +0 -118
  441. package/src/commands/__tests__/create-migrations.command.spec.ts +0 -354
  442. package/src/commands/__tests__/migration.command.spec.ts +0 -30
  443. package/src/commands/__tests__/preview-patches.command.spec.ts +0 -227
  444. package/src/commands/__tests__/rows.command.spec.ts +0 -30
  445. package/src/commands/__tests__/save-migrations.command.spec.ts +0 -271
  446. package/src/commands/__tests__/save-patches.command.spec.ts +0 -286
  447. package/src/commands/__tests__/save-rows.command.spec.ts +0 -488
  448. package/src/commands/__tests__/save-schema.command.spec.ts +0 -358
  449. package/src/commands/__tests__/schema.command.spec.ts +0 -30
  450. package/src/commands/__tests__/sync-all.command.spec.ts +0 -391
  451. package/src/commands/__tests__/sync-data.command.spec.ts +0 -311
  452. package/src/commands/__tests__/sync-schema.command.spec.ts +0 -285
  453. package/src/commands/__tests__/sync.command.spec.ts +0 -37
  454. package/src/commands/__tests__/upload-rows.command.spec.ts +0 -1028
  455. package/src/commands/__tests__/validate-patches.command.spec.ts +0 -179
  456. package/src/commands/apply-patches.command.ts +0 -454
  457. package/src/commands/base-patch.command.ts +0 -96
  458. package/src/commands/patches.command.ts +0 -24
  459. package/src/commands/preview-patches.command.ts +0 -56
  460. package/src/commands/save-patches.command.ts +0 -164
  461. package/src/commands/save-rows.command.ts +0 -189
  462. package/src/commands/save-schema.command.ts +0 -121
  463. package/src/commands/sync-all.command.ts +0 -203
  464. package/src/commands/sync-schema.command.ts +0 -131
  465. package/src/commands/upload-rows.command.ts +0 -968
  466. package/src/commands/validate-patches.command.ts +0 -78
  467. package/src/config/__tests__/patch-file.schema.spec.ts +0 -375
  468. package/src/config/json-value-patch-schema.ts +0 -49
  469. package/src/config/patch-file.schema.ts +0 -109
  470. package/src/services/__tests__/commit-revision.service.spec.ts +0 -257
  471. package/src/services/__tests__/core-api.service.spec.ts +0 -271
  472. package/src/services/__tests__/draft-revision.service.spec.ts +0 -90
  473. package/src/services/__tests__/interactive.service.spec.ts +0 -107
  474. package/src/services/__tests__/patch-diff.service.spec.ts +0 -409
  475. package/src/services/__tests__/patch-loader.service.spec.ts +0 -434
  476. package/src/services/__tests__/patch-validation.service.spec.ts +0 -539
  477. package/src/services/__tests__/resolve-options.service.spec.ts +0 -176
  478. package/src/services/__tests__/row-sync.service.spec.ts +0 -826
  479. package/src/services/__tests__/sync-api.service.spec.ts +0 -77
  480. package/src/services/__tests__/sync-data.service.spec.ts +0 -719
  481. package/src/services/__tests__/sync-schema.service.spec.ts +0 -471
  482. package/src/services/commit-revision.service.ts +0 -116
  483. package/src/services/core-api.service.ts +0 -96
  484. package/src/services/draft-revision.service.ts +0 -45
  485. package/src/services/patch-diff.service.ts +0 -208
  486. package/src/services/patch-generator.service.ts +0 -26
  487. package/src/services/patch-loader.service.ts +0 -178
  488. package/src/services/patch-validation.service.ts +0 -296
  489. package/src/services/resolve-options.service.ts +0 -46
  490. package/src/services/row-sync.service.ts +0 -573
  491. package/src/services/sync-api.service.ts +0 -239
  492. package/src/services/url-builder.service.ts +0 -447
  493. package/src/types/json-patch.types.ts +0 -16
  494. package/src/types/patch.types.ts +0 -59
  495. package/src/utils/__tests__/diff-formatter.utils.spec.ts +0 -331
  496. package/src/utils/diff-formatter.utils.ts +0 -52
  497. /package/dist/src/commands/{migration.command.d.ts → migration/migration.command.d.ts} +0 -0
  498. /package/dist/src/commands/{migration.command.js → migration/migration.command.js} +0 -0
  499. /package/dist/src/commands/{rows.command.d.ts → rows/rows.command.d.ts} +0 -0
  500. /package/dist/src/commands/{rows.command.js → rows/rows.command.js} +0 -0
  501. /package/dist/src/commands/{schema.command.d.ts → schema/schema.command.d.ts} +0 -0
  502. /package/dist/src/commands/{schema.command.js → schema/schema.command.js} +0 -0
  503. /package/dist/src/commands/{sync.command.d.ts → sync/sync.command.d.ts} +0 -0
  504. /package/dist/src/commands/{sync.command.js → sync/sync.command.js} +0 -0
  505. /package/dist/src/services/{interactive.service.d.ts → common/interactive.service.d.ts} +0 -0
  506. /package/dist/src/services/{interactive.service.js → common/interactive.service.js} +0 -0
  507. /package/dist/src/services/{json-validator.service.d.ts → common/json-validator.service.d.ts} +0 -0
  508. /package/dist/src/services/{table-dependency.service.d.ts → sync/table-dependency.service.d.ts} +0 -0
  509. /package/dist/src/services/{table-dependency.service.js → sync/table-dependency.service.js} +0 -0
  510. /package/src/services/{__tests__ → common/__tests__}/json-validator.service.spec.ts +0 -0
  511. /package/src/services/{interactive.service.ts → common/interactive.service.ts} +0 -0
  512. /package/src/services/{json-validator.service.ts → common/json-validator.service.ts} +0 -0
  513. /package/src/services/{table-dependency.service.ts → sync/table-dependency.service.ts} +0 -0
@@ -35,14 +35,23 @@ jobs:
35
35
  run: npm ci
36
36
 
37
37
  - name: Run linter
38
- run: npm run lint
38
+ run: npm run lint:ci
39
39
 
40
40
  - name: Compile TypeScript
41
41
  run: npm run tsc
42
42
 
43
- - name: Run tests
43
+ - name: Run unit tests with coverage
44
44
  run: npm run test:cov
45
45
 
46
+ - name: Build CLI for E2E tests
47
+ run: npm run build
48
+
49
+ - name: Run E2E tests with coverage
50
+ run: npm run test:e2e:cov
51
+
52
+ - name: Merge coverage reports
53
+ run: npm run coverage:merge
54
+
46
55
  - name: SonarQube Scan
47
56
  uses: SonarSource/sonarqube-scan-action@8c71dc039c2dd71d3821e89a2b58ecc7fee6ced9 #SonarSource/sonarqube-scan-action@v5
48
57
  env:
@@ -52,3 +61,4 @@ jobs:
52
61
  uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 #codecov/codecov-action@v5
53
62
  with:
54
63
  token: ${{ secrets.CODECOV_TOKEN }}
64
+ files: ./coverage/lcov.info
package/README.md CHANGED
@@ -21,7 +21,6 @@ A CLI tool for interacting with Revisium instances, providing migration manageme
21
21
  - **Migration Management** - Save and apply database migrations with auto-commit
22
22
  - **Schema Export/Import** - Export table schemas and convert to migrations
23
23
  - **Data Export/Upload** - Export and upload rows with smart dependency handling
24
- - **Patches** - Selective field updates with validation and preview
25
24
  - **Project Sync** - Synchronize schema and data between Revisium projects
26
25
  - **Bulk Operations** - Efficient batch operations with configurable batch size
27
26
  - **Docker Deployment** - Containerized automation for CI/CD
@@ -38,8 +37,58 @@ npx revisium --help
38
37
 
39
38
  ## Examples
40
39
 
40
+ ### CI/CD Migrations (Prisma-like Workflow)
41
+
42
+ ```
43
+ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
44
+ │ DEV │ │ GIT │ │ CI/CD │
45
+ │ │ │ │ │ │
46
+ │ Revisium │ save │ migrations │ push │ apply │
47
+ │ UI │─────▶│ .json │─────▶│ migrations │
48
+ │ │ │ data/ │ │ + seed │
49
+ └─────────────┘ └─────────────┘ └─────────────┘
50
+ ```
51
+
52
+ Like Prisma, save schema migrations locally and apply them in CI/CD:
53
+
54
+ ```bash
55
+ # 1. Save migrations locally (during development)
56
+ revisium migrate save --file ./revisium/migrations.json \
57
+ --url revisium://cloud.revisium.io/myorg/myproject/master?token=$TOKEN
58
+
59
+ # 2. Commit to git
60
+ git add revisium/migrations.json
61
+ git commit -m "Add new schema fields"
62
+
63
+ # 3. Apply in CI/CD (on deploy)
64
+ revisium migrate apply --file ./revisium/migrations.json --commit \
65
+ --url revisium://cloud.revisium.io/myorg/myproject/master
66
+ ```
67
+
68
+ Add to package.json scripts:
69
+
70
+ ```json
71
+ {
72
+ "scripts": {
73
+ "revisium:save-migrations": "revisium migrate save --file ./revisium/migrations.json",
74
+ "revisium:apply-migrations": "revisium migrate apply --file ./revisium/migrations.json --commit",
75
+ "start:prod": "npm run revisium:apply-migrations && node dist/main"
76
+ }
77
+ }
78
+ ```
79
+
80
+ See [Docker Deployment](docs/docker-deployment.md) for complete CI/CD examples.
81
+
41
82
  ### Export & Import (File-based)
42
83
 
84
+ ```
85
+ ┌─────────────┐ ┌─────────────┐
86
+ │ SOURCE │ migrations.json │ TARGET │
87
+ │ Revisium │ ────────────────────▶ │ Revisium │
88
+ │ │ data/ │ │
89
+ └─────────────┘ └─────────────┘
90
+ ```
91
+
43
92
  Save project to files for backup or deployment to another instance:
44
93
 
45
94
  ```bash
@@ -48,12 +97,22 @@ revisium migrate save --file ./migrations.json
48
97
  revisium rows save --folder ./data
49
98
 
50
99
  # Import to target
51
- revisium migrate apply --file ./migrations.json --commit --url https://target.example.com
52
- revisium rows upload --folder ./data --commit --url https://target.example.com
100
+ revisium migrate apply --file ./migrations.json --commit \
101
+ --url revisium://target.example.com/org/proj/main
102
+ revisium rows upload --folder ./data --commit \
103
+ --url revisium://target.example.com/org/proj/master
53
104
  ```
54
105
 
55
106
  ### Sync (Direct Transfer)
56
107
 
108
+ ```
109
+ ┌─────────────┐ ┌─────────────┐
110
+ │ SOURCE │ schema + data │ TARGET │
111
+ │ Revisium │ ════════════════════▶ │ Revisium │
112
+ │ │ (direct) │ :draft │
113
+ └─────────────┘ └─────────────┘
114
+ ```
115
+
57
116
  Synchronize directly between two projects without intermediate files:
58
117
 
59
118
  ```bash
@@ -63,16 +122,6 @@ revisium sync all \
63
122
  --commit
64
123
  ```
65
124
 
66
- ### Patches (Selective Updates)
67
-
68
- Update specific fields without affecting other data:
69
-
70
- ```bash
71
- revisium patches save --table Article --paths title,status --output ./patches
72
- revisium patches preview --input ./patches
73
- revisium patches apply --input ./patches --commit
74
- ```
75
-
76
125
  ## Commands
77
126
 
78
127
  | Command | Description | Documentation |
@@ -83,10 +132,6 @@ revisium patches apply --input ./patches --commit
83
132
  | `migrate apply` | Apply migrations from JSON file | [Migrate Commands](docs/migrate-commands.md) |
84
133
  | `rows save` | Export table data to JSON files | [Rows Commands](docs/rows-commands.md) |
85
134
  | `rows upload` | Upload table data from JSON files | [Rows Commands](docs/rows-commands.md) |
86
- | `patches save` | Export field values as patches | [Patches Commands](docs/patches-commands.md) |
87
- | `patches validate` | Validate patch files | [Patches Commands](docs/patches-commands.md) |
88
- | `patches preview` | Preview patch changes | [Patches Commands](docs/patches-commands.md) |
89
- | `patches apply` | Apply patches to rows | [Patches Commands](docs/patches-commands.md) |
90
135
  | `sync schema` | Sync schema between projects | [Sync Commands](docs/sync-commands.md) |
91
136
  | `sync data` | Sync data between projects | [Sync Commands](docs/sync-commands.md) |
92
137
  | `sync all` | Full sync (schema + data) | [Sync Commands](docs/sync-commands.md) |
@@ -96,24 +141,19 @@ revisium patches apply --input ./patches --commit
96
141
  Configure via environment variables or `.env` file:
97
142
 
98
143
  ```env
99
- REVISIUM_API_URL=https://cloud.revisium.io/
144
+ REVISIUM_URL=revisium://cloud.revisium.io/your_org/your_project/main
100
145
  REVISIUM_USERNAME=your_username
101
146
  REVISIUM_PASSWORD=your_password
102
- REVISIUM_ORGANIZATION=your_organization
103
- REVISIUM_PROJECT=your_project
104
- REVISIUM_BRANCH=master
105
147
  ```
106
148
 
107
- Or use command-line options:
149
+ Or use command-line options with URL:
108
150
 
109
151
  ```bash
110
152
  revisium schema save --folder ./schemas \
111
- --url https://api.example.com \
112
- --organization my-org \
113
- --project my-project
153
+ --url revisium://cloud.revisium.io/my-org/my-project/develop?token=$TOKEN
114
154
  ```
115
155
 
116
- See [Configuration](docs/configuration.md) for details.
156
+ See [Configuration](docs/configuration.md) and [URL Format](docs/url-format.md) for details.
117
157
 
118
158
  ## Documentation
119
159
 
@@ -123,7 +163,6 @@ See [Configuration](docs/configuration.md) for details.
123
163
  - [Schema Commands](docs/schema-commands.md) - schema save, create-migrations
124
164
  - [Migrate Commands](docs/migrate-commands.md) - migrate save, apply
125
165
  - [Rows Commands](docs/rows-commands.md) - rows save, upload
126
- - [Patches Commands](docs/patches-commands.md) - patches save, validate, preview, apply
127
166
  - [Sync Commands](docs/sync-commands.md) - sync schema, data, all
128
167
  - [Docker Deployment](docs/docker-deployment.md) - Docker, Kubernetes, CI/CD
129
168
 
package/codecov.yml CHANGED
@@ -5,4 +5,15 @@ coverage:
5
5
  target: 90%
6
6
  patch:
7
7
  default:
8
- target: 90%
8
+ target: 90%
9
+
10
+ ignore:
11
+ - "**/__tests__/**"
12
+ - "**/__mocks__/**"
13
+ - "**/*.spec.ts"
14
+ - "**/*.e2e-spec.ts"
15
+ - "src/__generated__/**"
16
+ - "src/main.ts"
17
+ - "e2e/**"
18
+ - "dist/**"
19
+ - "scripts/**"
@@ -0,0 +1 @@
1
+ export default function globalSetup(): Promise<void>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = globalSetup;
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const docker_helper_1 = require("../utils/docker-helper");
7
+ const api_client_1 = require("../utils/api-client");
8
+ const constants_1 = require("../utils/constants");
9
+ const ENV_FILE = path.join(process.cwd(), '.e2e-env.json');
10
+ async function globalSetup() {
11
+ console.log('\n========================================');
12
+ console.log('E2E Global Setup');
13
+ console.log('========================================\n');
14
+ (0, docker_helper_1.startDocker)();
15
+ console.log('\nWaiting for Revisium to be ready...');
16
+ await (0, docker_helper_1.waitForHealthy)(`${constants_1.E2E_CONFIG.API_URL}/health`);
17
+ console.log('\nLogging in as admin...');
18
+ const token = await api_client_1.api.login();
19
+ console.log('Login successful');
20
+ const envData = {
21
+ E2E_API_URL: constants_1.E2E_CONFIG.API_URL,
22
+ E2E_ADMIN_TOKEN: token,
23
+ };
24
+ fs.writeFileSync(ENV_FILE, JSON.stringify(envData, null, 2));
25
+ console.log(`\nEnvironment saved to ${ENV_FILE}`);
26
+ console.log('\n========================================');
27
+ console.log('E2E Setup Complete');
28
+ console.log('========================================\n');
29
+ }
30
+ //# sourceMappingURL=global-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-setup.js","sourceRoot":"","sources":["../../../e2e/setup/global-setup.ts"],"names":[],"mappings":";;AAQA,8BA6BC;AArCD,yBAAyB;AACzB,6BAA6B;AAC7B,0DAAqE;AACrE,oDAA0C;AAC1C,kDAAgD;AAEhD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;AAE5C,KAAK,UAAU,WAAW;IACvC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAG1D,IAAA,2BAAW,GAAE,CAAC;IAGd,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,MAAM,IAAA,8BAAc,EAAC,GAAG,sBAAU,CAAC,OAAO,SAAS,CAAC,CAAC;IAGrD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,gBAAG,CAAC,KAAK,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAGhC,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,sBAAU,CAAC,OAAO;QAC/B,eAAe,EAAE,KAAK;KACvB,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1 @@
1
+ export default function globalTeardown(): void;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = globalTeardown;
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const child_process_1 = require("child_process");
7
+ const docker_helper_1 = require("../utils/docker-helper");
8
+ const ENV_FILE = path.join(process.cwd(), '.e2e-env.json');
9
+ function globalTeardown() {
10
+ console.log('\n========================================');
11
+ console.log('E2E Global Teardown');
12
+ console.log('========================================\n');
13
+ (0, docker_helper_1.stopDocker)();
14
+ const nycOutputDir = path.join(process.cwd(), '.nyc_output');
15
+ if (fs.existsSync(nycOutputDir)) {
16
+ const files = fs
17
+ .readdirSync(nycOutputDir)
18
+ .filter((f) => f.endsWith('.json'));
19
+ if (files.length > 0) {
20
+ console.log(`\nMerging ${files.length} E2E coverage files...`);
21
+ try {
22
+ (0, child_process_1.execSync)('npx nyc report --reporter=json --report-dir=coverage/e2e', {
23
+ stdio: 'inherit',
24
+ });
25
+ console.log('E2E coverage saved to coverage/e2e/');
26
+ }
27
+ catch (error) {
28
+ console.warn('Failed to generate E2E coverage report:', error);
29
+ }
30
+ }
31
+ }
32
+ if (fs.existsSync(ENV_FILE)) {
33
+ fs.rmSync(ENV_FILE);
34
+ console.log(`\nCleaned up ${ENV_FILE}`);
35
+ }
36
+ console.log('\n========================================');
37
+ console.log('E2E Teardown Complete');
38
+ console.log('========================================\n');
39
+ }
40
+ //# sourceMappingURL=global-teardown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-teardown.js","sourceRoot":"","sources":["../../../e2e/setup/global-teardown.ts"],"names":[],"mappings":";;AAOA,iCAoCC;AA3CD,yBAAyB;AACzB,6BAA6B;AAC7B,iDAAyC;AACzC,0DAAoD;AAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;AAE3D,SAAwB,cAAc;IACpC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAG1D,IAAA,0BAAU,GAAE,CAAC;IAGb,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,EAAE;aACb,WAAW,CAAC,YAAY,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,MAAM,wBAAwB,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,0DAA0D,EAAE;oBACnE,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAGD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+ const api_client_1 = require("../utils/api-client");
6
+ const test_project_1 = require("../utils/test-project");
7
+ const ENV_FILE = path.join(process.cwd(), '.e2e-env.json');
8
+ beforeAll(() => {
9
+ if (fs.existsSync(ENV_FILE)) {
10
+ const envData = JSON.parse(fs.readFileSync(ENV_FILE, 'utf-8'));
11
+ process.env.E2E_API_URL = envData.E2E_API_URL;
12
+ process.env.E2E_ADMIN_TOKEN = envData.E2E_ADMIN_TOKEN;
13
+ api_client_1.api.setToken(envData.E2E_ADMIN_TOKEN);
14
+ }
15
+ else {
16
+ throw new Error('E2E environment file not found. Did global-setup run correctly?');
17
+ }
18
+ });
19
+ afterAll(async () => {
20
+ await (0, test_project_1.cleanupAllTestProjects)();
21
+ });
22
+ //# sourceMappingURL=test-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../../../e2e/setup/test-setup.ts"],"names":[],"mappings":";;AAAA,yBAAyB;AACzB,6BAA6B;AAC7B,oDAA0C;AAC1C,wDAA+D;AAE/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;AAQ3D,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAe,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAGtD,gBAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAGH,QAAQ,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,IAAA,qCAAsB,GAAE,CAAC;AACjC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ export interface LoginResponse {
2
+ accessToken: string;
3
+ }
4
+ export interface Project {
5
+ id: string;
6
+ name: string;
7
+ organizationId: string;
8
+ rootBranch: {
9
+ id: string;
10
+ name: string;
11
+ draftRevisionId: string;
12
+ headRevisionId: string;
13
+ };
14
+ }
15
+ export interface Table {
16
+ id: string;
17
+ versionId: string;
18
+ }
19
+ export interface Row {
20
+ id: string;
21
+ versionId: string;
22
+ data: Record<string, unknown>;
23
+ }
24
+ export declare class E2EApiClient {
25
+ private baseUrl;
26
+ private token;
27
+ constructor(baseUrl?: string);
28
+ login(username?: string, password?: string): Promise<string>;
29
+ getToken(): string;
30
+ setToken(token: string): void;
31
+ private request;
32
+ private graphql;
33
+ createProject(organizationId: string, projectName: string): Promise<Project>;
34
+ deleteProject(organizationId: string, projectName: string): Promise<void>;
35
+ getProject(organizationId: string, projectName: string): Promise<Project>;
36
+ getTables(revisionId: string): Promise<Table[]>;
37
+ getRows(revisionId: string, tableId: string): Promise<Row[]>;
38
+ }
39
+ export declare const api: E2EApiClient;
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.api = exports.E2EApiClient = void 0;
4
+ const constants_1 = require("./constants");
5
+ class E2EApiClient {
6
+ baseUrl;
7
+ token = null;
8
+ constructor(baseUrl = constants_1.E2E_CONFIG.API_URL) {
9
+ this.baseUrl = baseUrl;
10
+ }
11
+ async login(username = constants_1.E2E_CONFIG.ADMIN_USERNAME, password = constants_1.E2E_CONFIG.ADMIN_PASSWORD) {
12
+ const response = await fetch(`${this.baseUrl}/api/auth/login`, {
13
+ method: 'POST',
14
+ headers: { 'Content-Type': 'application/json' },
15
+ body: JSON.stringify({ emailOrUsername: username, password }),
16
+ });
17
+ if (!response.ok) {
18
+ throw new Error(`Login failed: ${response.status}`);
19
+ }
20
+ const data = (await response.json());
21
+ this.token = data.accessToken;
22
+ return this.token;
23
+ }
24
+ getToken() {
25
+ if (!this.token) {
26
+ throw new Error('Not logged in');
27
+ }
28
+ return this.token;
29
+ }
30
+ setToken(token) {
31
+ this.token = token;
32
+ }
33
+ async request(method, path, body) {
34
+ const headers = {
35
+ 'Content-Type': 'application/json',
36
+ };
37
+ if (this.token) {
38
+ headers['Authorization'] = `Bearer ${this.token}`;
39
+ }
40
+ const response = await fetch(`${this.baseUrl}${path}`, {
41
+ method,
42
+ headers,
43
+ body: body ? JSON.stringify(body) : undefined,
44
+ });
45
+ if (!response.ok) {
46
+ const text = await response.text();
47
+ throw new Error(`API error ${response.status}: ${text}`);
48
+ }
49
+ return response.json();
50
+ }
51
+ async graphql(query, variables) {
52
+ const headers = {
53
+ 'Content-Type': 'application/json',
54
+ };
55
+ if (this.token) {
56
+ headers['Authorization'] = `Bearer ${this.token}`;
57
+ }
58
+ const response = await fetch(`${this.baseUrl}/graphql`, {
59
+ method: 'POST',
60
+ headers,
61
+ body: JSON.stringify({ query, variables }),
62
+ });
63
+ if (!response.ok) {
64
+ const text = await response.text();
65
+ throw new Error(`GraphQL error ${response.status}: ${text}`);
66
+ }
67
+ const result = (await response.json());
68
+ if (result.errors?.length) {
69
+ throw new Error(`GraphQL error: ${result.errors[0].message}`);
70
+ }
71
+ return result.data;
72
+ }
73
+ async createProject(organizationId, projectName) {
74
+ const query = `
75
+ mutation CreateProject($data: CreateProjectInput!) {
76
+ createProject(data: $data) {
77
+ id
78
+ name
79
+ organizationId
80
+ rootBranch {
81
+ id
82
+ name
83
+ draft { id }
84
+ head { id }
85
+ }
86
+ }
87
+ }
88
+ `;
89
+ const result = await this.graphql(query, {
90
+ data: { organizationId, projectName },
91
+ });
92
+ return {
93
+ id: result.createProject.id,
94
+ name: result.createProject.name,
95
+ organizationId: result.createProject.organizationId,
96
+ rootBranch: {
97
+ id: result.createProject.rootBranch.id,
98
+ name: result.createProject.rootBranch.name,
99
+ draftRevisionId: result.createProject.rootBranch.draft.id,
100
+ headRevisionId: result.createProject.rootBranch.head.id,
101
+ },
102
+ };
103
+ }
104
+ async deleteProject(organizationId, projectName) {
105
+ const query = `
106
+ mutation DeleteProject($data: DeleteProjectInput!) {
107
+ deleteProject(data: $data)
108
+ }
109
+ `;
110
+ await this.graphql(query, {
111
+ data: { organizationId, projectName },
112
+ });
113
+ }
114
+ async getProject(organizationId, projectName) {
115
+ const query = `
116
+ query GetProject($data: GetProjectInput!) {
117
+ project(data: $data) {
118
+ id
119
+ name
120
+ organizationId
121
+ rootBranch {
122
+ id
123
+ name
124
+ draft { id }
125
+ head { id }
126
+ }
127
+ }
128
+ }
129
+ `;
130
+ const result = await this.graphql(query, {
131
+ data: { organizationId, projectName },
132
+ });
133
+ return {
134
+ id: result.project.id,
135
+ name: result.project.name,
136
+ organizationId: result.project.organizationId,
137
+ rootBranch: {
138
+ id: result.project.rootBranch.id,
139
+ name: result.project.rootBranch.name,
140
+ draftRevisionId: result.project.rootBranch.draft.id,
141
+ headRevisionId: result.project.rootBranch.head.id,
142
+ },
143
+ };
144
+ }
145
+ async getTables(revisionId) {
146
+ const query = `
147
+ query GetTables($data: GetTablesInput!) {
148
+ tables(data: $data) {
149
+ edges {
150
+ node {
151
+ id
152
+ versionId
153
+ }
154
+ }
155
+ }
156
+ }
157
+ `;
158
+ const result = await this.graphql(query, {
159
+ data: { revisionId, first: 100 },
160
+ });
161
+ return result.tables.edges.map((e) => e.node);
162
+ }
163
+ async getRows(revisionId, tableId) {
164
+ const query = `
165
+ query GetRows($data: GetRowsInput!) {
166
+ rows(data: $data) {
167
+ edges {
168
+ node {
169
+ id
170
+ versionId
171
+ data
172
+ }
173
+ }
174
+ }
175
+ }
176
+ `;
177
+ const result = await this.graphql(query, {
178
+ data: { revisionId, tableId, first: 1000 },
179
+ });
180
+ return result.rows.edges.map((e) => e.node);
181
+ }
182
+ }
183
+ exports.E2EApiClient = E2EApiClient;
184
+ exports.api = new E2EApiClient();
185
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../e2e/utils/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface CliResult {
2
+ stdout: string;
3
+ stderr: string;
4
+ exitCode: number;
5
+ }
6
+ export interface CliOptions {
7
+ env?: Record<string, string>;
8
+ timeout?: number;
9
+ cwd?: string;
10
+ }
11
+ export declare function runCli(args: string[], options?: CliOptions): Promise<CliResult>;
12
+ export declare function buildUrl(projectName: string, options?: {
13
+ orgId?: string;
14
+ branch?: string;
15
+ revision?: 'draft' | 'head';
16
+ token?: string;
17
+ }): string;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runCli = runCli;
4
+ exports.buildUrl = buildUrl;
5
+ const child_process_1 = require("child_process");
6
+ const fs = require("fs");
7
+ const path = require("path");
8
+ async function runCli(args, options = {}) {
9
+ const { env = {}, timeout = 60000, cwd = process.cwd() } = options;
10
+ const isInstrumented = process.env.E2E_INSTRUMENTED === '1';
11
+ const mainPath = isInstrumented
12
+ ? 'dist-instrumented/src/main.js'
13
+ : 'dist/src/main.js';
14
+ const nycOutputDir = path.join(cwd, '.nyc_output');
15
+ if (isInstrumented && !fs.existsSync(nycOutputDir)) {
16
+ fs.mkdirSync(nycOutputDir, { recursive: true });
17
+ }
18
+ return new Promise((resolve, reject) => {
19
+ const child = (0, child_process_1.spawn)('node', [mainPath, ...args], {
20
+ cwd,
21
+ env: {
22
+ ...process.env,
23
+ ...env,
24
+ ...(isInstrumented ? { NYC_OUTPUT_DIR: nycOutputDir } : {}),
25
+ },
26
+ stdio: ['pipe', 'pipe', 'pipe'],
27
+ });
28
+ let stdout = '';
29
+ let stderr = '';
30
+ child.stdout.on('data', (data) => {
31
+ stdout += data.toString();
32
+ });
33
+ child.stderr.on('data', (data) => {
34
+ stderr += data.toString();
35
+ });
36
+ const timeoutId = setTimeout(() => {
37
+ child.kill('SIGTERM');
38
+ reject(new Error(`CLI timeout after ${timeout}ms`));
39
+ }, timeout);
40
+ child.on('close', (exitCode) => {
41
+ clearTimeout(timeoutId);
42
+ resolve({
43
+ stdout,
44
+ stderr,
45
+ exitCode: exitCode ?? 1,
46
+ });
47
+ });
48
+ child.on('error', (error) => {
49
+ clearTimeout(timeoutId);
50
+ reject(error);
51
+ });
52
+ });
53
+ }
54
+ function buildUrl(projectName, options = {}) {
55
+ const { orgId = 'admin', branch = 'master', revision, token } = options;
56
+ let url = `revisium://localhost:8082/${orgId}/${projectName}/${branch}`;
57
+ if (revision) {
58
+ url += `:${revision}`;
59
+ }
60
+ if (token) {
61
+ url += `?token=${token}`;
62
+ }
63
+ return url;
64
+ }
65
+ //# sourceMappingURL=cli-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-runner.js","sourceRoot":"","sources":["../../../e2e/utils/cli-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const E2E_CONFIG: {
2
+ API_URL: string;
3
+ ADMIN_USERNAME: string;
4
+ ADMIN_PASSWORD: string;
5
+ DOCKER_COMPOSE_FILE: string;
6
+ DOCKER_PROJECT_NAME: string;
7
+ HEALTH_CHECK_TIMEOUT: number;
8
+ HEALTH_CHECK_INTERVAL: number;
9
+ };
10
+ export declare const FIXTURES_PATH = "e2e/fixtures/demo-quests";