gina 0.6.3 → 0.6.4
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 +29 -0
- package/README.md +32 -40
- package/ROADMAP.md +3 -1
- package/framework/v0.6.4/VERSION +1 -0
- package/framework/v0.6.4/core/asset/plugin/dist/vendor/gina/css/gina.min.css +1 -0
- package/framework/v0.6.4/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- package/framework/v0.6.4/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/js/gina.js +1522 -79
- package/framework/v0.6.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js +640 -0
- package/framework/v0.6.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.3 → v0.6.4}/core/config.js +22 -4
- package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.js +62 -2
- package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.render-nunjucks.js +11 -3
- package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.render-swig.js +15 -1
- package/framework/{v0.6.3 → v0.6.4}/core/gna.js +33 -1
- package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/validator/src/main.js +892 -21
- package/framework/{v0.6.3 → v0.6.4}/core/server.js +60 -2
- package/framework/v0.6.4/core/template/_gitignore +27 -0
- package/framework/{v0.6.3 → v0.6.4}/lib/cmd/secrets/arguments.json +1 -0
- package/framework/v0.6.4/lib/cmd/secrets/check.js +861 -0
- package/framework/{v0.6.3 → v0.6.4}/lib/cmd/secrets/help.txt +29 -5
- package/framework/v0.6.4/lib/loading-state/package.json +7 -0
- package/framework/v0.6.4/lib/loading-state/src/main.js +366 -0
- package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/containers/mq/listener.js +23 -0
- package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/containers/mq/speaker.js +27 -0
- package/framework/v0.6.4/lib/secrets/src/backends/file.js +180 -0
- package/framework/v0.6.4/lib/secrets/src/env-file.js +220 -0
- package/framework/{v0.6.3 → v0.6.4}/lib/secrets/src/main.js +84 -1
- package/framework/{v0.6.3 → v0.6.4}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +7 -7
- package/package.json +3 -3
- package/schema/settings.json +14 -0
- package/framework/v0.6.3/VERSION +0 -1
- package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -1
- package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -625
- package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.6.3/core/template/_gitignore +0 -19
- package/framework/v0.6.3/lib/cmd/secrets/check.js +0 -507
- /package/framework/{v0.6.3 → v0.6.4}/AUTHORS +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/LICENSE +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/content.encoding +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/dev/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/locales/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/locales/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/mime.types +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/model/entity.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/model/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/router.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/server.express.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/status.codes +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/console.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/context.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/path.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/task.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/helpers/text.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/async/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/config.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/job/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/job-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/math/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/model.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/proc.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/session-store.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/shell.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/state.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/url/README.md +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/url/index.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/validator.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.3 → v0.6.4}/lib/ws-session/src/main.js +0 -0
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Usage: gina secrets:<action> [options]
|
|
3
3
|
|
|
4
4
|
Introspect the ${secret:KEY} placeholders your bundle configs require.
|
|
5
|
-
Read-only: these commands never
|
|
6
|
-
|
|
5
|
+
Read-only: these commands never write anything, and never print a secret
|
|
6
|
+
value. `check` reads the sources a bundle would resolve from, in order to
|
|
7
|
+
report presence — it does not resolve a placeholder.
|
|
7
8
|
|
|
8
9
|
Actions:
|
|
9
10
|
|
|
@@ -34,9 +35,20 @@
|
|
|
34
35
|
wins) so the report shows the EFFECTIVE keys
|
|
35
36
|
that scope's deploy requires. Scope must be
|
|
36
37
|
registered (see `gina scope:list`).
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
(check) Also supplies ${scope} when resolving a
|
|
39
|
+
`settings.secrets.file` path. That token alone
|
|
40
|
+
falls back to the project's default scope, so a
|
|
41
|
+
scope-templated chain resolves without the flag;
|
|
42
|
+
the config_<scope>/ overlay still needs it
|
|
43
|
+
explicitly and is never applied by default.
|
|
44
|
+
--env=<env> (check) Which env's block to read `homedir`
|
|
45
|
+
from when resolving a `settings.secrets.file`
|
|
46
|
+
path. Defaults to the project's default env.
|
|
47
|
+
--env-file=<path> (check) Stand in for the live process.env —
|
|
48
|
+
e.g. a decrypted SOPS export or a CI-exported
|
|
49
|
+
env. It occupies the ENVIRONMENT tier, which
|
|
50
|
+
outranks the file tier, so it still wins over
|
|
51
|
+
a declared `settings.secrets.file`.
|
|
40
52
|
|
|
41
53
|
Examples:
|
|
42
54
|
|
|
@@ -67,5 +79,17 @@
|
|
|
67
79
|
it cannot introspect an already-running bundle.
|
|
68
80
|
- A key counts as SET only when it is a non-empty string, the same
|
|
69
81
|
condition under which the bundle would start without a secret error.
|
|
82
|
+
- `check` looks in the same two tiers the runtime does, in the same
|
|
83
|
+
order: the environment first, then any file the bundle declares in
|
|
84
|
+
`settings.secrets.file`. The report lists that chain per bundle, marks
|
|
85
|
+
each layer `loaded`/`ABSENT`, and names the tier each key came from —
|
|
86
|
+
so a SET sourced from a plaintext file on this disk is never mistaken
|
|
87
|
+
for one your deployment will inject.
|
|
88
|
+
- `${scope}` and `${env}` inside a declared path are LAUNCH-time values:
|
|
89
|
+
the runtime reads NODE_SCOPE / NODE_ENV from whatever starts the
|
|
90
|
+
bundle, which this process cannot see. The report names the values it
|
|
91
|
+
assumed. If a token cannot be resolved at all, the file tier is
|
|
92
|
+
skipped and said so — that can only make this gate stricter than the
|
|
93
|
+
runtime, never laxer.
|
|
70
94
|
|
|
71
95
|
Reference: https://gina.io/docs/guides/secrets
|
|
@@ -0,0 +1,366 @@
|
|
|
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/loading-state
|
|
12
|
+
* @description Framework-owned loading state for submit-like triggers. Works in
|
|
13
|
+
* Node.js (CommonJS) and browser (AMD / GFF) contexts.
|
|
14
|
+
*
|
|
15
|
+
* A submit-like trigger — `<button type="submit">`, `<input type="submit">` or an
|
|
16
|
+
* `<a data-gina-form-submit>` — carries `data-gina-loading="true"` for exactly as
|
|
17
|
+
* long as the action it started is running, and `"false"` once that action
|
|
18
|
+
* completes OR is interrupted. Consumers style the running state with CSS.
|
|
19
|
+
*
|
|
20
|
+
* The module owns three things and no more: resolving the configured attribute
|
|
21
|
+
* NAME, writing the two values, and walking a click target up to the trigger that
|
|
22
|
+
* actually owns it. It holds NO state — the caller decides which element is armed
|
|
23
|
+
* and where to remember it, so the validator, popin and link plugins can share one
|
|
24
|
+
* implementation without sharing a registry.
|
|
25
|
+
*
|
|
26
|
+
* ## The `"false"` value is deliberate, and it constrains readers
|
|
27
|
+
*
|
|
28
|
+
* `disarm()` writes the STRING `"false"`; it does not remove the attribute. That
|
|
29
|
+
* diverges on purpose from the form-scoped `data-gina-form-loading`, which #B175
|
|
30
|
+
* changed from `setAttribute(..., false)` to `removeAttribute()` precisely because
|
|
31
|
+
* `"false"` is attribute-PRESENT and therefore truthy for a presence check.
|
|
32
|
+
*
|
|
33
|
+
* The consequence is a hard rule for every reader, in the framework and in
|
|
34
|
+
* consumer CSS alike: **match on the VALUE, never on presence**. Use
|
|
35
|
+
* `[data-gina-loading="true"]`, never a bare `[data-gina-loading]`, and in JS use
|
|
36
|
+
* {@link module:lib/loading-state~isArmed} rather than reading the attribute
|
|
37
|
+
* directly. A bare presence selector matches a disarmed trigger and pins the
|
|
38
|
+
* loading style on forever.
|
|
39
|
+
*
|
|
40
|
+
* ## Configuring the attribute name
|
|
41
|
+
*
|
|
42
|
+
* The name is read from `gina.config.loadingAttribute`, lazily, at every call —
|
|
43
|
+
* `gina.config` is populated after the bundle loads (via `setOptions`), so a value
|
|
44
|
+
* captured at module-definition time would be stale. A project already built on
|
|
45
|
+
* `data-loading` opts in with:
|
|
46
|
+
*
|
|
47
|
+
* ```html
|
|
48
|
+
* <script src="/js/vendor/gina/gina.min.js"
|
|
49
|
+
* data-gina-config="{ loadingAttribute: 'data-loading' }"></script>
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* or `gina.setOptions({ loadingAttribute: 'data-loading' })`. There is no
|
|
53
|
+
* auto-detection: a DOM probe reads nothing at rest (the attribute only exists
|
|
54
|
+
* while something is loading) and a stylesheet probe races late-loaded sheets and
|
|
55
|
+
* throws on cross-origin ones. Configuration is explicit by design.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* var loadingState = require('lib/loading-state');
|
|
59
|
+
*
|
|
60
|
+
* var $trigger = loadingState.resolveTrigger(event.target, $form);
|
|
61
|
+
* loadingState.arm($trigger); // data-gina-loading="true"
|
|
62
|
+
* // ... the action runs, then settles, errors, times out or is rejected ...
|
|
63
|
+
* loadingState.disarm($trigger); // data-gina-loading="false"
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Loading-state factory — returns the stateless API object.
|
|
68
|
+
* Exported as the module itself via `module.exports = LoadingState()`.
|
|
69
|
+
*
|
|
70
|
+
* @function LoadingState
|
|
71
|
+
* @returns {object} The `{ arm, disarm, isArmed, getAttributeName, resolveTrigger, DEFAULT_ATTRIBUTE }` API
|
|
72
|
+
*
|
|
73
|
+
* @memberof module:lib
|
|
74
|
+
* @author Rhinostone <contact@gina.io>
|
|
75
|
+
* @api Public
|
|
76
|
+
*/
|
|
77
|
+
function LoadingState() {
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* The attribute written when no `gina.config.loadingAttribute` override is set.
|
|
81
|
+
*
|
|
82
|
+
* @constant {string}
|
|
83
|
+
* @inner
|
|
84
|
+
*/
|
|
85
|
+
var DEFAULT_ATTRIBUTE = 'data-gina-loading';
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The value written by `arm()`.
|
|
89
|
+
*
|
|
90
|
+
* @constant {string}
|
|
91
|
+
* @inner
|
|
92
|
+
*/
|
|
93
|
+
var ARMED = 'true';
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* The value written by `disarm()`. NOT `removeAttribute` — see the module
|
|
97
|
+
* description for why, and for the presence-check rule it imposes on readers.
|
|
98
|
+
*
|
|
99
|
+
* @constant {string}
|
|
100
|
+
* @inner
|
|
101
|
+
*/
|
|
102
|
+
var DISARMED = 'false';
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* How many ancestors `resolveTrigger()` will climb before giving up. A submit
|
|
106
|
+
* trigger is a direct child of its form in every realistic markup, so this is a
|
|
107
|
+
* runaway guard rather than a real limit — a detached or cyclic node can not
|
|
108
|
+
* spin the loop.
|
|
109
|
+
*
|
|
110
|
+
* @constant {number}
|
|
111
|
+
* @inner
|
|
112
|
+
*/
|
|
113
|
+
var MAX_DEPTH = 10;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* isNode
|
|
117
|
+
*
|
|
118
|
+
* True when `$el` can carry attributes. Guards every public entry point so a
|
|
119
|
+
* `null`, a text node, a `window` or a plain object is a silent no-op rather
|
|
120
|
+
* than a thrown TypeError inside an event handler.
|
|
121
|
+
*
|
|
122
|
+
* @param {object} $el - candidate element
|
|
123
|
+
*
|
|
124
|
+
* @returns {boolean} true when `$el` exposes the attribute API
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* isNode(document.querySelector('button')); // true
|
|
128
|
+
* isNode(null); // false
|
|
129
|
+
*
|
|
130
|
+
* @inner
|
|
131
|
+
*/
|
|
132
|
+
var isNode = function($el) {
|
|
133
|
+
return !!(
|
|
134
|
+
$el
|
|
135
|
+
&& typeof($el.setAttribute) == 'function'
|
|
136
|
+
&& typeof($el.getAttribute) == 'function'
|
|
137
|
+
);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* isSubmitTrigger
|
|
142
|
+
*
|
|
143
|
+
* True when `$el` is an element a user submits a form WITH. Mirrors the shapes
|
|
144
|
+
* the validator's click proxy already recognises: a `button`/`input` whose type
|
|
145
|
+
* is `submit`, or an anchor carrying `data-gina-form-submit`.
|
|
146
|
+
*
|
|
147
|
+
* @param {object} $el - candidate element
|
|
148
|
+
*
|
|
149
|
+
* @returns {boolean} true when `$el` is a submit-like trigger
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* isSubmitTrigger($button); // true for <button type="submit">
|
|
153
|
+
* isSubmitTrigger($span); // false
|
|
154
|
+
*
|
|
155
|
+
* @inner
|
|
156
|
+
*/
|
|
157
|
+
var isSubmitTrigger = function($el) {
|
|
158
|
+
if ( !isNode($el) || !$el.tagName ) {
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
if ( /^(button|input)$/i.test($el.tagName) && /^submit$/i.test($el.type || '') ) {
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
if ( /^a$/i.test($el.tagName) && $el.getAttribute('data-gina-form-submit') != null ) {
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
return false;
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* getAttributeName
|
|
172
|
+
*
|
|
173
|
+
* Resolves the attribute name to write. Reads `gina.config.loadingAttribute`
|
|
174
|
+
* LAZILY on every call: `gina.config` is populated after the bundle loads, so a
|
|
175
|
+
* value captured once at definition time would always be the default. Falls
|
|
176
|
+
* back to `data-gina-loading` when unset, empty or not a string.
|
|
177
|
+
*
|
|
178
|
+
* @returns {string} the configured attribute name, or `data-gina-loading`
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* getAttributeName(); // 'data-gina-loading'
|
|
182
|
+
* gina.setOptions({ loadingAttribute: 'data-loading' });
|
|
183
|
+
* getAttributeName(); // 'data-loading'
|
|
184
|
+
*
|
|
185
|
+
* @api Public
|
|
186
|
+
*/
|
|
187
|
+
var getAttributeName = function() {
|
|
188
|
+
if (
|
|
189
|
+
typeof(gina) != 'undefined' && gina && gina.config
|
|
190
|
+
&& typeof(gina.config.loadingAttribute) == 'string'
|
|
191
|
+
&& gina.config.loadingAttribute !== ''
|
|
192
|
+
) {
|
|
193
|
+
return gina.config.loadingAttribute;
|
|
194
|
+
}
|
|
195
|
+
return DEFAULT_ATTRIBUTE;
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* arm
|
|
200
|
+
*
|
|
201
|
+
* Marks `$el` as running by writing `<attribute>="true"`. Idempotent — arming an
|
|
202
|
+
* already-armed trigger rewrites the same value. A non-element is a no-op.
|
|
203
|
+
*
|
|
204
|
+
* @param {object} $el - the trigger to mark (see `resolveTrigger`)
|
|
205
|
+
*
|
|
206
|
+
* @returns {boolean} true when the attribute was written
|
|
207
|
+
*
|
|
208
|
+
* @example
|
|
209
|
+
* arm($button); // $button now carries data-gina-loading="true"
|
|
210
|
+
*
|
|
211
|
+
* @api Public
|
|
212
|
+
*/
|
|
213
|
+
var arm = function($el) {
|
|
214
|
+
if ( !isNode($el) ) {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
$el.setAttribute(getAttributeName(), ARMED);
|
|
218
|
+
return true;
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* disarm
|
|
223
|
+
*
|
|
224
|
+
* Releases `$el` by writing `<attribute>="false"`. Called on EVERY terminal
|
|
225
|
+
* outcome — settled, errored, timed out, aborted, rate-limited and
|
|
226
|
+
* validation-rejected — so a trigger can not stay visually loading after its
|
|
227
|
+
* action stopped. Idempotent; a non-element is a no-op.
|
|
228
|
+
*
|
|
229
|
+
* Writes `"false"` rather than removing the attribute; see the module
|
|
230
|
+
* description for the reasoning and the presence-check rule it imposes.
|
|
231
|
+
*
|
|
232
|
+
* @param {object} $el - the trigger to release
|
|
233
|
+
*
|
|
234
|
+
* @returns {boolean} true when the attribute was written
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* disarm($button); // $button now carries data-gina-loading="false"
|
|
238
|
+
*
|
|
239
|
+
* @api Public
|
|
240
|
+
*/
|
|
241
|
+
var disarm = function($el) {
|
|
242
|
+
if ( !isNode($el) ) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
$el.setAttribute(getAttributeName(), DISARMED);
|
|
246
|
+
return true;
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* isArmed
|
|
251
|
+
*
|
|
252
|
+
* True only when `$el` is currently marked as running. Compares the VALUE
|
|
253
|
+
* against `"true"` — never tests presence, because a disarmed trigger still
|
|
254
|
+
* carries the attribute with `"false"`. Use this instead of reading the
|
|
255
|
+
* attribute directly.
|
|
256
|
+
*
|
|
257
|
+
* @param {object} $el - the trigger to inspect
|
|
258
|
+
*
|
|
259
|
+
* @returns {boolean} true when `$el` carries `<attribute>="true"`
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* arm($button); isArmed($button); // true
|
|
263
|
+
* disarm($button); isArmed($button); // false — attribute present, value "false"
|
|
264
|
+
*
|
|
265
|
+
* @api Public
|
|
266
|
+
*/
|
|
267
|
+
var isArmed = function($el) {
|
|
268
|
+
if ( !isNode($el) ) {
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
return $el.getAttribute(getAttributeName()) === ARMED;
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* resolveTrigger
|
|
276
|
+
*
|
|
277
|
+
* Walks `$el` up to the submit trigger that owns it, so the state lands on the
|
|
278
|
+
* control the user perceives as the button rather than on whatever inner node
|
|
279
|
+
* happened to receive the click. `<button type="submit"><span>Save</span></button>`
|
|
280
|
+
* clicked on the label yields the `button`, not the `span`.
|
|
281
|
+
*
|
|
282
|
+
* Returns `$el` itself when no submit-like ancestor is found, so a caller that
|
|
283
|
+
* already knows it is handling a submit still gets a usable element. Stops at
|
|
284
|
+
* the boundary element (typically the form), at `form`/`body`/`html`, or after
|
|
285
|
+
* `MAX_DEPTH` hops.
|
|
286
|
+
*
|
|
287
|
+
* ## Recognising a non-submit trigger (`isTrigger`)
|
|
288
|
+
*
|
|
289
|
+
* The default predicate recognises submit-like controls only — a `button` or
|
|
290
|
+
* `input` of type `submit`, or an `a[data-gina-form-submit]`. That is what the
|
|
291
|
+
* validator needs and nothing else. Other plugins arm elements this module has
|
|
292
|
+
* no business knowing about: link arms `a[data-gina-link]`, popin arms
|
|
293
|
+
* `a[data-gina-dialog]`. Pass `isTrigger` to say what counts as YOUR trigger.
|
|
294
|
+
*
|
|
295
|
+
* Without it the climb finds no match, breaks at `form`/`body`/`html`, and
|
|
296
|
+
* returns the ORIGINAL `$el` — so a click on the `<span>` inside
|
|
297
|
+
* `<a data-gina-link><span>Go</span></a>` would arm the span and leave the
|
|
298
|
+
* anchor unstyled.
|
|
299
|
+
*
|
|
300
|
+
* The predicate lives with the caller deliberately rather than being folded
|
|
301
|
+
* into the default: this module owns the WALK, each plugin owns its own notion
|
|
302
|
+
* of a trigger. Folding plugin attribute names in here would also couple the
|
|
303
|
+
* module to the popin deprecation/alias work, which changes which attributes
|
|
304
|
+
* are honoured over time.
|
|
305
|
+
*
|
|
306
|
+
* @param {object} $el - the clicked element (`event.target`)
|
|
307
|
+
* @param {object} [$boundary] - element to stop at, usually the `<form>`
|
|
308
|
+
* @param {function} [isTrigger] - `($node) => boolean`; defaults to the
|
|
309
|
+
* submit-like predicate. Ignored when not a function. A predicate that
|
|
310
|
+
* THROWS is deliberately not caught: every caller is framework code, so
|
|
311
|
+
* swallowing would hide a framework bug behind a silently unarmed trigger.
|
|
312
|
+
*
|
|
313
|
+
* @returns {object} the owning trigger, or `$el`, or `null` when `$el` is not an element
|
|
314
|
+
*
|
|
315
|
+
* @example
|
|
316
|
+
* // <button type="submit"><span>Save</span></button>
|
|
317
|
+
* resolveTrigger(event.target, $form); // the <button>, even when the <span> was clicked
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* // <a data-gina-link><span>Go</span></a> — the span was clicked
|
|
321
|
+
* resolveTrigger(event.target, null, function($n) {
|
|
322
|
+
* return /^a$/i.test($n.tagName) && $n.getAttribute('data-gina-link') != null;
|
|
323
|
+
* }); // the <a>, not the <span>
|
|
324
|
+
*
|
|
325
|
+
* @api Public
|
|
326
|
+
*/
|
|
327
|
+
var resolveTrigger = function($el, $boundary, isTrigger) {
|
|
328
|
+
if ( !isNode($el) ) {
|
|
329
|
+
return null;
|
|
330
|
+
}
|
|
331
|
+
var matches = ( typeof(isTrigger) == 'function' ) ? isTrigger : isSubmitTrigger;
|
|
332
|
+
var $node = $el;
|
|
333
|
+
var depth = 0;
|
|
334
|
+
while ( isNode($node) && depth < MAX_DEPTH ) {
|
|
335
|
+
if ( matches($node) ) {
|
|
336
|
+
return $node;
|
|
337
|
+
}
|
|
338
|
+
if ( $boundary && $node === $boundary ) {
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
if ( $node.tagName && /^(form|body|html)$/i.test($node.tagName) ) {
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
$node = $node.parentNode;
|
|
345
|
+
++depth;
|
|
346
|
+
}
|
|
347
|
+
return $el;
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
return {
|
|
351
|
+
'DEFAULT_ATTRIBUTE' : DEFAULT_ATTRIBUTE,
|
|
352
|
+
'getAttributeName' : getAttributeName,
|
|
353
|
+
'arm' : arm,
|
|
354
|
+
'disarm' : disarm,
|
|
355
|
+
'isArmed' : isArmed,
|
|
356
|
+
'resolveTrigger' : resolveTrigger
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
|
|
361
|
+
// Publish as node.js module
|
|
362
|
+
module.exports = LoadingState()
|
|
363
|
+
} else if ( typeof(define) === 'function' && define.amd) {
|
|
364
|
+
// Publish as AMD module
|
|
365
|
+
define('lib/loading-state', function() { return LoadingState() })
|
|
366
|
+
}
|
|
@@ -174,6 +174,29 @@ function MQListener(opt, cb) {
|
|
|
174
174
|
conn.sessionId = uuid();
|
|
175
175
|
// conn.request = 'report'; // by default
|
|
176
176
|
sessions[conn.sessionId] = conn;
|
|
177
|
+
|
|
178
|
+
// #B279 — a speaker that goes away abruptly (a CLI that finished or
|
|
179
|
+
// was killed) leaves this connection socket registered but broken.
|
|
180
|
+
// The next write to it — the handshake below, or `self.report()`'s
|
|
181
|
+
// `sessions[sessionId].write()` — then raises EPIPE/ECONNRESET on the
|
|
182
|
+
// socket, and with no 'error' listener node THROWS it: the whole
|
|
183
|
+
// process dies. That is not theoretical — it is how a `bundle:add`
|
|
184
|
+
// died mid-command on CI, before writing ports.reverse.json, because
|
|
185
|
+
// every `bin/cli` invocation starts this listener on the shared MQ
|
|
186
|
+
// port and parallel test files speak to each other's listener.
|
|
187
|
+
// `server.on('error')` below does NOT cover this: every accepted
|
|
188
|
+
// connection is its own EventEmitter.
|
|
189
|
+
// A departed client is normal TCP lifecycle rather than a listener
|
|
190
|
+
// fault (`lib/proc.js` reaches the same conclusion for the server
|
|
191
|
+
// socket), so drop the session and carry on. Dropping matters: an
|
|
192
|
+
// abruptly-killed peer may never emit 'end', which is what otherwise
|
|
193
|
+
// clears `sessions` — leaving a dead socket for the next write.
|
|
194
|
+
// Registered BEFORE the handshake write, which is itself a site.
|
|
195
|
+
conn.on('error', function(err) {
|
|
196
|
+
delete sessions[this.sessionId];
|
|
197
|
+
console.debug('[MQListener] (error) speaker `'+ this.sessionId +'` dropped: '+ (err.code || err.message));
|
|
198
|
+
});
|
|
199
|
+
|
|
177
200
|
conn.write(JSON.stringify({ sessionId: conn.sessionId }) +'\r\n' );
|
|
178
201
|
|
|
179
202
|
//feedback.
|
|
@@ -82,6 +82,24 @@ function MQSpeaker(opt, loggers, cb) {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Opens the speaker's connection to the MQ listener.
|
|
87
|
+
*
|
|
88
|
+
* The socket is `unref`'d: a logging transport must never be the reason a
|
|
89
|
+
* process stays alive. Processes that legitimately run long hold the event
|
|
90
|
+
* loop open by their own means — a bundle keeps it alive with its HTTP
|
|
91
|
+
* server (`core/server.js` owns the single `listen()` call for both
|
|
92
|
+
* engines) — so unref'ing costs them nothing while it stops the speaker
|
|
93
|
+
* from outliving its host.
|
|
94
|
+
*
|
|
95
|
+
* @inner
|
|
96
|
+
* @param {object} opt - Logger options; `mqPort`/`hostV4`/`bindHost` are read here.
|
|
97
|
+
* @param {function} [cb] - Called `(false, client)` on connect, `(err)` on error.
|
|
98
|
+
* @returns {object} The connected (unref'd) net.Socket.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* startMQSpeaker({ mqPort: 8125, hostV4: '127.0.0.1' }, function (err, client) { });
|
|
102
|
+
*/
|
|
85
103
|
function startMQSpeaker(opt, cb) {
|
|
86
104
|
var port = opt.mqPort || 8125;// jshint ignore:line
|
|
87
105
|
// #B160 — the MQ listener binds `bind_host` (loopback by default):
|
|
@@ -103,6 +121,15 @@ function MQSpeaker(opt, loggers, cb) {
|
|
|
103
121
|
cb(false, client)
|
|
104
122
|
}
|
|
105
123
|
});
|
|
124
|
+
// #B276 — the logger is a load-time singleton (`lib/index.js` requires it
|
|
125
|
+
// eagerly, `main.js` invokes `Logger()` at module scope), so this socket is
|
|
126
|
+
// opened by the mere act of requiring the framework — including on a boot
|
|
127
|
+
// that is about to throw for want of a bundle context. Without unref, that
|
|
128
|
+
// documented throw becomes unrecoverable: the caller catches the error and
|
|
129
|
+
// the process still cannot exit, because the socket keeps the loop alive.
|
|
130
|
+
// Only bites when something is actually listening on the MQ port; with
|
|
131
|
+
// nothing there the connection is refused and the handle closes itself.
|
|
132
|
+
client.unref();
|
|
106
133
|
client.on('error', (data) => {
|
|
107
134
|
var err = data.toString();
|
|
108
135
|
if (cb) {
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* @module lib/secrets/backends/file
|
|
4
|
+
* @description Backend that layers one or more `.env`-style files *underneath*
|
|
5
|
+
* the environment.
|
|
6
|
+
*
|
|
7
|
+
* **A NON-EMPTY environment value always wins.** A value present in
|
|
8
|
+
* `process.gina` / `process.env` is returned even when a file also defines the
|
|
9
|
+
* key. That ordering is deliberate and is the opposite of what `.env`-file
|
|
10
|
+
* tooling usually does: every production mechanism for delivering a secret to a
|
|
11
|
+
* gina bundle — a Kubernetes `envFrom: secretRef`, an ECS task-definition secret,
|
|
12
|
+
* `sops exec-env`, a CI-exported variable — arrives through the environment.
|
|
13
|
+
* If a file won, a stale plaintext file baked into an image would silently
|
|
14
|
+
* shadow the secret the platform injected, and the bundle would run with the
|
|
15
|
+
* wrong credential while looking perfectly healthy. Making the file the
|
|
16
|
+
* *fallback* means it can only ever fill a gap, never override a deployment.
|
|
17
|
+
*
|
|
18
|
+
* **The "non-empty" qualifier is load-bearing, and deliberately NOT a refusal**
|
|
19
|
+
* (#B268). A variable that is SET but EMPTY is treated as absent, so the file
|
|
20
|
+
* tier fills it. That is what makes the common local shape work: Docker Compose
|
|
21
|
+
* `environment: ["X=${X}"]` with the outer `X` unset puts an empty-but-SET `X`
|
|
22
|
+
* into the container (measured), and refusing there would break setups that are
|
|
23
|
+
* working today. But the same shape also arises when an entrypoint's
|
|
24
|
+
* `export X="$(fetch …)"` FAILS — and there the file silently supplying a stale
|
|
25
|
+
* value is exactly the shadowing this ordering exists to prevent. Since the two
|
|
26
|
+
* are indistinguishable from inside the process, the file tier does not guess:
|
|
27
|
+
* it fills the gap and WARNS (see `resolve`), so the dangerous case is visible
|
|
28
|
+
* without the benign one becoming fatal.
|
|
29
|
+
*
|
|
30
|
+
* Files are layered in declaration order, later entries winning, so a caller
|
|
31
|
+
* can express `["<base>", "<per-scope>"]` and have the scope-specific file
|
|
32
|
+
* override shared defaults. A file that does not exist contributes nothing and
|
|
33
|
+
* is not an error — a project may legitimately ship a base file and add the
|
|
34
|
+
* per-scope one only on some targets. A file that EXISTS but cannot be read is
|
|
35
|
+
* a different matter and is fatal (#B267): silently skipping it would drop that
|
|
36
|
+
* chain onto the shared base file, i.e. run the bundle on the wrong credential
|
|
37
|
+
* with no signal at all.
|
|
38
|
+
*
|
|
39
|
+
* This backend does NOT decrypt. Pointing it at an encrypted file yields
|
|
40
|
+
* ciphertext, silently. For SOPS / Vault / KMS, keep decrypting at the
|
|
41
|
+
* container entrypoint so the values land in the environment, which this
|
|
42
|
+
* backend already prefers.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
var envBackend = require('./env');
|
|
46
|
+
var envFile = require('../env-file');
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Is `key` present in one of the environment tiers but carrying an EMPTY value?
|
|
50
|
+
*
|
|
51
|
+
* The env backend cannot answer this: it treats empty as unset by contract and
|
|
52
|
+
* throws either way, so a caller that catches its throw knows only "not usable",
|
|
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
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Build a backend that reads the environment first and the given files second.
|
|
78
|
+
*
|
|
79
|
+
* @memberof module:lib/secrets/backends/file
|
|
80
|
+
* @function build
|
|
81
|
+
* @param {string[]} paths - Absolute, already-substituted file paths, lowest precedence first
|
|
82
|
+
* @returns {{resolve: function(string): string}} A backend honouring the `lib/secrets` contract
|
|
83
|
+
* @throws {Error} When a declared path EXISTS but cannot be read (`EACCES`, `EISDIR`, …).
|
|
84
|
+
* A genuinely absent path (`ENOENT`) is not an error and contributes nothing (#B267).
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* var backend = build(['/home/u/.myproject/secrets.env',
|
|
88
|
+
* '/home/u/.myproject/production/secrets.env']);
|
|
89
|
+
* backend.resolve('DB_PASSWORD');
|
|
90
|
+
* // non-empty env value if set; else the production file's; else the base file's;
|
|
91
|
+
* // else throws Error('Secret resolution failed')
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* // An unreadable layer refuses at BUILD time rather than degrading silently:
|
|
95
|
+
* // chmod 000 /home/u/.myproject/production/secrets.env
|
|
96
|
+
* build(['/home/u/.myproject/secrets.env',
|
|
97
|
+
* '/home/u/.myproject/production/secrets.env']);
|
|
98
|
+
* // → throws '`settings.secrets.file` names a file that exists but cannot be read: … (EACCES)'
|
|
99
|
+
*/
|
|
100
|
+
function build(paths) {
|
|
101
|
+
// Layer eagerly, once per config-load cycle, rather than statting on every
|
|
102
|
+
// key: resolution walks the whole config and would otherwise re-read the
|
|
103
|
+
// same files for each placeholder.
|
|
104
|
+
var merged = Object.create(null);
|
|
105
|
+
for (var i = 0; i < paths.length; i++) {
|
|
106
|
+
var res = envFile.readEnvFile(paths[i]);
|
|
107
|
+
|
|
108
|
+
// #B267 — a path that EXISTS but cannot be read is an operator error, not
|
|
109
|
+
// an absent layer. Skipping it silently drops a `["<base>", "<per-scope>"]`
|
|
110
|
+
// chain onto the base file, so the bundle boots healthily on the SHARED
|
|
111
|
+
// credential. Refuse instead: the caller (core/config.js::loadBundleConfig)
|
|
112
|
+
// reports this as a config error and the boot stops with the path named.
|
|
113
|
+
if (!res.found && res.code !== 'ENOENT') {
|
|
114
|
+
throw new Error('`settings.secrets.file` names a file that exists but cannot be read: '
|
|
115
|
+
+ paths[i] + ' (' + res.code + ')');
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Name each layer and whether it was found. A misresolved path is
|
|
119
|
+
// otherwise indistinguishable from a file that simply lacks the key:
|
|
120
|
+
// both surface as the same fail-closed error, several frames away.
|
|
121
|
+
try {
|
|
122
|
+
console.debug('[secrets][file] ' + (res.found ? 'loaded ' : 'ABSENT ')
|
|
123
|
+
+ paths[i] + (res.found ? ' (' + Object.keys(res.map).length + ' keys)' : ''));
|
|
124
|
+
} catch (noLogger) { /* logger not up yet — diagnostics are best-effort */ }
|
|
125
|
+
if (!res.found) continue; // absent file: contributes nothing, not an error
|
|
126
|
+
for (var key in res.map) {
|
|
127
|
+
merged[key] = res.map[key]; // later path wins
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return {
|
|
132
|
+
resolve: function (key) {
|
|
133
|
+
// Environment tiers first — delegate to the env backend rather than
|
|
134
|
+
// re-implementing its two-tier `getEnvVar` -> `process.env` read
|
|
135
|
+
// (#B156), so the two can never disagree about what "set" means.
|
|
136
|
+
// It throws on miss, which here means "not in the environment".
|
|
137
|
+
try {
|
|
138
|
+
return envBackend.resolve(key);
|
|
139
|
+
} catch (notInEnv) {
|
|
140
|
+
// fall through to the file layer
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
var value = merged[key];
|
|
144
|
+
if (typeof value === 'string' && value !== '') {
|
|
145
|
+
// #B268 — the env backend reports "set but empty" and "absent"
|
|
146
|
+
// identically, so reaching here does not say which happened. When
|
|
147
|
+
// it was the former, the file is about to override a value the
|
|
148
|
+
// environment DID carry, which is the one case this ordering is
|
|
149
|
+
// meant to make impossible. Warn (never fatal — see the module
|
|
150
|
+
// header for why refusing would break Compose-style passthrough),
|
|
151
|
+
// at `warn` so it survives the default `info` log hierarchy, and
|
|
152
|
+
// name only the KEY: the message reaches user-facing surfaces.
|
|
153
|
+
if (isEnvPresentButEmpty(key)) {
|
|
154
|
+
try {
|
|
155
|
+
console.warn('[secrets][file] `' + key + '` is present but EMPTY in the'
|
|
156
|
+
+ ' environment; falling back to the file tier. If the environment was'
|
|
157
|
+
+ ' meant to supply it, whatever exports it produced an empty value.');
|
|
158
|
+
} catch (noLogger) { /* logger not up yet — diagnostics are best-effort */ }
|
|
159
|
+
}
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Same failure shape as the env backend: the message never names
|
|
164
|
+
// the key (it reaches user-facing surfaces), while the key rides
|
|
165
|
+
// on a non-enumerable property for debug logging.
|
|
166
|
+
var err = new Error('Secret resolution failed');
|
|
167
|
+
Object.defineProperty(err, '_ginaSecretKey', {
|
|
168
|
+
value: key,
|
|
169
|
+
enumerable: false,
|
|
170
|
+
configurable: true,
|
|
171
|
+
writable: true
|
|
172
|
+
});
|
|
173
|
+
throw err;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
module.exports = {
|
|
179
|
+
build: build
|
|
180
|
+
};
|