synapse-mcp 1.0.0 → 1.0.2
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/README.md +1820 -147
- package/dist/constants.d.ts +10 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +18 -8
- package/dist/constants.js.map +1 -1
- package/dist/events/emitter.d.ts +63 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +112 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +51 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +3 -0
- package/dist/events/types.js.map +1 -0
- package/dist/formatters/compose.d.ts +185 -0
- package/dist/formatters/compose.d.ts.map +1 -0
- package/dist/formatters/compose.js +397 -0
- package/dist/formatters/compose.js.map +1 -0
- package/dist/formatters/container.d.ts +84 -0
- package/dist/formatters/container.d.ts.map +1 -0
- package/dist/formatters/container.js +323 -0
- package/dist/formatters/container.js.map +1 -0
- package/dist/formatters/diagnostics.d.ts +20 -0
- package/dist/formatters/diagnostics.d.ts.map +1 -0
- package/dist/formatters/diagnostics.js +73 -0
- package/dist/formatters/diagnostics.js.map +1 -0
- package/dist/formatters/docker.d.ts +139 -0
- package/dist/formatters/docker.d.ts.map +1 -0
- package/dist/formatters/docker.js +216 -0
- package/dist/formatters/docker.js.map +1 -0
- package/dist/formatters/host.d.ts +137 -0
- package/dist/formatters/host.d.ts.map +1 -0
- package/dist/formatters/host.js +198 -0
- package/dist/formatters/host.js.map +1 -0
- package/dist/formatters/index.d.ts +17 -270
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +21 -456
- package/dist/formatters/index.js.map +1 -1
- package/dist/formatters/scout.d.ts +424 -0
- package/dist/formatters/scout.d.ts.map +1 -0
- package/dist/formatters/scout.js +687 -0
- package/dist/formatters/scout.js.map +1 -0
- package/dist/formatters/strategy.d.ts +105 -0
- package/dist/formatters/strategy.d.ts.map +1 -0
- package/dist/formatters/strategy.js +120 -0
- package/dist/formatters/strategy.js.map +1 -0
- package/dist/formatters/utils.d.ts +84 -0
- package/dist/formatters/utils.d.ts.map +1 -0
- package/dist/formatters/utils.js +129 -0
- package/dist/formatters/utils.js.map +1 -0
- package/dist/health-rate-limiter.d.ts +59 -0
- package/dist/health-rate-limiter.d.ts.map +1 -0
- package/dist/health-rate-limiter.js +159 -0
- package/dist/health-rate-limiter.js.map +1 -0
- package/dist/index.js +61 -100
- package/dist/index.js.map +1 -1
- package/dist/middleware/async-handler.d.ts +62 -0
- package/dist/middleware/async-handler.d.ts.map +1 -0
- package/dist/middleware/async-handler.js +58 -0
- package/dist/middleware/async-handler.js.map +1 -0
- package/dist/middleware/auth.d.ts +32 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +63 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/csrf-protection.d.ts +58 -0
- package/dist/middleware/csrf-protection.d.ts.map +1 -0
- package/dist/middleware/csrf-protection.js +123 -0
- package/dist/middleware/csrf-protection.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +49 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +90 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/error-mapper.d.ts +44 -0
- package/dist/middleware/error-mapper.d.ts.map +1 -0
- package/dist/middleware/error-mapper.js +127 -0
- package/dist/middleware/error-mapper.js.map +1 -0
- package/dist/middleware/index.d.ts +13 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +13 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/request-id.d.ts +22 -0
- package/dist/middleware/request-id.d.ts.map +1 -0
- package/dist/middleware/request-id.js +31 -0
- package/dist/middleware/request-id.js.map +1 -0
- package/dist/middleware/types.d.ts +33 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +2 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/schemas/common.d.ts +205 -8
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +290 -17
- package/dist/schemas/common.js.map +1 -1
- package/dist/schemas/flux/compose.d.ts +307 -44
- package/dist/schemas/flux/compose.d.ts.map +1 -1
- package/dist/schemas/flux/compose.js +74 -48
- package/dist/schemas/flux/compose.js.map +1 -1
- package/dist/schemas/flux/container.d.ts +423 -56
- package/dist/schemas/flux/container.d.ts.map +1 -1
- package/dist/schemas/flux/container.js +83 -61
- package/dist/schemas/flux/container.js.map +1 -1
- package/dist/schemas/flux/docker.d.ts +254 -37
- package/dist/schemas/flux/docker.d.ts.map +1 -1
- package/dist/schemas/flux/docker.js +69 -39
- package/dist/schemas/flux/docker.js.map +1 -1
- package/dist/schemas/flux/host.d.ts +312 -29
- package/dist/schemas/flux/host.d.ts.map +1 -1
- package/dist/schemas/flux/host.js +74 -31
- package/dist/schemas/flux/host.js.map +1 -1
- package/dist/schemas/flux/index.d.ts +503 -11
- package/dist/schemas/flux/index.d.ts.map +1 -1
- package/dist/schemas/flux/index.js +34 -70
- package/dist/schemas/flux/index.js.map +1 -1
- package/dist/schemas/host-config.d.ts +76 -0
- package/dist/schemas/host-config.d.ts.map +1 -0
- package/dist/schemas/host-config.js +105 -0
- package/dist/schemas/host-config.js.map +1 -0
- package/dist/schemas/scout/index.d.ts +80 -23
- package/dist/schemas/scout/index.d.ts.map +1 -1
- package/dist/schemas/scout/index.js +26 -11
- package/dist/schemas/scout/index.js.map +1 -1
- package/dist/schemas/scout/logs.d.ts +17 -5
- package/dist/schemas/scout/logs.d.ts.map +1 -1
- package/dist/schemas/scout/logs.js +41 -31
- package/dist/schemas/scout/logs.js.map +1 -1
- package/dist/schemas/scout/simple.d.ts +126 -11
- package/dist/schemas/scout/simple.d.ts.map +1 -1
- package/dist/schemas/scout/simple.js +112 -57
- package/dist/schemas/scout/simple.js.map +1 -1
- package/dist/schemas/scout/zfs.d.ts +17 -5
- package/dist/schemas/scout/zfs.d.ts.map +1 -1
- package/dist/schemas/scout/zfs.js +34 -25
- package/dist/schemas/scout/zfs.js.map +1 -1
- package/dist/services/cache-layer.d.ts +160 -0
- package/dist/services/cache-layer.d.ts.map +1 -0
- package/dist/services/cache-layer.js +138 -0
- package/dist/services/cache-layer.js.map +1 -0
- package/dist/services/compose-cache.d.ts +75 -0
- package/dist/services/compose-cache.d.ts.map +1 -0
- package/dist/services/compose-cache.js +178 -0
- package/dist/services/compose-cache.js.map +1 -0
- package/dist/services/compose-discovery.d.ts +46 -0
- package/dist/services/compose-discovery.d.ts.map +1 -0
- package/dist/services/compose-discovery.js +219 -0
- package/dist/services/compose-discovery.js.map +1 -0
- package/dist/services/compose-project-lister.d.ts +27 -0
- package/dist/services/compose-project-lister.d.ts.map +1 -0
- package/dist/services/compose-project-lister.js +71 -0
- package/dist/services/compose-project-lister.js.map +1 -0
- package/dist/services/compose-scanner.d.ts +63 -0
- package/dist/services/compose-scanner.d.ts.map +1 -0
- package/dist/services/compose-scanner.js +253 -0
- package/dist/services/compose-scanner.js.map +1 -0
- package/dist/services/compose.d.ts +64 -28
- package/dist/services/compose.d.ts.map +1 -1
- package/dist/services/compose.js +220 -98
- package/dist/services/compose.js.map +1 -1
- package/dist/services/config-loader.d.ts +23 -0
- package/dist/services/config-loader.d.ts.map +1 -0
- package/dist/services/config-loader.js +124 -0
- package/dist/services/config-loader.js.map +1 -0
- package/dist/services/config-service.d.ts +38 -0
- package/dist/services/config-service.d.ts.map +1 -0
- package/dist/services/config-service.js +225 -0
- package/dist/services/config-service.js.map +1 -0
- package/dist/services/container-host-map-cache.d.ts +121 -0
- package/dist/services/container-host-map-cache.d.ts.map +1 -0
- package/dist/services/container-host-map-cache.js +188 -0
- package/dist/services/container-host-map-cache.js.map +1 -0
- package/dist/services/container.d.ts +194 -6
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +386 -11
- package/dist/services/container.js.map +1 -1
- package/dist/services/diagnostics.d.ts +57 -0
- package/dist/services/diagnostics.d.ts.map +1 -0
- package/dist/services/diagnostics.js +271 -0
- package/dist/services/diagnostics.js.map +1 -0
- package/dist/services/docker/container-service.d.ts +123 -0
- package/dist/services/docker/container-service.d.ts.map +1 -0
- package/dist/services/docker/container-service.js +347 -0
- package/dist/services/docker/container-service.js.map +1 -0
- package/dist/services/docker/image-service.d.ts +82 -0
- package/dist/services/docker/image-service.d.ts.map +1 -0
- package/dist/services/docker/image-service.js +193 -0
- package/dist/services/docker/image-service.js.map +1 -0
- package/dist/services/docker/index.d.ts +80 -0
- package/dist/services/docker/index.d.ts.map +1 -0
- package/dist/services/docker/index.js +103 -0
- package/dist/services/docker/index.js.map +1 -0
- package/dist/services/docker/network-service.d.ts +22 -0
- package/dist/services/docker/network-service.d.ts.map +1 -0
- package/dist/services/docker/network-service.js +43 -0
- package/dist/services/docker/network-service.js.map +1 -0
- package/dist/services/docker/system-service.d.ts +49 -0
- package/dist/services/docker/system-service.d.ts.map +1 -0
- package/dist/services/docker/system-service.js +215 -0
- package/dist/services/docker/system-service.js.map +1 -0
- package/dist/services/docker/utils/client-factory.d.ts +56 -0
- package/dist/services/docker/utils/client-factory.d.ts.map +1 -0
- package/dist/services/docker/utils/client-factory.js +139 -0
- package/dist/services/docker/utils/client-factory.js.map +1 -0
- package/dist/services/docker/utils/client-manager.d.ts +88 -0
- package/dist/services/docker/utils/client-manager.d.ts.map +1 -0
- package/dist/services/docker/utils/client-manager.js +124 -0
- package/dist/services/docker/utils/client-manager.js.map +1 -0
- package/dist/services/docker/utils/exec-handler.d.ts +94 -0
- package/dist/services/docker/utils/exec-handler.d.ts.map +1 -0
- package/dist/services/docker/utils/exec-handler.js +197 -0
- package/dist/services/docker/utils/exec-handler.js.map +1 -0
- package/dist/services/docker/utils/formatters.d.ts +13 -0
- package/dist/services/docker/utils/formatters.d.ts.map +1 -0
- package/dist/services/docker/utils/formatters.js +33 -0
- package/dist/services/docker/utils/formatters.js.map +1 -0
- package/dist/services/docker/utils/log-parser.d.ts +10 -0
- package/dist/services/docker/utils/log-parser.d.ts.map +1 -0
- package/dist/services/docker/utils/log-parser.js +48 -0
- package/dist/services/docker/utils/log-parser.js.map +1 -0
- package/dist/services/docker/utils/stats-calculator.d.ts +68 -0
- package/dist/services/docker/utils/stats-calculator.d.ts.map +1 -0
- package/dist/services/docker/utils/stats-calculator.js +61 -0
- package/dist/services/docker/utils/stats-calculator.js.map +1 -0
- package/dist/services/docker/volume-service.d.ts +22 -0
- package/dist/services/docker/volume-service.d.ts.map +1 -0
- package/dist/services/docker/volume-service.js +48 -0
- package/dist/services/docker/volume-service.js.map +1 -0
- package/dist/services/docker-interfaces.d.ts +283 -0
- package/dist/services/docker-interfaces.d.ts.map +1 -0
- package/dist/services/docker-interfaces.js +13 -0
- package/dist/services/docker-interfaces.js.map +1 -0
- package/dist/services/docker.d.ts +42 -5
- package/dist/services/docker.d.ts.map +1 -1
- package/dist/services/docker.js +335 -127
- package/dist/services/docker.js.map +1 -1
- package/dist/services/file-service.d.ts +6 -2
- package/dist/services/file-service.d.ts.map +1 -1
- package/dist/services/file-service.js +156 -52
- package/dist/services/file-service.js.map +1 -1
- package/dist/services/host-config-repository.d.ts +133 -0
- package/dist/services/host-config-repository.d.ts.map +1 -0
- package/dist/services/host-config-repository.js +323 -0
- package/dist/services/host-config-repository.js.map +1 -0
- package/dist/services/host-resolver.d.ts +49 -0
- package/dist/services/host-resolver.d.ts.map +1 -0
- package/dist/services/host-resolver.js +176 -0
- package/dist/services/host-resolver.js.map +1 -0
- package/dist/services/interfaces.d.ts +61 -194
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/local-executor.d.ts +31 -0
- package/dist/services/local-executor.d.ts.map +1 -0
- package/dist/services/local-executor.js +71 -0
- package/dist/services/local-executor.js.map +1 -0
- package/dist/services/ssh-config-loader.d.ts +35 -0
- package/dist/services/ssh-config-loader.d.ts.map +1 -0
- package/dist/services/ssh-config-loader.js +218 -0
- package/dist/services/ssh-config-loader.js.map +1 -0
- package/dist/services/ssh-pool.d.ts +26 -1
- package/dist/services/ssh-pool.d.ts.map +1 -1
- package/dist/services/ssh-pool.js +166 -25
- package/dist/services/ssh-pool.js.map +1 -1
- package/dist/services/ssh-service.d.ts +3 -0
- package/dist/services/ssh-service.d.ts.map +1 -1
- package/dist/services/ssh-service.js +53 -31
- package/dist/services/ssh-service.js.map +1 -1
- package/dist/services/ssh.d.ts +2 -6
- package/dist/services/ssh.d.ts.map +1 -1
- package/dist/services/ssh.js +9 -40
- package/dist/services/ssh.js.map +1 -1
- package/dist/tools/definitions/flux.d.ts +13 -0
- package/dist/tools/definitions/flux.d.ts.map +1 -0
- package/dist/tools/definitions/flux.js +101 -0
- package/dist/tools/definitions/flux.js.map +1 -0
- package/dist/tools/definitions/index.d.ts +8 -0
- package/dist/tools/definitions/index.d.ts.map +1 -0
- package/dist/tools/definitions/index.js +8 -0
- package/dist/tools/definitions/index.js.map +1 -0
- package/dist/tools/definitions/scout.d.ts +13 -0
- package/dist/tools/definitions/scout.d.ts.map +1 -0
- package/dist/tools/definitions/scout.js +78 -0
- package/dist/tools/definitions/scout.js.map +1 -0
- package/dist/tools/flux.d.ts +16 -8
- package/dist/tools/flux.d.ts.map +1 -1
- package/dist/tools/flux.js +27 -66
- package/dist/tools/flux.js.map +1 -1
- package/dist/tools/handlers/base-handler.d.ts +172 -0
- package/dist/tools/handlers/base-handler.d.ts.map +1 -0
- package/dist/tools/handlers/base-handler.js +234 -0
- package/dist/tools/handlers/base-handler.js.map +1 -0
- package/dist/tools/handlers/compose-handlers.d.ts +108 -0
- package/dist/tools/handlers/compose-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/compose-handlers.js +293 -0
- package/dist/tools/handlers/compose-handlers.js.map +1 -0
- package/dist/tools/handlers/compose-utils.d.ts +35 -0
- package/dist/tools/handlers/compose-utils.d.ts.map +1 -0
- package/dist/tools/handlers/compose-utils.js +76 -0
- package/dist/tools/handlers/compose-utils.js.map +1 -0
- package/dist/tools/handlers/compose.d.ts +23 -0
- package/dist/tools/handlers/compose.d.ts.map +1 -0
- package/dist/tools/handlers/compose.js +125 -0
- package/dist/tools/handlers/compose.js.map +1 -0
- package/dist/tools/handlers/container.d.ts +23 -0
- package/dist/tools/handlers/container.d.ts.map +1 -0
- package/dist/tools/handlers/container.js +333 -0
- package/dist/tools/handlers/container.js.map +1 -0
- package/dist/tools/handlers/docker.d.ts +24 -0
- package/dist/tools/handlers/docker.d.ts.map +1 -0
- package/dist/tools/handlers/docker.js +155 -0
- package/dist/tools/handlers/docker.js.map +1 -0
- package/dist/tools/handlers/host.d.ts +23 -0
- package/dist/tools/handlers/host.d.ts.map +1 -0
- package/dist/tools/handlers/host.js +196 -0
- package/dist/tools/handlers/host.js.map +1 -0
- package/dist/tools/handlers/scout-logs.d.ts +24 -0
- package/dist/tools/handlers/scout-logs.d.ts.map +1 -0
- package/dist/tools/handlers/scout-logs.js +119 -0
- package/dist/tools/handlers/scout-logs.js.map +1 -0
- package/dist/tools/handlers/scout-simple.d.ts +23 -0
- package/dist/tools/handlers/scout-simple.d.ts.map +1 -0
- package/dist/tools/handlers/scout-simple.js +286 -0
- package/dist/tools/handlers/scout-simple.js.map +1 -0
- package/dist/tools/handlers/scout-zfs.d.ts +23 -0
- package/dist/tools/handlers/scout-zfs.d.ts.map +1 -0
- package/dist/tools/handlers/scout-zfs.js +82 -0
- package/dist/tools/handlers/scout-zfs.js.map +1 -0
- package/dist/tools/index.d.ts +32 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +41 -35
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +135 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +151 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/scout.d.ts +16 -8
- package/dist/tools/scout.d.ts.map +1 -1
- package/dist/tools/scout.js +36 -78
- package/dist/tools/scout.js.map +1 -1
- package/dist/types.d.ts +629 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/command-security.d.ts +82 -0
- package/dist/utils/command-security.d.ts.map +1 -0
- package/dist/utils/command-security.js +122 -0
- package/dist/utils/command-security.js.map +1 -0
- package/dist/utils/error-sanitization.d.ts +77 -0
- package/dist/utils/error-sanitization.d.ts.map +1 -0
- package/dist/utils/error-sanitization.js +107 -0
- package/dist/utils/error-sanitization.js.map +1 -0
- package/dist/utils/errors.d.ts +30 -6
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +91 -12
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/help-handler.d.ts +23 -0
- package/dist/utils/help-handler.d.ts.map +1 -0
- package/dist/utils/help-handler.js +21 -0
- package/dist/utils/help-handler.js.map +1 -0
- package/dist/utils/help.d.ts +1 -1
- package/dist/utils/help.d.ts.map +1 -1
- package/dist/utils/help.js +57 -16
- package/dist/utils/help.js.map +1 -1
- package/dist/utils/host-utils.d.ts +31 -0
- package/dist/utils/host-utils.d.ts.map +1 -0
- package/dist/utils/host-utils.js +80 -0
- package/dist/utils/host-utils.js.map +1 -0
- package/dist/utils/index.d.ts +8 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/init-detection.d.ts +36 -0
- package/dist/utils/init-detection.d.ts.map +1 -0
- package/dist/utils/init-detection.js +79 -0
- package/dist/utils/init-detection.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +32 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pagination.d.ts +20 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +29 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/path-security.d.ts +132 -18
- package/dist/utils/path-security.d.ts.map +1 -1
- package/dist/utils/path-security.js +164 -35
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/sorting.d.ts +33 -0
- package/dist/utils/sorting.d.ts.map +1 -0
- package/dist/utils/sorting.js +57 -0
- package/dist/utils/sorting.js.map +1 -0
- package/dist/utils/text-filters.d.ts +13 -0
- package/dist/utils/text-filters.d.ts.map +1 -0
- package/dist/utils/text-filters.js +18 -0
- package/dist/utils/text-filters.js.map +1 -0
- package/dist/utils/time.d.ts +11 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +13 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/validation.d.ts +25 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +56 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +45 -19
- package/dist/schemas/discriminator.d.ts +0 -20
- package/dist/schemas/discriminator.d.ts.map +0 -1
- package/dist/schemas/discriminator.js +0 -25
- package/dist/schemas/discriminator.js.map +0 -1
- package/dist/schemas/unified.d.ts +0 -674
- package/dist/schemas/unified.d.ts.map +0 -1
- package/dist/schemas/unified.js +0 -453
- package/dist/schemas/unified.js.map +0 -1
- package/dist/tools/unified.d.ts +0 -7
- package/dist/tools/unified.d.ts.map +0 -1
- package/dist/tools/unified.js +0 -827
- package/dist/tools/unified.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-scanner.js","sourceRoot":"","sources":["../../src/services/compose-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +1,95 @@
|
|
|
1
|
-
import { HostConfig } from "../types.js";
|
|
2
|
-
import type {
|
|
1
|
+
import type { ComposeProject, ComposeServiceInfo, HostConfig } from "../types.js";
|
|
2
|
+
import type { IComposePathResolver, IComposeService, ILocalExecutorService, ISSHService } from "./interfaces.js";
|
|
3
3
|
/**
|
|
4
4
|
* Validate Docker Compose project name
|
|
5
5
|
* Project names must be alphanumeric with hyphens and underscores only
|
|
6
6
|
*/
|
|
7
7
|
export declare function validateProjectName(name: string): void;
|
|
8
8
|
/**
|
|
9
|
-
* Compose
|
|
9
|
+
* Validate Docker Compose service name
|
|
10
|
+
* Service names must be alphanumeric with hyphens and underscores only
|
|
10
11
|
*/
|
|
11
|
-
export
|
|
12
|
-
name: string;
|
|
13
|
-
status: "running" | "partial" | "stopped" | "unknown";
|
|
14
|
-
configFiles: string[];
|
|
15
|
-
services: ComposeServiceInfo[];
|
|
16
|
-
}
|
|
12
|
+
export declare function validateServiceName(name: string): void;
|
|
17
13
|
/**
|
|
18
|
-
* Compose
|
|
14
|
+
* Validate Docker Compose action
|
|
15
|
+
*
|
|
16
|
+
* SECURITY: Prevents command injection by only allowing known compose actions.
|
|
17
|
+
* This is a whitelist approach - only explicitly allowed actions can be executed.
|
|
18
|
+
*
|
|
19
|
+
* @throws {Error} If action is not in the whitelist
|
|
19
20
|
*/
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
export declare function validateComposeAction(action: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Validate and escape extra arguments for docker compose commands
|
|
24
|
+
*
|
|
25
|
+
* SECURITY (S-M1, CWE-78): Prevents command injection by escaping all arguments
|
|
26
|
+
* using single-quote shell escaping. This is more robust than a deny-list approach.
|
|
27
|
+
*
|
|
28
|
+
* This function replaces the previous validateComposeArgs that used a deny-list
|
|
29
|
+
* of shell metacharacters. Using escapeShellArg() for each argument ensures that
|
|
30
|
+
* all special characters (including spaces, quotes, semicolons, pipes, etc.) are
|
|
31
|
+
* properly neutralized.
|
|
32
|
+
*
|
|
33
|
+
* @param args - Arguments to validate and escape
|
|
34
|
+
* @returns Array of escaped arguments safe for shell execution
|
|
35
|
+
* @throws {Error} If any argument exceeds 500 chars (DoS prevention)
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateAndEscapeComposeArgs(args: string[]): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Parse compose status string to enum
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseComposeStatus(status: string): ComposeProject["status"];
|
|
42
|
+
/**
|
|
43
|
+
* Parse docker compose ps JSON output into service info array
|
|
44
|
+
*
|
|
45
|
+
* Docker compose ps outputs one JSON object per line when using --format json.
|
|
46
|
+
* This function parses each line and converts to our internal ComposeServiceInfo format.
|
|
47
|
+
*
|
|
48
|
+
* @param stdout - Raw stdout from docker compose ps --format json
|
|
49
|
+
* @returns Array of parsed service info (empty array if no output)
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseComposeServices(stdout: string): ComposeServiceInfo[];
|
|
52
|
+
/**
|
|
53
|
+
* Determine overall project status from service statuses
|
|
54
|
+
*
|
|
55
|
+
* Logic:
|
|
56
|
+
* - No services → stopped
|
|
57
|
+
* - All running → running
|
|
58
|
+
* - Some running → partial
|
|
59
|
+
* - None running → stopped
|
|
60
|
+
*
|
|
61
|
+
* @param services - Array of service info from docker compose ps
|
|
62
|
+
* @returns Overall project status
|
|
63
|
+
*/
|
|
64
|
+
export declare function determineProjectStatus(services: ComposeServiceInfo[]): ComposeProject["status"];
|
|
31
65
|
/**
|
|
32
66
|
* ComposeService class for managing Docker Compose operations with dependency injection
|
|
33
67
|
*/
|
|
34
68
|
export declare class ComposeService implements IComposeService {
|
|
35
69
|
private sshService;
|
|
36
|
-
|
|
70
|
+
private localExecutor;
|
|
71
|
+
private pathResolver?;
|
|
72
|
+
constructor(sshService: ISSHService, localExecutor: ILocalExecutorService, pathResolver?: IComposePathResolver);
|
|
37
73
|
/**
|
|
38
|
-
* Execute docker compose command on remote host
|
|
74
|
+
* Execute docker compose command on local or remote host
|
|
39
75
|
*
|
|
40
76
|
* SECURITY: Arguments are validated before execution to prevent command injection.
|
|
41
|
-
* Uses SSH connection pool for
|
|
77
|
+
* Uses local executor for localhost, SSH connection pool for remote hosts.
|
|
42
78
|
*
|
|
43
|
-
* @param host - Host configuration with
|
|
79
|
+
* @param host - Host configuration with execution details
|
|
44
80
|
* @param project - Docker Compose project name (validated, alphanumeric only)
|
|
45
81
|
* @param action - Compose action (up, down, restart, etc.)
|
|
46
82
|
* @param extraArgs - Additional arguments (validated for shell metacharacters)
|
|
47
83
|
* @returns Command output
|
|
48
|
-
* @throws {Error} If validation fails or
|
|
84
|
+
* @throws {Error} If validation fails or execution fails
|
|
49
85
|
*/
|
|
50
86
|
composeExec(host: HostConfig, project: string, action: string, extraArgs?: string[]): Promise<string>;
|
|
51
87
|
/**
|
|
52
|
-
* List all compose projects on a host
|
|
88
|
+
* List all compose projects on a host (local or remote)
|
|
53
89
|
*/
|
|
54
90
|
listComposeProjects(host: HostConfig): Promise<ComposeProject[]>;
|
|
55
91
|
/**
|
|
56
|
-
* Get detailed status of a compose project
|
|
92
|
+
* Get detailed status of a compose project (local or remote)
|
|
57
93
|
*/
|
|
58
94
|
getComposeStatus(host: HostConfig, project: string): Promise<ComposeProject>;
|
|
59
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":"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"}
|
package/dist/services/compose.js
CHANGED
|
@@ -1,34 +1,89 @@
|
|
|
1
|
-
import { validateHostForSsh } from "./ssh.js";
|
|
2
1
|
import { ComposeOperationError, logError } from "../utils/errors.js";
|
|
2
|
+
import { isLocalHost } from "../utils/host-utils.js";
|
|
3
|
+
import { escapeShellArg } from "../utils/path-security.js";
|
|
4
|
+
import { validateAlphanumeric } from "../utils/validation.js";
|
|
5
|
+
import { validateHostForSsh } from "./ssh.js";
|
|
3
6
|
/**
|
|
4
7
|
* Validate Docker Compose project name
|
|
5
8
|
* Project names must be alphanumeric with hyphens and underscores only
|
|
6
9
|
*/
|
|
7
10
|
export function validateProjectName(name) {
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
validateAlphanumeric(name, "project name");
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Validate Docker Compose service name
|
|
15
|
+
* Service names must be alphanumeric with hyphens and underscores only
|
|
16
|
+
*/
|
|
17
|
+
export function validateServiceName(name) {
|
|
18
|
+
validateAlphanumeric(name, "service name");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate Docker Compose action
|
|
22
|
+
*
|
|
23
|
+
* SECURITY: Prevents command injection by only allowing known compose actions.
|
|
24
|
+
* This is a whitelist approach - only explicitly allowed actions can be executed.
|
|
25
|
+
*
|
|
26
|
+
* @throws {Error} If action is not in the whitelist
|
|
27
|
+
*/
|
|
28
|
+
export function validateComposeAction(action) {
|
|
29
|
+
const ALLOWED_ACTIONS = [
|
|
30
|
+
"up",
|
|
31
|
+
"down",
|
|
32
|
+
"start",
|
|
33
|
+
"stop",
|
|
34
|
+
"restart",
|
|
35
|
+
"ps",
|
|
36
|
+
"logs",
|
|
37
|
+
"build",
|
|
38
|
+
"pull",
|
|
39
|
+
"push",
|
|
40
|
+
"config",
|
|
41
|
+
"create",
|
|
42
|
+
"exec",
|
|
43
|
+
"kill",
|
|
44
|
+
"pause",
|
|
45
|
+
"unpause",
|
|
46
|
+
"port",
|
|
47
|
+
"rm",
|
|
48
|
+
"run",
|
|
49
|
+
"scale",
|
|
50
|
+
"top",
|
|
51
|
+
"version",
|
|
52
|
+
"events",
|
|
53
|
+
"images",
|
|
54
|
+
"ls",
|
|
55
|
+
];
|
|
56
|
+
if (!ALLOWED_ACTIONS.includes(action)) {
|
|
57
|
+
throw new Error(`Invalid compose action: ${action}`);
|
|
10
58
|
}
|
|
11
59
|
}
|
|
12
60
|
/**
|
|
13
|
-
* Validate extra arguments for docker compose commands
|
|
61
|
+
* Validate and escape extra arguments for docker compose commands
|
|
62
|
+
*
|
|
63
|
+
* SECURITY (S-M1, CWE-78): Prevents command injection by escaping all arguments
|
|
64
|
+
* using single-quote shell escaping. This is more robust than a deny-list approach.
|
|
14
65
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
66
|
+
* This function replaces the previous validateComposeArgs that used a deny-list
|
|
67
|
+
* of shell metacharacters. Using escapeShellArg() for each argument ensures that
|
|
68
|
+
* all special characters (including spaces, quotes, semicolons, pipes, etc.) are
|
|
69
|
+
* properly neutralized.
|
|
18
70
|
*
|
|
19
|
-
* @
|
|
71
|
+
* @param args - Arguments to validate and escape
|
|
72
|
+
* @returns Array of escaped arguments safe for shell execution
|
|
73
|
+
* @throws {Error} If any argument exceeds 500 chars (DoS prevention)
|
|
20
74
|
*/
|
|
21
|
-
function
|
|
22
|
-
const
|
|
75
|
+
export function validateAndEscapeComposeArgs(args) {
|
|
76
|
+
const escaped = [];
|
|
23
77
|
for (const arg of args) {
|
|
24
|
-
|
|
25
|
-
throw new Error(`Invalid character in compose argument: ${arg}`);
|
|
26
|
-
}
|
|
27
|
-
// Additional safety: reject extremely long arguments (DoS prevention)
|
|
78
|
+
// SECURITY: Reject extremely long arguments (DoS prevention)
|
|
28
79
|
if (arg.length > 500) {
|
|
29
80
|
throw new Error(`Compose argument too long: ${arg.substring(0, 50)}...`);
|
|
30
81
|
}
|
|
82
|
+
// SECURITY (S-M1): Escape each argument to prevent command injection
|
|
83
|
+
// This neutralizes ALL shell metacharacters including: ; & | ` $ ( ) < > { } [ ] \ " ' # \n \r \t
|
|
84
|
+
escaped.push(escapeShellArg(arg));
|
|
31
85
|
}
|
|
86
|
+
return escaped;
|
|
32
87
|
}
|
|
33
88
|
/**
|
|
34
89
|
* Build docker compose command string for remote execution
|
|
@@ -36,10 +91,16 @@ function validateComposeArgs(args) {
|
|
|
36
91
|
* @param project - Project name (optional, for commands that need -p flag)
|
|
37
92
|
* @param action - Compose action (up, down, ps, ls, etc.)
|
|
38
93
|
* @param extraArgs - Additional arguments
|
|
94
|
+
* @param composePath - Optional path to compose file (adds -f flag)
|
|
39
95
|
* @returns Command string
|
|
40
96
|
*/
|
|
41
|
-
function buildComposeCommand(project, action, extraArgs = []) {
|
|
97
|
+
function buildComposeCommand(project, action, extraArgs = [], composePath) {
|
|
42
98
|
const parts = ["docker", "compose"];
|
|
99
|
+
if (composePath) {
|
|
100
|
+
// SECURITY (CWE-78): Escape composePath to prevent command injection
|
|
101
|
+
// composePath comes from discovery and could contain shell metacharacters
|
|
102
|
+
parts.push("-f", escapeShellArg(composePath));
|
|
103
|
+
}
|
|
43
104
|
if (project) {
|
|
44
105
|
parts.push("-p", project);
|
|
45
106
|
}
|
|
@@ -50,7 +111,7 @@ function buildComposeCommand(project, action, extraArgs = []) {
|
|
|
50
111
|
/**
|
|
51
112
|
* Parse compose status string to enum
|
|
52
113
|
*/
|
|
53
|
-
function parseComposeStatus(status) {
|
|
114
|
+
export function parseComposeStatus(status) {
|
|
54
115
|
const lower = status.toLowerCase();
|
|
55
116
|
if (lower.includes("running")) {
|
|
56
117
|
if (lower.includes("(") && !lower.includes("running(")) {
|
|
@@ -63,33 +124,136 @@ function parseComposeStatus(status) {
|
|
|
63
124
|
}
|
|
64
125
|
return "unknown";
|
|
65
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Parse docker compose ps JSON output into service info array
|
|
129
|
+
*
|
|
130
|
+
* Docker compose ps outputs one JSON object per line when using --format json.
|
|
131
|
+
* This function parses each line and converts to our internal ComposeServiceInfo format.
|
|
132
|
+
*
|
|
133
|
+
* @param stdout - Raw stdout from docker compose ps --format json
|
|
134
|
+
* @returns Array of parsed service info (empty array if no output)
|
|
135
|
+
*/
|
|
136
|
+
export function parseComposeServices(stdout) {
|
|
137
|
+
const services = [];
|
|
138
|
+
if (!stdout.trim()) {
|
|
139
|
+
return services;
|
|
140
|
+
}
|
|
141
|
+
// docker compose ps outputs one JSON object per line
|
|
142
|
+
const lines = stdout.trim().split("\n");
|
|
143
|
+
for (const line of lines) {
|
|
144
|
+
if (!line.trim())
|
|
145
|
+
continue;
|
|
146
|
+
try {
|
|
147
|
+
const svc = JSON.parse(line);
|
|
148
|
+
services.push({
|
|
149
|
+
name: svc.Name,
|
|
150
|
+
status: svc.State,
|
|
151
|
+
health: svc.Health,
|
|
152
|
+
exitCode: svc.ExitCode,
|
|
153
|
+
publishers: svc.Publishers?.map((p) => ({
|
|
154
|
+
publishedPort: p.PublishedPort,
|
|
155
|
+
targetPort: p.TargetPort,
|
|
156
|
+
protocol: p.Protocol,
|
|
157
|
+
})),
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch (_error) {
|
|
161
|
+
/* Intentionally swallow errors - missing port/service info is non-critical */
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return services;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Determine overall project status from service statuses
|
|
168
|
+
*
|
|
169
|
+
* Logic:
|
|
170
|
+
* - No services → stopped
|
|
171
|
+
* - All running → running
|
|
172
|
+
* - Some running → partial
|
|
173
|
+
* - None running → stopped
|
|
174
|
+
*
|
|
175
|
+
* @param services - Array of service info from docker compose ps
|
|
176
|
+
* @returns Overall project status
|
|
177
|
+
*/
|
|
178
|
+
export function determineProjectStatus(services) {
|
|
179
|
+
if (services.length === 0) {
|
|
180
|
+
return "stopped";
|
|
181
|
+
}
|
|
182
|
+
const running = services.filter((s) => s.status === "running").length;
|
|
183
|
+
if (running === services.length) {
|
|
184
|
+
return "running";
|
|
185
|
+
}
|
|
186
|
+
if (running > 0) {
|
|
187
|
+
return "partial";
|
|
188
|
+
}
|
|
189
|
+
return "stopped";
|
|
190
|
+
}
|
|
66
191
|
/**
|
|
67
192
|
* ComposeService class for managing Docker Compose operations with dependency injection
|
|
68
193
|
*/
|
|
69
194
|
export class ComposeService {
|
|
70
195
|
sshService;
|
|
71
|
-
|
|
196
|
+
localExecutor;
|
|
197
|
+
pathResolver;
|
|
198
|
+
constructor(sshService, localExecutor, pathResolver) {
|
|
72
199
|
this.sshService = sshService;
|
|
200
|
+
this.localExecutor = localExecutor;
|
|
201
|
+
this.pathResolver = pathResolver;
|
|
73
202
|
}
|
|
74
203
|
/**
|
|
75
|
-
* Execute docker compose command on remote host
|
|
204
|
+
* Execute docker compose command on local or remote host
|
|
76
205
|
*
|
|
77
206
|
* SECURITY: Arguments are validated before execution to prevent command injection.
|
|
78
|
-
* Uses SSH connection pool for
|
|
207
|
+
* Uses local executor for localhost, SSH connection pool for remote hosts.
|
|
79
208
|
*
|
|
80
|
-
* @param host - Host configuration with
|
|
209
|
+
* @param host - Host configuration with execution details
|
|
81
210
|
* @param project - Docker Compose project name (validated, alphanumeric only)
|
|
82
211
|
* @param action - Compose action (up, down, restart, etc.)
|
|
83
212
|
* @param extraArgs - Additional arguments (validated for shell metacharacters)
|
|
84
213
|
* @returns Command output
|
|
85
|
-
* @throws {Error} If validation fails or
|
|
214
|
+
* @throws {Error} If validation fails or execution fails
|
|
86
215
|
*/
|
|
87
216
|
async composeExec(host, project, action, extraArgs = []) {
|
|
88
|
-
validateHostForSsh(host);
|
|
89
217
|
validateProjectName(project);
|
|
90
|
-
|
|
91
|
-
|
|
218
|
+
validateComposeAction(action);
|
|
219
|
+
// SECURITY (S-M1): Validate and escape arguments for SSH execution
|
|
220
|
+
// For local execution, we use the unescaped args (execFile doesn't need escaping)
|
|
221
|
+
// For SSH execution, we use the escaped args (shell string needs escaping)
|
|
222
|
+
const escapedArgs = validateAndEscapeComposeArgs(extraArgs);
|
|
223
|
+
// Try to resolve compose file path via discovery (if available)
|
|
224
|
+
let composePath = null;
|
|
225
|
+
if (this.pathResolver) {
|
|
226
|
+
try {
|
|
227
|
+
composePath = await this.pathResolver.resolveProjectPath(host, project);
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
// Graceful fallback - log error but proceed without -f flag
|
|
231
|
+
logError(error, {
|
|
232
|
+
operation: "composeExec",
|
|
233
|
+
metadata: { host: host.name, project, action },
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
92
237
|
try {
|
|
238
|
+
// Route to local or SSH executor based on host config
|
|
239
|
+
if (isLocalHost(host)) {
|
|
240
|
+
// Local execution: use execFile (no escaping needed)
|
|
241
|
+
const args = ["compose"];
|
|
242
|
+
if (composePath) {
|
|
243
|
+
args.push("-f", composePath);
|
|
244
|
+
}
|
|
245
|
+
if (project) {
|
|
246
|
+
args.push("-p", project);
|
|
247
|
+
}
|
|
248
|
+
args.push(action);
|
|
249
|
+
args.push(...extraArgs); // Use unescaped args for execFile
|
|
250
|
+
return await this.localExecutor.executeLocalCommand("docker", args, {
|
|
251
|
+
timeoutMs: 30000,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
// Remote host - use SSH with escaped args
|
|
255
|
+
validateHostForSsh(host);
|
|
256
|
+
const command = buildComposeCommand(project, action, escapedArgs, composePath);
|
|
93
257
|
return await this.sshService.executeSSHCommand(host, command, [], { timeoutMs: 30000 });
|
|
94
258
|
}
|
|
95
259
|
catch (error) {
|
|
@@ -98,15 +262,22 @@ export class ComposeService {
|
|
|
98
262
|
}
|
|
99
263
|
}
|
|
100
264
|
/**
|
|
101
|
-
* List all compose projects on a host
|
|
265
|
+
* List all compose projects on a host (local or remote)
|
|
102
266
|
*/
|
|
103
267
|
async listComposeProjects(host) {
|
|
104
|
-
|
|
105
|
-
const command = buildComposeCommand(null, "ls", ["--format", "json"]);
|
|
268
|
+
const args = ["--format", "json"];
|
|
106
269
|
try {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
270
|
+
let stdout;
|
|
271
|
+
if (isLocalHost(host)) {
|
|
272
|
+
stdout = await this.localExecutor.executeLocalCommand("docker", ["compose", "ls", ...args], { timeoutMs: 15000 });
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
validateHostForSsh(host);
|
|
276
|
+
const command = buildComposeCommand(null, "ls", args);
|
|
277
|
+
stdout = await this.sshService.executeSSHCommand(host, command, [], {
|
|
278
|
+
timeoutMs: 15000,
|
|
279
|
+
});
|
|
280
|
+
}
|
|
110
281
|
if (!stdout.trim()) {
|
|
111
282
|
return [];
|
|
112
283
|
}
|
|
@@ -115,7 +286,7 @@ export class ComposeService {
|
|
|
115
286
|
name: p.Name,
|
|
116
287
|
status: parseComposeStatus(p.Status),
|
|
117
288
|
configFiles: p.ConfigFiles.split(",").map((f) => f.trim()),
|
|
118
|
-
services: []
|
|
289
|
+
services: [],
|
|
119
290
|
}));
|
|
120
291
|
}
|
|
121
292
|
catch (error) {
|
|
@@ -124,71 +295,30 @@ export class ComposeService {
|
|
|
124
295
|
}
|
|
125
296
|
}
|
|
126
297
|
/**
|
|
127
|
-
* Get detailed status of a compose project
|
|
298
|
+
* Get detailed status of a compose project (local or remote)
|
|
128
299
|
*/
|
|
129
300
|
async getComposeStatus(host, project) {
|
|
130
|
-
validateHostForSsh(host);
|
|
131
301
|
validateProjectName(project);
|
|
132
|
-
const
|
|
302
|
+
const args = ["--format", "json"];
|
|
133
303
|
try {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const services = [];
|
|
138
|
-
if (stdout.trim()) {
|
|
139
|
-
// docker compose ps outputs one JSON object per line
|
|
140
|
-
const lines = stdout.trim().split("\n");
|
|
141
|
-
for (const line of lines) {
|
|
142
|
-
if (!line.trim())
|
|
143
|
-
continue;
|
|
144
|
-
try {
|
|
145
|
-
const svc = JSON.parse(line);
|
|
146
|
-
services.push({
|
|
147
|
-
name: svc.Name,
|
|
148
|
-
status: svc.State,
|
|
149
|
-
health: svc.Health,
|
|
150
|
-
exitCode: svc.ExitCode,
|
|
151
|
-
publishers: svc.Publishers?.map((p) => ({
|
|
152
|
-
publishedPort: p.PublishedPort,
|
|
153
|
-
targetPort: p.TargetPort,
|
|
154
|
-
protocol: p.Protocol
|
|
155
|
-
}))
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
catch {
|
|
159
|
-
logError(new Error("Failed to parse compose service line"), {
|
|
160
|
-
operation: "getComposeStatus",
|
|
161
|
-
metadata: {
|
|
162
|
-
host: host.name,
|
|
163
|
-
project,
|
|
164
|
-
line: line.substring(0, 100)
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// Determine overall status
|
|
171
|
-
let status = "unknown";
|
|
172
|
-
if (services.length === 0) {
|
|
173
|
-
status = "stopped";
|
|
304
|
+
let stdout;
|
|
305
|
+
if (isLocalHost(host)) {
|
|
306
|
+
stdout = await this.localExecutor.executeLocalCommand("docker", ["compose", "-p", project, "ps", ...args], { timeoutMs: 15000 });
|
|
174
307
|
}
|
|
175
308
|
else {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
status = "partial";
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
status = "stopped";
|
|
185
|
-
}
|
|
309
|
+
validateHostForSsh(host);
|
|
310
|
+
const command = buildComposeCommand(project, "ps", args);
|
|
311
|
+
stdout = await this.sshService.executeSSHCommand(host, command, [], {
|
|
312
|
+
timeoutMs: 15000,
|
|
313
|
+
});
|
|
186
314
|
}
|
|
315
|
+
const services = parseComposeServices(stdout);
|
|
316
|
+
const status = determineProjectStatus(services);
|
|
187
317
|
return {
|
|
188
318
|
name: project,
|
|
189
319
|
status,
|
|
190
320
|
configFiles: [],
|
|
191
|
-
services
|
|
321
|
+
services,
|
|
192
322
|
};
|
|
193
323
|
}
|
|
194
324
|
catch (error) {
|
|
@@ -239,9 +369,7 @@ export class ComposeService {
|
|
|
239
369
|
if (options.services && options.services.length > 0) {
|
|
240
370
|
// Validate service names
|
|
241
371
|
for (const service of options.services) {
|
|
242
|
-
|
|
243
|
-
throw new Error(`Invalid service name: ${service}`);
|
|
244
|
-
}
|
|
372
|
+
validateServiceName(service);
|
|
245
373
|
}
|
|
246
374
|
args.push(...options.services);
|
|
247
375
|
}
|
|
@@ -259,9 +387,7 @@ export class ComposeService {
|
|
|
259
387
|
args.push("--pull");
|
|
260
388
|
}
|
|
261
389
|
if (options.service) {
|
|
262
|
-
|
|
263
|
-
throw new Error(`Invalid service name: ${options.service}`);
|
|
264
|
-
}
|
|
390
|
+
validateServiceName(options.service);
|
|
265
391
|
args.push(options.service);
|
|
266
392
|
}
|
|
267
393
|
return this.composeExec(host, project, "build", args);
|
|
@@ -278,9 +404,7 @@ export class ComposeService {
|
|
|
278
404
|
args.push("--quiet");
|
|
279
405
|
}
|
|
280
406
|
if (options.service) {
|
|
281
|
-
|
|
282
|
-
throw new Error(`Invalid service name: ${options.service}`);
|
|
283
|
-
}
|
|
407
|
+
validateServiceName(options.service);
|
|
284
408
|
args.push(options.service);
|
|
285
409
|
}
|
|
286
410
|
return this.composeExec(host, project, "pull", args);
|
|
@@ -290,16 +414,14 @@ export class ComposeService {
|
|
|
290
414
|
*/
|
|
291
415
|
async composeRecreate(host, project, options = {}) {
|
|
292
416
|
const args = ["-d"];
|
|
293
|
-
if (options.forceRecreate
|
|
417
|
+
if (options.forceRecreate === true) {
|
|
294
418
|
args.push("--force-recreate");
|
|
295
419
|
}
|
|
296
420
|
if (options.noDeps) {
|
|
297
421
|
args.push("--no-deps");
|
|
298
422
|
}
|
|
299
423
|
if (options.service) {
|
|
300
|
-
|
|
301
|
-
throw new Error(`Invalid service name: ${options.service}`);
|
|
302
|
-
}
|
|
424
|
+
validateServiceName(options.service);
|
|
303
425
|
args.push(options.service);
|
|
304
426
|
}
|
|
305
427
|
return this.composeExec(host, project, "up", args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGrE;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,IAAc;IACzC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;IAEzD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,sEAAsE;QACtE,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AA2BD;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,OAAsB,EACtB,MAAc,EACd,YAAsB,EAAE;IAExB,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEpC,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAEzB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,UAAuB;QAAvB,eAAU,GAAV,UAAU,CAAa;IAAG,CAAC;IAE/C;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,WAAW,CACf,IAAgB,EAChB,OAAe,EACf,MAAc,EACd,YAAsB,EAAE;QAExB,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC7B,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACxE,MAAM,IAAI,qBAAqB,CAC7B,kCAAkC,MAAM,EAAE,EAC1C,IAAI,CAAC,IAAI,EACT,OAAO,EACP,MAAM,EACN,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,IAAgB;QACxC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;gBACxE,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAIhC,CAAC;YAEH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;gBACpC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACxE,MAAM,IAAI,qBAAqB,CAC7B,oCAAoC,MAAM,EAAE,EAC5C,IAAI,CAAC,IAAI,EACT,GAAG,EACH,IAAI,EACJ,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAgB,EAAE,OAAe;QACtD,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACzB,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;gBACxE,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAyB,EAAE,CAAC;YAE1C,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClB,qDAAqD;gBACrD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBAAE,SAAS;oBAC3B,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAU1B,CAAC;wBACF,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,MAAM,EAAE,GAAG,CAAC,KAAK;4BACjB,MAAM,EAAE,GAAG,CAAC,MAAM;4BAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;4BACtB,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCACtC,aAAa,EAAE,CAAC,CAAC,aAAa;gCAC9B,UAAU,EAAE,CAAC,CAAC,UAAU;gCACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;6BACrB,CAAC,CAAC;yBACJ,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACP,QAAQ,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,EAAE;4BAC1D,SAAS,EAAE,kBAAkB;4BAC7B,QAAQ,EAAE;gCACR,IAAI,EAAE,IAAI,CAAC,IAAI;gCACf,OAAO;gCACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;6BAC7B;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,IAAI,MAAM,GAA6B,SAAS,CAAC;YACjD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;gBACtE,IAAI,OAAO,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,GAAG,SAAS,CAAC;gBACrB,CAAC;qBAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,GAAG,SAAS,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,SAAS,CAAC;gBACrB,CAAC;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM;gBACN,WAAW,EAAE,EAAE;gBACf,QAAQ;aACT,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACxE,MAAM,IAAI,qBAAqB,CAC7B,iCAAiC,MAAM,EAAE,EACzC,IAAI,CAAC,IAAI,EACT,OAAO,EACP,IAAI,EACJ,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAgB,EAAE,OAAe,EAAE,MAAM,GAAG,IAAI;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,IAAgB,EAAE,OAAe,EAAE,aAAa,GAAG,KAAK;QACxE,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAgB,EAAE,OAAe;QACpD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,IAAgB,EAChB,OAAe,EACf,UAOI,EAAE;QAEN,MAAM,IAAI,GAAa,CAAC,YAAY,CAAC,CAAC;QAEtC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,yBAAyB;YACzB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,IAAgB,EAChB,OAAe,EACf,UAAmE,EAAE;QAErE,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,IAAgB,EAChB,OAAe,EACf,UAA+E,EAAE;QAEjF,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,IAAgB,EAChB,OAAe,EACf,UAA2E,EAAE;QAE7E,MAAM,IAAI,GAAa,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../src/services/compose.ts"],"names":[],"mappings":"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"}
|