gina 0.6.13 → 0.6.14
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/CHANGELOG.md +30 -0
- package/README.md +28 -22
- package/ROADMAP.md +3 -2
- package/framework/v0.6.14/VERSION +1 -0
- package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.js +9 -6
- package/framework/{v0.6.13 → v0.6.14}/core/config.js +9 -4
- package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.js +208 -42
- package/framework/{v0.6.13 → v0.6.14}/core/gna.js +25 -1
- package/framework/{v0.6.13 → v0.6.14}/core/server.js +66 -2
- package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/check.js +220 -168
- package/framework/v0.6.14/lib/cmd/secrets/scan.js +264 -0
- package/framework/{v0.6.13 → v0.6.14}/lib/collection/src/main.js +9 -6
- package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/backends/env.js +41 -1
- package/framework/v0.6.14/lib/secrets/src/backends/exec.js +253 -0
- package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/backends/file.js +5 -27
- package/framework/v0.6.14/lib/secrets/src/declaration.js +303 -0
- package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/main.js +107 -54
- package/framework/v0.6.14/lib/secrets/src/sources.js +325 -0
- package/framework/{v0.6.13 → v0.6.14}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +6 -4
- package/package.json +3 -3
- package/schema/settings.json +21 -0
- package/framework/v0.6.13/VERSION +0 -1
- package/framework/v0.6.13/lib/cmd/secrets/scan.js +0 -448
- /package/framework/{v0.6.13 → v0.6.14}/AUTHORS +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/LICENSE +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/content.encoding +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/dev/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/locales/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/locales/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/mime.types +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/model/entity.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/model/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/router.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/server.express.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/status.codes +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/console.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/context.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/path.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/task.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/helpers/text.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/async/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/config.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/job/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/job-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/math/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/model.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/proc.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/push/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/session-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/shell.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/state.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/url/README.md +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/url/index.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/validator.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.13 → v0.6.14}/lib/ws-session/src/main.js +0 -0
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
var console = lib.logger;
|
|
2
|
+
|
|
3
|
+
var CmdHelper = require('./../helper');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @module gina/lib/cmd/secrets/scan
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Walks every bundle in a project (or a single named bundle) and reports
|
|
10
|
+
* the `${secret:KEY}` placeholders each bundle requires, aggregated as
|
|
11
|
+
* KEY -> originating config file(s). Read-only: it never resolves a
|
|
12
|
+
* placeholder, never reads `process.env`, and never writes anything.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* gina secrets:scan
|
|
16
|
+
* gina secrets:scan @<project>
|
|
17
|
+
* gina secrets:scan <bundle> @<project>
|
|
18
|
+
* gina secrets:scan @<project> --format=json
|
|
19
|
+
* gina secrets:scan @<project> --scope=<scope>
|
|
20
|
+
*
|
|
21
|
+
* The walk itself — which config sources a bundle reads, how the
|
|
22
|
+
* `--scope` overlay applies, which files are skipped — lives in
|
|
23
|
+
* `lib/secrets` (the sources module) and is consumed here through the
|
|
24
|
+
* registry, so this command, `secrets:check` and any future boot-time
|
|
25
|
+
* consumer enumerate the SAME source set by construction. See that
|
|
26
|
+
* module's header for the full walk semantics and the drift incident
|
|
27
|
+
* that motivated sharing it.
|
|
28
|
+
*
|
|
29
|
+
* @class Scan
|
|
30
|
+
* @constructor
|
|
31
|
+
* @param {object} opt - Parsed command-line options
|
|
32
|
+
* @param {object} opt.client - Socket client for terminal output
|
|
33
|
+
* @param {string[]} opt.argv - Full argv array
|
|
34
|
+
* @param {number} [opt.debugPort] - Node.js inspector port
|
|
35
|
+
* @param {boolean} [opt.debugBrkEnabled] - True when --inspect-brk is active
|
|
36
|
+
* @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
|
|
37
|
+
*/
|
|
38
|
+
function Scan(opt, cmd) {
|
|
39
|
+
var self = { format: 'text', scopeName: null };
|
|
40
|
+
|
|
41
|
+
var secrets = lib.secrets;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Parses `--format`, resolves project + optional bundle via CmdHelper,
|
|
45
|
+
* dispatches to the right walker, and exits.
|
|
46
|
+
*
|
|
47
|
+
* @inner
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
var init = function () {
|
|
51
|
+
new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
|
|
52
|
+
if ( !isCmdConfigured() ) return false;
|
|
53
|
+
|
|
54
|
+
for (var i = 3, len = process.argv.length; i < len; i++) {
|
|
55
|
+
var arg = process.argv[i];
|
|
56
|
+
if ( /^\-\-format\=/.test(arg) ) {
|
|
57
|
+
self.format = arg.split(/\=/)[1] || 'text';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (self.format !== 'text' && self.format !== 'json') {
|
|
61
|
+
console.error('--format must be `text` or `json` (got `' + self.format + '`)');
|
|
62
|
+
process.exit(1);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// --scope is the framework scope flag (declared in arguments.json, like
|
|
67
|
+
// bundle:*; CmdHelper captures it into self.params). null when absent.
|
|
68
|
+
self.scopeName = (self.params && self.params.scope) ? self.params.scope : null;
|
|
69
|
+
|
|
70
|
+
var bundleFilter = self.name || null;
|
|
71
|
+
|
|
72
|
+
if ( typeof(self.projectName) == 'undefined' || self.projectName == null ) {
|
|
73
|
+
if (bundleFilter) {
|
|
74
|
+
console.error('`secrets:scan <bundle>` requires `@<project>`. Did you forget `@<project_name>`?');
|
|
75
|
+
process.exit(1);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
scanAll();
|
|
79
|
+
process.exit(0);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if ( typeof(self.projects[self.projectName]) == 'undefined' ) {
|
|
84
|
+
console.error('Project @' + self.projectName + ' is not registered. Run `gina project:list` to see registered projects.');
|
|
85
|
+
process.exit(1);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (bundleFilter) {
|
|
90
|
+
var manifest = secrets.loadManifest(self.projects[self.projectName].path);
|
|
91
|
+
if (manifest && manifest.bundles && !manifest.bundles[bundleFilter]) {
|
|
92
|
+
console.error('Bundle [ ' + bundleFilter + ' ] is not registered inside `@' + self.projectName + '`.');
|
|
93
|
+
process.exit(1);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
scanBundleOnly(self.projectName, bundleFilter);
|
|
97
|
+
} else {
|
|
98
|
+
scanProjectOnly(self.projectName);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
process.exit(0);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// The config-dir walk itself (manifest read, dir globbing, scope overlay,
|
|
105
|
+
// key enumeration) moved to lib/secrets' sources module, consumed below
|
|
106
|
+
// via secrets.getProjectRequiredKeys — see that module's header for the
|
|
107
|
+
// walk semantics and the sharing rationale.
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Shapes one walk entry into this command's per-bundle report block.
|
|
111
|
+
*
|
|
112
|
+
* @inner
|
|
113
|
+
* @private
|
|
114
|
+
* @param {{bundle: string, byKey: Object<string, string[]>}} entry - One walk entry
|
|
115
|
+
* @returns {{bundle:string, totalKeys:number, byKey:Object<string, string[]>}}
|
|
116
|
+
*/
|
|
117
|
+
var toBundleReport = function (entry) {
|
|
118
|
+
return {
|
|
119
|
+
bundle : entry.bundle,
|
|
120
|
+
totalKeys : Object.keys(entry.byKey).length,
|
|
121
|
+
byKey : entry.byKey
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Iterates every registered project, scanning all bundles in each.
|
|
127
|
+
*
|
|
128
|
+
* @inner
|
|
129
|
+
* @private
|
|
130
|
+
*/
|
|
131
|
+
var scanAll = function () {
|
|
132
|
+
var report = { projects: [] };
|
|
133
|
+
var names = Object.keys(self.projects).sort();
|
|
134
|
+
for (var i = 0; i < names.length; i++) {
|
|
135
|
+
var walked = secrets.getProjectRequiredKeys(self.projects[names[i]].path, { scope: self.scopeName });
|
|
136
|
+
if (!walked) continue;
|
|
137
|
+
var entry = { project: names[i], bundles: [] };
|
|
138
|
+
for (var b = 0; b < walked.bundles.length; b++) {
|
|
139
|
+
entry.bundles.push(toBundleReport(walked.bundles[b]));
|
|
140
|
+
}
|
|
141
|
+
report.projects.push(entry);
|
|
142
|
+
}
|
|
143
|
+
emit(report);
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Scans every bundle in a single named project.
|
|
148
|
+
*
|
|
149
|
+
* @inner
|
|
150
|
+
* @private
|
|
151
|
+
* @param {string} projectName
|
|
152
|
+
*/
|
|
153
|
+
var scanProjectOnly = function (projectName) {
|
|
154
|
+
var project = self.projects[projectName];
|
|
155
|
+
var walked = secrets.getProjectRequiredKeys(project.path, { scope: self.scopeName });
|
|
156
|
+
if (!walked) {
|
|
157
|
+
console.error('Project @' + projectName + ' has no manifest.json or no bundles registered.');
|
|
158
|
+
process.exit(1);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
var report = { project: projectName, bundles: [] };
|
|
162
|
+
for (var i = 0; i < walked.bundles.length; i++) {
|
|
163
|
+
report.bundles.push(toBundleReport(walked.bundles[i]));
|
|
164
|
+
}
|
|
165
|
+
emit(report);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Scans a single bundle in a single project.
|
|
170
|
+
*
|
|
171
|
+
* @inner
|
|
172
|
+
* @private
|
|
173
|
+
* @param {string} projectName
|
|
174
|
+
* @param {string} bundleName
|
|
175
|
+
*/
|
|
176
|
+
var scanBundleOnly = function (projectName, bundleName) {
|
|
177
|
+
var project = self.projects[projectName];
|
|
178
|
+
var walked = secrets.getProjectRequiredKeys(project.path, { scope: self.scopeName, bundle: bundleName });
|
|
179
|
+
var report = { project: projectName, bundles: [toBundleReport(walked.bundles[0])] };
|
|
180
|
+
emit(report);
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Dispatches to the JSON or text renderer based on `self.format`.
|
|
185
|
+
*
|
|
186
|
+
* @inner
|
|
187
|
+
* @private
|
|
188
|
+
* @param {object} report
|
|
189
|
+
*/
|
|
190
|
+
var emit = function (report) {
|
|
191
|
+
if (self.format === 'json') {
|
|
192
|
+
console.log(JSON.stringify(report, null, 2));
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
emitText(report);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Renders the human-readable text report.
|
|
200
|
+
*
|
|
201
|
+
* @inner
|
|
202
|
+
* @private
|
|
203
|
+
* @param {object} report
|
|
204
|
+
*/
|
|
205
|
+
var emitText = function (report) {
|
|
206
|
+
var projects = report.projects
|
|
207
|
+
? report.projects
|
|
208
|
+
: [{ project: report.project, bundles: report.bundles }];
|
|
209
|
+
for (var p = 0; p < projects.length; p++) {
|
|
210
|
+
var proj = projects[p];
|
|
211
|
+
console.log('\n@' + proj.project + (self.scopeName ? ' (scope: ' + self.scopeName + ')' : '') + ':');
|
|
212
|
+
if (proj.bundles.length === 0) {
|
|
213
|
+
console.log(' (no bundles)');
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
for (var b = 0; b < proj.bundles.length; b++) {
|
|
217
|
+
emitTextBundle(proj.bundles[b]);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Renders one bundle's required-secrets block.
|
|
224
|
+
*
|
|
225
|
+
* @inner
|
|
226
|
+
* @private
|
|
227
|
+
* @param {object} br - One bundle report from `scanBundle`
|
|
228
|
+
*/
|
|
229
|
+
var emitTextBundle = function (br) {
|
|
230
|
+
console.log(' ' + br.bundle + ':');
|
|
231
|
+
if (br.totalKeys === 0) {
|
|
232
|
+
console.log(' No ${secret:KEY} placeholders found in config.');
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
var keys = Object.keys(br.byKey).sort();
|
|
236
|
+
var width = 0;
|
|
237
|
+
for (var w = 0; w < keys.length; w++) {
|
|
238
|
+
if (keys[w].length > width) width = keys[w].length;
|
|
239
|
+
}
|
|
240
|
+
console.log(' Required secrets (' + br.totalKeys + '):');
|
|
241
|
+
for (var k = 0; k < keys.length; k++) {
|
|
242
|
+
console.log(' ' + padRight(keys[k], width) + ' <- ' + br.byKey[keys[k]].join(', '));
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Right-pads `s` with spaces to reach `n` characters.
|
|
248
|
+
*
|
|
249
|
+
* @inner
|
|
250
|
+
* @private
|
|
251
|
+
* @param {string} s
|
|
252
|
+
* @param {number} n
|
|
253
|
+
* @returns {string}
|
|
254
|
+
*/
|
|
255
|
+
var padRight = function (s, n) {
|
|
256
|
+
var o = String(s || '');
|
|
257
|
+
while (o.length < n) o += ' ';
|
|
258
|
+
return o;
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
init();
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
module.exports = Scan;
|
|
@@ -15,12 +15,15 @@
|
|
|
15
15
|
/**
|
|
16
16
|
* In-memory document collection with query and mutation methods.
|
|
17
17
|
*
|
|
18
|
-
* Filter values must be defined
|
|
19
|
-
* `Error` naming the offending key when
|
|
20
|
-
* `undefined` value
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
18
|
+
* Filter values must be defined. Every method that accepts a filter object
|
|
19
|
+
* throws an `Error` naming the offending key when that object carries an
|
|
20
|
+
* `undefined` value: `find`, `findOne`, `or`, `update`, `replace`, `max`,
|
|
21
|
+
* `notIn` and `delete`. The last two are covered transitively — `notIn`
|
|
22
|
+
* routes a filter-object argument through `find`, and `delete` delegates to
|
|
23
|
+
* `notIn` — so only `notIn`'s array form, `notIn(rows, key)`, is exempt.
|
|
24
|
+
* Build such filters conditionally (add a key only when its value is
|
|
25
|
+
* defined). An explicitly empty `{}` filter is legal and matches every
|
|
26
|
+
* record; `null` is a legal needle comparing strictly against stored values.
|
|
24
27
|
*
|
|
25
28
|
* @class Collection
|
|
26
29
|
* @constructor
|
|
@@ -81,6 +81,46 @@ function resolve(key) {
|
|
|
81
81
|
return value;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Is `key` present in one of the environment tiers but carrying an EMPTY value?
|
|
86
|
+
*
|
|
87
|
+
* `resolve()` cannot answer this: it treats empty as unset by contract and
|
|
88
|
+
* throws either way, so a caller that catches its throw knows only "not usable",
|
|
89
|
+
* never "not there". This reads the raw slots to recover the distinction — used
|
|
90
|
+
* solely to decide whether falling back to a lower tier (file or exec) deserves
|
|
91
|
+
* the #B268 warning, never to change which value is returned.
|
|
92
|
+
*
|
|
93
|
+
* Both tiers are checked because `getEnvVar()` itself rejects `''`
|
|
94
|
+
* (`utils/helper.js` guards on `process.gina[key] != ''`), so an empty value in
|
|
95
|
+
* the framework environment is invisible through the normal accessor.
|
|
96
|
+
*
|
|
97
|
+
* Lives HERE — beside the tiers it interrogates — rather than in each lower-tier
|
|
98
|
+
* backend: the file backend carried it privately, and a second copy in the exec
|
|
99
|
+
* backend would have been a third reading of "what does the environment say",
|
|
100
|
+
* the exact drift class #B270 and #B408 already paid for.
|
|
101
|
+
*
|
|
102
|
+
* @memberof module:lib/secrets/backends/env
|
|
103
|
+
* @function isPresentButEmpty
|
|
104
|
+
* @param {string} key - Placeholder key, e.g. `'DB_PASSWORD'`
|
|
105
|
+
* @returns {boolean} `true` only when a tier holds `key` as an empty string
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* process.env.EMPTY_ONE = '';
|
|
109
|
+
* var env = require('./backends/env');
|
|
110
|
+
* env.isPresentButEmpty('EMPTY_ONE'); // → true
|
|
111
|
+
* env.isPresentButEmpty('ABSENT_ONE'); // → false
|
|
112
|
+
*/
|
|
113
|
+
function isPresentButEmpty(key) {
|
|
114
|
+
if (
|
|
115
|
+
typeof process.gina === 'object' && process.gina !== null &&
|
|
116
|
+
typeof process.gina[key] === 'string' && process.gina[key] === ''
|
|
117
|
+
) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
return (typeof process.env[key] === 'string' && process.env[key] === '');
|
|
121
|
+
}
|
|
122
|
+
|
|
84
123
|
module.exports = {
|
|
85
|
-
resolve: resolve
|
|
124
|
+
resolve: resolve,
|
|
125
|
+
isPresentButEmpty: isPresentButEmpty
|
|
86
126
|
};
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/*
|
|
3
|
+
* This file is part of the gina package.
|
|
4
|
+
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @module lib/secrets/backends/exec
|
|
12
|
+
* @description Exec-bridge resolver for `${secret:KEY}` placeholders: runs ONE
|
|
13
|
+
* operator-declared command (`settings.secrets.exec.command`, argv form — no
|
|
14
|
+
* shell) whose stdout must be a single flat JSON object of string values, and
|
|
15
|
+
* layers that map UNDER the environment exactly as the file backend layers its
|
|
16
|
+
* files. One generic bridge instead of per-vendor SDK backends: the vendor's
|
|
17
|
+
* own CLI (`sops`, `vault`, `kubectl`) already owns auth, endpoints and
|
|
18
|
+
* config, so gina ships no vendor SDK and no network code — the recipes in
|
|
19
|
+
* the secrets guide show each CLI producing the stdout contract.
|
|
20
|
+
*
|
|
21
|
+
* **When NOT to use this.** The entrypoint decrypt remains the better answer
|
|
22
|
+
* for SOPS / Vault / KMS: decrypting before the process starts keeps the
|
|
23
|
+
* fetch off the boot path entirely, and the env backend already prefers what
|
|
24
|
+
* lands in the environment. This tier exists for environments where the
|
|
25
|
+
* entrypoint cannot be controlled; it *supports* the pattern, it does not
|
|
26
|
+
* replace it.
|
|
27
|
+
*
|
|
28
|
+
* **Timing and cost.** The fetch runs eagerly at `build()` time — once per
|
|
29
|
+
* bundle per config-load cycle (the file backend's documented cadence), for
|
|
30
|
+
* the active env only, sequentially during boot. It NEVER runs per-request:
|
|
31
|
+
* `Config.refresh()`'s only call site is commented out (see the note beside
|
|
32
|
+
* it in `core/server.js`). A failing fetch throws out of `build()`, which
|
|
33
|
+
* `selectBackend`'s caller turns into the per-bundle boot refusal — the same
|
|
34
|
+
* path the file backend's unreadable-layer refusal (#B267) established.
|
|
35
|
+
*
|
|
36
|
+
* **Fail fast, never hang — the whole point.** The child is bounded by a
|
|
37
|
+
* timeout (default 10000ms, 2x the CLI probe-class timeout used elsewhere in
|
|
38
|
+
* the tree) and killed with SIGKILL. SIGKILL is load-bearing, not caution:
|
|
39
|
+
* measured on this runtime, `spawnSync` with the default SIGTERM stays
|
|
40
|
+
* BLOCKED past its timeout against a child that ignores SIGTERM, and then
|
|
41
|
+
* reports `{error: ETIMEDOUT, status: 0}` — a hung boot followed by a result
|
|
42
|
+
* a status-only check reads as success. SIGKILL cannot be ignored, so a
|
|
43
|
+
* wedged fetch becomes a FAILED boot on schedule.
|
|
44
|
+
*
|
|
45
|
+
* **stdout is the secrets payload and never appears in any error, log or
|
|
46
|
+
* message** — not on parse failure, not in the stderr tail, not at debug.
|
|
47
|
+
* Command failure diagnostics quote stderr only (last lines), matching the
|
|
48
|
+
* house child-process exemplars.
|
|
49
|
+
*
|
|
50
|
+
* **Trust model.** The command comes from bundle config, which already IS
|
|
51
|
+
* code execution (build hooks are shelled from project config; bundle code
|
|
52
|
+
* itself boots) — no new boundary is crossed. The child inherits
|
|
53
|
+
* `process.env` because vendor CLIs need their own configuration
|
|
54
|
+
* (`VAULT_ADDR`, `KUBECONFIG`, AWS credentials, `PATH`); pass auth material
|
|
55
|
+
* via the environment, never argv (argv is visible in `ps`). Note the CLI
|
|
56
|
+
* sweep (#B156) moves `GINA_*`/`VENDOR_*`/`USER_*` keys out of
|
|
57
|
+
* `process.env` in CLI/daemon processes, so a fetch command cannot read
|
|
58
|
+
* those through its inherited environment there.
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
var cp = require('child_process');
|
|
62
|
+
var envBackend = require('./env');
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Fetch timeout applied when the declaration omits `timeout`.
|
|
66
|
+
* @constant {number} DEFAULT_TIMEOUT_MS
|
|
67
|
+
* @memberof module:lib/secrets/backends/exec
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
70
|
+
var DEFAULT_TIMEOUT_MS = 10000;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Upper bound on the child's captured stdout/stderr. Generous for any real
|
|
74
|
+
* secrets map; not a config knob.
|
|
75
|
+
* @constant {number} MAX_OUTPUT_BYTES
|
|
76
|
+
* @memberof module:lib/secrets/backends/exec
|
|
77
|
+
* @private
|
|
78
|
+
*/
|
|
79
|
+
var MAX_OUTPUT_BYTES = 8 * 1024 * 1024;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Run the declared command once and parse its stdout into a null-prototype
|
|
83
|
+
* key/value map.
|
|
84
|
+
*
|
|
85
|
+
* Precondition: `spec` has passed `declaration.validateExecSpec` — this
|
|
86
|
+
* function does not re-validate (a third validation site is the drift class
|
|
87
|
+
* #B408 exists to prevent). Both consumers hold that precondition:
|
|
88
|
+
* `selectBackend` validates before `build()`, and `secrets:check`'s mirror
|
|
89
|
+
* validates through the same shared implementation before calling here.
|
|
90
|
+
*
|
|
91
|
+
* Result checking follows the MEASURED semantics of `spawnSync`, in an order
|
|
92
|
+
* that is load-bearing: `.error` FIRST — a timed-out child can report
|
|
93
|
+
* `{error: ETIMEDOUT, status: 0}`, which a status-first check reads as
|
|
94
|
+
* success — then non-zero `.status` with a stderr tail, then the parse.
|
|
95
|
+
*
|
|
96
|
+
* @memberof module:lib/secrets/backends/exec
|
|
97
|
+
* @function fetchExecMap
|
|
98
|
+
* @param {{command: string[], timeout: (number|undefined)}} spec - The validated `settings.secrets.exec` declaration
|
|
99
|
+
* @returns {Object<string, string>} Null-prototype map of the command's output
|
|
100
|
+
* @throws {Error} On timeout, missing binary, spawn failure, non-zero exit,
|
|
101
|
+
* non-JSON / non-object / non-string-valued output. Messages never carry
|
|
102
|
+
* stdout; a non-string value's key is logged at debug level only.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* var exec = require('./backends/exec');
|
|
106
|
+
* var map = exec.fetchExecMap({ command: ['/opt/app/bin/print-secrets'] });
|
|
107
|
+
* map.DB_PASSWORD; // → 's3cret' (the command printed {"DB_PASSWORD":"s3cret"})
|
|
108
|
+
*/
|
|
109
|
+
function fetchExecMap(spec) {
|
|
110
|
+
var command = spec.command;
|
|
111
|
+
var timeout = (typeof spec.timeout === 'number') ? spec.timeout : DEFAULT_TIMEOUT_MS;
|
|
112
|
+
|
|
113
|
+
var res = cp.spawnSync(command[0], command.slice(1), {
|
|
114
|
+
timeout : timeout,
|
|
115
|
+
// SIGKILL, deliberately: the default SIGTERM leaves spawnSync blocked
|
|
116
|
+
// past its timeout against a SIGTERM-ignoring child (measured), which
|
|
117
|
+
// is the hung boot this backend exists to rule out.
|
|
118
|
+
killSignal : 'SIGKILL',
|
|
119
|
+
encoding : 'utf8',
|
|
120
|
+
maxBuffer : MAX_OUTPUT_BYTES
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// .error before .status — the SIGTERM shape above is also why: an error
|
|
124
|
+
// can coexist with status 0, and a status-first read calls that success.
|
|
125
|
+
if (res.error) {
|
|
126
|
+
if (res.error.code === 'ETIMEDOUT') {
|
|
127
|
+
throw new Error('`settings.secrets.exec` command timed out after ' + timeout
|
|
128
|
+
+ 'ms and was killed — the fetch must complete within `timeout` or boot refuses rather than hang');
|
|
129
|
+
}
|
|
130
|
+
if (res.error.code === 'ENOENT') {
|
|
131
|
+
throw new Error('`settings.secrets.exec` command not found: ' + command[0]);
|
|
132
|
+
}
|
|
133
|
+
throw new Error('`settings.secrets.exec` command could not be run: '
|
|
134
|
+
+ (res.error.message || res.error));
|
|
135
|
+
}
|
|
136
|
+
if (res.status !== 0) {
|
|
137
|
+
// stderr tail only — stdout is the secrets payload and is never echoed.
|
|
138
|
+
var errTail = String(res.stderr || '').trim().split('\n').slice(-3).join(' | ');
|
|
139
|
+
throw new Error('`settings.secrets.exec` command failed (exit ' + res.status + ')'
|
|
140
|
+
+ (errTail ? ' — ' + errTail : ''));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
var parsed;
|
|
144
|
+
try {
|
|
145
|
+
parsed = JSON.parse(res.stdout);
|
|
146
|
+
} catch (parseErr) {
|
|
147
|
+
// No excerpt, deliberately: a malformed output may still be secrets.
|
|
148
|
+
throw new Error('`settings.secrets.exec` command output is not valid JSON —'
|
|
149
|
+
+ ' the command must print one flat JSON object of string values (stdout is never echoed)');
|
|
150
|
+
}
|
|
151
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
152
|
+
throw new Error('`settings.secrets.exec` command output must be a single flat JSON object'
|
|
153
|
+
+ ' of string values (stdout is never echoed)');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var map = Object.create(null);
|
|
157
|
+
var keys = Object.keys(parsed);
|
|
158
|
+
for (var i = 0; i < keys.length; i++) {
|
|
159
|
+
if (typeof parsed[keys[i]] !== 'string') {
|
|
160
|
+
// The key rides the debug channel only — the message reaches
|
|
161
|
+
// user-facing surfaces, same hygiene as the resolve-miss contract.
|
|
162
|
+
try {
|
|
163
|
+
console.debug('[secrets][exec] output value for `' + keys[i] + '` is not a string');
|
|
164
|
+
} catch (noLogger) { /* logger not up yet — diagnostics are best-effort */ }
|
|
165
|
+
throw new Error('`settings.secrets.exec` command output carries a non-string value'
|
|
166
|
+
+ ' (the offending key is logged at debug level; stdout is never echoed)');
|
|
167
|
+
}
|
|
168
|
+
map[keys[i]] = parsed[keys[i]];
|
|
169
|
+
}
|
|
170
|
+
return map;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Build an exec-backed resolver: fetch the map eagerly — once per
|
|
175
|
+
* config-load cycle, mirroring the file backend's documented rationale
|
|
176
|
+
* ("resolution walks the whole config and would otherwise re-run the fetch
|
|
177
|
+
* for each placeholder") — then resolve each key environment-first.
|
|
178
|
+
*
|
|
179
|
+
* @memberof module:lib/secrets/backends/exec
|
|
180
|
+
* @function build
|
|
181
|
+
* @param {{command: string[], timeout: (number|undefined)}} spec - The validated `settings.secrets.exec` declaration
|
|
182
|
+
* @returns {{resolve: function(string): string}} Env-over-exec resolver
|
|
183
|
+
* @throws {Error} Propagates every `fetchExecMap` failure — the caller
|
|
184
|
+
* (`core/config.js::loadBundleConfig`) turns it into a per-bundle boot
|
|
185
|
+
* refusal, exactly as it does for an unreadable file layer (#B267).
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* var exec = require('./backends/exec');
|
|
189
|
+
* var backend = exec.build({ command: ['/opt/app/bin/print-secrets'], timeout: 5000 });
|
|
190
|
+
* process.env.API_KEY = 'from-env';
|
|
191
|
+
* backend.resolve('API_KEY'); // → 'from-env' (environment beats the fetched map)
|
|
192
|
+
*/
|
|
193
|
+
function build(spec) {
|
|
194
|
+
var merged = fetchExecMap(spec);
|
|
195
|
+
|
|
196
|
+
// Name the tier and its yield, count only — never keys, never values.
|
|
197
|
+
// A misconfigured command is otherwise indistinguishable from a map that
|
|
198
|
+
// merely lacks the key: both surface as the same fail-closed error,
|
|
199
|
+
// several frames away.
|
|
200
|
+
try {
|
|
201
|
+
console.debug('[secrets][exec] fetched ' + Object.keys(merged).length
|
|
202
|
+
+ ' keys via `' + spec.command[0] + '`');
|
|
203
|
+
} catch (noLogger) { /* logger not up yet — diagnostics are best-effort */ }
|
|
204
|
+
|
|
205
|
+
return {
|
|
206
|
+
resolve: function (key) {
|
|
207
|
+
// Environment tiers first — delegate to the env backend rather
|
|
208
|
+
// than re-implementing its two-tier `getEnvVar` -> `process.env`
|
|
209
|
+
// read (#B156/#B270), so the tiers can never disagree about what
|
|
210
|
+
// "set" means. It throws on miss, which here means "not in the
|
|
211
|
+
// environment".
|
|
212
|
+
try {
|
|
213
|
+
return envBackend.resolve(key);
|
|
214
|
+
} catch (notInEnv) {
|
|
215
|
+
// fall through to the fetched map
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
var value = merged[key];
|
|
219
|
+
if (typeof value === 'string' && value !== '') {
|
|
220
|
+
// #B268 parity with the file tier: "set but empty" and
|
|
221
|
+
// "absent" are indistinguishable through the env backend, and
|
|
222
|
+
// the empty shape can mean a failed `export X="$(fetch ...)"`
|
|
223
|
+
// — the case this ordering exists to make visible. Warn,
|
|
224
|
+
// never fatal, naming only the KEY.
|
|
225
|
+
if (envBackend.isPresentButEmpty(key)) {
|
|
226
|
+
try {
|
|
227
|
+
console.warn('[secrets][exec] `' + key + '` is present but EMPTY in the'
|
|
228
|
+
+ ' environment; falling back to the exec tier. If the environment was'
|
|
229
|
+
+ ' meant to supply it, whatever exports it produced an empty value.');
|
|
230
|
+
} catch (noLogger) { /* logger not up yet — diagnostics are best-effort */ }
|
|
231
|
+
}
|
|
232
|
+
return value;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Same failure shape as the env backend: the message never names
|
|
236
|
+
// the key (it reaches user-facing surfaces), while the key rides
|
|
237
|
+
// on a non-enumerable property for debug logging.
|
|
238
|
+
var err = new Error('Secret resolution failed');
|
|
239
|
+
Object.defineProperty(err, '_ginaSecretKey', {
|
|
240
|
+
value: key,
|
|
241
|
+
enumerable: false,
|
|
242
|
+
configurable: true,
|
|
243
|
+
writable: true
|
|
244
|
+
});
|
|
245
|
+
throw err;
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
module.exports = {
|
|
251
|
+
build: build,
|
|
252
|
+
fetchExecMap: fetchExecMap
|
|
253
|
+
};
|
|
@@ -45,33 +45,11 @@
|
|
|
45
45
|
var envBackend = require('./env');
|
|
46
46
|
var envFile = require('../env-file');
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* never "not there". This reads the raw slots to recover the distinction — used
|
|
54
|
-
* solely to decide whether falling back to the file tier deserves a warning
|
|
55
|
-
* (#B268), never to change which value is returned.
|
|
56
|
-
*
|
|
57
|
-
* Both tiers are checked because `getEnvVar()` itself rejects `''`
|
|
58
|
-
* (`utils/helper.js` guards on `process.gina[key] != ''`), so an empty value in
|
|
59
|
-
* the framework environment is invisible through the normal accessor.
|
|
60
|
-
*
|
|
61
|
-
* @inner
|
|
62
|
-
* @private
|
|
63
|
-
* @param {string} key - Placeholder key, e.g. `'DB_PASSWORD'`
|
|
64
|
-
* @returns {boolean} `true` only when a tier holds `key` as an empty string
|
|
65
|
-
*/
|
|
66
|
-
function isEnvPresentButEmpty(key) {
|
|
67
|
-
if (
|
|
68
|
-
typeof process.gina === 'object' && process.gina !== null &&
|
|
69
|
-
typeof process.gina[key] === 'string' && process.gina[key] === ''
|
|
70
|
-
) {
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
return (typeof process.env[key] === 'string' && process.env[key] === '');
|
|
74
|
-
}
|
|
48
|
+
// The present-but-empty probe behind the #B268 warning moved to the env
|
|
49
|
+
// backend (`envBackend.isPresentButEmpty`) when the exec backend arrived —
|
|
50
|
+
// two lower tiers each carrying a private copy of "what does the environment
|
|
51
|
+
// say" is the #B270/#B408 drift class. Same bytes, one home.
|
|
52
|
+
var isEnvPresentButEmpty = envBackend.isPresentButEmpty;
|
|
75
53
|
|
|
76
54
|
/**
|
|
77
55
|
* Build a backend that reads the environment first and the given files second.
|