@factiii/stack 0.1.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 +420 -0
- package/bin/factiii +229 -0
- package/dist/cli/check-config.d.ts +9 -0
- package/dist/cli/check-config.d.ts.map +1 -0
- package/dist/cli/check-config.js +19 -0
- package/dist/cli/check-config.js.map +1 -0
- package/dist/cli/deploy-secrets.d.ts +16 -0
- package/dist/cli/deploy-secrets.d.ts.map +1 -0
- package/dist/cli/deploy-secrets.js +227 -0
- package/dist/cli/deploy-secrets.js.map +1 -0
- package/dist/cli/deploy.d.ts +30 -0
- package/dist/cli/deploy.d.ts.map +1 -0
- package/dist/cli/deploy.js +306 -0
- package/dist/cli/deploy.js.map +1 -0
- package/dist/cli/deployer.d.ts +13 -0
- package/dist/cli/deployer.d.ts.map +1 -0
- package/dist/cli/deployer.js +21 -0
- package/dist/cli/deployer.js.map +1 -0
- package/dist/cli/dev-sync.d.ts +30 -0
- package/dist/cli/dev-sync.d.ts.map +1 -0
- package/dist/cli/dev-sync.js +500 -0
- package/dist/cli/dev-sync.js.map +1 -0
- package/dist/cli/execute-plugin-command.d.ts +25 -0
- package/dist/cli/execute-plugin-command.d.ts.map +1 -0
- package/dist/cli/execute-plugin-command.js +237 -0
- package/dist/cli/execute-plugin-command.js.map +1 -0
- package/dist/cli/fix.d.ts +22 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +267 -0
- package/dist/cli/fix.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init.d.ts +9 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +190 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/plugin-commands.d.ts +22 -0
- package/dist/cli/plugin-commands.d.ts.map +1 -0
- package/dist/cli/plugin-commands.js +121 -0
- package/dist/cli/plugin-commands.js.map +1 -0
- package/dist/cli/scan.d.ts +66 -0
- package/dist/cli/scan.d.ts.map +1 -0
- package/dist/cli/scan.js +511 -0
- package/dist/cli/scan.js.map +1 -0
- package/dist/cli/secrets.d.ts +19 -0
- package/dist/cli/secrets.d.ts.map +1 -0
- package/dist/cli/secrets.js +318 -0
- package/dist/cli/secrets.js.map +1 -0
- package/dist/cli/undeploy.d.ts +9 -0
- package/dist/cli/undeploy.d.ts.map +1 -0
- package/dist/cli/undeploy.js +95 -0
- package/dist/cli/undeploy.js.map +1 -0
- package/dist/cli/upgrade.d.ts +9 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +24 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/cli/validate.d.ts +9 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +20 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/generators/generate-factiii-auto.d.ts +31 -0
- package/dist/generators/generate-factiii-auto.d.ts.map +1 -0
- package/dist/generators/generate-factiii-auto.js +251 -0
- package/dist/generators/generate-factiii-auto.js.map +1 -0
- package/dist/generators/generate-factiii-yml.d.ts +23 -0
- package/dist/generators/generate-factiii-yml.d.ts.map +1 -0
- package/dist/generators/generate-factiii-yml.js +228 -0
- package/dist/generators/generate-factiii-yml.js.map +1 -0
- package/dist/generators/index.d.ts +8 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +14 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/addons/server-mode/index.d.ts +57 -0
- package/dist/plugins/addons/server-mode/index.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/index.js +136 -0
- package/dist/plugins/addons/server-mode/index.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.d.ts +17 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.js +461 -0
- package/dist/plugins/addons/server-mode/scanfix/mac.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts +12 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.js +246 -0
- package/dist/plugins/addons/server-mode/scanfix/ubuntu.js.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.d.ts +14 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.d.ts.map +1 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.js +113 -0
- package/dist/plugins/addons/server-mode/scanfix/windows.js.map +1 -0
- package/dist/plugins/approved.json +13 -0
- package/dist/plugins/frameworks/prisma-trpc/index.d.ts +65 -0
- package/dist/plugins/frameworks/prisma-trpc/index.d.ts.map +1 -0
- package/dist/plugins/frameworks/prisma-trpc/index.js +668 -0
- package/dist/plugins/frameworks/prisma-trpc/index.js.map +1 -0
- package/dist/plugins/index.d.ts +101 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +411 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/interfaces/addon.d.ts +43 -0
- package/dist/plugins/interfaces/addon.d.ts.map +1 -0
- package/dist/plugins/interfaces/addon.js +53 -0
- package/dist/plugins/interfaces/addon.js.map +1 -0
- package/dist/plugins/interfaces/framework.d.ts +43 -0
- package/dist/plugins/interfaces/framework.d.ts.map +1 -0
- package/dist/plugins/interfaces/framework.js +53 -0
- package/dist/plugins/interfaces/framework.js.map +1 -0
- package/dist/plugins/interfaces/index.d.ts +10 -0
- package/dist/plugins/interfaces/index.d.ts.map +1 -0
- package/dist/plugins/interfaces/index.js +17 -0
- package/dist/plugins/interfaces/index.js.map +1 -0
- package/dist/plugins/interfaces/pipeline.d.ts +78 -0
- package/dist/plugins/interfaces/pipeline.d.ts.map +1 -0
- package/dist/plugins/interfaces/pipeline.js +82 -0
- package/dist/plugins/interfaces/pipeline.js.map +1 -0
- package/dist/plugins/interfaces/server.d.ts +65 -0
- package/dist/plugins/interfaces/server.d.ts.map +1 -0
- package/dist/plugins/interfaces/server.js +72 -0
- package/dist/plugins/interfaces/server.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/ec2.d.ts +9 -0
- package/dist/plugins/pipelines/aws/configs/ec2.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/ec2.js +34 -0
- package/dist/plugins/pipelines/aws/configs/ec2.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.d.ts +13 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.js +86 -0
- package/dist/plugins/pipelines/aws/configs/free-tier.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/index.d.ts +14 -0
- package/dist/plugins/pipelines/aws/configs/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/index.js +21 -0
- package/dist/plugins/pipelines/aws/configs/index.js.map +1 -0
- package/dist/plugins/pipelines/aws/configs/types.d.ts +36 -0
- package/dist/plugins/pipelines/aws/configs/types.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/configs/types.js +9 -0
- package/dist/plugins/pipelines/aws/configs/types.js.map +1 -0
- package/dist/plugins/pipelines/aws/dev.d.ts +10 -0
- package/dist/plugins/pipelines/aws/dev.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/dev.js +70 -0
- package/dist/plugins/pipelines/aws/dev.js.map +1 -0
- package/dist/plugins/pipelines/aws/index.d.ts +118 -0
- package/dist/plugins/pipelines/aws/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/index.js +346 -0
- package/dist/plugins/pipelines/aws/index.js.map +1 -0
- package/dist/plugins/pipelines/aws/prod.d.ts +19 -0
- package/dist/plugins/pipelines/aws/prod.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/prod.js +362 -0
- package/dist/plugins/pipelines/aws/prod.js.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts +7 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js +31 -0
- package/dist/plugins/pipelines/aws/scanfix/aws-cli.js.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/config.d.ts +7 -0
- package/dist/plugins/pipelines/aws/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/pipelines/aws/scanfix/config.js +134 -0
- package/dist/plugins/pipelines/aws/scanfix/config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts +65 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.js +221 -0
- package/dist/plugins/pipelines/factiii/github-secrets-store.js.map +1 -0
- package/dist/plugins/pipelines/factiii/index.d.ts +195 -0
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/index.js +862 -0
- package/dist/plugins/pipelines/factiii/index.js.map +1 -0
- package/dist/plugins/pipelines/factiii/prod.d.ts +17 -0
- package/dist/plugins/pipelines/factiii/prod.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/prod.js +282 -0
- package/dist/plugins/pipelines/factiii/prod.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.js +80 -0
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.js +43 -0
- package/dist/plugins/pipelines/factiii/scanfix/github-cli.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +237 -0
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts +7 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js +169 -0
- package/dist/plugins/pipelines/factiii/scanfix/workflows.js.map +1 -0
- package/dist/plugins/pipelines/factiii/staging.d.ts +25 -0
- package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/staging.js +223 -0
- package/dist/plugins/pipelines/factiii/staging.js.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/detection.d.ts +36 -0
- package/dist/plugins/pipelines/factiii/utils/detection.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/detection.js +140 -0
- package/dist/plugins/pipelines/factiii/utils/detection.js.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts +16 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.js +129 -0
- package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-prod.yml +112 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-cicd-staging.yml +112 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-command.yml +130 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-deploy.yml +198 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-dev-sync.yml +179 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-fix.yml +176 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-scan.yml +176 -0
- package/dist/plugins/pipelines/factiii/workflows/factiii-undeploy.yml +95 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts +93 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts.map +1 -0
- package/dist/plugins/servers/amazon-linux/index.js +217 -0
- package/dist/plugins/servers/amazon-linux/index.js.map +1 -0
- package/dist/plugins/servers/mac/dev.d.ts +10 -0
- package/dist/plugins/servers/mac/dev.d.ts.map +1 -0
- package/dist/plugins/servers/mac/dev.js +71 -0
- package/dist/plugins/servers/mac/dev.js.map +1 -0
- package/dist/plugins/servers/mac/index.d.ts +101 -0
- package/dist/plugins/servers/mac/index.d.ts.map +1 -0
- package/dist/plugins/servers/mac/index.js +257 -0
- package/dist/plugins/servers/mac/index.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/config.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/config.js +168 -0
- package/dist/plugins/servers/mac/scanfix/config.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/containers.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/containers.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/containers.js +167 -0
- package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -0
- package/dist/plugins/servers/mac/scanfix/system.d.ts +7 -0
- package/dist/plugins/servers/mac/scanfix/system.d.ts.map +1 -0
- package/dist/plugins/servers/mac/scanfix/system.js +144 -0
- package/dist/plugins/servers/mac/scanfix/system.js.map +1 -0
- package/dist/plugins/servers/mac/staging.d.ts +21 -0
- package/dist/plugins/servers/mac/staging.d.ts.map +1 -0
- package/dist/plugins/servers/mac/staging.js +708 -0
- package/dist/plugins/servers/mac/staging.js.map +1 -0
- package/dist/plugins/servers/ubuntu/index.d.ts +93 -0
- package/dist/plugins/servers/ubuntu/index.d.ts.map +1 -0
- package/dist/plugins/servers/ubuntu/index.js +224 -0
- package/dist/plugins/servers/ubuntu/index.js.map +1 -0
- package/dist/plugins/servers/windows/index.d.ts +90 -0
- package/dist/plugins/servers/windows/index.d.ts.map +1 -0
- package/dist/plugins/servers/windows/index.js +205 -0
- package/dist/plugins/servers/windows/index.js.map +1 -0
- package/dist/scanfix/commands/index.d.ts +27 -0
- package/dist/scanfix/commands/index.d.ts.map +1 -0
- package/dist/scanfix/commands/index.js +97 -0
- package/dist/scanfix/commands/index.js.map +1 -0
- package/dist/scanfix/commands/mac.d.ts +11 -0
- package/dist/scanfix/commands/mac.d.ts.map +1 -0
- package/dist/scanfix/commands/mac.js +31 -0
- package/dist/scanfix/commands/mac.js.map +1 -0
- package/dist/scanfix/commands/ubuntu.d.ts +11 -0
- package/dist/scanfix/commands/ubuntu.d.ts.map +1 -0
- package/dist/scanfix/commands/ubuntu.js +30 -0
- package/dist/scanfix/commands/ubuntu.js.map +1 -0
- package/dist/scanfix/fixes/certbot.d.ts +25 -0
- package/dist/scanfix/fixes/certbot.d.ts.map +1 -0
- package/dist/scanfix/fixes/certbot.js +136 -0
- package/dist/scanfix/fixes/certbot.js.map +1 -0
- package/dist/scanfix/fixes/docker.d.ts +29 -0
- package/dist/scanfix/fixes/docker.d.ts.map +1 -0
- package/dist/scanfix/fixes/docker.js +149 -0
- package/dist/scanfix/fixes/docker.js.map +1 -0
- package/dist/scanfix/fixes/git.d.ts +20 -0
- package/dist/scanfix/fixes/git.d.ts.map +1 -0
- package/dist/scanfix/fixes/git.js +71 -0
- package/dist/scanfix/fixes/git.js.map +1 -0
- package/dist/scanfix/fixes/index.d.ts +11 -0
- package/dist/scanfix/fixes/index.d.ts.map +1 -0
- package/dist/scanfix/fixes/index.js +27 -0
- package/dist/scanfix/fixes/index.js.map +1 -0
- package/dist/scanfix/fixes/node.d.ts +20 -0
- package/dist/scanfix/fixes/node.d.ts.map +1 -0
- package/dist/scanfix/fixes/node.js +71 -0
- package/dist/scanfix/fixes/node.js.map +1 -0
- package/dist/scanfix/fixes/pnpm.d.ts +20 -0
- package/dist/scanfix/fixes/pnpm.d.ts.map +1 -0
- package/dist/scanfix/fixes/pnpm.js +122 -0
- package/dist/scanfix/fixes/pnpm.js.map +1 -0
- package/dist/scanfix/index.d.ts +23 -0
- package/dist/scanfix/index.d.ts.map +1 -0
- package/dist/scanfix/index.js +44 -0
- package/dist/scanfix/index.js.map +1 -0
- package/dist/scanfix/platform.d.ts +20 -0
- package/dist/scanfix/platform.d.ts.map +1 -0
- package/dist/scanfix/platform.js +48 -0
- package/dist/scanfix/platform.js.map +1 -0
- package/dist/scanfix/ssl-cert-helper.d.ts +27 -0
- package/dist/scanfix/ssl-cert-helper.d.ts.map +1 -0
- package/dist/scanfix/ssl-cert-helper.js +117 -0
- package/dist/scanfix/ssl-cert-helper.js.map +1 -0
- package/dist/scanfix/types.d.ts +27 -0
- package/dist/scanfix/types.d.ts.map +1 -0
- package/dist/scanfix/types.js +8 -0
- package/dist/scanfix/types.js.map +1 -0
- package/dist/scripts/check-existing-secrets.d.ts +6 -0
- package/dist/scripts/check-existing-secrets.d.ts.map +1 -0
- package/dist/scripts/check-existing-secrets.js +86 -0
- package/dist/scripts/check-existing-secrets.js.map +1 -0
- package/dist/scripts/generate-all.d.ts +40 -0
- package/dist/scripts/generate-all.d.ts.map +1 -0
- package/dist/scripts/generate-all.js +373 -0
- package/dist/scripts/generate-all.js.map +1 -0
- package/dist/scripts/get-repo-name.d.ts +6 -0
- package/dist/scripts/get-repo-name.d.ts.map +1 -0
- package/dist/scripts/get-repo-name.js +54 -0
- package/dist/scripts/get-repo-name.js.map +1 -0
- package/dist/scripts/index.d.ts +7 -0
- package/dist/scripts/index.d.ts.map +1 -0
- package/dist/scripts/index.js +14 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/validate-env-files.d.ts +6 -0
- package/dist/scripts/validate-env-files.d.ts.map +1 -0
- package/dist/scripts/validate-env-files.js +126 -0
- package/dist/scripts/validate-env-files.js.map +1 -0
- package/dist/scripts/validate-example-values.d.ts +8 -0
- package/dist/scripts/validate-example-values.d.ts.map +1 -0
- package/dist/scripts/validate-example-values.js +88 -0
- package/dist/scripts/validate-example-values.js.map +1 -0
- package/dist/scripts/validate-factiii-yml.d.ts +6 -0
- package/dist/scripts/validate-factiii-yml.d.ts.map +1 -0
- package/dist/scripts/validate-factiii-yml.js +71 -0
- package/dist/scripts/validate-factiii-yml.js.map +1 -0
- package/dist/types/cli.d.ts +138 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +8 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +113 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/plugin.d.ts +352 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +8 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/utils/ansible-vault-secrets.d.ts +95 -0
- package/dist/utils/ansible-vault-secrets.d.ts.map +1 -0
- package/dist/utils/ansible-vault-secrets.js +406 -0
- package/dist/utils/ansible-vault-secrets.js.map +1 -0
- package/dist/utils/config-helpers.d.ts +72 -0
- package/dist/utils/config-helpers.d.ts.map +1 -0
- package/dist/utils/config-helpers.js +171 -0
- package/dist/utils/config-helpers.js.map +1 -0
- package/dist/utils/config-schema.d.ts +17 -0
- package/dist/utils/config-schema.d.ts.map +1 -0
- package/dist/utils/config-schema.js +100 -0
- package/dist/utils/config-schema.js.map +1 -0
- package/dist/utils/config-validator.d.ts +29 -0
- package/dist/utils/config-validator.d.ts.map +1 -0
- package/dist/utils/config-validator.js +146 -0
- package/dist/utils/config-validator.js.map +1 -0
- package/dist/utils/deployment-report.d.ts +100 -0
- package/dist/utils/deployment-report.d.ts.map +1 -0
- package/dist/utils/deployment-report.js +225 -0
- package/dist/utils/deployment-report.js.map +1 -0
- package/dist/utils/dns-validator.d.ts +19 -0
- package/dist/utils/dns-validator.d.ts.map +1 -0
- package/dist/utils/dns-validator.js +94 -0
- package/dist/utils/dns-validator.js.map +1 -0
- package/dist/utils/env-validator.d.ts +108 -0
- package/dist/utils/env-validator.d.ts.map +1 -0
- package/dist/utils/env-validator.js +342 -0
- package/dist/utils/env-validator.js.map +1 -0
- package/dist/utils/github-workflow-monitor.d.ts +49 -0
- package/dist/utils/github-workflow-monitor.d.ts.map +1 -0
- package/dist/utils/github-workflow-monitor.js +145 -0
- package/dist/utils/github-workflow-monitor.js.map +1 -0
- package/dist/utils/index.d.ts +18 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +48 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/secret-prompts.d.ts +67 -0
- package/dist/utils/secret-prompts.d.ts.map +1 -0
- package/dist/utils/secret-prompts.js +369 -0
- package/dist/utils/secret-prompts.js.map +1 -0
- package/dist/utils/server-check.d.ts +43 -0
- package/dist/utils/server-check.d.ts.map +1 -0
- package/dist/utils/server-check.js +397 -0
- package/dist/utils/server-check.js.map +1 -0
- package/dist/utils/ssh-deploy.d.ts +70 -0
- package/dist/utils/ssh-deploy.d.ts.map +1 -0
- package/dist/utils/ssh-deploy.js +268 -0
- package/dist/utils/ssh-deploy.js.map +1 -0
- package/dist/utils/ssh-helper.d.ts +40 -0
- package/dist/utils/ssh-helper.d.ts.map +1 -0
- package/dist/utils/ssh-helper.js +221 -0
- package/dist/utils/ssh-helper.js.map +1 -0
- package/dist/utils/template-generator.d.ts +42 -0
- package/dist/utils/template-generator.d.ts.map +1 -0
- package/dist/utils/template-generator.js +223 -0
- package/dist/utils/template-generator.js.map +1 -0
- package/dist/utils/version-check.d.ts +69 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +211 -0
- package/dist/utils/version-check.js.map +1 -0
- package/package.json +82 -0
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Mac Server Plugin
|
|
4
|
+
*
|
|
5
|
+
* Handles macOS-specific package management and commands.
|
|
6
|
+
* Used for deploying to Mac servers or local Mac development.
|
|
7
|
+
*
|
|
8
|
+
* ============================================================
|
|
9
|
+
* PLUGIN STRUCTURE STANDARD
|
|
10
|
+
* ============================================================
|
|
11
|
+
*
|
|
12
|
+
* This plugin follows a standardized structure for clarity and maintainability:
|
|
13
|
+
*
|
|
14
|
+
* **scanfix/** - Scan/fix operations organized by concern
|
|
15
|
+
* - Each file exports an array of Fix[] objects
|
|
16
|
+
* - Files group related fixes together (docker, node, git, containers, config)
|
|
17
|
+
* - All fixes are combined in the main plugin class
|
|
18
|
+
*
|
|
19
|
+
* **Environment-specific files** - Operations for each environment
|
|
20
|
+
* - dev.ts - Dev environment operations (deployDev)
|
|
21
|
+
* - staging.ts - Staging operations (deployStaging, ensureServerReady)
|
|
22
|
+
* - Only create files if they have content (no blank files)
|
|
23
|
+
*
|
|
24
|
+
* **index.ts** - Main plugin class
|
|
25
|
+
* - Static metadata (id, name, category, version, os, packageManager, serviceManager)
|
|
26
|
+
* - shouldLoad() - Determines if plugin should load
|
|
27
|
+
* - Imports and combines all scanfix arrays
|
|
28
|
+
* - Imports and uses environment-specific methods
|
|
29
|
+
* - Maintains public API compatibility
|
|
30
|
+
*
|
|
31
|
+
* **When each environment file is used:**
|
|
32
|
+
* - dev.ts: When deploying to local dev environment
|
|
33
|
+
* - staging.ts: When deploying to staging server or preparing staging server
|
|
34
|
+
*
|
|
35
|
+
* **How scanfix files are organized:**
|
|
36
|
+
* - docker.ts: Docker installation, running status, autostart (dev + staging)
|
|
37
|
+
* - node.ts: Node.js and pnpm installation (staging)
|
|
38
|
+
* - git.ts: Git installation (staging)
|
|
39
|
+
* - containers.ts: Container management and cleanup (staging)
|
|
40
|
+
* - config.ts: Configuration checks and file validation (dev + staging)
|
|
41
|
+
* ============================================================
|
|
42
|
+
*/
|
|
43
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
44
|
+
if (k2 === undefined) k2 = k;
|
|
45
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
46
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
47
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
48
|
+
}
|
|
49
|
+
Object.defineProperty(o, k2, desc);
|
|
50
|
+
}) : (function(o, m, k, k2) {
|
|
51
|
+
if (k2 === undefined) k2 = k;
|
|
52
|
+
o[k2] = m[k];
|
|
53
|
+
}));
|
|
54
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
55
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
56
|
+
}) : function(o, v) {
|
|
57
|
+
o["default"] = v;
|
|
58
|
+
});
|
|
59
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
60
|
+
var ownKeys = function(o) {
|
|
61
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
62
|
+
var ar = [];
|
|
63
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
64
|
+
return ar;
|
|
65
|
+
};
|
|
66
|
+
return ownKeys(o);
|
|
67
|
+
};
|
|
68
|
+
return function (mod) {
|
|
69
|
+
if (mod && mod.__esModule) return mod;
|
|
70
|
+
var result = {};
|
|
71
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
72
|
+
__setModuleDefault(result, mod);
|
|
73
|
+
return result;
|
|
74
|
+
};
|
|
75
|
+
})();
|
|
76
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
77
|
+
const child_process_1 = require("child_process");
|
|
78
|
+
// Import shared scanfix factories
|
|
79
|
+
const index_js_1 = require("../../../scanfix/index.js");
|
|
80
|
+
// Import plugin-specific scanfix arrays
|
|
81
|
+
const containers_js_1 = require("./scanfix/containers.js");
|
|
82
|
+
const config_js_1 = require("./scanfix/config.js");
|
|
83
|
+
const system_js_1 = require("./scanfix/system.js");
|
|
84
|
+
// Import environment-specific operations
|
|
85
|
+
const dev_js_1 = require("./dev.js");
|
|
86
|
+
const staging_js_1 = require("./staging.js");
|
|
87
|
+
// Import SSH helper
|
|
88
|
+
const ssh_helper_js_1 = require("../../../utils/ssh-helper.js");
|
|
89
|
+
class MacPlugin {
|
|
90
|
+
// ============================================================
|
|
91
|
+
// STATIC METADATA
|
|
92
|
+
// ============================================================
|
|
93
|
+
static id = 'mac';
|
|
94
|
+
static name = 'Mac Server';
|
|
95
|
+
static category = 'server';
|
|
96
|
+
static version = '1.0.0';
|
|
97
|
+
/** The OS this server plugin handles */
|
|
98
|
+
static os = 'mac';
|
|
99
|
+
/** Package manager for macOS */
|
|
100
|
+
static packageManager = 'brew';
|
|
101
|
+
/** Service manager for macOS */
|
|
102
|
+
static serviceManager = 'launchctl';
|
|
103
|
+
// Env vars this plugin requires
|
|
104
|
+
static requiredEnvVars = [];
|
|
105
|
+
// Schema for factiii.yml (user-editable)
|
|
106
|
+
static configSchema = {
|
|
107
|
+
// No user config needed - uses staging.host
|
|
108
|
+
container_exclusions: 'array of container names to exclude from cleanup',
|
|
109
|
+
};
|
|
110
|
+
// Schema for factiiiAuto.yml (auto-detected)
|
|
111
|
+
static autoConfigSchema = {
|
|
112
|
+
ssh_user: 'string',
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Determine if this plugin should be loaded for this project
|
|
116
|
+
* Loads if config has environment with server: 'mac'
|
|
117
|
+
*/
|
|
118
|
+
static async shouldLoad(_rootDir, config) {
|
|
119
|
+
// Dynamic import to avoid circular dependencies
|
|
120
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../utils/config-helpers.js')));
|
|
121
|
+
const environments = extractEnvironments(config);
|
|
122
|
+
for (const [name, env] of Object.entries(environments)) {
|
|
123
|
+
// Load if environment explicitly uses 'mac'
|
|
124
|
+
if (env.server === 'mac' || env.server === 'mac-mini') {
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
// Load if staging environment has local/private IP or staging domain
|
|
128
|
+
if (name.startsWith('staging') && env.domain && !env.domain.startsWith('EXAMPLE-')) {
|
|
129
|
+
const isLocal = /^192\.168\./.test(env.domain) ||
|
|
130
|
+
/^10\./.test(env.domain) ||
|
|
131
|
+
/^100\./.test(env.domain) || // Tailscale
|
|
132
|
+
env.domain.includes('staging');
|
|
133
|
+
if (isLocal)
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// On init (no config or EXAMPLE values), load as default staging option
|
|
138
|
+
return Object.keys(config).length === 0;
|
|
139
|
+
}
|
|
140
|
+
static helpText = {
|
|
141
|
+
SSH: `
|
|
142
|
+
SSH private key for accessing the server.
|
|
143
|
+
|
|
144
|
+
Step 1: Generate a new SSH key pair (if needed):
|
|
145
|
+
ssh-keygen -t ed25519 -C "deploy-key" -f ~/.ssh/deploy_key
|
|
146
|
+
|
|
147
|
+
Step 2: Add PUBLIC key to server:
|
|
148
|
+
ssh-copy-id -i ~/.ssh/deploy_key.pub ubuntu@YOUR_HOST
|
|
149
|
+
|
|
150
|
+
Step 3: Paste the PRIVATE key below (multi-line, end with blank line):
|
|
151
|
+
cat ~/.ssh/deploy_key`,
|
|
152
|
+
};
|
|
153
|
+
// ============================================================
|
|
154
|
+
// FIXES - All issues this plugin can detect and resolve
|
|
155
|
+
// ============================================================
|
|
156
|
+
// Combined from scanfix/ folder files
|
|
157
|
+
// All fixes are OS-specific to Mac
|
|
158
|
+
// ============================================================
|
|
159
|
+
static fixes = [
|
|
160
|
+
// Dev stage - shared fixes (with OS filter)
|
|
161
|
+
...(0, index_js_1.getDockerFixes)('dev').map(fix => ({ ...fix, os: 'mac' })),
|
|
162
|
+
// Staging stage - shared fixes (with OS filter)
|
|
163
|
+
...(0, index_js_1.getDockerFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
|
|
164
|
+
...(0, index_js_1.getNodeFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
|
|
165
|
+
...(0, index_js_1.getGitFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
|
|
166
|
+
...(0, index_js_1.getPnpmFixes)('staging').map(fix => ({ ...fix, os: 'mac' })),
|
|
167
|
+
{ ...(0, index_js_1.createCertbotFix)('staging', 'staging'), os: 'mac' },
|
|
168
|
+
// Plugin-specific fixes (with OS filter)
|
|
169
|
+
...containers_js_1.containerFixes.map(fix => ({ ...fix, os: 'mac' })),
|
|
170
|
+
...config_js_1.configFixes.map(fix => ({ ...fix, os: 'mac' })),
|
|
171
|
+
...system_js_1.systemFixes.map(fix => ({ ...fix, os: 'mac' })),
|
|
172
|
+
];
|
|
173
|
+
// ============================================================
|
|
174
|
+
// STATIC HELPER METHODS
|
|
175
|
+
// ============================================================
|
|
176
|
+
/**
|
|
177
|
+
* Auto-detect macOS configuration
|
|
178
|
+
*/
|
|
179
|
+
static async detectConfig(_rootDir) {
|
|
180
|
+
return {
|
|
181
|
+
ssh_user: 'ubuntu', // Default SSH user
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Execute a command on a remote server via SSH
|
|
186
|
+
*/
|
|
187
|
+
static async sshExec(envConfig, command) {
|
|
188
|
+
return await (0, ssh_helper_js_1.sshExec)(envConfig, command);
|
|
189
|
+
}
|
|
190
|
+
// ============================================================
|
|
191
|
+
// INSTANCE METHODS
|
|
192
|
+
// ============================================================
|
|
193
|
+
_config;
|
|
194
|
+
constructor(config) {
|
|
195
|
+
this._config = config;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Ensure server is ready for deployment
|
|
199
|
+
* Installs Node.js, git, pnpm, clones repo, checks out commit
|
|
200
|
+
*/
|
|
201
|
+
async ensureServerReady(config, environment, options = {}) {
|
|
202
|
+
return (0, staging_js_1.ensureServerReady)(config, environment, options);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Deploy to an environment
|
|
206
|
+
*/
|
|
207
|
+
async deploy(config, environment) {
|
|
208
|
+
if (environment === 'dev') {
|
|
209
|
+
return (0, dev_js_1.deployDev)();
|
|
210
|
+
}
|
|
211
|
+
else if (environment === 'staging') {
|
|
212
|
+
return (0, staging_js_1.deployStaging)(config);
|
|
213
|
+
}
|
|
214
|
+
return { success: false, error: `Unsupported environment: ${environment}` };
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Undeploy from an environment
|
|
218
|
+
*/
|
|
219
|
+
async undeploy(config, environment) {
|
|
220
|
+
if (environment === 'dev') {
|
|
221
|
+
try {
|
|
222
|
+
(0, child_process_1.execSync)('docker compose down', { stdio: 'inherit' });
|
|
223
|
+
return { success: true, message: 'Local containers stopped' };
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
return {
|
|
227
|
+
success: false,
|
|
228
|
+
error: error instanceof Error ? error.message : String(error),
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else if (environment === 'staging') {
|
|
233
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../utils/config-helpers.js')));
|
|
234
|
+
const environments = extractEnvironments(config);
|
|
235
|
+
const envConfig = environments.staging;
|
|
236
|
+
if (!envConfig?.domain) {
|
|
237
|
+
return { success: false, error: 'Staging domain not configured' };
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
const repoName = config.name ?? 'app';
|
|
241
|
+
await MacPlugin.sshExec(envConfig, `
|
|
242
|
+
cd ~/.factiii && docker compose stop ${repoName}-staging
|
|
243
|
+
`);
|
|
244
|
+
return { success: true, message: 'Staging containers stopped' };
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
return {
|
|
248
|
+
success: false,
|
|
249
|
+
error: error instanceof Error ? error.message : String(error),
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return { success: false, error: `Unsupported environment: ${environment}` };
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
exports.default = MacPlugin;
|
|
257
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/servers/mac/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAAyC;AAWzC,kCAAkC;AAClC,wDAMmC;AAEnC,wCAAwC;AACxC,2DAAyD;AACzD,mDAAkD;AAClD,mDAAkD;AAElD,yCAAyC;AACzC,qCAAqC;AACrC,6CAA4F;AAE5F,oBAAoB;AACpB,gEAAuD;AAEvD,MAAM,SAAS;IACb,+DAA+D;IAC/D,kBAAkB;IAClB,+DAA+D;IAE/D,MAAM,CAAU,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,CAAU,IAAI,GAAG,YAAY,CAAC;IACpC,MAAM,CAAU,QAAQ,GAAa,QAAQ,CAAC;IAC9C,MAAM,CAAU,OAAO,GAAG,OAAO,CAAC;IAElC,wCAAwC;IACxC,MAAM,CAAU,EAAE,GAAa,KAAK,CAAC;IACrC,gCAAgC;IAChC,MAAM,CAAU,cAAc,GAAmB,MAAM,CAAC;IACxD,gCAAgC;IAChC,MAAM,CAAU,cAAc,GAAmB,WAAW,CAAC;IAE7D,gCAAgC;IAChC,MAAM,CAAU,eAAe,GAAa,EAAE,CAAC;IAE/C,yCAAyC;IACzC,MAAM,CAAU,YAAY,GAA4B;QACtD,4CAA4C;QAC5C,oBAAoB,EAAE,kDAAkD;KACzE,CAAC;IAEF,6CAA6C;IAC7C,MAAM,CAAU,gBAAgB,GAA2B;QACzD,QAAQ,EAAE,QAAQ;KACnB,CAAC;IAEF;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAqB;QAC7D,gDAAgD;QAChD,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,kCAAkC,GAAC,CAAC;QAEjF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAEjD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACvD,4CAA4C;YAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAK,GAAG,CAAC,MAAiB,KAAK,UAAU,EAAE,CAAC;gBAClE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,qEAAqE;YACrE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBACnF,MAAM,OAAO,GACX,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;oBACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,YAAY;oBACzC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACjC,IAAI,OAAO;oBAAE,OAAO,IAAI,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,QAAQ,GAA2B;QACxC,GAAG,EAAE;;;;;;;;;;yBAUgB;KACtB,CAAC;IAEF,+DAA+D;IAC/D,wDAAwD;IACxD,+DAA+D;IAC/D,sCAAsC;IACtC,mCAAmC;IACnC,+DAA+D;IAE/D,MAAM,CAAU,KAAK,GAAG;QACtB,4CAA4C;QAC5C,GAAG,IAAA,yBAAc,EAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;QAExE,gDAAgD;QAChD,GAAG,IAAA,yBAAc,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;QAC5E,GAAG,IAAA,uBAAY,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;QAC1E,GAAG,IAAA,sBAAW,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;QACzE,GAAG,IAAA,uBAAY,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;QAC1E,EAAE,GAAG,IAAA,2BAAgB,EAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAiB,EAAE;QAEpE,yCAAyC;QACzC,GAAG,8BAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;QACjE,GAAG,uBAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;QAC9D,GAAG,uBAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,KAAiB,EAAE,CAAC,CAAC;KAC/D,CAAC;IAEF,+DAA+D;IAC/D,wBAAwB;IACxB,+DAA+D;IAE/D;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,QAAgB;QACxC,OAAO;YACL,QAAQ,EAAE,QAAQ,EAAE,mBAAmB;SACxC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAA4B,EAAE,OAAe;QAChE,OAAO,MAAM,IAAA,uBAAO,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,+DAA+D;IAC/D,mBAAmB;IACnB,+DAA+D;IAEvD,OAAO,CAAgB;IAE/B,YAAY,MAAqB;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CACrB,MAAqB,EACrB,WAAmB,EACnB,UAAoC,EAAE;QAEtC,OAAO,IAAA,8BAAwB,EAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAqB,EAAE,WAAmB;QACrD,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,OAAO,IAAA,kBAAS,GAAE,CAAC;QACrB,CAAC;aAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,IAAA,0BAAa,EAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,WAAW,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAqB,EAAE,WAAmB;QACvD,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACtD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YAChE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,kCAAkC,GAAC,CAAC;YACjF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;YAEvC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;gBACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC;YACpE,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;gBACtC,MAAM,SAAS,CAAC,OAAO,CACrB,SAAS,EACT;iDACuC,QAAQ;SAChD,CACA,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;YAClE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,WAAW,EAAE,EAAE,CAAC;IAC9E,CAAC;;AAGH,kBAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,GAAG,EA+H5B,CAAC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration-related fixes for macOS plugin
|
|
4
|
+
* Handles configuration checks and file validation
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.configFixes = void 0;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
exports.configFixes = [
|
|
45
|
+
// DEV STAGE FIXES
|
|
46
|
+
{
|
|
47
|
+
id: 'missing-dockerfile-dev',
|
|
48
|
+
stage: 'dev',
|
|
49
|
+
severity: 'warning',
|
|
50
|
+
description: 'Dockerfile not found',
|
|
51
|
+
scan: async (_config, rootDir) => {
|
|
52
|
+
const commonPaths = [
|
|
53
|
+
'Dockerfile',
|
|
54
|
+
'apps/server/Dockerfile',
|
|
55
|
+
'packages/server/Dockerfile',
|
|
56
|
+
];
|
|
57
|
+
for (const p of commonPaths) {
|
|
58
|
+
if (fs.existsSync(path.join(rootDir, p)))
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
},
|
|
63
|
+
fix: null,
|
|
64
|
+
manualFix: 'Create a Dockerfile in your project root. Minimal example:\n' +
|
|
65
|
+
' FROM node:18-alpine\n' +
|
|
66
|
+
' WORKDIR /app\n' +
|
|
67
|
+
' COPY package*.json ./\n' +
|
|
68
|
+
' RUN npm install --production\n' +
|
|
69
|
+
' COPY . .\n' +
|
|
70
|
+
' CMD ["node", "dist/index.js"]',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'missing-docker-compose-dev',
|
|
74
|
+
stage: 'dev',
|
|
75
|
+
severity: 'info',
|
|
76
|
+
description: 'docker-compose.yml not found (optional for dev)',
|
|
77
|
+
scan: async (_config, rootDir) => {
|
|
78
|
+
return (!fs.existsSync(path.join(rootDir, 'docker-compose.yml')) &&
|
|
79
|
+
!fs.existsSync(path.join(rootDir, 'compose.yml')));
|
|
80
|
+
},
|
|
81
|
+
fix: null,
|
|
82
|
+
manualFix: 'Create docker-compose.yml for local development (optional). Example:\n' +
|
|
83
|
+
' services:\n' +
|
|
84
|
+
' app:\n' +
|
|
85
|
+
' build: .\n' +
|
|
86
|
+
' ports:\n' +
|
|
87
|
+
' - "3000:3000"\n' +
|
|
88
|
+
' volumes:\n' +
|
|
89
|
+
' - .:/app',
|
|
90
|
+
},
|
|
91
|
+
// STAGING STAGE FIXES
|
|
92
|
+
{
|
|
93
|
+
id: 'staging-domain-missing',
|
|
94
|
+
stage: 'staging',
|
|
95
|
+
severity: 'critical',
|
|
96
|
+
description: 'Staging domain not configured in factiii.yml',
|
|
97
|
+
scan: async (config, _rootDir) => {
|
|
98
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
99
|
+
const environments = extractEnvironments(config);
|
|
100
|
+
// Only check if staging environment is defined in config
|
|
101
|
+
const hasStagingEnv = environments.staging;
|
|
102
|
+
if (!hasStagingEnv)
|
|
103
|
+
return false; // Skip check if staging not configured
|
|
104
|
+
return !environments.staging?.domain;
|
|
105
|
+
},
|
|
106
|
+
fix: null,
|
|
107
|
+
manualFix: 'Add staging.domain to factiii.yml. Example:\n' +
|
|
108
|
+
' staging:\n' +
|
|
109
|
+
' server: mac\n' +
|
|
110
|
+
' domain: staging.yourdomain.com\n' +
|
|
111
|
+
' env_file: .env.staging',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
id: 'staging-unreachable',
|
|
115
|
+
stage: 'staging',
|
|
116
|
+
severity: 'critical',
|
|
117
|
+
description: 'Cannot reach staging server',
|
|
118
|
+
scan: async (config, _rootDir) => {
|
|
119
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
120
|
+
const environments = extractEnvironments(config);
|
|
121
|
+
// Only check if staging environment is defined in config
|
|
122
|
+
const hasStagingEnv = environments.staging;
|
|
123
|
+
if (!hasStagingEnv)
|
|
124
|
+
return false; // Skip check if staging not configured
|
|
125
|
+
const domain = environments.staging?.domain;
|
|
126
|
+
if (!domain)
|
|
127
|
+
return false; // Will be caught by staging-domain-missing
|
|
128
|
+
try {
|
|
129
|
+
// Try to ping the domain
|
|
130
|
+
(0, child_process_1.execSync)(`ping -c 1 -W 3 ${domain}`, { stdio: 'pipe' });
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
fix: null,
|
|
138
|
+
manualFix: 'Check network connectivity to staging server',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: 'staging-repo-not-cloned',
|
|
142
|
+
stage: 'staging',
|
|
143
|
+
severity: 'warning',
|
|
144
|
+
description: 'Repository not cloned on staging server',
|
|
145
|
+
scan: async (config, _rootDir) => {
|
|
146
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
147
|
+
const environments = extractEnvironments(config);
|
|
148
|
+
const hasStagingEnv = environments.staging;
|
|
149
|
+
if (!hasStagingEnv)
|
|
150
|
+
return false;
|
|
151
|
+
const domain = environments.staging?.domain;
|
|
152
|
+
if (!domain)
|
|
153
|
+
return false;
|
|
154
|
+
const repoName = config.name ?? 'app';
|
|
155
|
+
// Executed locally - SSH handled by CLI wrapper
|
|
156
|
+
try {
|
|
157
|
+
const repoPath = path.join(process.env.HOME ?? '/Users/jon', '.factiii', repoName, '.git');
|
|
158
|
+
return !fs.existsSync(repoPath);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
fix: null, // Will be handled by ensureServerReady()
|
|
165
|
+
manualFix: 'Repository will be cloned automatically on first deployment',
|
|
166
|
+
},
|
|
167
|
+
];
|
|
168
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AAG5B,QAAA,WAAW,GAAU;IAChC,kBAAkB;IAClB;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,sBAAsB;QACnC,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,MAAM,WAAW,GAAG;gBAClB,YAAY;gBACZ,wBAAwB;gBACxB,4BAA4B;aAC7B,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;gBAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;YACzD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,8DAA8D;YACvE,6BAA6B;YAC7B,sBAAsB;YACtB,+BAA+B;YAC/B,sCAAsC;YACtC,kBAAkB;YAClB,qCAAqC;KACxC;IACD;QACE,EAAE,EAAE,4BAA4B;QAChC,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,iDAAiD;QAC9D,IAAI,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAoB,EAAE;YACxE,OAAO,CACL,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;gBACxD,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAClD,CAAC;QACJ,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,wEAAwE;YACjF,mBAAmB;YACnB,gBAAgB;YAChB,sBAAsB;YACtB,oBAAoB;YACpB,6BAA6B;YAC7B,sBAAsB;YACtB,sBAAsB;KACzB;IAED,sBAAsB;IACtB;QACE,EAAE,EAAE,wBAAwB;QAC5B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,QAAgB,EAAoB,EAAE;YACxE,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,qCAAqC,GAAC,CAAC;YACpF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAEjD,yDAAyD;YACzD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC,CAAC,uCAAuC;YAEzE,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;QACvC,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,+CAA+C;YACxD,kBAAkB;YAClB,uBAAuB;YACvB,0CAA0C;YAC1C,gCAAgC;KACnC;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,6BAA6B;QAC1C,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,QAAgB,EAAoB,EAAE;YACxE,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,qCAAqC,GAAC,CAAC;YACpF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAEjD,yDAAyD;YACzD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC,CAAC,uCAAuC;YAEzE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;YAC5C,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC,CAAC,2CAA2C;YAEtE,IAAI,CAAC;gBACH,yBAAyB;gBACzB,IAAA,wBAAQ,EAAC,kBAAkB,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBACxD,OAAO,KAAK,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,8CAA8C;KAC1D;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE,KAAK,EAAE,MAAqB,EAAE,QAAgB,EAAoB,EAAE;YACxE,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,qCAAqC,GAAC,CAAC;YACpF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAEjD,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YAEjC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC;YAC5C,IAAI,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAE1B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;YAEtC,gDAAgD;YAChD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC3F,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,GAAG,EAAE,IAAI,EAAE,yCAAyC;QACpD,SAAS,EAAE,6DAA6D;KACzE;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/containers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAErE,eAAO,MAAM,cAAc,EAAE,GAAG,EAiJ/B,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Container management fixes for macOS plugin
|
|
4
|
+
* Handles unmanaged container detection and cleanup
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
40
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.containerFixes = void 0;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const child_process_1 = require("child_process");
|
|
47
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
48
|
+
exports.containerFixes = [
|
|
49
|
+
{
|
|
50
|
+
id: 'staging-old-containers',
|
|
51
|
+
stage: 'staging',
|
|
52
|
+
severity: 'warning',
|
|
53
|
+
description: 'Unmanaged Docker containers found (not in docker-compose.yml)',
|
|
54
|
+
scan: async (config, rootDir) => {
|
|
55
|
+
const hasStagingEnv = config?.environments?.staging;
|
|
56
|
+
if (!hasStagingEnv)
|
|
57
|
+
return false;
|
|
58
|
+
try {
|
|
59
|
+
// 1. Generate configs first to know what SHOULD be running
|
|
60
|
+
const factiiiDir = path.join(process.env.HOME ?? '/Users/jon', '.factiii');
|
|
61
|
+
const infraDir = path.join(factiiiDir, 'infrastructure');
|
|
62
|
+
const generateScript = path.join(infraDir, 'dist', 'scripts', 'generate-all.js');
|
|
63
|
+
if (fs.existsSync(generateScript)) {
|
|
64
|
+
(0, child_process_1.execSync)(`node "${generateScript}"`, { stdio: 'pipe', cwd: factiiiDir });
|
|
65
|
+
}
|
|
66
|
+
// 2. Get list of managed containers from generated docker-compose.yml
|
|
67
|
+
const composeFile = path.join(factiiiDir, 'docker-compose.yml');
|
|
68
|
+
if (!fs.existsSync(composeFile)) {
|
|
69
|
+
return false; // No compose file, nothing to check
|
|
70
|
+
}
|
|
71
|
+
const composeContent = fs.readFileSync(composeFile, 'utf8');
|
|
72
|
+
const compose = js_yaml_1.default.load(composeContent);
|
|
73
|
+
// Extract managed container names: service names + container_name values
|
|
74
|
+
const managedContainers = new Set();
|
|
75
|
+
if (compose.services) {
|
|
76
|
+
for (const [serviceName, service] of Object.entries(compose.services)) {
|
|
77
|
+
// Add service name (default container name if container_name not specified)
|
|
78
|
+
managedContainers.add(serviceName);
|
|
79
|
+
// Add explicit container_name if specified
|
|
80
|
+
if (service.container_name) {
|
|
81
|
+
managedContainers.add(service.container_name);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// 3. Get running containers
|
|
86
|
+
const running = (0, child_process_1.execSync)('docker ps --format "{{.Names}}"', { encoding: 'utf8' })
|
|
87
|
+
.split('\n')
|
|
88
|
+
.filter(Boolean);
|
|
89
|
+
// 4. Find unmanaged containers (only exclude those in docker-compose.yml or container_exclusions)
|
|
90
|
+
const exclusions = config.container_exclusions ?? [];
|
|
91
|
+
const unmanaged = running.filter((name) => !managedContainers.has(name) &&
|
|
92
|
+
!exclusions.includes(name));
|
|
93
|
+
if (unmanaged.length > 0) {
|
|
94
|
+
// Log detailed message with container names
|
|
95
|
+
console.log(`\n⚠️ Found ${unmanaged.length} unmanaged container${unmanaged.length > 1 ? 's' : ''}:`);
|
|
96
|
+
for (const container of unmanaged) {
|
|
97
|
+
console.log(` - ${container}`);
|
|
98
|
+
}
|
|
99
|
+
// Generate YAML snippet
|
|
100
|
+
const yamlSnippet = `container_exclusions:\n - ${unmanaged.join('\n - ')}`;
|
|
101
|
+
console.log('\n💡 To keep these containers running, add to factiii.yml:\n');
|
|
102
|
+
console.log(yamlSnippet);
|
|
103
|
+
}
|
|
104
|
+
return unmanaged.length > 0;
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return false; // If we can't check, assume no problem
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
fix: async (config, rootDir) => {
|
|
111
|
+
try {
|
|
112
|
+
// Same logic as scan to find unmanaged containers
|
|
113
|
+
const factiiiDir = path.join(process.env.HOME ?? '/Users/jon', '.factiii');
|
|
114
|
+
const infraDir = path.join(factiiiDir, 'infrastructure');
|
|
115
|
+
const generateScript = path.join(infraDir, 'dist', 'scripts', 'generate-all.js');
|
|
116
|
+
if (fs.existsSync(generateScript)) {
|
|
117
|
+
console.log(' 🔨 Generating configs to determine managed containers...');
|
|
118
|
+
(0, child_process_1.execSync)(`node "${generateScript}"`, { stdio: 'inherit', cwd: factiiiDir });
|
|
119
|
+
}
|
|
120
|
+
const composeFile = path.join(factiiiDir, 'docker-compose.yml');
|
|
121
|
+
if (!fs.existsSync(composeFile)) {
|
|
122
|
+
console.log(' ⚠️ No docker-compose.yml found, skipping cleanup');
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
const composeContent = fs.readFileSync(composeFile, 'utf8');
|
|
126
|
+
const compose = js_yaml_1.default.load(composeContent);
|
|
127
|
+
// Extract managed container names: service names + container_name values
|
|
128
|
+
const managedContainers = new Set();
|
|
129
|
+
if (compose.services) {
|
|
130
|
+
for (const [serviceName, service] of Object.entries(compose.services)) {
|
|
131
|
+
// Add service name (default container name if container_name not specified)
|
|
132
|
+
managedContainers.add(serviceName);
|
|
133
|
+
// Add explicit container_name if specified
|
|
134
|
+
if (service.container_name) {
|
|
135
|
+
managedContainers.add(service.container_name);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const running = (0, child_process_1.execSync)('docker ps --format "{{.Names}}"', { encoding: 'utf8' })
|
|
140
|
+
.split('\n')
|
|
141
|
+
.filter(Boolean);
|
|
142
|
+
// Find unmanaged containers (only exclude those in docker-compose.yml or container_exclusions)
|
|
143
|
+
const exclusions = config.container_exclusions ?? [];
|
|
144
|
+
const unmanaged = running.filter((name) => !managedContainers.has(name) &&
|
|
145
|
+
!exclusions.includes(name));
|
|
146
|
+
if (unmanaged.length === 0) {
|
|
147
|
+
console.log(' ✅ No unmanaged containers found');
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
console.log(` 🧹 Stopping ${unmanaged.length} unmanaged container(s):`);
|
|
151
|
+
for (const container of unmanaged) {
|
|
152
|
+
console.log(` - ${container}`);
|
|
153
|
+
(0, child_process_1.execSync)(`docker stop "${container}"`, { stdio: 'inherit' });
|
|
154
|
+
}
|
|
155
|
+
console.log(' ✅ Cleanup complete');
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
catch (e) {
|
|
159
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
160
|
+
console.log(` Failed to clean up containers: ${errorMessage}`);
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
manualFix: 'Run: npx factiii fix --staging (will stop unmanaged containers). To keep specific containers running, add them to container_exclusions in factiii.yml',
|
|
165
|
+
},
|
|
166
|
+
];
|
|
167
|
+
//# sourceMappingURL=containers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"containers.js","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/containers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/servers/mac/scanfix/system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAEtD,eAAO,MAAM,WAAW,EAAE,GAAG,EAgI5B,CAAC"}
|