@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,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DNS Validator
|
|
3
|
+
*
|
|
4
|
+
* Utilities for validating and resolving hostnames.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Check if a hostname is resolvable
|
|
8
|
+
*/
|
|
9
|
+
export declare function isHostnameResolvable(hostname: string): Promise<boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Generate common hostname variations to check
|
|
12
|
+
* e.g., "staging-api.domain.com" -> ["api-staging.domain.com", "staging.api.domain.com"]
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateHostnameVariations(hostname: string): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Find a resolvable alternative hostname
|
|
17
|
+
*/
|
|
18
|
+
export declare function findResolvableAlternative(hostname: string): Promise<string | null>;
|
|
19
|
+
//# sourceMappingURL=dns-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns-validator.d.ts","sourceRoot":"","sources":["../../src/utils/dns-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7E;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBrE;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DNS Validator
|
|
4
|
+
*
|
|
5
|
+
* Utilities for validating and resolving hostnames.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.isHostnameResolvable = isHostnameResolvable;
|
|
42
|
+
exports.generateHostnameVariations = generateHostnameVariations;
|
|
43
|
+
exports.findResolvableAlternative = findResolvableAlternative;
|
|
44
|
+
const dns = __importStar(require("dns"));
|
|
45
|
+
const dnsPromises = dns.promises;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a hostname is resolvable
|
|
48
|
+
*/
|
|
49
|
+
async function isHostnameResolvable(hostname) {
|
|
50
|
+
try {
|
|
51
|
+
await dnsPromises.lookup(hostname);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generate common hostname variations to check
|
|
60
|
+
* e.g., "staging-api.domain.com" -> ["api-staging.domain.com", "staging.api.domain.com"]
|
|
61
|
+
*/
|
|
62
|
+
function generateHostnameVariations(hostname) {
|
|
63
|
+
const parts = hostname.split('.');
|
|
64
|
+
if (parts.length < 3)
|
|
65
|
+
return [];
|
|
66
|
+
const subdomain = parts[0];
|
|
67
|
+
const domain = parts.slice(1).join('.');
|
|
68
|
+
if (!subdomain)
|
|
69
|
+
return [];
|
|
70
|
+
const variations = [];
|
|
71
|
+
// Check for hyphenated subdomains
|
|
72
|
+
if (subdomain.includes('-')) {
|
|
73
|
+
const subParts = subdomain.split('-');
|
|
74
|
+
// Reverse order: "staging-api" -> "api-staging"
|
|
75
|
+
const reversed = [...subParts].reverse();
|
|
76
|
+
variations.push(`${reversed.join('-')}.${domain}`);
|
|
77
|
+
// Dot notation: "staging-api" -> "staging.api"
|
|
78
|
+
variations.push(`${subParts.join('.')}.${domain}`);
|
|
79
|
+
}
|
|
80
|
+
return variations;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Find a resolvable alternative hostname
|
|
84
|
+
*/
|
|
85
|
+
async function findResolvableAlternative(hostname) {
|
|
86
|
+
const variations = generateHostnameVariations(hostname);
|
|
87
|
+
for (const variation of variations) {
|
|
88
|
+
if (await isHostnameResolvable(variation)) {
|
|
89
|
+
return variation;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=dns-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns-validator.js","sourceRoot":"","sources":["../../src/utils/dns-validator.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,oDAOC;AAMD,gEAsBC;AAKD,8DAYC;AA3DD,yCAA2B;AAE3B,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC;AAEjC;;GAEG;AACI,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,0BAA0B,CAAC,QAAgB;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,kCAAkC;IAClC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,gDAAgD;QAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QACnD,+CAA+C;QAC/C,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAC7C,QAAgB;IAEhB,MAAM,UAAU,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAExD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,MAAM,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment File Validator
|
|
3
|
+
*
|
|
4
|
+
* Utilities for parsing and validating .env files.
|
|
5
|
+
*/
|
|
6
|
+
import type { FactiiiConfig } from '../types/index.js';
|
|
7
|
+
interface EnvVars {
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
}
|
|
10
|
+
interface KeyComparison {
|
|
11
|
+
match: boolean;
|
|
12
|
+
missing: string[];
|
|
13
|
+
extra: string[];
|
|
14
|
+
}
|
|
15
|
+
interface EmptyCheck {
|
|
16
|
+
allFilled: boolean;
|
|
17
|
+
empty: string[];
|
|
18
|
+
}
|
|
19
|
+
interface PlaceholderInfo {
|
|
20
|
+
key: string;
|
|
21
|
+
value: string;
|
|
22
|
+
}
|
|
23
|
+
interface PlaceholderCheck {
|
|
24
|
+
hasPlaceholders: boolean;
|
|
25
|
+
placeholders: PlaceholderInfo[];
|
|
26
|
+
}
|
|
27
|
+
interface ProdDifferences {
|
|
28
|
+
changed: string[];
|
|
29
|
+
onlyLocal: string[];
|
|
30
|
+
onlyGitHub: string[];
|
|
31
|
+
}
|
|
32
|
+
interface GitHubSecrets {
|
|
33
|
+
PROD_ENVS?: EnvVars;
|
|
34
|
+
}
|
|
35
|
+
interface AutoConfig {
|
|
36
|
+
isStagingSecret?: boolean;
|
|
37
|
+
allowIdenticalEnvVars?: string[];
|
|
38
|
+
}
|
|
39
|
+
interface ConfigWithAuto extends FactiiiConfig {
|
|
40
|
+
auto?: AutoConfig;
|
|
41
|
+
}
|
|
42
|
+
interface EnvValidationResult {
|
|
43
|
+
devExists: boolean;
|
|
44
|
+
stagingExists: boolean;
|
|
45
|
+
prodExists: boolean;
|
|
46
|
+
prodLocal: boolean;
|
|
47
|
+
prodGitHub: boolean;
|
|
48
|
+
prodGitignored: boolean;
|
|
49
|
+
stagingGitignored: boolean;
|
|
50
|
+
keysMatch: boolean;
|
|
51
|
+
allFilled: boolean;
|
|
52
|
+
warnings: string[];
|
|
53
|
+
errors: string[];
|
|
54
|
+
dev: EnvVars | null;
|
|
55
|
+
staging: EnvVars | null;
|
|
56
|
+
prod: EnvVars | null;
|
|
57
|
+
prodGitHubData?: EnvVars;
|
|
58
|
+
prodDifferences?: ProdDifferences;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Parse .env file into key-value object
|
|
62
|
+
* @param filepath - Path to .env file
|
|
63
|
+
* @returns Parsed key-value pairs or null if file doesn't exist
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseEnvFile(filepath: string): EnvVars | null;
|
|
66
|
+
/**
|
|
67
|
+
* Check if value looks like a placeholder
|
|
68
|
+
* @param value - Environment variable value
|
|
69
|
+
*/
|
|
70
|
+
export declare function looksLikePlaceholder(value: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Check if file is in .gitignore
|
|
73
|
+
* @param rootDir - Root directory
|
|
74
|
+
* @param filename - Filename to check
|
|
75
|
+
*/
|
|
76
|
+
export declare function isGitignored(rootDir: string, filename: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Compare keys between two env objects
|
|
79
|
+
* @param expected - Expected keys (from .env.example)
|
|
80
|
+
* @param actual - Actual keys to validate
|
|
81
|
+
*/
|
|
82
|
+
export declare function compareEnvKeys(expected: EnvVars, actual: EnvVars): KeyComparison;
|
|
83
|
+
/**
|
|
84
|
+
* Check if env values are filled (not empty)
|
|
85
|
+
* @param env - Environment variables
|
|
86
|
+
*/
|
|
87
|
+
export declare function checkValuesNotEmpty(env: EnvVars): EmptyCheck;
|
|
88
|
+
/**
|
|
89
|
+
* Check for placeholder values
|
|
90
|
+
* @param env - Environment variables
|
|
91
|
+
*/
|
|
92
|
+
export declare function checkForPlaceholders(env: EnvVars): PlaceholderCheck;
|
|
93
|
+
/**
|
|
94
|
+
* Compare values between environments
|
|
95
|
+
* @param env1 - First environment
|
|
96
|
+
* @param env2 - Second environment
|
|
97
|
+
* @returns Keys with matching values
|
|
98
|
+
*/
|
|
99
|
+
export declare function findMatchingValues(env1: EnvVars, env2: EnvVars): string[];
|
|
100
|
+
/**
|
|
101
|
+
* Validate environment file setup
|
|
102
|
+
* @param rootDir - Root directory
|
|
103
|
+
* @param config - Parsed factiii.yml config
|
|
104
|
+
* @param githubSecrets - Optional GitHub secrets for comparison
|
|
105
|
+
*/
|
|
106
|
+
export declare function validateEnvFiles(rootDir: string, config?: ConfigWithAuto, githubSecrets?: GitHubSecrets | null): EnvValidationResult;
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=env-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-validator.d.ts","sourceRoot":"","sources":["../../src/utils/env-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,UAAU,OAAO;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,UAAU;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,UAAU;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,UAAU,cAAe,SAAQ,aAAa;IAC5C,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,UAAU,mBAAmB;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA4B7D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAY3D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgCvE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,aAAa,CAYhF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAa5D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAanE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,EAAE,CAUzE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,cAAqC,EAC7C,aAAa,GAAE,aAAa,GAAG,IAAW,GACzC,mBAAmB,CA6KrB"}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Environment File Validator
|
|
4
|
+
*
|
|
5
|
+
* Utilities for parsing and validating .env files.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.parseEnvFile = parseEnvFile;
|
|
42
|
+
exports.looksLikePlaceholder = looksLikePlaceholder;
|
|
43
|
+
exports.isGitignored = isGitignored;
|
|
44
|
+
exports.compareEnvKeys = compareEnvKeys;
|
|
45
|
+
exports.checkValuesNotEmpty = checkValuesNotEmpty;
|
|
46
|
+
exports.checkForPlaceholders = checkForPlaceholders;
|
|
47
|
+
exports.findMatchingValues = findMatchingValues;
|
|
48
|
+
exports.validateEnvFiles = validateEnvFiles;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
/**
|
|
52
|
+
* Parse .env file into key-value object
|
|
53
|
+
* @param filepath - Path to .env file
|
|
54
|
+
* @returns Parsed key-value pairs or null if file doesn't exist
|
|
55
|
+
*/
|
|
56
|
+
function parseEnvFile(filepath) {
|
|
57
|
+
if (!fs.existsSync(filepath)) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const content = fs.readFileSync(filepath, 'utf8');
|
|
61
|
+
const env = {};
|
|
62
|
+
const lines = content.split('\n');
|
|
63
|
+
for (const line of lines) {
|
|
64
|
+
// Skip empty lines and comments
|
|
65
|
+
const trimmed = line.trim();
|
|
66
|
+
if (!trimmed || trimmed.startsWith('#')) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
// Parse KEY=VALUE
|
|
70
|
+
const match = trimmed.match(/^([^=]+)=(.*)$/);
|
|
71
|
+
if (match) {
|
|
72
|
+
const key = match[1]?.trim();
|
|
73
|
+
const value = match[2]?.trim();
|
|
74
|
+
if (key) {
|
|
75
|
+
env[key] = value ?? '';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return env;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Check if value looks like a placeholder
|
|
83
|
+
* @param value - Environment variable value
|
|
84
|
+
*/
|
|
85
|
+
function looksLikePlaceholder(value) {
|
|
86
|
+
if (!value || value === '') {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
return (value.includes('EXAMPLE') ||
|
|
90
|
+
value.includes('<FILL') ||
|
|
91
|
+
value.includes('your-') ||
|
|
92
|
+
value.includes('TODO') ||
|
|
93
|
+
value.includes('CHANGE_ME'));
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if file is in .gitignore
|
|
97
|
+
* @param rootDir - Root directory
|
|
98
|
+
* @param filename - Filename to check
|
|
99
|
+
*/
|
|
100
|
+
function isGitignored(rootDir, filename) {
|
|
101
|
+
const gitignorePath = path.join(rootDir, '.gitignore');
|
|
102
|
+
if (!fs.existsSync(gitignorePath)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
const gitignore = fs.readFileSync(gitignorePath, 'utf8');
|
|
106
|
+
const lines = gitignore.split('\n');
|
|
107
|
+
for (const line of lines) {
|
|
108
|
+
const trimmed = line.trim();
|
|
109
|
+
if (!trimmed || trimmed.startsWith('#')) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// Check exact match or pattern match
|
|
113
|
+
if (trimmed === filename) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
// Check pattern match (e.g., .env.* matches .env.prod)
|
|
117
|
+
if (trimmed.includes('*')) {
|
|
118
|
+
const pattern = trimmed.replace(/\*/g, '.*');
|
|
119
|
+
const regex = new RegExp(`^${pattern}$`);
|
|
120
|
+
if (regex.test(filename)) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Compare keys between two env objects
|
|
129
|
+
* @param expected - Expected keys (from .env.example)
|
|
130
|
+
* @param actual - Actual keys to validate
|
|
131
|
+
*/
|
|
132
|
+
function compareEnvKeys(expected, actual) {
|
|
133
|
+
const expectedKeys = Object.keys(expected);
|
|
134
|
+
const actualKeys = Object.keys(actual);
|
|
135
|
+
const missing = expectedKeys.filter((key) => !actualKeys.includes(key));
|
|
136
|
+
const extra = actualKeys.filter((key) => !expectedKeys.includes(key));
|
|
137
|
+
return {
|
|
138
|
+
match: missing.length === 0 && extra.length === 0,
|
|
139
|
+
missing,
|
|
140
|
+
extra,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check if env values are filled (not empty)
|
|
145
|
+
* @param env - Environment variables
|
|
146
|
+
*/
|
|
147
|
+
function checkValuesNotEmpty(env) {
|
|
148
|
+
const empty = [];
|
|
149
|
+
for (const [key, value] of Object.entries(env)) {
|
|
150
|
+
if (!value || value.trim() === '') {
|
|
151
|
+
empty.push(key);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return {
|
|
155
|
+
allFilled: empty.length === 0,
|
|
156
|
+
empty,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Check for placeholder values
|
|
161
|
+
* @param env - Environment variables
|
|
162
|
+
*/
|
|
163
|
+
function checkForPlaceholders(env) {
|
|
164
|
+
const placeholders = [];
|
|
165
|
+
for (const [key, value] of Object.entries(env)) {
|
|
166
|
+
if (looksLikePlaceholder(value)) {
|
|
167
|
+
placeholders.push({ key, value });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
hasPlaceholders: placeholders.length > 0,
|
|
172
|
+
placeholders,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Compare values between environments
|
|
177
|
+
* @param env1 - First environment
|
|
178
|
+
* @param env2 - Second environment
|
|
179
|
+
* @returns Keys with matching values
|
|
180
|
+
*/
|
|
181
|
+
function findMatchingValues(env1, env2) {
|
|
182
|
+
const matching = [];
|
|
183
|
+
for (const key of Object.keys(env1)) {
|
|
184
|
+
if (env2[key] && env1[key] === env2[key]) {
|
|
185
|
+
matching.push(key);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return matching;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Validate environment file setup
|
|
192
|
+
* @param rootDir - Root directory
|
|
193
|
+
* @param config - Parsed factiii.yml config
|
|
194
|
+
* @param githubSecrets - Optional GitHub secrets for comparison
|
|
195
|
+
*/
|
|
196
|
+
function validateEnvFiles(rootDir, config = {}, githubSecrets = null) {
|
|
197
|
+
const results = {
|
|
198
|
+
devExists: false,
|
|
199
|
+
stagingExists: false,
|
|
200
|
+
prodExists: false,
|
|
201
|
+
prodLocal: false,
|
|
202
|
+
prodGitHub: false,
|
|
203
|
+
prodGitignored: false,
|
|
204
|
+
stagingGitignored: false,
|
|
205
|
+
keysMatch: true,
|
|
206
|
+
allFilled: true,
|
|
207
|
+
warnings: [],
|
|
208
|
+
errors: [],
|
|
209
|
+
dev: null,
|
|
210
|
+
staging: null,
|
|
211
|
+
prod: null,
|
|
212
|
+
};
|
|
213
|
+
// Parse .env files
|
|
214
|
+
const devPath = path.join(rootDir, '.env.example');
|
|
215
|
+
const stagingPath = path.join(rootDir, '.env.staging');
|
|
216
|
+
const prodPath = path.join(rootDir, '.env.prod');
|
|
217
|
+
results.dev = parseEnvFile(devPath);
|
|
218
|
+
results.staging = parseEnvFile(stagingPath);
|
|
219
|
+
results.prod = parseEnvFile(prodPath);
|
|
220
|
+
results.devExists = results.dev !== null;
|
|
221
|
+
results.stagingExists = results.staging !== null;
|
|
222
|
+
results.prodLocal = results.prod !== null;
|
|
223
|
+
// Check if prod exists in GitHub
|
|
224
|
+
if (githubSecrets?.PROD_ENVS) {
|
|
225
|
+
results.prodGitHub = true;
|
|
226
|
+
results.prodGitHubData = githubSecrets.PROD_ENVS;
|
|
227
|
+
}
|
|
228
|
+
results.prodExists = results.prodLocal || results.prodGitHub;
|
|
229
|
+
// Critical: .env.example must exist
|
|
230
|
+
if (!results.devExists) {
|
|
231
|
+
results.errors.push('.env.example not found (required as template)');
|
|
232
|
+
return results;
|
|
233
|
+
}
|
|
234
|
+
// Critical: .env.staging must exist
|
|
235
|
+
if (!results.stagingExists) {
|
|
236
|
+
results.errors.push('.env.staging not found (required)');
|
|
237
|
+
}
|
|
238
|
+
// Warning: .env.prod missing (OK if in GitHub)
|
|
239
|
+
if (!results.prodExists) {
|
|
240
|
+
results.errors.push('.env.prod not found locally or in GitHub Secrets');
|
|
241
|
+
}
|
|
242
|
+
else if (!results.prodLocal && results.prodGitHub) {
|
|
243
|
+
results.warnings.push('.env.prod not local, using GitHub Secrets (OK for security)');
|
|
244
|
+
}
|
|
245
|
+
// Validate .gitignore
|
|
246
|
+
if (results.prodLocal) {
|
|
247
|
+
results.prodGitignored = isGitignored(rootDir, '.env.prod');
|
|
248
|
+
if (!results.prodGitignored) {
|
|
249
|
+
results.errors.push('.env.prod MUST be in .gitignore');
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
const isStagingSecret = config.auto?.isStagingSecret !== false; // default true
|
|
253
|
+
results.stagingGitignored = isGitignored(rootDir, '.env.staging');
|
|
254
|
+
if (isStagingSecret && !results.stagingGitignored) {
|
|
255
|
+
results.warnings.push('.env.staging not gitignored (isStagingSecret: true)');
|
|
256
|
+
}
|
|
257
|
+
// Validate staging keys match dev
|
|
258
|
+
if (results.stagingExists && results.dev && results.staging) {
|
|
259
|
+
const keyCompare = compareEnvKeys(results.dev, results.staging);
|
|
260
|
+
if (!keyCompare.match) {
|
|
261
|
+
results.keysMatch = false;
|
|
262
|
+
if (keyCompare.missing.length > 0) {
|
|
263
|
+
results.errors.push(`.env.staging missing keys: ${keyCompare.missing.join(', ')}`);
|
|
264
|
+
}
|
|
265
|
+
if (keyCompare.extra.length > 0) {
|
|
266
|
+
results.warnings.push(`.env.staging extra keys: ${keyCompare.extra.join(', ')}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Check values not empty
|
|
270
|
+
const valueCheck = checkValuesNotEmpty(results.staging);
|
|
271
|
+
if (!valueCheck.allFilled) {
|
|
272
|
+
results.allFilled = false;
|
|
273
|
+
results.errors.push(`.env.staging empty values: ${valueCheck.empty.join(', ')}`);
|
|
274
|
+
}
|
|
275
|
+
// Check for placeholders
|
|
276
|
+
const placeholderCheck = checkForPlaceholders(results.staging);
|
|
277
|
+
if (placeholderCheck.hasPlaceholders) {
|
|
278
|
+
results.warnings.push(`.env.staging has placeholder values: ${placeholderCheck.placeholders.map((p) => p.key).join(', ')}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Validate prod keys (local or GitHub)
|
|
282
|
+
const prodEnv = results.prodLocal ? results.prod : results.prodGitHubData;
|
|
283
|
+
if (prodEnv && results.dev) {
|
|
284
|
+
const keyCompare = compareEnvKeys(results.dev, prodEnv);
|
|
285
|
+
if (!keyCompare.match) {
|
|
286
|
+
results.keysMatch = false;
|
|
287
|
+
const source = results.prodLocal ? 'local' : 'GitHub';
|
|
288
|
+
if (keyCompare.missing.length > 0) {
|
|
289
|
+
results.errors.push(`.env.prod (${source}) missing keys: ${keyCompare.missing.join(', ')}`);
|
|
290
|
+
}
|
|
291
|
+
if (keyCompare.extra.length > 0) {
|
|
292
|
+
results.warnings.push(`.env.prod (${source}) extra keys: ${keyCompare.extra.join(', ')}`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Check values not empty
|
|
296
|
+
const valueCheck = checkValuesNotEmpty(prodEnv);
|
|
297
|
+
if (!valueCheck.allFilled) {
|
|
298
|
+
results.allFilled = false;
|
|
299
|
+
const source = results.prodLocal ? 'local' : 'GitHub';
|
|
300
|
+
results.errors.push(`.env.prod (${source}) empty values: ${valueCheck.empty.join(', ')}`);
|
|
301
|
+
}
|
|
302
|
+
// Check for placeholders
|
|
303
|
+
const placeholderCheck = checkForPlaceholders(prodEnv);
|
|
304
|
+
if (placeholderCheck.hasPlaceholders) {
|
|
305
|
+
const source = results.prodLocal ? 'local' : 'GitHub';
|
|
306
|
+
results.warnings.push(`.env.prod (${source}) has placeholder values: ${placeholderCheck.placeholders.map((p) => p.key).join(', ')}`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// Compare staging vs prod values (should be different)
|
|
310
|
+
if (results.staging && prodEnv) {
|
|
311
|
+
const matching = findMatchingValues(results.staging, prodEnv);
|
|
312
|
+
const allowedIdentical = config.auto?.allowIdenticalEnvVars ?? [];
|
|
313
|
+
const actualWarnings = matching.filter((key) => !allowedIdentical.includes(key));
|
|
314
|
+
if (actualWarnings.length > 0) {
|
|
315
|
+
results.warnings.push(`Staging/prod values identical (should differ): ${actualWarnings.join(', ')}`);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Compare local prod vs GitHub prod
|
|
319
|
+
if (results.prodLocal && results.prodGitHub && results.prod && results.prodGitHubData) {
|
|
320
|
+
const localKeys = Object.keys(results.prod);
|
|
321
|
+
const githubKeys = Object.keys(results.prodGitHubData);
|
|
322
|
+
const differences = [];
|
|
323
|
+
for (const key of localKeys) {
|
|
324
|
+
if (results.prod[key] !== results.prodGitHubData[key]) {
|
|
325
|
+
differences.push(key);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Check for keys only in one or the other
|
|
329
|
+
const onlyLocal = localKeys.filter((k) => !githubKeys.includes(k));
|
|
330
|
+
const onlyGitHub = githubKeys.filter((k) => !localKeys.includes(k));
|
|
331
|
+
if (differences.length > 0 || onlyLocal.length > 0 || onlyGitHub.length > 0) {
|
|
332
|
+
results.warnings.push('Local .env.prod differs from GitHub PROD_ENVS');
|
|
333
|
+
results.prodDifferences = {
|
|
334
|
+
changed: differences,
|
|
335
|
+
onlyLocal,
|
|
336
|
+
onlyGitHub,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
return results;
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=env-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-validator.js","sourceRoot":"","sources":["../../src/utils/env-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Workflow Monitor
|
|
3
|
+
*
|
|
4
|
+
* Utility for triggering GitHub Actions workflows and monitoring their progress.
|
|
5
|
+
* Uses GitHub CLI (gh) for authentication and API access.
|
|
6
|
+
*/
|
|
7
|
+
interface WorkflowRunStatus {
|
|
8
|
+
status: string;
|
|
9
|
+
conclusion: string;
|
|
10
|
+
url: string;
|
|
11
|
+
}
|
|
12
|
+
interface TriggerAndWatchResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
url?: string;
|
|
15
|
+
runId?: number;
|
|
16
|
+
error?: string;
|
|
17
|
+
}
|
|
18
|
+
interface StreamLogsResult {
|
|
19
|
+
success: boolean;
|
|
20
|
+
exitCode?: number;
|
|
21
|
+
}
|
|
22
|
+
declare class GitHubWorkflowMonitor {
|
|
23
|
+
constructor();
|
|
24
|
+
/**
|
|
25
|
+
* Check if GitHub CLI is installed and authenticated
|
|
26
|
+
*/
|
|
27
|
+
private checkGhCli;
|
|
28
|
+
/**
|
|
29
|
+
* Trigger a workflow and return the run ID
|
|
30
|
+
*
|
|
31
|
+
* @param workflowFile - The workflow file name (e.g., 'factiii-scan-staging.yml')
|
|
32
|
+
* @param environment - Optional environment name (only used for workflows that accept inputs)
|
|
33
|
+
*/
|
|
34
|
+
triggerWorkflow(workflowFile: string, environment?: string): Promise<number>;
|
|
35
|
+
/**
|
|
36
|
+
* Stream logs from a workflow run
|
|
37
|
+
*/
|
|
38
|
+
streamLogs(runId: number): Promise<StreamLogsResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Get the status of a workflow run
|
|
41
|
+
*/
|
|
42
|
+
getRunStatus(runId: number): Promise<WorkflowRunStatus>;
|
|
43
|
+
/**
|
|
44
|
+
* Trigger a workflow and wait for completion with live logs
|
|
45
|
+
*/
|
|
46
|
+
triggerAndWatch(workflowFile: string, environment?: string): Promise<TriggerAndWatchResult>;
|
|
47
|
+
}
|
|
48
|
+
export default GitHubWorkflowMonitor;
|
|
49
|
+
//# sourceMappingURL=github-workflow-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-workflow-monitor.d.ts","sourceRoot":"","sources":["../../src/utils/github-workflow-monitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,cAAM,qBAAqB;;IAKzB;;OAEG;IACH,OAAO,CAAC,UAAU;IAkBlB;;;;;OAKG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6ClF;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuB1D;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAe7D;;OAEG;IACG,eAAe,CACnB,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,qBAAqB,CAAC;CAiClC;AAED,eAAe,qBAAqB,CAAC"}
|