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.
- package/.github/workflows/ci.yml +12 -2
- package/README.md +66 -27
- package/codecov.yml +12 -1
- package/dist/e2e/setup/global-setup.d.ts +1 -0
- package/dist/e2e/setup/global-setup.js +30 -0
- package/dist/e2e/setup/global-setup.js.map +1 -0
- package/dist/e2e/setup/global-teardown.d.ts +1 -0
- package/dist/e2e/setup/global-teardown.js +40 -0
- package/dist/e2e/setup/global-teardown.js.map +1 -0
- package/dist/e2e/setup/test-setup.d.ts +1 -0
- package/dist/e2e/setup/test-setup.js +22 -0
- package/dist/e2e/setup/test-setup.js.map +1 -0
- package/dist/e2e/utils/api-client.d.ts +39 -0
- package/dist/e2e/utils/api-client.js +185 -0
- package/dist/e2e/utils/api-client.js.map +1 -0
- package/dist/e2e/utils/cli-runner.d.ts +17 -0
- package/dist/e2e/utils/cli-runner.js +65 -0
- package/dist/e2e/utils/cli-runner.js.map +1 -0
- package/dist/e2e/utils/constants.d.ts +10 -0
- package/dist/e2e/utils/constants.js +14 -0
- package/dist/e2e/utils/constants.js.map +1 -0
- package/dist/e2e/utils/docker-helper.d.ts +3 -0
- package/dist/e2e/utils/docker-helper.js +34 -0
- package/dist/e2e/utils/docker-helper.js.map +1 -0
- package/dist/e2e/utils/index.d.ts +5 -0
- package/dist/e2e/utils/index.js +22 -0
- package/dist/e2e/utils/index.js.map +1 -0
- package/dist/e2e/utils/test-project.d.ts +5 -0
- package/dist/e2e/utils/test-project.js +32 -0
- package/dist/e2e/utils/test-project.js.map +1 -0
- package/dist/package.json +18 -8
- package/dist/src/__generated__/api.d.ts +374 -373
- package/dist/src/__generated__/api.js +161 -161
- package/dist/src/__generated__/api.js.map +1 -1
- package/dist/src/app.module.js +32 -55
- package/dist/src/app.module.js.map +1 -1
- package/dist/src/commands/base-sync.command.d.ts +35 -0
- package/dist/src/commands/{sync-data.command.js → base-sync.command.js} +53 -87
- package/dist/src/commands/base-sync.command.js.map +1 -0
- package/dist/src/commands/base.command.d.ts +1 -11
- package/dist/src/commands/base.command.js +3 -68
- package/dist/src/commands/base.command.js.map +1 -1
- package/dist/src/commands/migration/apply-migrations.command.d.ts +22 -0
- package/dist/src/commands/{apply-migrations.command.js → migration/apply-migrations.command.js} +31 -34
- package/dist/src/commands/migration/apply-migrations.command.js.map +1 -0
- package/dist/src/commands/migration/migration.command.js.map +1 -0
- package/dist/src/commands/migration/save-migrations.command.d.ts +16 -0
- package/dist/src/commands/{save-migrations.command.js → migration/save-migrations.command.js} +16 -17
- package/dist/src/commands/migration/save-migrations.command.js.map +1 -0
- package/dist/src/commands/rows/rows.command.js.map +1 -0
- package/dist/src/commands/rows/save-rows.command.d.ts +20 -0
- package/dist/src/commands/{save-rows.command.js → rows/save-rows.command.js} +28 -68
- package/dist/src/commands/rows/save-rows.command.js.map +1 -0
- package/dist/src/commands/rows/upload-rows.command.d.ts +32 -0
- package/dist/src/commands/rows/upload-rows.command.js +213 -0
- package/dist/src/commands/rows/upload-rows.command.js.map +1 -0
- package/dist/src/commands/{create-migrations.command.d.ts → schema/create-migrations.command.d.ts} +4 -3
- package/dist/src/commands/{create-migrations.command.js → schema/create-migrations.command.js} +17 -14
- package/dist/src/commands/schema/create-migrations.command.js.map +1 -0
- package/dist/src/commands/schema/save-schema.command.d.ts +16 -0
- package/dist/src/commands/schema/save-schema.command.js +86 -0
- package/dist/src/commands/schema/save-schema.command.js.map +1 -0
- package/dist/src/commands/schema/schema.command.js.map +1 -0
- package/dist/src/commands/sync/sync-all.command.d.ts +13 -0
- package/dist/src/commands/sync/sync-all.command.js +91 -0
- package/dist/src/commands/sync/sync-all.command.js.map +1 -0
- package/dist/src/commands/sync/sync-data.command.d.ts +12 -0
- package/dist/src/commands/sync/sync-data.command.js +72 -0
- package/dist/src/commands/sync/sync-data.command.js.map +1 -0
- package/dist/src/commands/sync/sync-schema.command.d.ts +11 -0
- package/dist/src/commands/sync/sync-schema.command.js +66 -0
- package/dist/src/commands/sync/sync-schema.command.js.map +1 -0
- package/dist/src/commands/sync/sync.command.js.map +1 -0
- package/dist/src/coverage.d.ts +1 -0
- package/dist/src/coverage.js +17 -0
- package/dist/src/coverage.js.map +1 -0
- package/dist/src/main.js +19 -5
- package/dist/src/main.js.map +1 -1
- package/dist/src/services/common/index.d.ts +3 -0
- package/dist/src/services/common/index.js +10 -0
- package/dist/src/services/common/index.js.map +1 -0
- package/dist/src/services/common/interactive.service.js.map +1 -0
- package/dist/src/services/{json-validator.service.js → common/json-validator.service.js} +5 -5
- package/dist/src/services/common/json-validator.service.js.map +1 -0
- package/dist/src/services/common/logger.service.d.ts +33 -0
- package/dist/src/services/common/logger.service.js +118 -0
- package/dist/src/services/common/logger.service.js.map +1 -0
- package/dist/src/services/connection/api-client-adapter.d.ts +5 -0
- package/dist/src/services/connection/api-client-adapter.js +49 -0
- package/dist/src/services/connection/api-client-adapter.js.map +1 -0
- package/dist/src/services/connection/api-client.d.ts +11 -0
- package/dist/src/services/connection/api-client.js +66 -0
- package/dist/src/services/connection/api-client.js.map +1 -0
- package/dist/src/services/connection/connection-factory.service.d.ts +24 -0
- package/dist/src/services/connection/connection-factory.service.js +103 -0
- package/dist/src/services/connection/connection-factory.service.js.map +1 -0
- package/dist/src/services/connection/connection.service.d.ts +90 -0
- package/dist/src/services/connection/connection.service.js +67 -0
- package/dist/src/services/connection/connection.service.js.map +1 -0
- package/dist/src/services/connection/index.d.ts +4 -0
- package/dist/src/services/connection/index.js +12 -0
- package/dist/src/services/connection/index.js.map +1 -0
- package/dist/src/services/index.d.ts +4 -0
- package/dist/src/services/index.js +21 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/sync/commit-revision.service.d.ts +16 -0
- package/dist/src/services/sync/commit-revision.service.js +88 -0
- package/dist/src/services/sync/commit-revision.service.js.map +1 -0
- package/dist/src/services/sync/file-row-loader.service.d.ts +12 -0
- package/dist/src/services/sync/file-row-loader.service.js +65 -0
- package/dist/src/services/sync/file-row-loader.service.js.map +1 -0
- package/dist/src/services/sync/index.d.ts +7 -0
- package/dist/src/services/sync/index.js +19 -0
- package/dist/src/services/sync/index.js.map +1 -0
- package/dist/src/services/{row-sync.service.d.ts → sync/row-sync.service.d.ts} +12 -38
- package/dist/src/services/sync/row-sync.service.js +155 -0
- package/dist/src/services/sync/row-sync.service.js.map +1 -0
- package/dist/src/services/sync/sync-api.service.d.ts +14 -0
- package/dist/src/services/sync/sync-api.service.js +57 -0
- package/dist/src/services/sync/sync-api.service.js.map +1 -0
- package/dist/src/services/{sync-data.service.d.ts → sync/sync-data.service.d.ts} +4 -4
- package/dist/src/services/{sync-data.service.js → sync/sync-data.service.js} +35 -50
- package/dist/src/services/sync/sync-data.service.js.map +1 -0
- package/dist/src/services/{sync-schema.service.d.ts → sync/sync-schema.service.d.ts} +4 -2
- package/dist/src/services/{sync-schema.service.js → sync/sync-schema.service.js} +19 -15
- package/dist/src/services/sync/sync-schema.service.js.map +1 -0
- package/dist/src/services/sync/table-dependency.service.js.map +1 -0
- package/dist/src/services/url/auth-prompt.service.d.ts +19 -0
- package/dist/src/services/url/auth-prompt.service.js +63 -0
- package/dist/src/services/url/auth-prompt.service.js.map +1 -0
- package/dist/src/services/url/index.d.ts +3 -0
- package/dist/src/services/url/index.js +10 -0
- package/dist/src/services/url/index.js.map +1 -0
- package/dist/src/services/url/url-builder.service.d.ts +32 -0
- package/dist/src/services/url/url-builder.service.js +156 -0
- package/dist/src/services/url/url-builder.service.js.map +1 -0
- package/dist/src/services/url/url-parser.service.d.ts +21 -0
- package/dist/src/services/url/url-parser.service.js +135 -0
- package/dist/src/services/url/url-parser.service.js.map +1 -0
- package/dist/src/types/errors.d.ts +12 -0
- package/dist/src/types/errors.js +31 -0
- package/dist/src/types/errors.js.map +1 -0
- package/dist/src/utils/error-formatter.utils.d.ts +8 -0
- package/dist/src/utils/error-formatter.utils.js +22 -0
- package/dist/src/utils/error-formatter.utils.js.map +1 -0
- package/dist/src/utils/paginated-fetcher.d.ts +34 -0
- package/dist/src/utils/paginated-fetcher.js +50 -0
- package/dist/src/utils/paginated-fetcher.js.map +1 -0
- package/dist/src/utils/progress.d.ts +24 -0
- package/dist/src/utils/progress.js +29 -0
- package/dist/src/utils/progress.js.map +1 -0
- package/dist/src/utils/stats-formatter.utils.d.ts +14 -0
- package/dist/src/utils/stats-formatter.utils.js +50 -0
- package/dist/src/utils/stats-formatter.utils.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/docs/authentication.md +52 -23
- package/docs/configuration.md +21 -26
- package/docs/docker-deployment.md +244 -75
- package/docs/url-format.md +131 -7
- package/e2e/docker-compose.e2e.yml +31 -0
- package/e2e/fixtures/demo-quests/migrations.json +965 -0
- package/e2e/fixtures/demo-quests/rows/abilities/crystal_shield.json +35 -0
- package/e2e/fixtures/demo-quests/rows/abilities/fireball.json +35 -0
- package/e2e/fixtures/demo-quests/rows/abilities/stealth.json +35 -0
- package/e2e/fixtures/demo-quests/rows/classes/archer.json +13 -0
- package/e2e/fixtures/demo-quests/rows/classes/mage.json +13 -0
- package/e2e/fixtures/demo-quests/rows/classes/rogue.json +13 -0
- package/e2e/fixtures/demo-quests/rows/classes/warrior.json +13 -0
- package/e2e/fixtures/demo-quests/rows/effects/blinding_light.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/fire_shield.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/frost_ring.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/haste.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/healing_ray.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/ice_arrow.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/magic_barrier.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/mana_shield.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/poison_cloud.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/stone_skin.json +27 -0
- package/e2e/fixtures/demo-quests/rows/effects/whirlwind_blades.json +27 -0
- package/e2e/fixtures/demo-quests/rows/factions/black_order.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/desert_nomads.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/forest_elves.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/guardians.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/holy_crusaders.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/hunters.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/iron_legion.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/mages_guild.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/shadow_assassins.json +13 -0
- package/e2e/fixtures/demo-quests/rows/factions/thieves.json +13 -0
- package/e2e/fixtures/demo-quests/rows/item_types/accessory.json +13 -0
- package/e2e/fixtures/demo-quests/rows/item_types/armor.json +13 -0
- package/e2e/fixtures/demo-quests/rows/item_types/potion.json +13 -0
- package/e2e/fixtures/demo-quests/rows/item_types/weapon.json +13 -0
- package/e2e/fixtures/demo-quests/rows/items/crystal_armor.json +39 -0
- package/e2e/fixtures/demo-quests/rows/items/enchanted_staff.json +39 -0
- package/e2e/fixtures/demo-quests/rows/items/flaming_sword.json +39 -0
- package/e2e/fixtures/demo-quests/rows/items/healing_potion.json +32 -0
- package/e2e/fixtures/demo-quests/rows/items/shadow_dagger.json +39 -0
- package/e2e/fixtures/demo-quests/rows/locations/burning_pit.json +67 -0
- package/e2e/fixtures/demo-quests/rows/locations/crystal_maze.json +67 -0
- package/e2e/fixtures/demo-quests/rows/locations/frostwind_pass.json +67 -0
- package/e2e/fixtures/demo-quests/rows/locations/frozen_lake.json +67 -0
- package/e2e/fixtures/demo-quests/rows/locations/glittering_cavern.json +67 -0
- package/e2e/fixtures/demo-quests/rows/locations/mystic_clearing.json +67 -0
- package/e2e/fixtures/demo-quests/rows/locations/scorched_dunes.json +84 -0
- package/e2e/fixtures/demo-quests/rows/locations/whispering_grove.json +67 -0
- package/e2e/fixtures/demo-quests/rows/npcs/crystal_keeper.json +41 -0
- package/e2e/fixtures/demo-quests/rows/npcs/desert_raider.json +41 -0
- package/e2e/fixtures/demo-quests/rows/npcs/enchanted_druid.json +41 -0
- package/e2e/fixtures/demo-quests/rows/npcs/forest_guardian.json +41 -0
- package/e2e/fixtures/demo-quests/rows/npcs/frost_guardian.json +41 -0
- package/e2e/fixtures/demo-quests/rows/quest_types/escort_quest.json +13 -0
- package/e2e/fixtures/demo-quests/rows/quest_types/exploration_quest.json +13 -0
- package/e2e/fixtures/demo-quests/rows/quest_types/fetch_quest.json +13 -0
- package/e2e/fixtures/demo-quests/rows/quest_types/kill_quest.json +13 -0
- package/e2e/fixtures/demo-quests/rows/quests/okhota_raider.json +70 -0
- package/e2e/fixtures/demo-quests/rows/quests/poisk_staff.json +84 -0
- package/e2e/fixtures/demo-quests/rows/quests/zashita_labirint.json +75 -0
- package/e2e/fixtures/demo-quests/rows/regions/crystal_caves.json +13 -0
- package/e2e/fixtures/demo-quests/rows/regions/desert_wastes.json +13 -0
- package/e2e/fixtures/demo-quests/rows/regions/enchanted_forest.json +13 -0
- package/e2e/fixtures/demo-quests/rows/regions/northern_mountains.json +13 -0
- package/e2e/fixtures/demo-quests/rows/skills/blok_shhitom.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/boevoy_klich.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/charodeyskiy_i.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/charodeyskiy_v.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/iscelenie.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/ledyanaya_bron.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/ognennyy_shar.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/shhit_many.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/sprint.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/ukreplenie.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/usilenie_uklo.json +18 -0
- package/e2e/fixtures/demo-quests/rows/skills/vnutrenniy_og.json +18 -0
- package/e2e/fixtures/demo-quests/rows/stats/agility.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/armor_penetration.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/attack_speed.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/block_chance.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/cooldown_reduction.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/critical_chance.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/critical_damage.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/defense.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/evasion.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/health.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/health_regeneration.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/intelligence.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/magic_resistance.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/mana.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/mana_regeneration.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/movement_speed.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/resilience.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/spell_power.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/stamina.json +13 -0
- package/e2e/fixtures/demo-quests/rows/stats/strength.json +13 -0
- package/e2e/fixtures/demo-quests/schemas/abilities.json +83 -0
- package/e2e/fixtures/demo-quests/schemas/classes.json +18 -0
- package/e2e/fixtures/demo-quests/schemas/effects.json +79 -0
- package/e2e/fixtures/demo-quests/schemas/factions.json +18 -0
- package/e2e/fixtures/demo-quests/schemas/files.json +13 -0
- package/e2e/fixtures/demo-quests/schemas/item_types.json +18 -0
- package/e2e/fixtures/demo-quests/schemas/items.json +126 -0
- package/e2e/fixtures/demo-quests/schemas/locations.json +84 -0
- package/e2e/fixtures/demo-quests/schemas/npcs.json +95 -0
- package/e2e/fixtures/demo-quests/schemas/quest_types.json +18 -0
- package/e2e/fixtures/demo-quests/schemas/quests.json +248 -0
- package/e2e/fixtures/demo-quests/schemas/regions.json +18 -0
- package/e2e/fixtures/demo-quests/schemas/skills.json +43 -0
- package/e2e/fixtures/demo-quests/schemas/stats.json +18 -0
- package/e2e/jest-e2e.json +17 -0
- package/e2e/setup/global-setup.ts +38 -0
- package/e2e/setup/global-teardown.ts +44 -0
- package/e2e/setup/test-setup.ts +32 -0
- package/e2e/tests/01-auth.e2e-spec.ts +159 -0
- package/e2e/tests/02-schema.e2e-spec.ts +173 -0
- package/e2e/tests/03-migrate.e2e-spec.ts +172 -0
- package/e2e/tests/04-rows.e2e-spec.ts +443 -0
- package/e2e/tests/05-sync.e2e-spec.ts +568 -0
- package/e2e/tests/06-options.e2e-spec.ts +283 -0
- package/e2e/utils/api-client.ts +286 -0
- package/e2e/utils/cli-runner.ts +99 -0
- package/e2e/utils/constants.ts +11 -0
- package/e2e/utils/docker-helper.ts +49 -0
- package/e2e/utils/index.ts +5 -0
- package/e2e/utils/test-project.ts +38 -0
- package/eslint.config.mjs +13 -0
- package/nyc.config.js +19 -0
- package/package.json +18 -8
- package/scripts/merge-coverage.js +130 -0
- package/sonar-project.properties +3 -3
- package/src/__generated__/api.ts +927 -926
- package/src/app.module.ts +42 -46
- package/src/commands/{sync-data.command.ts → base-sync.command.ts} +75 -100
- package/src/commands/base.command.ts +3 -52
- package/src/commands/{apply-migrations.command.ts → migration/apply-migrations.command.ts} +31 -35
- package/src/commands/{migration.command.ts → migration/migration.command.ts} +2 -2
- package/src/commands/{save-migrations.command.ts → migration/save-migrations.command.ts} +14 -17
- package/src/commands/{rows.command.ts → rows/rows.command.ts} +2 -2
- package/src/commands/rows/save-rows.command.ts +144 -0
- package/src/commands/rows/upload-rows.command.ts +281 -0
- package/src/commands/{create-migrations.command.ts → schema/create-migrations.command.ts} +14 -21
- package/src/commands/schema/save-schema.command.ts +95 -0
- package/src/commands/{schema.command.ts → schema/schema.command.ts} +2 -2
- package/src/commands/sync/sync-all.command.ts +119 -0
- package/src/commands/sync/sync-data.command.ts +83 -0
- package/src/commands/sync/sync-schema.command.ts +67 -0
- package/src/commands/{sync.command.ts → sync/sync.command.ts} +3 -3
- package/src/coverage.ts +21 -0
- package/src/main.ts +21 -5
- package/src/services/common/__tests__/interactive.service.spec.ts +117 -0
- package/src/services/common/index.ts +3 -0
- package/src/services/common/logger.service.ts +137 -0
- package/src/services/connection/__tests__/connection.service.spec.ts +292 -0
- package/src/services/connection/api-client-adapter.ts +58 -0
- package/src/services/connection/api-client.ts +92 -0
- package/src/services/connection/connection-factory.service.ts +142 -0
- package/src/services/connection/connection.service.ts +64 -0
- package/src/services/connection/index.ts +11 -0
- package/src/services/index.ts +4 -0
- package/src/services/sync/__tests__/file-row-loader.service.spec.ts +157 -0
- package/src/services/sync/__tests__/row-sync.service.spec.ts +253 -0
- package/src/services/{__tests__ → sync/__tests__}/table-dependency.service.spec.ts +1 -1
- package/src/services/sync/commit-revision.service.ts +132 -0
- package/src/services/sync/file-row-loader.service.ts +81 -0
- package/src/services/sync/index.ts +17 -0
- package/src/services/sync/row-sync.service.ts +304 -0
- package/src/services/sync/sync-api.service.ts +50 -0
- package/src/services/{sync-data.service.ts → sync/sync-data.service.ts} +45 -74
- package/src/services/{sync-schema.service.ts → sync/sync-schema.service.ts} +22 -17
- package/src/services/{__tests__ → url/__tests__}/url-builder.service.spec.ts +26 -12
- package/src/services/url/auth-prompt.service.ts +73 -0
- package/src/services/url/index.ts +10 -0
- package/src/services/url/url-builder.service.ts +221 -0
- package/src/services/url/url-parser.service.ts +168 -0
- package/src/types/errors.ts +35 -0
- package/src/utils/__tests__/error-formatter.utils.spec.ts +94 -0
- package/src/utils/__tests__/parse-boolean.utils.spec.ts +69 -0
- package/src/utils/__tests__/stats-formatter.utils.spec.ts +138 -0
- package/src/utils/error-formatter.utils.ts +34 -0
- package/src/utils/paginated-fetcher.ts +94 -0
- package/src/utils/progress.ts +53 -0
- package/src/utils/stats-formatter.utils.ts +62 -0
- package/dist/src/commands/apply-migrations.command.d.ts +0 -26
- package/dist/src/commands/apply-migrations.command.js.map +0 -1
- package/dist/src/commands/apply-patches.command.d.ts +0 -35
- package/dist/src/commands/apply-patches.command.js +0 -308
- package/dist/src/commands/apply-patches.command.js.map +0 -1
- package/dist/src/commands/base-patch.command.d.ts +0 -24
- package/dist/src/commands/base-patch.command.js +0 -62
- package/dist/src/commands/base-patch.command.js.map +0 -1
- package/dist/src/commands/create-migrations.command.js.map +0 -1
- package/dist/src/commands/migration.command.js.map +0 -1
- package/dist/src/commands/patches.command.d.ts +0 -5
- package/dist/src/commands/patches.command.js +0 -39
- package/dist/src/commands/patches.command.js.map +0 -1
- package/dist/src/commands/preview-patches.command.d.ts +0 -11
- package/dist/src/commands/preview-patches.command.js +0 -64
- package/dist/src/commands/preview-patches.command.js.map +0 -1
- package/dist/src/commands/rows.command.js.map +0 -1
- package/dist/src/commands/save-migrations.command.d.ts +0 -16
- package/dist/src/commands/save-migrations.command.js.map +0 -1
- package/dist/src/commands/save-patches.command.d.ts +0 -29
- package/dist/src/commands/save-patches.command.js +0 -162
- package/dist/src/commands/save-patches.command.js.map +0 -1
- package/dist/src/commands/save-rows.command.d.ts +0 -23
- package/dist/src/commands/save-rows.command.js.map +0 -1
- package/dist/src/commands/save-schema.command.d.ts +0 -19
- package/dist/src/commands/save-schema.command.js +0 -105
- package/dist/src/commands/save-schema.command.js.map +0 -1
- package/dist/src/commands/schema.command.js.map +0 -1
- package/dist/src/commands/sync-all.command.d.ts +0 -33
- package/dist/src/commands/sync-all.command.js +0 -196
- package/dist/src/commands/sync-all.command.js.map +0 -1
- package/dist/src/commands/sync-data.command.d.ts +0 -31
- package/dist/src/commands/sync-data.command.js.map +0 -1
- package/dist/src/commands/sync-schema.command.d.ts +0 -26
- package/dist/src/commands/sync-schema.command.js +0 -140
- package/dist/src/commands/sync-schema.command.js.map +0 -1
- package/dist/src/commands/sync.command.js.map +0 -1
- package/dist/src/commands/upload-rows.command.d.ts +0 -61
- package/dist/src/commands/upload-rows.command.js +0 -618
- package/dist/src/commands/upload-rows.command.js.map +0 -1
- package/dist/src/commands/validate-patches.command.d.ts +0 -16
- package/dist/src/commands/validate-patches.command.js +0 -91
- package/dist/src/commands/validate-patches.command.js.map +0 -1
- package/dist/src/config/json-value-patch-schema.d.ts +0 -2
- package/dist/src/config/json-value-patch-schema.js +0 -49
- package/dist/src/config/json-value-patch-schema.js.map +0 -1
- package/dist/src/config/patch-file.schema.d.ts +0 -3
- package/dist/src/config/patch-file.schema.js +0 -110
- package/dist/src/config/patch-file.schema.js.map +0 -1
- package/dist/src/services/commit-revision.service.d.ts +0 -23
- package/dist/src/services/commit-revision.service.js +0 -87
- package/dist/src/services/commit-revision.service.js.map +0 -1
- package/dist/src/services/core-api.service.d.ts +0 -20
- package/dist/src/services/core-api.service.js +0 -86
- package/dist/src/services/core-api.service.js.map +0 -1
- package/dist/src/services/draft-revision.service.d.ts +0 -14
- package/dist/src/services/draft-revision.service.js +0 -45
- package/dist/src/services/draft-revision.service.js.map +0 -1
- package/dist/src/services/interactive.service.js.map +0 -1
- package/dist/src/services/json-validator.service.js.map +0 -1
- package/dist/src/services/patch-diff.service.d.ts +0 -15
- package/dist/src/services/patch-diff.service.js +0 -149
- package/dist/src/services/patch-diff.service.js.map +0 -1
- package/dist/src/services/patch-generator.service.d.ts +0 -4
- package/dist/src/services/patch-generator.service.js +0 -33
- package/dist/src/services/patch-generator.service.js.map +0 -1
- package/dist/src/services/patch-loader.service.d.ts +0 -15
- package/dist/src/services/patch-loader.service.js +0 -146
- package/dist/src/services/patch-loader.service.js.map +0 -1
- package/dist/src/services/patch-validation.service.d.ts +0 -30
- package/dist/src/services/patch-validation.service.js +0 -223
- package/dist/src/services/patch-validation.service.js.map +0 -1
- package/dist/src/services/resolve-options.service.d.ts +0 -15
- package/dist/src/services/resolve-options.service.js +0 -45
- package/dist/src/services/resolve-options.service.js.map +0 -1
- package/dist/src/services/row-sync.service.js +0 -274
- package/dist/src/services/row-sync.service.js.map +0 -1
- package/dist/src/services/sync-api.service.d.ts +0 -35
- package/dist/src/services/sync-api.service.js +0 -165
- package/dist/src/services/sync-api.service.js.map +0 -1
- package/dist/src/services/sync-data.service.js.map +0 -1
- package/dist/src/services/sync-schema.service.js.map +0 -1
- package/dist/src/services/table-dependency.service.js.map +0 -1
- package/dist/src/services/url-builder.service.d.ts +0 -52
- package/dist/src/services/url-builder.service.js +0 -292
- package/dist/src/services/url-builder.service.js.map +0 -1
- package/dist/src/types/json-patch.types.d.ts +0 -21
- package/dist/src/types/json-patch.types.js +0 -3
- package/dist/src/types/json-patch.types.js.map +0 -1
- package/dist/src/types/patch.types.d.ts +0 -50
- package/dist/src/types/patch.types.js +0 -3
- package/dist/src/types/patch.types.js.map +0 -1
- package/dist/src/utils/diff-formatter.utils.d.ts +0 -3
- package/dist/src/utils/diff-formatter.utils.js +0 -45
- package/dist/src/utils/diff-formatter.utils.js.map +0 -1
- package/docs/patches-commands.md +0 -188
- package/src/commands/__tests__/apply-migrations.command.spec.ts +0 -398
- package/src/commands/__tests__/apply-patches.command.spec.ts +0 -1126
- package/src/commands/__tests__/base.command.spec.ts +0 -118
- package/src/commands/__tests__/create-migrations.command.spec.ts +0 -354
- package/src/commands/__tests__/migration.command.spec.ts +0 -30
- package/src/commands/__tests__/preview-patches.command.spec.ts +0 -227
- package/src/commands/__tests__/rows.command.spec.ts +0 -30
- package/src/commands/__tests__/save-migrations.command.spec.ts +0 -271
- package/src/commands/__tests__/save-patches.command.spec.ts +0 -286
- package/src/commands/__tests__/save-rows.command.spec.ts +0 -488
- package/src/commands/__tests__/save-schema.command.spec.ts +0 -358
- package/src/commands/__tests__/schema.command.spec.ts +0 -30
- package/src/commands/__tests__/sync-all.command.spec.ts +0 -391
- package/src/commands/__tests__/sync-data.command.spec.ts +0 -311
- package/src/commands/__tests__/sync-schema.command.spec.ts +0 -285
- package/src/commands/__tests__/sync.command.spec.ts +0 -37
- package/src/commands/__tests__/upload-rows.command.spec.ts +0 -1028
- package/src/commands/__tests__/validate-patches.command.spec.ts +0 -179
- package/src/commands/apply-patches.command.ts +0 -454
- package/src/commands/base-patch.command.ts +0 -96
- package/src/commands/patches.command.ts +0 -24
- package/src/commands/preview-patches.command.ts +0 -56
- package/src/commands/save-patches.command.ts +0 -164
- package/src/commands/save-rows.command.ts +0 -189
- package/src/commands/save-schema.command.ts +0 -121
- package/src/commands/sync-all.command.ts +0 -203
- package/src/commands/sync-schema.command.ts +0 -131
- package/src/commands/upload-rows.command.ts +0 -968
- package/src/commands/validate-patches.command.ts +0 -78
- package/src/config/__tests__/patch-file.schema.spec.ts +0 -375
- package/src/config/json-value-patch-schema.ts +0 -49
- package/src/config/patch-file.schema.ts +0 -109
- package/src/services/__tests__/commit-revision.service.spec.ts +0 -257
- package/src/services/__tests__/core-api.service.spec.ts +0 -271
- package/src/services/__tests__/draft-revision.service.spec.ts +0 -90
- package/src/services/__tests__/interactive.service.spec.ts +0 -107
- package/src/services/__tests__/patch-diff.service.spec.ts +0 -409
- package/src/services/__tests__/patch-loader.service.spec.ts +0 -434
- package/src/services/__tests__/patch-validation.service.spec.ts +0 -539
- package/src/services/__tests__/resolve-options.service.spec.ts +0 -176
- package/src/services/__tests__/row-sync.service.spec.ts +0 -826
- package/src/services/__tests__/sync-api.service.spec.ts +0 -77
- package/src/services/__tests__/sync-data.service.spec.ts +0 -719
- package/src/services/__tests__/sync-schema.service.spec.ts +0 -471
- package/src/services/commit-revision.service.ts +0 -116
- package/src/services/core-api.service.ts +0 -96
- package/src/services/draft-revision.service.ts +0 -45
- package/src/services/patch-diff.service.ts +0 -208
- package/src/services/patch-generator.service.ts +0 -26
- package/src/services/patch-loader.service.ts +0 -178
- package/src/services/patch-validation.service.ts +0 -296
- package/src/services/resolve-options.service.ts +0 -46
- package/src/services/row-sync.service.ts +0 -573
- package/src/services/sync-api.service.ts +0 -239
- package/src/services/url-builder.service.ts +0 -447
- package/src/types/json-patch.types.ts +0 -16
- package/src/types/patch.types.ts +0 -59
- package/src/utils/__tests__/diff-formatter.utils.spec.ts +0 -331
- package/src/utils/diff-formatter.utils.ts +0 -52
- /package/dist/src/commands/{migration.command.d.ts → migration/migration.command.d.ts} +0 -0
- /package/dist/src/commands/{migration.command.js → migration/migration.command.js} +0 -0
- /package/dist/src/commands/{rows.command.d.ts → rows/rows.command.d.ts} +0 -0
- /package/dist/src/commands/{rows.command.js → rows/rows.command.js} +0 -0
- /package/dist/src/commands/{schema.command.d.ts → schema/schema.command.d.ts} +0 -0
- /package/dist/src/commands/{schema.command.js → schema/schema.command.js} +0 -0
- /package/dist/src/commands/{sync.command.d.ts → sync/sync.command.d.ts} +0 -0
- /package/dist/src/commands/{sync.command.js → sync/sync.command.js} +0 -0
- /package/dist/src/services/{interactive.service.d.ts → common/interactive.service.d.ts} +0 -0
- /package/dist/src/services/{interactive.service.js → common/interactive.service.js} +0 -0
- /package/dist/src/services/{json-validator.service.d.ts → common/json-validator.service.d.ts} +0 -0
- /package/dist/src/services/{table-dependency.service.d.ts → sync/table-dependency.service.d.ts} +0 -0
- /package/dist/src/services/{table-dependency.service.js → sync/table-dependency.service.js} +0 -0
- /package/src/services/{__tests__ → common/__tests__}/json-validator.service.spec.ts +0 -0
- /package/src/services/{interactive.service.ts → common/interactive.service.ts} +0 -0
- /package/src/services/{json-validator.service.ts → common/json-validator.service.ts} +0 -0
- /package/src/services/{table-dependency.service.ts → sync/table-dependency.service.ts} +0 -0
package/.github/workflows/ci.yml
CHANGED
|
@@ -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
|
|
52
|
-
|
|
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
|
-
|
|
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
|
|
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";
|