@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,373 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Server-side script: generate-all.js
|
|
5
|
+
*
|
|
6
|
+
* Scans all repos in ~/.factiii/* and regenerates:
|
|
7
|
+
* - docker-compose.yml (unified services from all repos)
|
|
8
|
+
* - nginx.conf (routes for all domains)
|
|
9
|
+
*
|
|
10
|
+
* Run on server after git pull to sync deployed configs with source
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.scanRepos = scanRepos;
|
|
50
|
+
exports.loadConfigs = loadConfigs;
|
|
51
|
+
exports.generateDockerCompose = generateDockerCompose;
|
|
52
|
+
exports.generateNginx = generateNginx;
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
56
|
+
const config_helpers_js_1 = require("../utils/config-helpers.js");
|
|
57
|
+
/**
|
|
58
|
+
* Get the factiii directory path
|
|
59
|
+
* Uses FACTIII_DIR env var if set, otherwise ~/.factiii
|
|
60
|
+
*/
|
|
61
|
+
function getFactiiiDir() {
|
|
62
|
+
return process.env.FACTIII_DIR ?? path.join(process.env.HOME ?? '/home/ubuntu', '.factiii');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Scan ~/.factiii for repo directories
|
|
66
|
+
*/
|
|
67
|
+
function scanRepos() {
|
|
68
|
+
const factiiiDir = getFactiiiDir();
|
|
69
|
+
if (!fs.existsSync(factiiiDir)) {
|
|
70
|
+
if (require.main === module) {
|
|
71
|
+
console.error('[ERROR] ~/.factiii directory not found');
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
const entries = fs.readdirSync(factiiiDir);
|
|
77
|
+
const repos = [];
|
|
78
|
+
for (const entry of entries) {
|
|
79
|
+
const fullPath = path.join(factiiiDir, entry);
|
|
80
|
+
const stat = fs.statSync(fullPath);
|
|
81
|
+
// Skip non-directories and special directories
|
|
82
|
+
if (!stat.isDirectory())
|
|
83
|
+
continue;
|
|
84
|
+
if (entry === 'scripts' || entry === 'node_modules' || entry.startsWith('.'))
|
|
85
|
+
continue;
|
|
86
|
+
// Skip the CLI tool directory (not a deployable app)
|
|
87
|
+
if (entry === 'infrastructure' || entry === 'core')
|
|
88
|
+
continue;
|
|
89
|
+
// Check if factiii.yml exists
|
|
90
|
+
const configPath = path.join(fullPath, 'factiii.yml');
|
|
91
|
+
if (fs.existsSync(configPath)) {
|
|
92
|
+
repos.push({
|
|
93
|
+
name: entry,
|
|
94
|
+
path: fullPath,
|
|
95
|
+
configPath,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return repos;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Load configs from all repos
|
|
103
|
+
*/
|
|
104
|
+
function loadConfigs(repos) {
|
|
105
|
+
const configs = {};
|
|
106
|
+
for (const repo of repos) {
|
|
107
|
+
try {
|
|
108
|
+
const content = fs.readFileSync(repo.configPath, 'utf8');
|
|
109
|
+
const config = js_yaml_1.default.load(content);
|
|
110
|
+
if (config) {
|
|
111
|
+
configs[repo.name] = config;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
116
|
+
console.error(`[!] Failed to load ${repo.name}/factiii.yml: ${errorMessage}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return configs;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Generate docker-compose.yml from all repos' configs
|
|
123
|
+
*/
|
|
124
|
+
function generateDockerCompose(allConfigs) {
|
|
125
|
+
const factiiiDir = getFactiiiDir();
|
|
126
|
+
const compose = {
|
|
127
|
+
version: '3.8',
|
|
128
|
+
services: {},
|
|
129
|
+
networks: {
|
|
130
|
+
factiii: {
|
|
131
|
+
driver: 'bridge',
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
// Add nginx reverse proxy
|
|
136
|
+
// ============================================================
|
|
137
|
+
// CRITICAL: SSL Certificate Volume Mounts
|
|
138
|
+
// ============================================================
|
|
139
|
+
// Why this exists: Nginx needs access to Let's Encrypt certificates
|
|
140
|
+
// What breaks if changed: HTTPS will fail if certificates not accessible
|
|
141
|
+
// /etc/letsencrypt - SSL certificates from certbot
|
|
142
|
+
// /var/www/certbot - ACME challenge files for certificate validation
|
|
143
|
+
// Must be read-only (:ro) for security
|
|
144
|
+
// ============================================================
|
|
145
|
+
compose.services.nginx = {
|
|
146
|
+
image: 'nginx:alpine',
|
|
147
|
+
container_name: 'factiii_nginx',
|
|
148
|
+
ports: ['80:80', '443:443'],
|
|
149
|
+
volumes: [
|
|
150
|
+
'./nginx.conf:/etc/nginx/nginx.conf:ro',
|
|
151
|
+
'/etc/letsencrypt:/etc/letsencrypt:ro',
|
|
152
|
+
'/var/www/certbot:/var/www/certbot:ro',
|
|
153
|
+
],
|
|
154
|
+
networks: ['factiii'],
|
|
155
|
+
restart: 'unless-stopped',
|
|
156
|
+
};
|
|
157
|
+
// For each repo and each environment, create a service
|
|
158
|
+
for (const [repoName, config] of Object.entries(allConfigs)) {
|
|
159
|
+
// Extract environments
|
|
160
|
+
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
161
|
+
if (Object.keys(environments).length === 0)
|
|
162
|
+
continue;
|
|
163
|
+
for (const [envName, envConfig] of Object.entries(environments)) {
|
|
164
|
+
const serviceName = `${repoName}-${envName}`;
|
|
165
|
+
const repoPath = path.join(factiiiDir, repoName);
|
|
166
|
+
// Always use build context - this script is generic and only generates from factiii.yml
|
|
167
|
+
// Server plugins will modify docker-compose.yml after generation if needed (e.g., ECR images for prod)
|
|
168
|
+
let dockerfile = 'Dockerfile';
|
|
169
|
+
const autoConfigPath = path.join(repoPath, 'factiiiAuto.yml');
|
|
170
|
+
if (fs.existsSync(autoConfigPath)) {
|
|
171
|
+
try {
|
|
172
|
+
const autoConfig = js_yaml_1.default.load(fs.readFileSync(autoConfigPath, 'utf8'));
|
|
173
|
+
if (autoConfig?.dockerfile) {
|
|
174
|
+
dockerfile = autoConfig.dockerfile.split(' ')[0] ?? 'Dockerfile'; // Remove OVERRIDE if present
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Ignore errors
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
compose.services[serviceName] = {
|
|
182
|
+
build: {
|
|
183
|
+
context: repoPath,
|
|
184
|
+
dockerfile,
|
|
185
|
+
},
|
|
186
|
+
image: `${repoName}:${envName}`,
|
|
187
|
+
container_name: serviceName,
|
|
188
|
+
restart: 'unless-stopped',
|
|
189
|
+
networks: ['factiii'],
|
|
190
|
+
environment: {},
|
|
191
|
+
env_file: [],
|
|
192
|
+
};
|
|
193
|
+
// Add env file if exists
|
|
194
|
+
// Use relative path from factiiiDir (where docker-compose runs from)
|
|
195
|
+
const envFile = path.join(repoPath, `.env.${envName === 'production' ? 'prod' : envName}`);
|
|
196
|
+
if (fs.existsSync(envFile)) {
|
|
197
|
+
// Docker compose runs from ~/.factiii/, so use relative path
|
|
198
|
+
const relativeEnvFile = path.relative(factiiiDir, envFile);
|
|
199
|
+
compose.services[serviceName].env_file.push(relativeEnvFile);
|
|
200
|
+
}
|
|
201
|
+
// Add ports if configured
|
|
202
|
+
const typedEnvConfig = envConfig;
|
|
203
|
+
if (typedEnvConfig.port) {
|
|
204
|
+
compose.services[serviceName].ports = [
|
|
205
|
+
`${typedEnvConfig.port}:${typedEnvConfig.port}`,
|
|
206
|
+
];
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
// Expose port 3000 by default (internal only, nginx proxies)
|
|
210
|
+
compose.services[serviceName].expose = ['3000'];
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Write docker-compose.yml
|
|
215
|
+
const outputPath = path.join(getFactiiiDir(), 'docker-compose.yml');
|
|
216
|
+
fs.writeFileSync(outputPath, js_yaml_1.default.dump(compose, { lineWidth: -1 }));
|
|
217
|
+
return Object.keys(compose.services).length - 1; // Exclude nginx from count
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Generate nginx.conf from all repos' configs
|
|
221
|
+
*
|
|
222
|
+
* ACME-Compatible: If SSL certificates don't exist for a domain, nginx
|
|
223
|
+
* is configured with HTTP-only proxy (no HTTPS redirect). This allows:
|
|
224
|
+
* 1. Nginx to start without SSL certificates
|
|
225
|
+
* 2. Certbot to complete ACME challenge on port 80
|
|
226
|
+
* 3. After certs are obtained, re-run deploy to enable HTTPS
|
|
227
|
+
*/
|
|
228
|
+
function generateNginx(allConfigs) {
|
|
229
|
+
const routes = [];
|
|
230
|
+
// Collect all domains from all repos
|
|
231
|
+
for (const [repoName, config] of Object.entries(allConfigs)) {
|
|
232
|
+
// Extract environments
|
|
233
|
+
const environments = (0, config_helpers_js_1.extractEnvironments)(config);
|
|
234
|
+
if (Object.keys(environments).length === 0)
|
|
235
|
+
continue;
|
|
236
|
+
for (const [envName, envConfig] of Object.entries(environments)) {
|
|
237
|
+
const typedEnvConfig = envConfig;
|
|
238
|
+
if (typedEnvConfig.domain) {
|
|
239
|
+
routes.push({
|
|
240
|
+
domain: typedEnvConfig.domain,
|
|
241
|
+
service: `${repoName}-${envName}`,
|
|
242
|
+
port: typedEnvConfig.port ?? 3000,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (routes.length === 0) {
|
|
248
|
+
console.log(' [!] No domains configured, skipping nginx.conf generation');
|
|
249
|
+
return 0;
|
|
250
|
+
}
|
|
251
|
+
// Generate nginx config
|
|
252
|
+
let nginxConf = `# Auto-generated nginx configuration
|
|
253
|
+
# Generated by: factiii generate-all.js
|
|
254
|
+
# Do not edit directly - modify factiii.yml files and run: npx factiii deploy
|
|
255
|
+
|
|
256
|
+
events {
|
|
257
|
+
worker_connections 1024;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
http {
|
|
261
|
+
include /etc/nginx/mime.types;
|
|
262
|
+
default_type application/octet-stream;
|
|
263
|
+
|
|
264
|
+
sendfile on;
|
|
265
|
+
keepalive_timeout 65;
|
|
266
|
+
client_max_body_size 100M;
|
|
267
|
+
|
|
268
|
+
# Logging
|
|
269
|
+
access_log /var/log/nginx/access.log;
|
|
270
|
+
error_log /var/log/nginx/error.log;
|
|
271
|
+
|
|
272
|
+
# Gzip
|
|
273
|
+
gzip on;
|
|
274
|
+
gzip_vary on;
|
|
275
|
+
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
|
|
276
|
+
|
|
277
|
+
`;
|
|
278
|
+
// ============================================================
|
|
279
|
+
// CRITICAL: HTTPS Certificate Paths
|
|
280
|
+
// ============================================================
|
|
281
|
+
// Why this exists: SSL certificates are obtained by certbot during deployment
|
|
282
|
+
// What breaks if changed: HTTPS will fail if certificate paths are wrong
|
|
283
|
+
// Certificate paths: /etc/letsencrypt/live/{domain}/fullchain.pem and privkey.pem
|
|
284
|
+
// Volume mounts: Must mount /etc/letsencrypt:ro in nginx container
|
|
285
|
+
// ============================================================
|
|
286
|
+
for (const { domain, service, port } of routes) {
|
|
287
|
+
// Always generate HTTPS-capable config
|
|
288
|
+
// Certificates must exist before nginx can start (obtained via: npx factiii fix --staging/--prod)
|
|
289
|
+
nginxConf += `
|
|
290
|
+
# ${service} - ${domain}
|
|
291
|
+
|
|
292
|
+
# HTTP - ACME challenge + redirect to HTTPS
|
|
293
|
+
server {
|
|
294
|
+
listen 80;
|
|
295
|
+
server_name ${domain};
|
|
296
|
+
|
|
297
|
+
# Allow certbot ACME challenge (for renewals)
|
|
298
|
+
location /.well-known/acme-challenge/ {
|
|
299
|
+
root /var/www/certbot;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
# Redirect all other traffic to HTTPS
|
|
303
|
+
location / {
|
|
304
|
+
return 301 https://$server_name$request_uri;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
# HTTPS - main server block
|
|
309
|
+
server {
|
|
310
|
+
listen 443 ssl;
|
|
311
|
+
http2 on;
|
|
312
|
+
server_name ${domain};
|
|
313
|
+
|
|
314
|
+
# SSL certificate paths (Let's Encrypt)
|
|
315
|
+
ssl_certificate /etc/letsencrypt/live/${domain}/fullchain.pem;
|
|
316
|
+
ssl_certificate_key /etc/letsencrypt/live/${domain}/privkey.pem;
|
|
317
|
+
|
|
318
|
+
# SSL security settings
|
|
319
|
+
ssl_protocols TLSv1.2 TLSv1.3;
|
|
320
|
+
ssl_prefer_server_ciphers on;
|
|
321
|
+
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
|
|
322
|
+
ssl_session_cache shared:SSL:10m;
|
|
323
|
+
ssl_session_timeout 10m;
|
|
324
|
+
|
|
325
|
+
location / {
|
|
326
|
+
proxy_pass http://${service}:${port};
|
|
327
|
+
proxy_http_version 1.1;
|
|
328
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
329
|
+
proxy_set_header Connection 'upgrade';
|
|
330
|
+
proxy_set_header Host $host;
|
|
331
|
+
proxy_cache_bypass $http_upgrade;
|
|
332
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
333
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
334
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
`;
|
|
338
|
+
}
|
|
339
|
+
nginxConf += `}\n`;
|
|
340
|
+
// Write nginx.conf
|
|
341
|
+
const outputPath = path.join(getFactiiiDir(), 'nginx.conf');
|
|
342
|
+
fs.writeFileSync(outputPath, nginxConf);
|
|
343
|
+
return routes.length;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Main execution
|
|
347
|
+
*/
|
|
348
|
+
function main() {
|
|
349
|
+
console.log('Scanning ~/.factiii for repos...');
|
|
350
|
+
const repos = scanRepos();
|
|
351
|
+
console.log(` Found ${repos.length} repo(s)`);
|
|
352
|
+
if (repos.length === 0) {
|
|
353
|
+
console.log('[!] No repos found in ~/.factiii');
|
|
354
|
+
process.exit(0);
|
|
355
|
+
}
|
|
356
|
+
console.log('\nLoading configs...');
|
|
357
|
+
const allConfigs = loadConfigs(repos);
|
|
358
|
+
console.log(` Loaded ${Object.keys(allConfigs).length} config(s)`);
|
|
359
|
+
console.log('\nGenerating docker-compose.yml...');
|
|
360
|
+
const serviceCount = generateDockerCompose(allConfigs);
|
|
361
|
+
console.log(` [OK] Generated ${serviceCount} service(s)`);
|
|
362
|
+
console.log('\nGenerating nginx.conf...');
|
|
363
|
+
const domainCount = generateNginx(allConfigs);
|
|
364
|
+
console.log(` [OK] Generated ${domainCount} route(s)`);
|
|
365
|
+
console.log('\n[OK] Configuration generation complete!');
|
|
366
|
+
console.log(` docker-compose.yml: ~/.factiii/docker-compose.yml`);
|
|
367
|
+
console.log(` nginx.conf: ~/.factiii/nginx.conf`);
|
|
368
|
+
}
|
|
369
|
+
// Run if called directly
|
|
370
|
+
if (require.main === module) {
|
|
371
|
+
main();
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=generate-all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-all.js","sourceRoot":"","sources":["../../src/scripts/generate-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-repo-name.d.ts","sourceRoot":"","sources":["../../src/scripts/get-repo-name.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Gets the repo name from factiii.yml
|
|
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
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
45
|
+
try {
|
|
46
|
+
const config = js_yaml_1.default.load(fs.readFileSync('factiii.yml', 'utf8'));
|
|
47
|
+
console.log(config?.name ?? '');
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
51
|
+
console.error('Error reading factiii.yml:', errorMessage);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=get-repo-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-repo-name.js","sourceRoot":"","sources":["../../src/scripts/get-repo-name.ts"],"names":[],"mappings":";;AAEA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,sDAA2B;AAM3B,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,iBAAI,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAyB,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,MAAM,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,YAAY,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Scripts Index
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all script modules.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.generateNginx = exports.generateDockerCompose = exports.loadConfigs = exports.scanRepos = void 0;
|
|
9
|
+
var generate_all_js_1 = require("./generate-all.js");
|
|
10
|
+
Object.defineProperty(exports, "scanRepos", { enumerable: true, get: function () { return generate_all_js_1.scanRepos; } });
|
|
11
|
+
Object.defineProperty(exports, "loadConfigs", { enumerable: true, get: function () { return generate_all_js_1.loadConfigs; } });
|
|
12
|
+
Object.defineProperty(exports, "generateDockerCompose", { enumerable: true, get: function () { return generate_all_js_1.generateDockerCompose; } });
|
|
13
|
+
Object.defineProperty(exports, "generateNginx", { enumerable: true, get: function () { return generate_all_js_1.generateNginx; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scripts/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qDAAiG;AAAxF,4GAAA,SAAS,OAAA;AAAE,8GAAA,WAAW,OAAA;AAAE,wHAAA,qBAAqB,OAAA;AAAE,gHAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-env-files.d.ts","sourceRoot":"","sources":["../../src/scripts/validate-env-files.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Validates environment files match template
|
|
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
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
45
|
+
// Load config
|
|
46
|
+
const config = js_yaml_1.default.load(fs.readFileSync('factiii.yml', 'utf8'));
|
|
47
|
+
const isStagingSecret = config?.auto?.isStagingSecret !== false; // default true
|
|
48
|
+
// Parse env files
|
|
49
|
+
function parseEnvFile(filepath) {
|
|
50
|
+
if (!fs.existsSync(filepath))
|
|
51
|
+
return null;
|
|
52
|
+
const content = fs.readFileSync(filepath, 'utf8');
|
|
53
|
+
const env = {};
|
|
54
|
+
content.split('\n').forEach((line) => {
|
|
55
|
+
const trimmed = line.trim();
|
|
56
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
57
|
+
return;
|
|
58
|
+
const match = trimmed.match(/^([^=]+)=(.*)$/);
|
|
59
|
+
if (match && match[1] && match[2] !== undefined) {
|
|
60
|
+
env[match[1].trim()] = match[2].trim();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
return env;
|
|
64
|
+
}
|
|
65
|
+
const devEnv = parseEnvFile('.env.example');
|
|
66
|
+
const stagingEnv = parseEnvFile('.env.staging');
|
|
67
|
+
const prodEnv = parseEnvFile('.env.prod');
|
|
68
|
+
let hasErrors = false;
|
|
69
|
+
// Validate .env.example exists
|
|
70
|
+
if (!devEnv) {
|
|
71
|
+
console.log('❌ .env.example not found (required as template)');
|
|
72
|
+
hasErrors = true;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.log('✅ .env.example exists (' + Object.keys(devEnv).length + ' keys)');
|
|
76
|
+
}
|
|
77
|
+
// Validate .env.staging
|
|
78
|
+
if (!stagingEnv) {
|
|
79
|
+
console.log('❌ .env.staging not found (required)');
|
|
80
|
+
hasErrors = true;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
console.log('✅ .env.staging exists (' + Object.keys(stagingEnv).length + ' keys)');
|
|
84
|
+
// Check keys match dev
|
|
85
|
+
const devKeys = Object.keys(devEnv ?? {});
|
|
86
|
+
const stagingKeys = Object.keys(stagingEnv);
|
|
87
|
+
const missing = devKeys.filter((k) => !stagingKeys.includes(k));
|
|
88
|
+
if (missing.length > 0) {
|
|
89
|
+
console.log('⚠️ .env.staging missing keys: ' + missing.join(', '));
|
|
90
|
+
hasErrors = true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Validate .env.prod (optional locally)
|
|
94
|
+
if (!prodEnv) {
|
|
95
|
+
console.log('⚠️ .env.prod not found locally (OK if in GitHub Secrets)');
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.log('✅ .env.prod exists locally (' + Object.keys(prodEnv).length + ' keys)');
|
|
99
|
+
// Check keys match dev
|
|
100
|
+
const devKeys = Object.keys(devEnv ?? {});
|
|
101
|
+
const prodKeys = Object.keys(prodEnv);
|
|
102
|
+
const missing = devKeys.filter((k) => !prodKeys.includes(k));
|
|
103
|
+
if (missing.length > 0) {
|
|
104
|
+
console.log('⚠️ .env.prod missing keys: ' + missing.join(', '));
|
|
105
|
+
hasErrors = true;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (hasErrors) {
|
|
109
|
+
console.log('');
|
|
110
|
+
console.log('❌ Environment file validation failed');
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
// Write outputs
|
|
114
|
+
const githubOutput = process.env.GITHUB_OUTPUT;
|
|
115
|
+
if (githubOutput) {
|
|
116
|
+
fs.appendFileSync(githubOutput, 'staging-exists=' +
|
|
117
|
+
(!!stagingEnv) +
|
|
118
|
+
'\n' +
|
|
119
|
+
'prod-exists=' +
|
|
120
|
+
(!!prodEnv) +
|
|
121
|
+
'\n' +
|
|
122
|
+
'is-staging-secret=' +
|
|
123
|
+
isStagingSecret +
|
|
124
|
+
'\n');
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=validate-env-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-env-files.js","sourceRoot":"","sources":["../../src/scripts/validate-env-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Validates that factiii.yml doesn't contain EXAMPLE- placeholder values
|
|
4
|
+
* This script properly parses YAML and ignores comments
|
|
5
|
+
* Use this in workflows instead of grep to avoid false positives from documentation
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=validate-example-values.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-example-values.d.ts","sourceRoot":"","sources":["../../src/scripts/validate-example-values.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|