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,303 @@
|
|
|
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/declaration
|
|
12
|
+
* @description Shared validation of the `settings.secrets` declaration,
|
|
13
|
+
* consumed by BOTH the runtime dispatch (`selectBackend`,
|
|
14
|
+
* `lib/secrets/src/main.js`) and the `secrets:check` CLI gate
|
|
15
|
+
* (`lib/cmd/secrets/check.js`). One implementation, so the gate and the
|
|
16
|
+
* runtime cannot drift.
|
|
17
|
+
*
|
|
18
|
+
* Why this module exists (#B408): the mirror had ALREADY drifted twice, both
|
|
19
|
+
* times in the LAX direction — the runtime gained the whitespace-only entry
|
|
20
|
+
* refusal (#B271, `.trim()`) and the empty-path-segment refusal (#B272,
|
|
21
|
+
* `'//'`) while `secrets:check` kept an older copy of the loop, so
|
|
22
|
+
* `settings.secrets.file: [" "]` and a path whose token collapsed to `//`
|
|
23
|
+
* passed the CI gate GREEN while boot REFUSED. That is precisely the
|
|
24
|
+
* checker-vs-runtime disagreement the command exists to prevent, and the
|
|
25
|
+
* second occurrence of the drift class #B263 already paid for once on the
|
|
26
|
+
* source-walk axis (cured the same way: one shared implementation, in
|
|
27
|
+
* `./sources`).
|
|
28
|
+
*
|
|
29
|
+
* Contract notes:
|
|
30
|
+
* - **Pure and ambient-free.** No `_()`, no `requireJSON`, no requires — the
|
|
31
|
+
* zero-setup `require('lib/secrets')` path stays zero-setup.
|
|
32
|
+
* - **Inputs are POST-substitution values.** The runtime validates what the
|
|
33
|
+
* config loader's `whisper` pass produced; the CLI whispers with its own
|
|
34
|
+
* `buildReps` dictionary first and hands the result here. Validating the
|
|
35
|
+
* same (resolved) form on both sides is what makes the verdicts identical.
|
|
36
|
+
* - **First-error-wins, entries in order.** The returned array carries AT
|
|
37
|
+
* MOST ONE error, mirroring both consumers: the runtime throws on the
|
|
38
|
+
* first failing entry, the CLI reports it and stops reading the tier.
|
|
39
|
+
* - Errors are `{code, message}` — the `message` is the exact user-facing
|
|
40
|
+
* text (the runtime throws it verbatim, so realigning a message here IS a
|
|
41
|
+
* runtime behaviour change); the `code` lets a consumer add surface-local
|
|
42
|
+
* context (the CLI appends its `--scope`/`--env` hint on
|
|
43
|
+
* `file-unresolved-token`) without forking the shared text.
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Matches any surviving `${…}` config token. Kept here — beside the guard
|
|
48
|
+
* that uses it — rather than in each consumer; `secrets:check` used to carry
|
|
49
|
+
* its own copy (`UNRESOLVED_TOKEN`) of this exact source.
|
|
50
|
+
*
|
|
51
|
+
* Note it also matches `${secret:…}` — the placeholder guard runs FIRST so a
|
|
52
|
+
* secret placeholder reports as what it is, never as a generic token.
|
|
53
|
+
*
|
|
54
|
+
* @constant {RegExp} TOKEN_RE
|
|
55
|
+
* @memberof module:lib/secrets/declaration
|
|
56
|
+
* @private
|
|
57
|
+
*/
|
|
58
|
+
var TOKEN_RE = /\$\{[^}]*\}/;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Validate the declared `settings.secrets.file` entries, POST-substitution.
|
|
62
|
+
*
|
|
63
|
+
* The four guards, in the order the runtime has always applied them —
|
|
64
|
+
* per entry, first failure wins:
|
|
65
|
+
*
|
|
66
|
+
* 1. **Entry shape** — a non-string, or a string that is empty once
|
|
67
|
+
* trimmed. #B271: the trim matters because the schema's `minLength: 1`
|
|
68
|
+
* counts a space, so `[" "]` used to clear both layers and build a tier
|
|
69
|
+
* that could never resolve anything, visible only as a suppressed debug
|
|
70
|
+
* line.
|
|
71
|
+
* 2. **`${secret:…}` placeholder** — a secrets file cannot itself be named
|
|
72
|
+
* by a secret: the backend that would resolve the placeholder is the one
|
|
73
|
+
* being built.
|
|
74
|
+
* 3. **Unresolved `${…}` token** — unknown tokens are preserved verbatim by
|
|
75
|
+
* design, so a typo would otherwise become a silent lookup for a
|
|
76
|
+
* literally-named file that never exists, and every secret would fall
|
|
77
|
+
* through to a confusing fail-closed error.
|
|
78
|
+
* 4. **Empty path segment (`//`)** — #B272: a token that resolved to an
|
|
79
|
+
* EMPTY string leaves nothing for guard 3 to catch:
|
|
80
|
+
* `${homedir}/${scope}/secrets.env` with an empty scope collapses to
|
|
81
|
+
* `<home>//secrets.env`, which POSIX reads as `<home>/secrets.env` — a
|
|
82
|
+
* silent read of the WRONG file, one directory up from the intended one.
|
|
83
|
+
* The empty segment is the only surviving trace. This CANNOT distinguish
|
|
84
|
+
* that from the benign cause — a token carrying a trailing slash, e.g.
|
|
85
|
+
* `GINA_HOMEDIR=/opt/gina/` (operator-supplied, and nothing in the path
|
|
86
|
+
* chain normalises it) — because by here both have collapsed to the same
|
|
87
|
+
* string. It refuses either way, deliberately: the dangerous case runs
|
|
88
|
+
* the bundle on the wrong credential in silence, and the file backend
|
|
89
|
+
* already refuses on the same reasoning when a declared layer exists but
|
|
90
|
+
* cannot be read (#B267). The benign case costs one character to fix and
|
|
91
|
+
* the message names it, so the error must NOT assert a cause it cannot
|
|
92
|
+
* know.
|
|
93
|
+
*
|
|
94
|
+
* @memberof module:lib/secrets/declaration
|
|
95
|
+
* @function validateFilePaths
|
|
96
|
+
* @param {Array} paths - Declared file entries, array form, post-substitution
|
|
97
|
+
* @returns {Array<{code: string, message: string}>} Empty when every entry
|
|
98
|
+
* passes; otherwise exactly one error — code one of `file-entry-shape`,
|
|
99
|
+
* `file-secret-placeholder`, `file-unresolved-token`, `file-empty-segment`
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* var declaration = require('./declaration');
|
|
103
|
+
* declaration.validateFilePaths(['/etc/app/base.env']); // → []
|
|
104
|
+
* declaration.validateFilePaths([' ']); // → [{code: 'file-entry-shape', …}]
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* // A token that resolved to an empty value collapses a segment:
|
|
108
|
+
* declaration.validateFilePaths(['/home/u//secrets.env']);
|
|
109
|
+
* // → [{code: 'file-empty-segment', message: '…contains an empty path segment…'}]
|
|
110
|
+
*/
|
|
111
|
+
function validateFilePaths(paths) {
|
|
112
|
+
for (var i = 0; i < paths.length; i++) {
|
|
113
|
+
var p = paths[i];
|
|
114
|
+
if (typeof p !== 'string' || p.trim() === '') {
|
|
115
|
+
return [{
|
|
116
|
+
code: 'file-entry-shape',
|
|
117
|
+
message: '`settings.secrets.file` must be a non-empty string or an array of them'
|
|
118
|
+
}];
|
|
119
|
+
}
|
|
120
|
+
if (p.indexOf('${secret:') > -1) {
|
|
121
|
+
return [{
|
|
122
|
+
code: 'file-secret-placeholder',
|
|
123
|
+
message: '`settings.secrets.file` cannot contain a `${secret:…}` placeholder'
|
|
124
|
+
}];
|
|
125
|
+
}
|
|
126
|
+
if (TOKEN_RE.test(p)) {
|
|
127
|
+
return [{
|
|
128
|
+
code: 'file-unresolved-token',
|
|
129
|
+
message: '`settings.secrets.file` contains an unresolved `${…}` token: ' + p
|
|
130
|
+
}];
|
|
131
|
+
}
|
|
132
|
+
if (p.indexOf('//') > -1) {
|
|
133
|
+
return [{
|
|
134
|
+
code: 'file-empty-segment',
|
|
135
|
+
message: '`settings.secrets.file` contains an empty path segment (`//`), so it does not name the file it appears to — POSIX reads `<a>//<b>` as `<a>/<b>`. Either a `${…}` token resolved to an empty value (the path then silently drops a directory), or a token carries a trailing slash. Remove the doubled separator or fix the token: ' + p
|
|
136
|
+
}];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Validate the `settings.secrets` block itself — shape, key roster, and
|
|
144
|
+
* tier exclusivity — before any tier-specific validation runs.
|
|
145
|
+
*
|
|
146
|
+
* The guards, in order:
|
|
147
|
+
*
|
|
148
|
+
* 1. **Block shape** — the block must be a plain object (`null` is handled
|
|
149
|
+
* by the callers as "not declared" and never reaches here). The schema
|
|
150
|
+
* says `"type": "object"`; no runtime validator loads the schema, so
|
|
151
|
+
* this is where that promise is enforced.
|
|
152
|
+
* 2. **Unknown keys refused, not ignored** — runtime parity with the
|
|
153
|
+
* schema's `additionalProperties: false`. A typo'd key (`flie`, `exce`)
|
|
154
|
+
* used to degrade silently to the env-only default, which reads as a
|
|
155
|
+
* healthy boot with a mysteriously missing tier; refusing makes the typo
|
|
156
|
+
* loud at the one moment someone is looking.
|
|
157
|
+
* 3. **`file` and `exec` do not combine** — an ordering between the two
|
|
158
|
+
* tiers has never been defined, and one shipped now would be locked
|
|
159
|
+
* forever (`additionalProperties: false` cuts both ways). Refusal is
|
|
160
|
+
* relaxable additively if a real layering case ever arrives. The case
|
|
161
|
+
* this WILL hit: a shared `settings.json` declares `file`, a bundle opts
|
|
162
|
+
* into `exec`, and the config merge folds both into one block — the
|
|
163
|
+
* escape is the pinned null opt-out, `"file": null` beside the bundle's
|
|
164
|
+
* `exec`, which the error message names.
|
|
165
|
+
*
|
|
166
|
+
* @memberof module:lib/secrets/declaration
|
|
167
|
+
* @function validateBlock
|
|
168
|
+
* @param {*} block - The declared `settings.secrets` value (non-null)
|
|
169
|
+
* @returns {Array<{code: string, message: string}>} Empty when the block
|
|
170
|
+
* passes; otherwise exactly one error — code one of `block-shape`,
|
|
171
|
+
* `block-unknown-key`, `block-both-tiers`
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* var declaration = require('./declaration');
|
|
175
|
+
* declaration.validateBlock({ file: null, exec: { command: ['/opt/bin/fetch-secrets'] } }); // → []
|
|
176
|
+
* declaration.validateBlock({ flie: ['/etc/a.env'] }); // → [{code: 'block-unknown-key', …}]
|
|
177
|
+
*/
|
|
178
|
+
function validateBlock(block) {
|
|
179
|
+
if (typeof block !== 'object' || Array.isArray(block)) {
|
|
180
|
+
return [{
|
|
181
|
+
code: 'block-shape',
|
|
182
|
+
message: '`settings.secrets` must be an object (or null to opt out)'
|
|
183
|
+
}];
|
|
184
|
+
}
|
|
185
|
+
for (var key in block) {
|
|
186
|
+
if (!Object.prototype.hasOwnProperty.call(block, key)) { continue; }
|
|
187
|
+
if (key !== 'file' && key !== 'exec') {
|
|
188
|
+
return [{
|
|
189
|
+
code: 'block-unknown-key',
|
|
190
|
+
message: '`settings.secrets` carries an unknown key `' + key + '` — the declared keys are `file` and `exec`. Unknown keys are refused rather than ignored: a typo here would silently drop a whole secrets tier'
|
|
191
|
+
}];
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
var fileDeclared = (typeof block.file !== 'undefined' && block.file !== null);
|
|
195
|
+
var execDeclared = (typeof block.exec !== 'undefined' && block.exec !== null);
|
|
196
|
+
if (fileDeclared && execDeclared) {
|
|
197
|
+
return [{
|
|
198
|
+
code: 'block-both-tiers',
|
|
199
|
+
message: '`settings.secrets` declares BOTH `file` and `exec` — pick one; the two tiers do not layer. A bundle inheriting a project-wide `file` chain opts out of it with `"file": null` beside its own `exec` block'
|
|
200
|
+
}];
|
|
201
|
+
}
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Validate the declared `settings.secrets.exec` spec, POST-substitution.
|
|
207
|
+
*
|
|
208
|
+
* The guards, in order — first failure wins:
|
|
209
|
+
*
|
|
210
|
+
* 1. **Spec shape** — a plain object carrying `command`.
|
|
211
|
+
* 2. **Unknown spec keys refused** — same schema-parity reasoning as the
|
|
212
|
+
* block level, and it protects forward too: a config written for a newer
|
|
213
|
+
* gina (say, a future `format` key) fails LOUDLY on an older one instead
|
|
214
|
+
* of silently ignoring the option and misreading the output.
|
|
215
|
+
* 3. **`command` shape** — a non-empty array of non-empty strings, argv
|
|
216
|
+
* form: element 0 is the binary, no shell is ever involved (the safe
|
|
217
|
+
* half of the house child-process precedent).
|
|
218
|
+
* 4. **`${secret:…}` placeholder** — the backend that would resolve it is
|
|
219
|
+
* the one being built (the file tier's identical rule).
|
|
220
|
+
* 5. **Unresolved `${…}` token** — same reasoning as the file tier: unknown
|
|
221
|
+
* tokens survive substitution verbatim, so a typo would become a
|
|
222
|
+
* literally-named binary or argument.
|
|
223
|
+
* ⚠️ The file tier's `//` empty-segment guard is deliberately NOT
|
|
224
|
+
* mirrored here: argv elements legitimately carry `//` (URLs —
|
|
225
|
+
* `https://vault:8200`). The residual — a token resolving to EMPTY
|
|
226
|
+
* inside an element — is documented in the guide instead: the command's
|
|
227
|
+
* own failure is the backstop, and recipes prefer whole-element tokens.
|
|
228
|
+
* 6. **`timeout` shape** — when declared, a positive integer (milliseconds).
|
|
229
|
+
*
|
|
230
|
+
* @memberof module:lib/secrets/declaration
|
|
231
|
+
* @function validateExecSpec
|
|
232
|
+
* @param {*} spec - The declared `settings.secrets.exec` value (non-null)
|
|
233
|
+
* @returns {Array<{code: string, message: string}>} Empty when the spec
|
|
234
|
+
* passes; otherwise exactly one error — code one of `exec-spec-shape`,
|
|
235
|
+
* `exec-spec-unknown-key`, `exec-command-shape`,
|
|
236
|
+
* `exec-command-secret-placeholder`, `exec-command-unresolved-token`,
|
|
237
|
+
* `exec-timeout-shape`
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* var declaration = require('./declaration');
|
|
241
|
+
* declaration.validateExecSpec({ command: ['/opt/bin/fetch-secrets', '--json'] }); // → []
|
|
242
|
+
* declaration.validateExecSpec({ command: [] }); // → [{code: 'exec-command-shape', …}]
|
|
243
|
+
*/
|
|
244
|
+
function validateExecSpec(spec) {
|
|
245
|
+
if (spec === null || typeof spec !== 'object' || Array.isArray(spec)) {
|
|
246
|
+
return [{
|
|
247
|
+
code: 'exec-spec-shape',
|
|
248
|
+
message: '`settings.secrets.exec` must be an object with a `command` array'
|
|
249
|
+
}];
|
|
250
|
+
}
|
|
251
|
+
for (var key in spec) {
|
|
252
|
+
if (!Object.prototype.hasOwnProperty.call(spec, key)) { continue; }
|
|
253
|
+
if (key !== 'command' && key !== 'timeout') {
|
|
254
|
+
return [{
|
|
255
|
+
code: 'exec-spec-unknown-key',
|
|
256
|
+
message: '`settings.secrets.exec` carries an unknown key `' + key + '` — the declared keys are `command` and `timeout`'
|
|
257
|
+
}];
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (!Array.isArray(spec.command) || !spec.command.length) {
|
|
261
|
+
return [{
|
|
262
|
+
code: 'exec-command-shape',
|
|
263
|
+
message: '`settings.secrets.exec.command` must be a non-empty array of strings — argv form: the first element is the binary, no shell is involved'
|
|
264
|
+
}];
|
|
265
|
+
}
|
|
266
|
+
for (var i = 0; i < spec.command.length; i++) {
|
|
267
|
+
var el = spec.command[i];
|
|
268
|
+
if (typeof el !== 'string' || el.trim() === '') {
|
|
269
|
+
return [{
|
|
270
|
+
code: 'exec-command-shape',
|
|
271
|
+
message: '`settings.secrets.exec.command` must be a non-empty array of strings — argv form: the first element is the binary, no shell is involved'
|
|
272
|
+
}];
|
|
273
|
+
}
|
|
274
|
+
if (el.indexOf('${secret:') > -1) {
|
|
275
|
+
return [{
|
|
276
|
+
code: 'exec-command-secret-placeholder',
|
|
277
|
+
message: '`settings.secrets.exec.command` cannot contain a `${secret:…}` placeholder — the backend that would resolve it is the one being built'
|
|
278
|
+
}];
|
|
279
|
+
}
|
|
280
|
+
if (TOKEN_RE.test(el)) {
|
|
281
|
+
return [{
|
|
282
|
+
code: 'exec-command-unresolved-token',
|
|
283
|
+
message: '`settings.secrets.exec.command` contains an unresolved `${…}` token: ' + el
|
|
284
|
+
}];
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (typeof spec.timeout !== 'undefined' && spec.timeout !== null) {
|
|
288
|
+
if (typeof spec.timeout !== 'number' || !isFinite(spec.timeout)
|
|
289
|
+
|| spec.timeout !== Math.floor(spec.timeout) || spec.timeout < 1) {
|
|
290
|
+
return [{
|
|
291
|
+
code: 'exec-timeout-shape',
|
|
292
|
+
message: '`settings.secrets.exec.timeout` must be a positive integer (milliseconds)'
|
|
293
|
+
}];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return [];
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
module.exports = {
|
|
300
|
+
validateFilePaths: validateFilePaths,
|
|
301
|
+
validateBlock: validateBlock,
|
|
302
|
+
validateExecSpec: validateExecSpec
|
|
303
|
+
};
|
|
@@ -11,7 +11,12 @@
|
|
|
11
11
|
* @module lib/secrets
|
|
12
12
|
* @description Substitutes `${secret:KEY}` placeholders in a merged bundle
|
|
13
13
|
* config tree at config-load time. The default backend resolves keys from
|
|
14
|
-
* `process.env`;
|
|
14
|
+
* the framework environment tier then `process.env`; `selectBackend` adds
|
|
15
|
+
* the declared-file tier (`settings.secrets.file`) or the exec-bridge tier
|
|
16
|
+
* (`settings.secrets.exec` — mutually exclusive with `file`, both layered
|
|
17
|
+
* UNDER the environment). The module also owns
|
|
18
|
+
* the shared config-source walk (`getProjectRequiredKeys`, from ./sources)
|
|
19
|
+
* that the `secrets:scan` / `secrets:check` CLIs enumerate keys with.
|
|
15
20
|
*
|
|
16
21
|
* **Syntax.** `${secret:KEY}` where `KEY` matches `^[A-Z_][A-Z0-9_]*$`.
|
|
17
22
|
* The placeholder must be the entire JSON string value — mixed-content
|
|
@@ -65,7 +70,16 @@
|
|
|
65
70
|
|
|
66
71
|
var defaultBackend = require('./backends/env');
|
|
67
72
|
var fileBackend = require('./backends/file');
|
|
73
|
+
var execBackend = require('./backends/exec');
|
|
68
74
|
var envFile = require('./env-file');
|
|
75
|
+
// Declaration validation is shared with the secrets:check CLI gate (#B408) —
|
|
76
|
+
// pure and require-free, so it adds nothing to the zero-setup load path.
|
|
77
|
+
var declaration = require('./declaration');
|
|
78
|
+
// The config-source walk (./sources) is a FACTORY over this module's own
|
|
79
|
+
// getRequiredKeys — instantiated here, at the composition root, so the two
|
|
80
|
+
// files never require each other in a cycle. `getRequiredKeys` is a hoisted
|
|
81
|
+
// function declaration, so passing it above its definition is safe.
|
|
82
|
+
var sources = require('./sources')(getRequiredKeys);
|
|
69
83
|
|
|
70
84
|
/**
|
|
71
85
|
* Regex matching an entire `${secret:KEY}` placeholder. The capture group
|
|
@@ -320,9 +334,17 @@ function getRequiredKeys(config) {
|
|
|
320
334
|
* @memberof module:lib/secrets
|
|
321
335
|
* @function selectBackend
|
|
322
336
|
* @param {object} config - The merged per-bundle config (`envConf[bundle][env]`)
|
|
323
|
-
* @returns {{resolve: function(string): string}} The env backend,
|
|
324
|
-
*
|
|
325
|
-
*
|
|
337
|
+
* @returns {{resolve: function(string): string}} The env backend, an
|
|
338
|
+
* env-over-file backend, or an env-over-exec backend — the two declared
|
|
339
|
+
* tiers are mutually exclusive by validation
|
|
340
|
+
* @throws {Error} If the block or a declared tier fails the shared
|
|
341
|
+
* declaration guards (./declaration): a non-object block, an unknown key,
|
|
342
|
+
* both tiers declared at once; a file entry that is non-string /
|
|
343
|
+
* whitespace-only / a `${secret:…}` placeholder / an unresolved `${…}`
|
|
344
|
+
* token / an empty path segment (`//`); an exec spec whose command is not
|
|
345
|
+
* a non-empty argv array of clean strings, or whose timeout is not a
|
|
346
|
+
* positive integer. Also propagates the exec backend's eager-fetch
|
|
347
|
+
* failures (timeout, missing binary, non-zero exit, bad output).
|
|
326
348
|
*
|
|
327
349
|
* @example
|
|
328
350
|
* // settings.json:
|
|
@@ -330,6 +352,14 @@ function getRequiredKeys(config) {
|
|
|
330
352
|
* // "${homedir}/${scope}/secrets.env"] }
|
|
331
353
|
* var backend = secrets.selectBackend(conf);
|
|
332
354
|
* secrets.resolve(conf, backend);
|
|
355
|
+
*
|
|
356
|
+
* @example
|
|
357
|
+
* // settings.json (exec bridge — the operator's own CLI does the fetch):
|
|
358
|
+
* // "secrets": { "exec": { "command": ["sops", "decrypt",
|
|
359
|
+
* // "--output-type", "json",
|
|
360
|
+
* // "${project}/secrets.enc.json"] } }
|
|
361
|
+
* var backend = secrets.selectBackend(conf);
|
|
362
|
+
* secrets.resolve(conf, backend);
|
|
333
363
|
*/
|
|
334
364
|
function selectBackend(config) {
|
|
335
365
|
if (config === null || typeof config !== 'object') {
|
|
@@ -337,74 +367,97 @@ function selectBackend(config) {
|
|
|
337
367
|
}
|
|
338
368
|
var content = config.content;
|
|
339
369
|
var settings = (content && typeof content === 'object') ? content.settings : null;
|
|
340
|
-
var
|
|
341
|
-
? settings.secrets.file
|
|
342
|
-
: undefined;
|
|
370
|
+
var block = (settings && typeof settings === 'object') ? settings.secrets : undefined;
|
|
343
371
|
|
|
344
|
-
if (typeof
|
|
372
|
+
if (typeof block === 'undefined' || block === null) {
|
|
345
373
|
return defaultBackend;
|
|
346
374
|
}
|
|
347
375
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
console.warn('[ secrets ] `settings.secrets.file` is an empty array — the file tier is disabled. Use `null` to opt out explicitly, or list at least one path.');
|
|
357
|
-
return defaultBackend;
|
|
376
|
+
// Block-level guards first — shape, unknown-key refusal (runtime parity
|
|
377
|
+
// with the schema's `additionalProperties: false`; a typo'd key used to
|
|
378
|
+
// degrade SILENTLY to env-only), and the file/exec exclusivity rule with
|
|
379
|
+
// its `"file": null` escape hatch. Shared with the secrets:check gate
|
|
380
|
+
// (./declaration), like every guard below — #B408's lesson.
|
|
381
|
+
var blockErrors = declaration.validateBlock(block);
|
|
382
|
+
if (blockErrors.length) {
|
|
383
|
+
throw new Error(blockErrors[0].message);
|
|
358
384
|
}
|
|
359
385
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
386
|
+
var declared = block.file;
|
|
387
|
+
if (typeof declared !== 'undefined' && declared !== null) {
|
|
388
|
+
var paths = Array.isArray(declared) ? declared : [declared];
|
|
389
|
+
if (!paths.length) {
|
|
390
|
+
// #B271 — `[]` disables the whole file tier exactly like `null`, but it is
|
|
391
|
+
// not one of the documented shapes, so an operator emptying the array to
|
|
392
|
+
// drop ONE layer silently drops the tier. Keep accepting it — an empty
|
|
393
|
+
// list genuinely means "no files", and refusing boot over an undocumented
|
|
394
|
+
// spelling would be a total outage for a harmless config — but say so once
|
|
395
|
+
// rather than disabling a security tier without a word.
|
|
396
|
+
console.warn('[ secrets ] `settings.secrets.file` is an empty array — the file tier is disabled. Use `null` to opt out explicitly, or list at least one path.');
|
|
397
|
+
return defaultBackend;
|
|
367
398
|
}
|
|
368
|
-
|
|
369
|
-
//
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
//
|
|
374
|
-
//
|
|
375
|
-
//
|
|
376
|
-
|
|
377
|
-
if (
|
|
378
|
-
throw new Error(
|
|
399
|
+
|
|
400
|
+
// The per-entry guards (#B271 entry shape incl. trim, the `secret:`
|
|
401
|
+
// placeholder refusal, the unresolved-token refusal, #B272's empty path
|
|
402
|
+
// segment) live in ./declaration, SHARED with the secrets:check CLI gate.
|
|
403
|
+
// #B408: two of those guards had drifted out of the checker's own copy —
|
|
404
|
+
// the gate green-lit configs this function refuses to boot — so the loop
|
|
405
|
+
// moved to one home, the same cure #B263 applied to the config-source
|
|
406
|
+
// walk. The full rationale for each guard travels with it.
|
|
407
|
+
var declErrors = declaration.validateFilePaths(paths);
|
|
408
|
+
if (declErrors.length) {
|
|
409
|
+
throw new Error(declErrors[0].message);
|
|
379
410
|
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
// collapsed to the same string. It refuses either way, deliberately: the
|
|
390
|
-
// dangerous case runs the bundle on the wrong credential in silence, and
|
|
391
|
-
// this file already refuses on the same reasoning when a declared layer
|
|
392
|
-
// exists but cannot be read. The benign case costs one character to fix
|
|
393
|
-
// and the message names it, so the error must NOT assert a cause it
|
|
394
|
-
// cannot know.
|
|
395
|
-
if (p.indexOf('//') > -1) {
|
|
396
|
-
throw new Error('`settings.secrets.file` contains an empty path segment (`//`), so it does not name the file it appears to — POSIX reads `<a>//<b>` as `<a>/<b>`. Either a `${…}` token resolved to an empty value (the path then silently drops a directory), or a token carries a trailing slash. Remove the doubled separator or fix the token: ' + p);
|
|
411
|
+
|
|
412
|
+
return fileBackend.build(paths);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
var execSpec = block.exec;
|
|
416
|
+
if (typeof execSpec !== 'undefined' && execSpec !== null) {
|
|
417
|
+
var execErrors = declaration.validateExecSpec(execSpec);
|
|
418
|
+
if (execErrors.length) {
|
|
419
|
+
throw new Error(execErrors[0].message);
|
|
397
420
|
}
|
|
421
|
+
// build() runs the fetch EAGERLY — a timeout / missing binary /
|
|
422
|
+
// non-zero exit / bad output throws here, and the caller reports it
|
|
423
|
+
// as a per-bundle boot refusal, exactly like an unreadable file
|
|
424
|
+
// layer (#B267). Fail fast, never hang: the fetch is SIGKILL-bounded.
|
|
425
|
+
return execBackend.build(execSpec);
|
|
398
426
|
}
|
|
399
427
|
|
|
400
|
-
|
|
428
|
+
// `{}`, `{file: null}`, `{exec: null}` — the pinned inherit / opt-out
|
|
429
|
+
// shapes: same default backend instance, byte-identical to no block.
|
|
430
|
+
return defaultBackend;
|
|
401
431
|
}
|
|
402
432
|
|
|
403
433
|
module.exports = {
|
|
434
|
+
// Config-source walk (which `${secret:KEY}` placeholders does a project /
|
|
435
|
+
// bundle require, walked from the same sources `loadBundleConfig` reads),
|
|
436
|
+
// re-exported from ./sources so that every consumer — the secrets:scan and
|
|
437
|
+
// secrets:check CLIs today, any boot-time consumer tomorrow — walks the
|
|
438
|
+
// SAME source set. Two hand-kept copies of this walk drifted once already
|
|
439
|
+
// (#B263: the gate and the runtime consulted different sources); one
|
|
440
|
+
// implementation makes that disagreement structurally impossible. The
|
|
441
|
+
// leaf readers ride along for the CLI handlers' own single-file needs.
|
|
442
|
+
getProjectRequiredKeys: sources.getProjectRequiredKeys,
|
|
443
|
+
loadManifest: sources.loadManifest,
|
|
444
|
+
readJsonSafe: sources.readJsonSafe,
|
|
445
|
+
resolveBundleSrc: sources.resolveBundleSrc,
|
|
404
446
|
resolve: resolve,
|
|
405
447
|
getResolvedPaths: getResolvedPaths,
|
|
406
448
|
getRequiredKeys: getRequiredKeys,
|
|
407
449
|
selectBackend: selectBackend,
|
|
450
|
+
// Declaration validation, re-exported from ./declaration so the
|
|
451
|
+
// secrets:check gate validates with the RUNTIME's own guards rather than
|
|
452
|
+
// a hand-kept copy — the copy drifted twice (#B408; drift class #B263).
|
|
453
|
+
validateFilePaths: declaration.validateFilePaths,
|
|
454
|
+
validateBlock: declaration.validateBlock,
|
|
455
|
+
validateExecSpec: declaration.validateExecSpec,
|
|
456
|
+
// The exec tier's fetch, re-exported so secrets:check runs the SAME
|
|
457
|
+
// spawn (same timeout, same SIGKILL bound, same output contract) the
|
|
458
|
+
// boot runs — a second spawn implementation in the checker would be the
|
|
459
|
+
// #B408 drift class on the semantics axis.
|
|
460
|
+
fetchExecMap: execBackend.fetchExecMap,
|
|
408
461
|
SECRET_RE: SECRET_RE,
|
|
409
462
|
// `.env`-style parsing, re-exported from ./env-file so that every reader
|
|
410
463
|
// of a given file agrees on what it means. See that module's header for
|