gina 0.6.22 → 0.6.23
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 +12 -0
- package/README.md +18 -16
- package/ROADMAP.md +13 -0
- package/framework/v0.6.23/VERSION +1 -0
- package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.js +22 -5
- package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +249 -249
- package/framework/v0.6.23/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.23/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.js +38 -8
- package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-nunjucks.js +6 -5
- package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-swig.js +10 -6
- package/framework/v0.6.23/core/controller/inline-script.js +108 -0
- package/framework/{v0.6.22 → v0.6.23}/core/server.isaac.js +13 -0
- package/framework/{v0.6.22 → v0.6.23}/core/server.js +129 -1
- package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/templates.json +3 -0
- package/framework/{v0.6.22 → v0.6.23}/core/template/conf/settings.json +63 -2
- package/framework/{v0.6.22 → v0.6.23}/core/template/conf/templates.json +1 -0
- package/framework/{v0.6.22 → v0.6.23}/lib/index.js +17 -0
- package/framework/{v0.6.22 → v0.6.23}/lib/merge/src/main.js +22 -5
- package/framework/v0.6.23/lib/security-headers-emitter/package.json +18 -0
- package/framework/v0.6.23/lib/security-headers-emitter/src/main.js +225 -0
- package/framework/v0.6.23/lib/sri/package.json +18 -0
- package/framework/v0.6.23/lib/sri/src/main.js +237 -0
- package/framework/{v0.6.22 → v0.6.23}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +2 -1
- package/package.json +3 -3
- package/schema/settings.json +47 -0
- package/types/index.d.ts +16 -0
- package/framework/v0.6.22/VERSION +0 -1
- package/framework/v0.6.22/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.22/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/AUTHORS +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/LICENSE +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/config.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/content.encoding +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/dev/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/gna.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/locales/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/locales/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/mime.types +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/model/entity.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/model/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/router.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/server.express.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/status.codes +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/console.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/context.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/path.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/task.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/helpers/text.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/async/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/config.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/job/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/job-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/math/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/model.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/proc.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/push/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/session-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/shell.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/state.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/url/README.md +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/url/index.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/validator.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.22 → v0.6.23}/lib/ws-session/src/main.js +0 -0
|
@@ -1444,15 +1444,22 @@ function SuperController(options) {
|
|
|
1444
1444
|
}
|
|
1445
1445
|
|
|
1446
1446
|
/**
|
|
1447
|
-
* Get node resources
|
|
1447
|
+
* Get node resources — builds the `<link>` (css) / `<script>` (js) tag
|
|
1448
|
+
* string for the view's declared assets.
|
|
1448
1449
|
*
|
|
1449
|
-
*
|
|
1450
|
-
*
|
|
1450
|
+
* #OW3 — when the bundle opted in via templates.json `"sriEnabled": true`,
|
|
1451
|
+
* every same-origin asset that resolves to a readable file on disk gets an
|
|
1452
|
+
* `integrity="sha384-..." crossorigin="anonymous"` attribute pair
|
|
1453
|
+
* (computed by lib/sri, fail-open), and its HTTP/2 preload hint is
|
|
1454
|
+
* suppressed (the hint carries no integrity metadata, so a hinted fetch
|
|
1455
|
+
* could not be matched to the integrity-checked consumer).
|
|
1456
|
+
*
|
|
1457
|
+
* @param {string} type - `'css'` or `'js'`
|
|
1451
1458
|
* @param {array} resArr
|
|
1452
1459
|
* @param {boolean} useWebroot
|
|
1453
1460
|
* @param {string} webrootStr - Webroot string prefix for startsWith check (#P1)
|
|
1454
1461
|
*
|
|
1455
|
-
* @returns {
|
|
1462
|
+
* @returns {string} tag string to inject into the layout
|
|
1456
1463
|
*
|
|
1457
1464
|
* @private
|
|
1458
1465
|
* */
|
|
@@ -1488,6 +1495,13 @@ function SuperController(options) {
|
|
|
1488
1495
|
hostname = local.options.conf.hostname
|
|
1489
1496
|
}
|
|
1490
1497
|
|
|
1498
|
+
// #OW3 — opt-in Subresource Integrity (templates.json `"sriEnabled": true`).
|
|
1499
|
+
// Attribute computation is fully delegated to lib/sri, which is
|
|
1500
|
+
// fail-open by design: an asset that cannot be honestly hashed
|
|
1501
|
+
// (external URL, unresolvable path, unreadable file) simply gets no
|
|
1502
|
+
// integrity attribute and loads exactly as before.
|
|
1503
|
+
var sriEnabled = (local.options.template.sriEnabled) ? true : false;
|
|
1504
|
+
|
|
1491
1505
|
|
|
1492
1506
|
if (
|
|
1493
1507
|
isProxyHost
|
|
@@ -1514,10 +1528,18 @@ function SuperController(options) {
|
|
|
1514
1528
|
if (useWebroot && !obj.url.startsWith(webrootStr) ) {
|
|
1515
1529
|
obj.url = local.options.conf.server.webroot + obj.url.substring(1);
|
|
1516
1530
|
}
|
|
1531
|
+
// #OW3 — SRI attribute pair for same-origin disk-resolvable
|
|
1532
|
+
// assets when the bundle opted in; '' otherwise (fail-open).
|
|
1533
|
+
var sriAttributes = (sriEnabled) ? lib.sri.getIntegrityAttributes(obj.url, local.options.conf, local.options.conf.server.webroot) : '';
|
|
1517
1534
|
// HTTP2 Push via Link
|
|
1518
1535
|
if (
|
|
1519
1536
|
/http\/2/.test(local.options.conf.server.protocol)
|
|
1520
1537
|
&& !self.isCacheless()
|
|
1538
|
+
// #OW3 — no preload hint for an SRI'd asset: the hint
|
|
1539
|
+
// carries no integrity metadata, so a hinted fetch may
|
|
1540
|
+
// not match the integrity-checked consumer and would
|
|
1541
|
+
// then be a wasted double-fetch.
|
|
1542
|
+
&& !sriAttributes
|
|
1521
1543
|
) {
|
|
1522
1544
|
local.options.template.h2Links += '<'+ obj.url +'>; as=style; rel=preload,'
|
|
1523
1545
|
}
|
|
@@ -1528,9 +1550,9 @@ function SuperController(options) {
|
|
|
1528
1550
|
// }
|
|
1529
1551
|
|
|
1530
1552
|
if (obj.media) {
|
|
1531
|
-
str += '\n\t\t<link href="'+ obj.url +'" media="'+ obj.media +'" rel="'+ obj.rel +'" type="'+ obj.type +'">';
|
|
1553
|
+
str += '\n\t\t<link href="'+ obj.url +'" media="'+ obj.media +'" rel="'+ obj.rel +'" type="'+ obj.type +'"'+ sriAttributes +'>';
|
|
1532
1554
|
} else {
|
|
1533
|
-
str += '\n\t\t<link href="'+ obj.url +'" rel="'+ obj.rel +'" type="'+ obj.type +'">';
|
|
1555
|
+
str += '\n\t\t<link href="'+ obj.url +'" rel="'+ obj.rel +'" type="'+ obj.type +'"'+ sriAttributes +'>';
|
|
1534
1556
|
}
|
|
1535
1557
|
}
|
|
1536
1558
|
break;
|
|
@@ -1543,10 +1565,18 @@ function SuperController(options) {
|
|
|
1543
1565
|
if (useWebroot && !obj.url.startsWith(webrootStr) ) {
|
|
1544
1566
|
obj.url = local.options.conf.server.webroot + obj.url.substring(1);
|
|
1545
1567
|
}
|
|
1568
|
+
// #OW3 — SRI attribute pair for same-origin disk-resolvable
|
|
1569
|
+
// assets when the bundle opted in; '' otherwise (fail-open).
|
|
1570
|
+
var sriAttributes = (sriEnabled) ? lib.sri.getIntegrityAttributes(obj.url, local.options.conf, local.options.conf.server.webroot) : '';
|
|
1546
1571
|
// HTTP2 Push via Link
|
|
1547
1572
|
if (
|
|
1548
1573
|
/http\/2/.test(local.options.conf.server.protocol)
|
|
1549
1574
|
&& !self.isCacheless()
|
|
1575
|
+
// #OW3 — no preload hint for an SRI'd asset: the hint
|
|
1576
|
+
// carries no integrity metadata, so a hinted fetch may
|
|
1577
|
+
// not match the integrity-checked consumer and would
|
|
1578
|
+
// then be a wasted double-fetch.
|
|
1579
|
+
&& !sriAttributes
|
|
1550
1580
|
) {
|
|
1551
1581
|
local.options.template.h2Links += '<'+ obj.url +'>; as=script; rel=preload,'
|
|
1552
1582
|
}
|
|
@@ -1564,11 +1594,11 @@ function SuperController(options) {
|
|
|
1564
1594
|
if (
|
|
1565
1595
|
obj.isExternalPlugin
|
|
1566
1596
|
) {
|
|
1567
|
-
local.options.template.externalPlugins.splice(1, 0, '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"></script>');
|
|
1597
|
+
local.options.template.externalPlugins.splice(1, 0, '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"'+ sriAttributes +'></script>');
|
|
1568
1598
|
}
|
|
1569
1599
|
else {
|
|
1570
1600
|
// normal case
|
|
1571
|
-
str += '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"></script>';
|
|
1601
|
+
str += '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"'+ sriAttributes +'></script>';
|
|
1572
1602
|
}
|
|
1573
1603
|
}
|
|
1574
1604
|
break;
|
|
@@ -122,6 +122,7 @@
|
|
|
122
122
|
|
|
123
123
|
var fs = require('fs');
|
|
124
124
|
var nodePath = require('path');
|
|
125
|
+
var inlineScript = require('./inline-script');
|
|
125
126
|
var inspectorRedact = require('lib/inspector-redact');
|
|
126
127
|
// #INS10 follow-up — prod-window HTML egress (no-HTML, render-json-style emit).
|
|
127
128
|
var emitInspectorWindowData = require('./inspector-window-emit');
|
|
@@ -450,16 +451,16 @@ function injectInspectorScripts(html, data, self, local, displayInspector) {
|
|
|
450
451
|
// `</script>` and `<!--` must be escaped inside JSON-serialised script
|
|
451
452
|
// content so the browser's HTML parser doesn't terminate the tag early
|
|
452
453
|
// or start an HTML comment. Matches render-swig.js:1096-1097.
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
454
|
+
// #B451 - see controller.render-swig.js: the blocklist this replaces was
|
|
455
|
+
// bypassable by a trailing space or slash after the script tag name.
|
|
456
|
+
var _safeJson = inlineScript.safeInlineJson(__gdPayload);
|
|
456
457
|
|
|
457
458
|
var __gdScript = '<script' + _cspNonceAttr + '>window.__ginaData = ' + _safeJson + ';</script>\n';
|
|
458
459
|
var _bundleName = (__gdUser.environment && __gdUser.environment.bundle) || '';
|
|
459
460
|
var __logsScript = '<script' + _cspNonceAttr + '>'
|
|
460
461
|
+ 'window.__ginaLogs = window.__ginaLogs || [];'
|
|
461
462
|
+ '(function(w){'
|
|
462
|
-
+ 'var _c=w.console,_l=w.__ginaLogs,_b=' +
|
|
463
|
+
+ 'var _c=w.console,_l=w.__ginaLogs,_b=' + inlineScript.safeInlineString(_bundleName) + ';'
|
|
463
464
|
+ '["log","info","warn","error","debug"].forEach(function(lvl){'
|
|
464
465
|
+ 'var orig=_c[lvl].bind(_c);'
|
|
465
466
|
+ '_c[lvl]=function(){'
|
|
@@ -1437,7 +1438,7 @@ module.exports = async function renderNunjucks(userData, displayInspector, errOp
|
|
|
1437
1438
|
? Date.now() - local._timeline.requestStart
|
|
1438
1439
|
: null;
|
|
1439
1440
|
var _njFlowPatch = (_njLateEntries.length > 0)
|
|
1440
|
-
? 'if(u&&u.flow){var _e=u.flow.entries,_p=' +
|
|
1441
|
+
? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + inlineScript.safeInlineJson(_njLateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
|
|
1441
1442
|
: '';
|
|
1442
1443
|
var _njPatchScript = '<script' + _cspNonceAttr + '>(function(d){'
|
|
1443
1444
|
+ 'var u=d&&d.user,g=d&&d.gina;'
|
|
@@ -12,6 +12,7 @@ const cache = new lib.Cache();
|
|
|
12
12
|
const renderCache = new lib.RenderCache();
|
|
13
13
|
var statusCodes = requireJSON( _( getPath('gina').core + '/status.codes') );
|
|
14
14
|
// Inspector secret redaction (dev-mode only — never touches the actual response body)
|
|
15
|
+
var inlineScript = require('./inline-script');
|
|
15
16
|
var inspectorRedact = require('lib/inspector-redact');
|
|
16
17
|
// #INS10 follow-up — prod-window HTML egress (no-HTML, render-json-style emit).
|
|
17
18
|
var emitInspectorWindowData = require('./inspector-window-emit');
|
|
@@ -1157,7 +1158,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1157
1158
|
var _cacheWeightBytes = Buffer.byteLength(htmlContent, 'utf8');
|
|
1158
1159
|
var _cacheServerMsFinal = _cacheRespEnd - local._timeline.requestStart;
|
|
1159
1160
|
var _cacheFlowPatch = (_cacheLateEntries.length > 0)
|
|
1160
|
-
? 'if(u&&u.flow){var _e=u.flow.entries,_p=' +
|
|
1161
|
+
? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + inlineScript.safeInlineJson(_cacheLateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
|
|
1161
1162
|
: '';
|
|
1162
1163
|
var _cachePatchScript = '<script' + _cspNonceAttr + '>(function(d){'
|
|
1163
1164
|
+ 'var u=d&&d.user,g=d&&d.gina;'
|
|
@@ -1510,9 +1511,12 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1510
1511
|
});
|
|
1511
1512
|
|
|
1512
1513
|
var __gdScript = '<script' + _cspNonceTplAttr + '>window.__ginaData = '
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1514
|
+
// #B451 - the previous blocklist here matched only the literal
|
|
1515
|
+
// '</' + 'script>' and '<!--'. It was bypassable: a trailing space
|
|
1516
|
+
// or slash after the tag name also closes the block per the HTML5
|
|
1517
|
+
// script-data-end-tag-name state, and both injected when measured.
|
|
1518
|
+
// The helper escapes '<' itself, so no terminator spelling survives.
|
|
1519
|
+
+ inlineScript.safeInlineJson(__gdPayload)
|
|
1516
1520
|
+ ';</script>\n';
|
|
1517
1521
|
|
|
1518
1522
|
// Expose last snapshot for engine.io push and /_gina/agent SSE
|
|
@@ -1528,7 +1532,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1528
1532
|
var __logsScript = '<script' + _cspNonceTplAttr + '>'
|
|
1529
1533
|
+ 'window.__ginaLogs = window.__ginaLogs || [];'
|
|
1530
1534
|
+ '(function(w){'
|
|
1531
|
-
+ 'var _c=w.console,_l=w.__ginaLogs,_b=
|
|
1535
|
+
+ 'var _c=w.console,_l=w.__ginaLogs,_b=' + inlineScript.safeInlineString(__gdUser.environment && __gdUser.environment.bundle || '') + ';'
|
|
1532
1536
|
+ '["log","info","warn","error","debug"].forEach(function(lvl){'
|
|
1533
1537
|
+ 'var orig=_c[lvl].bind(_c);'
|
|
1534
1538
|
+ '_c[lvl]=function(){'
|
|
@@ -1980,7 +1984,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1980
1984
|
var _weightBytesFinal = Buffer.byteLength(htmlContent, 'utf8');
|
|
1981
1985
|
var _serverMsFinal = _respEnd - local._timeline.requestStart;
|
|
1982
1986
|
var _flowPatch = (_lateEntries.length > 0)
|
|
1983
|
-
? 'if(u&&u.flow){var _e=u.flow.entries,_p=' +
|
|
1987
|
+
? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + inlineScript.safeInlineJson(_lateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
|
|
1984
1988
|
: '';
|
|
1985
1989
|
var _patchScript = '<script' + _cspNonceAttr + '>(function(d){'
|
|
1986
1990
|
+ 'var u=d&&d.user,g=d&&d.gina;'
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe serialisation of server-side data into an inline `<script>` block.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this module exists
|
|
5
|
+
*
|
|
6
|
+
* A value serialised into an inline script is not in HTML text context — it is in
|
|
7
|
+
* *script data* context, where the HTML tokenizer scans for a script-data end tag
|
|
8
|
+
* and hands everything before it to the JS parser. HTML-escaping is therefore the
|
|
9
|
+
* WRONG tool (it would corrupt the JSON); the right one is to make the `<`
|
|
10
|
+
* character incapable of starting any tag-like sequence at all.
|
|
11
|
+
*
|
|
12
|
+
* ## Why `<` rather than a `</script>` blocklist
|
|
13
|
+
*
|
|
14
|
+
* The previous guard was two `.replace()` calls matching the literal `</script>`
|
|
15
|
+
* and `<!--`. That is a blocklist, and it was incomplete: per the HTML5
|
|
16
|
+
* *script data end tag name state*, the tag name may be followed by TAB, LF, FF,
|
|
17
|
+
* SPACE or `/` as well as `>`. Measured with a spec-compliant parser, both
|
|
18
|
+
* `</script >` and `</script/>` terminated the block and injected, while the
|
|
19
|
+
* blocklist let them through untouched — including at the one site that was
|
|
20
|
+
* considered protected.
|
|
21
|
+
*
|
|
22
|
+
* Escaping `<` itself is allowlist-shaped: it neutralises `</script` in every
|
|
23
|
+
* spelling, `<!--`, and a nested `<script` opener in one step, and cannot be
|
|
24
|
+
* defeated by a terminator variant nobody enumerated. `<` is a valid JSON
|
|
25
|
+
* escape, so the emitted text still `JSON.parse`s back to a byte-identical value
|
|
26
|
+
* (measured across every payload shape in the regression suite).
|
|
27
|
+
*
|
|
28
|
+
* U+2028 / U+2029 are additionally escaped: they are legal inside a JSON string
|
|
29
|
+
* but were line terminators to the JS parser before ES2019, so an unescaped one
|
|
30
|
+
* turns a valid payload into a `SyntaxError`. (This is not theoretical — a literal
|
|
31
|
+
* U+2028 in the probe written to verify this module crashed the parser reading it.)
|
|
32
|
+
*
|
|
33
|
+
* @module core/controller/inline-script
|
|
34
|
+
*/
|
|
35
|
+
'use strict';
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* U+2028 LINE SEPARATOR / U+2029 PARAGRAPH SEPARATOR.
|
|
39
|
+
* Built with `RegExp` + `String.fromCharCode` rather than regex literals so that
|
|
40
|
+
* this source file never contains the raw characters — a literal one here would
|
|
41
|
+
* be a line terminator to some parsers reading this very file.
|
|
42
|
+
*
|
|
43
|
+
* @constant {RegExp}
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
var RE_LINE_SEPARATOR = new RegExp(String.fromCharCode(0x2028), 'g');
|
|
47
|
+
/** @constant {RegExp} @private */
|
|
48
|
+
var RE_PARAGRAPH_SEPARATOR = new RegExp(String.fromCharCode(0x2029), 'g');
|
|
49
|
+
/** @constant {RegExp} @private */
|
|
50
|
+
var RE_LT = /</g;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Escape an already-serialised JS/JSON string literal so it is safe to emit inside
|
|
54
|
+
* an inline `<script>` block. Operates on TEXT, not on a value — use
|
|
55
|
+
* {@link safeInlineJson} unless you have already stringified.
|
|
56
|
+
*
|
|
57
|
+
* @param {string} text - serialised JS source text (typically `JSON.stringify` output)
|
|
58
|
+
* @returns {string} the same text with `<` and the JS line separators escaped
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* escapeForInlineScript('{"a":"x</script >y"}');
|
|
62
|
+
* // => '{"a":"x\\u003c/script >y"}'
|
|
63
|
+
*/
|
|
64
|
+
function escapeForInlineScript(text) {
|
|
65
|
+
return String(text)
|
|
66
|
+
.replace(RE_LT, '\\u003c')
|
|
67
|
+
.replace(RE_LINE_SEPARATOR, '\\u2028')
|
|
68
|
+
.replace(RE_PARAGRAPH_SEPARATOR, '\\u2029');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Serialise a value to JSON that is safe to embed in an inline `<script>`.
|
|
73
|
+
* This is the function every emission site should use.
|
|
74
|
+
*
|
|
75
|
+
* @param {*} value - any JSON-serialisable value
|
|
76
|
+
* @returns {string} JSON text that cannot break out of a script block
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* var payload = { client: { fullname: 'Zed</script ><img src=y onerror=1>' } };
|
|
80
|
+
* '<script>window.__ginaData = ' + safeInlineJson(payload) + ';</script>';
|
|
81
|
+
* // the injected markup is inert, and JSON.parse returns the original string
|
|
82
|
+
*/
|
|
83
|
+
function safeInlineJson(value) {
|
|
84
|
+
return escapeForInlineScript(JSON.stringify(value));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Serialise a single string as a safe JS string LITERAL (quotes included) for
|
|
89
|
+
* interpolation into inline script source.
|
|
90
|
+
*
|
|
91
|
+
* Use this instead of hand-writing `'"' + str + '"'`: that form breaks on an
|
|
92
|
+
* embedded quote or backslash regardless of any script-terminator concern.
|
|
93
|
+
*
|
|
94
|
+
* @param {string} str - the string to embed
|
|
95
|
+
* @returns {string} a quoted, escaped JS string literal
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* 'var _b=' + safeInlineString(bundleName) + ';'
|
|
99
|
+
*/
|
|
100
|
+
function safeInlineString(str) {
|
|
101
|
+
return escapeForInlineScript(JSON.stringify(String(str == null ? '' : str)));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
module.exports = {
|
|
105
|
+
escapeForInlineScript : escapeForInlineScript,
|
|
106
|
+
safeInlineJson : safeInlineJson,
|
|
107
|
+
safeInlineString : safeInlineString
|
|
108
|
+
};
|
|
@@ -1049,6 +1049,19 @@ function ServerEngineClass(options) {
|
|
|
1049
1049
|
if (!options.hidePoweredBy) {
|
|
1050
1050
|
headers['X-Powered-By'] = 'Gina/' + GINA_VERSION;
|
|
1051
1051
|
}
|
|
1052
|
+
// #OW1 — engine-agnostic security headers (OWASP A02), applied at the
|
|
1053
|
+
// SAME writeHead sites this helper already backs. writeHead commits
|
|
1054
|
+
// headers directly, bypassing setHeader, so the core/server.js twin
|
|
1055
|
+
// cannot reach them — this is the isaac half of ONE shared emitter
|
|
1056
|
+
// (lib/security-headers-emitter), not a drifting copy.
|
|
1057
|
+
// Every call site of this helper is a /_gina/* endpoint (measured
|
|
1058
|
+
// 29/29), and those are deliberately cross-origin — the metrics /
|
|
1059
|
+
// health / SSE handlers emit `access-control-allow-origin: *` and the
|
|
1060
|
+
// Inspector's cross-origin GET/SSE channels are a documented design —
|
|
1061
|
+
// so the cross-origin-isolating headers (coop/corp) are exempted here
|
|
1062
|
+
// unconditionally. Signature deliberately unchanged: no call site
|
|
1063
|
+
// needs editing.
|
|
1064
|
+
headers = lib.securityHeadersEmitter.applyToGinaEndpointHeaders(options.securityHeaders, headers);
|
|
1052
1065
|
return headers;
|
|
1053
1066
|
};
|
|
1054
1067
|
|
|
@@ -119,6 +119,49 @@ var _mintErrorRef = function(supplied) {
|
|
|
119
119
|
// the logger's own failure modes — which also means it bypasses log redaction
|
|
120
120
|
// (#B433): keep messages free of URLs and credentials. Format changes must
|
|
121
121
|
// preserve `] [debug ][gina:` — test/core/debug-log.test.js pins the contract.
|
|
122
|
+
/**
|
|
123
|
+
* #OW2 — parse a byte-size setting (`"64MB"`, `"512KB"`, `"2048B"`) into bytes.
|
|
124
|
+
*
|
|
125
|
+
* Deliberately SEPARATE from the multipart `parseSize` helper inside the upload
|
|
126
|
+
* branch, which this arc does not touch: that helper sits on the upload path and
|
|
127
|
+
* carries its own source pins, and refactoring a working path as a side-effect of
|
|
128
|
+
* adding a body cap is the "while I'm here" shape that produced the #B446
|
|
129
|
+
* follow-up regression. The two agree by construction on every unit and are pinned
|
|
130
|
+
* against each other in `test/core/body-size-cap.test.js` so they cannot drift;
|
|
131
|
+
* unifying them belongs to a future upload/merge arc (#B457).
|
|
132
|
+
*
|
|
133
|
+
* Bare numbers are MB for back-compat with the multipart convention.
|
|
134
|
+
*
|
|
135
|
+
* @param {string|number} value - e.g. `"64MB"`, `"512KB"`, `2` (= 2MB)
|
|
136
|
+
* @returns {number} bytes, or NaN when unparseable
|
|
137
|
+
* @private
|
|
138
|
+
* @example
|
|
139
|
+
* parseByteSize('64MB'); // 67108864
|
|
140
|
+
* parseByteSize('512KB'); // 524288
|
|
141
|
+
* parseByteSize(2); // 2097152
|
|
142
|
+
*/
|
|
143
|
+
var parseByteSize = function(value) {
|
|
144
|
+
if ( typeof(value) == 'number' ) { return value * 1024 * 1024; } // bare number = MB
|
|
145
|
+
if ( typeof(value) != 'string' ) { return NaN; }
|
|
146
|
+
var m = value.trim().match(/^([0-9]*\.?[0-9]+)\s*(b|kb|k|mb|m|gb|g)?$/i);
|
|
147
|
+
if ( !m ) { return NaN; }
|
|
148
|
+
var n = parseFloat(m[1]);
|
|
149
|
+
switch ( (m[2] || 'mb').toLowerCase() ) {
|
|
150
|
+
case 'b':
|
|
151
|
+
return n;
|
|
152
|
+
case 'k':
|
|
153
|
+
case 'kb':
|
|
154
|
+
return n * 1024;
|
|
155
|
+
case 'g':
|
|
156
|
+
case 'gb':
|
|
157
|
+
return n * 1024 * 1024 * 1024;
|
|
158
|
+
case 'm':
|
|
159
|
+
case 'mb':
|
|
160
|
+
default:
|
|
161
|
+
return n * 1024 * 1024;
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
|
|
122
165
|
var _isDebugLog = function() {
|
|
123
166
|
return process.env.LOG_LEVEL === 'debug' || process.env.LOG_LEVEL === 'trace';
|
|
124
167
|
};
|
|
@@ -4380,6 +4423,23 @@ function Server(options) {
|
|
|
4380
4423
|
response.setHeader('X-Powered-By', 'Gina/'+ GINA_VERSION );
|
|
4381
4424
|
}
|
|
4382
4425
|
|
|
4426
|
+
// #OW1 — engine-agnostic security headers (OWASP A02). Placed beside
|
|
4427
|
+
// the hidePoweredBy gate because it needs the SAME coverage: routed
|
|
4428
|
+
// responses, static-asset serves, static/traversal 404s and framework
|
|
4429
|
+
// error pages, none of which traverse the express middleware chain —
|
|
4430
|
+
// and on the default isaac engine NOTHING traverses it (measured: the
|
|
4431
|
+
// only consumer of server._expressMiddlewares is the WS session
|
|
4432
|
+
// binder, name-filtered, against an inert response). The isaac
|
|
4433
|
+
// writeHead sites are covered by the twin call inside
|
|
4434
|
+
// _setPoweredByHeader(). First-writer-wins inside the emitter, so an
|
|
4435
|
+
// explicitly mounted #HDR plugin or an env.json
|
|
4436
|
+
// `server.response.header` entry always wins.
|
|
4437
|
+
lib.securityHeadersEmitter.applyToResponse(
|
|
4438
|
+
self.conf[self.appName][self.env].server.securityHeaders,
|
|
4439
|
+
request,
|
|
4440
|
+
response
|
|
4441
|
+
);
|
|
4442
|
+
|
|
4383
4443
|
// MS1 — echo the always-on correlation id on every response so a
|
|
4384
4444
|
// caller / LB / APM can read it back (the read-side of X-Request-Id
|
|
4385
4445
|
// propagation). Ungated (independent of log format) and guarded
|
|
@@ -6246,7 +6306,58 @@ function Server(options) {
|
|
|
6246
6306
|
} else {
|
|
6247
6307
|
|
|
6248
6308
|
|
|
6309
|
+
// #OW2 — bound the non-multipart body accumulation (OWASP A10).
|
|
6310
|
+
// The accumulator below is the ONLY unbounded growth on the request
|
|
6311
|
+
// path: multipart is capped by busboy + maxFieldsSize, but a plain
|
|
6312
|
+
// JSON/urlencoded body grew until the process died. Counting the RAW
|
|
6313
|
+
// chunk bytes (not the decoded string length) is what a cap has to
|
|
6314
|
+
// measure — a multi-byte UTF-8 body is larger on the wire than its
|
|
6315
|
+
// string length suggests.
|
|
6316
|
+
//
|
|
6317
|
+
// Two thresholds, deliberately:
|
|
6318
|
+
// - `server.maxBodySize` ENFORCES (413 + destroy). Defaults to a
|
|
6319
|
+
// permissive 64MB: the ceiling exists to stop unbounded growth,
|
|
6320
|
+
// not to police payload shapes, and the framework's OWN
|
|
6321
|
+
// inter-bundle `self.query()` hop posts through this same pipeline
|
|
6322
|
+
// with no size contract — a tight enforced default would break
|
|
6323
|
+
// gina with gina, in a shape that reads as a consumer bug.
|
|
6324
|
+
// - `server.maxBodySizeWarn` only WARNS (default 2MB), so every
|
|
6325
|
+
// consumer measures their real distribution from their own logs
|
|
6326
|
+
// before a stricter ceiling is ever considered. Precedent: the
|
|
6327
|
+
// #B238 warn-not-flip disclosure gate.
|
|
6328
|
+
// `0` / unset / unparseable disables either threshold (the
|
|
6329
|
+
// maxFieldsSize convention — an invalid cap must not reject
|
|
6330
|
+
// everything).
|
|
6331
|
+
var _bodySrv = ( self.conf[self.appName][self.env].server || {} );
|
|
6332
|
+
var _maxBody = parseByteSize(_bodySrv.maxBodySize);
|
|
6333
|
+
var _maxBodyWarn = parseByteSize(_bodySrv.maxBodySizeWarn);
|
|
6334
|
+
var _bodyBytes = 0;
|
|
6335
|
+
var _bodyWarned = false;
|
|
6336
|
+
var _bodyRejected = false;
|
|
6337
|
+
|
|
6249
6338
|
request.on('data', function(chunk){ // for this to work, don't forget the name attr for you form elements
|
|
6339
|
+
if ( _bodyRejected ) { return }
|
|
6340
|
+
|
|
6341
|
+
_bodyBytes += chunk.length;
|
|
6342
|
+
|
|
6343
|
+
if ( _maxBodyWarn > 0 && !_bodyWarned && _bodyBytes > _maxBodyWarn ) {
|
|
6344
|
+
_bodyWarned = true;
|
|
6345
|
+
// No URL, no body content — #B433 keeps log lines free of
|
|
6346
|
+
// request data; the method + byte count is the actionable part.
|
|
6347
|
+
console.warn('[ SERVER ] Request body exceeded server.maxBodySizeWarn ('
|
|
6348
|
+
+ _bodySrv.maxBodySizeWarn + ') — '+ request.method +' body is over '
|
|
6349
|
+
+ _maxBodyWarn +' bytes and still accumulating. Not rejected.');
|
|
6350
|
+
}
|
|
6351
|
+
|
|
6352
|
+
if ( _maxBody > 0 && _bodyBytes > _maxBody ) {
|
|
6353
|
+
_bodyRejected = true;
|
|
6354
|
+
request.body = '';
|
|
6355
|
+
throwError(response, 413, 'Request body exceeded maximum size [ '+ _bodySrv.maxBodySize +' ]', next);
|
|
6356
|
+
// Stop the peer streaming into a request nobody will read.
|
|
6357
|
+
try { request.destroy() } catch (destroyErr) {}
|
|
6358
|
+
return
|
|
6359
|
+
}
|
|
6360
|
+
|
|
6250
6361
|
if ( typeof(request.body) == 'object') {
|
|
6251
6362
|
request.body = '';
|
|
6252
6363
|
}
|
|
@@ -6254,6 +6365,13 @@ function Server(options) {
|
|
|
6254
6365
|
});
|
|
6255
6366
|
|
|
6256
6367
|
request.on('end', function onEnd() {
|
|
6368
|
+
// #OW2 — a rejected body already answered 413 and destroyed the
|
|
6369
|
+
// stream; dispatching here would double-respond (and parse a body
|
|
6370
|
+
// we deliberately discarded). `destroy()` normally prevents 'end'
|
|
6371
|
+
// from firing at all, but that is a race against already-buffered
|
|
6372
|
+
// chunks, not a guarantee — the flag is the guarantee.
|
|
6373
|
+
if ( _bodyRejected ) { return }
|
|
6374
|
+
|
|
6257
6375
|
// Preserve the exact unparsed body BEFORE processRequestData mutates
|
|
6258
6376
|
// request.body into the parsed object. Inbound webhooks that
|
|
6259
6377
|
// authenticate via an HMAC computed over the raw request bytes need
|
|
@@ -6277,7 +6395,17 @@ function Server(options) {
|
|
|
6277
6395
|
|
|
6278
6396
|
|
|
6279
6397
|
// Timeout in milliseconds - e.g.: (1000x60)x2 => 2 min
|
|
6280
|
-
|
|
6398
|
+
// #OW2 — configurable via `settings.json > server.timeout`; DEFAULT 0
|
|
6399
|
+
// (unlimited) is deliberate and must stay the default: gina serves SSE
|
|
6400
|
+
// (`text/event-stream`) and WebSockets, and a finite whole-request clock
|
|
6401
|
+
// kills both. The slow-body case a finite value would cover is already
|
|
6402
|
+
// closed by `server.maxBodySize` (the accumulator hits its ceiling
|
|
6403
|
+
// regardless of drip rate); connection-level bounds come from
|
|
6404
|
+
// keepAliveTimeout / headersTimeout and node's own defaults.
|
|
6405
|
+
// An unparseable value falls back to 0 rather than to something arbitrary.
|
|
6406
|
+
var _srvTimeoutCfg = self.conf[self.appName][self.env].server.timeout;
|
|
6407
|
+
var _srvTimeout = ( typeof(_srvTimeoutCfg) == 'undefined' ) ? 0 : parseTimeout(_srvTimeoutCfg);
|
|
6408
|
+
self.instance.timeout = ( typeof(_srvTimeout) == 'number' && _srvTimeout >= 0 ) ? _srvTimeout : 0;
|
|
6281
6409
|
// Port by default would be 3100
|
|
6282
6410
|
// '::' as the binding address (ipv4 & ipv6)
|
|
6283
6411
|
// To check: netstat -tuln
|
package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/templates.json
RENAMED
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
}
|
|
18
18
|
],
|
|
19
19
|
"javascriptsDeferEnabled": true,
|
|
20
|
+
// opt-in Subresource Integrity: adds integrity= + crossorigin= to same-origin
|
|
21
|
+
// <script>/<link> tags whose files resolve on disk (fail-open otherwise)
|
|
22
|
+
//"sriEnabled": true,
|
|
20
23
|
"javascripts": [
|
|
21
24
|
// "/js/vendor/jquery/jquery-3.1.0.min.js",
|
|
22
25
|
// "/js/vendor/modernizr-2.8.3.min.js",
|
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"server": {
|
|
3
3
|
"engine": "isaac",
|
|
4
|
+
// #OW2 (OWASP A10) — bound the NON-MULTIPART request body. Multipart uploads
|
|
5
|
+
// are capped separately by busboy + `upload.maxFieldsSize`; a plain JSON or
|
|
6
|
+
// urlencoded body previously accumulated with no ceiling at all, so a single
|
|
7
|
+
// large request was an unbounded-memory exposure.
|
|
8
|
+
//
|
|
9
|
+
// `maxBodySize` ENFORCES: a body exceeding it is answered 413 and the stream
|
|
10
|
+
// is destroyed. The 64MB default is deliberately permissive — the ceiling
|
|
11
|
+
// exists to stop unbounded growth, not to police payload shapes, and gina's
|
|
12
|
+
// OWN inter-bundle `self.query()` hop posts through this same pipeline with
|
|
13
|
+
// no size contract, so a tight enforced default would break gina with gina.
|
|
14
|
+
//
|
|
15
|
+
// `maxBodySizeWarn` only LOGS (no rejection), so you can measure your real
|
|
16
|
+
// body-size distribution from your own logs before choosing a stricter
|
|
17
|
+
// ceiling. Accepts B/KB/MB/GB (case-insensitive); a BARE NUMBER means MB.
|
|
18
|
+
// `0` (or an unparseable value) disables that threshold — an invalid cap
|
|
19
|
+
// must never reject everything.
|
|
20
|
+
"maxBodySize": "64MB",
|
|
21
|
+
"maxBodySizeWarn": "2MB",
|
|
22
|
+
// #OW2 — whole-request socket timeout, in ms or with a unit suffix ("5m").
|
|
23
|
+
// DEFAULT 0 = unlimited, and that default is deliberate, not an oversight:
|
|
24
|
+
// gina serves Server-Sent Events (`text/event-stream`) and WebSockets, both
|
|
25
|
+
// of which are long-lived by design and would be killed by a finite
|
|
26
|
+
// whole-request clock. The slow-body attack this would otherwise mitigate is
|
|
27
|
+
// already closed by `maxBodySize` above (the accumulator hits its ceiling
|
|
28
|
+
// regardless of how slowly the peer drips), and connection-level bounds come
|
|
29
|
+
// from `keepAliveTimeout` / `headersTimeout` below plus node's own defaults.
|
|
30
|
+
// Set a finite value only if you serve no streaming endpoints.
|
|
31
|
+
"timeout": 0,
|
|
4
32
|
// #HDR8 Phase 2 — framework-wide X-Powered-By suppression, BOTH engines. When
|
|
5
33
|
// `true`, the framework skips its X-Powered-By emission everywhere it
|
|
6
34
|
// originates: the engine-agnostic per-request `setHeader` in
|
|
@@ -12,8 +40,41 @@
|
|
|
12
40
|
// writeHead emit site (plus the routing.json asset `setHeader` site).
|
|
13
41
|
// gina.plugins.HidePoweredBy() remains available as a middleware-shaped
|
|
14
42
|
// remover for routed responses.
|
|
15
|
-
//
|
|
16
|
-
|
|
43
|
+
// #OW1 (OWASP A02) — DEFAULT FLIPPED TO `true` in 0.6.23. The framework no
|
|
44
|
+
// longer discloses its name and exact version on every response by default;
|
|
45
|
+
// a version banner is free reconnaissance and buys the operator nothing.
|
|
46
|
+
// Set `false` to restore the pre-0.6.23 emission.
|
|
47
|
+
// NOTE: with the render/output cache enabled and `server.cache.name` unset,
|
|
48
|
+
// `true` raises the documented #B238 boot warn — the cache still names the
|
|
49
|
+
// framework on the wire via `Cache-Status`; set any token to close that too.
|
|
50
|
+
"hidePoweredBy": true,
|
|
51
|
+
// #OW1 (OWASP A02) — framework-level, ENGINE-AGNOSTIC security headers, new
|
|
52
|
+
// in 0.6.23. This is deliberately NOT the top-level `securityHeaders` block
|
|
53
|
+
// below: that one configures the #HDR1-14 PLUGINS when a bundle mounts them.
|
|
54
|
+
// This one is emitted by the framework itself, because the plugins are
|
|
55
|
+
// express middleware and the DEFAULT `isaac` engine never runs the express
|
|
56
|
+
// chain for HTTP responses — a mounted orchestrator emits nothing there.
|
|
57
|
+
//
|
|
58
|
+
// Precedence is FIRST-WRITER-WINS: any header already set by a mounted
|
|
59
|
+
// plugin, by `env.json > server.response.header`, or by an upstream proxy is
|
|
60
|
+
// left untouched. Set `"enabled": false` to restore pre-0.6.23 behaviour.
|
|
61
|
+
//
|
|
62
|
+
// ON by default (cannot break a working application):
|
|
63
|
+
// x-content-type-options: nosniff · x-download-options: noopen
|
|
64
|
+
// x-permitted-cross-domain-policies: none · x-xss-protection: 0
|
|
65
|
+
// referrer-policy: strict-origin-when-cross-origin
|
|
66
|
+
// x-dns-prefetch-control: off · origin-agent-cluster: ?1
|
|
67
|
+
//
|
|
68
|
+
// OPT-IN (each breaks a legitimate deployment shape — set to `true`):
|
|
69
|
+
// "xFrameOptions" — SAMEORIGIN; breaks embedding your app cross-origin.
|
|
70
|
+
// "coop" — severs `window.opener`; breaks OAuth/payment popups.
|
|
71
|
+
// "corp" — blocks cross-origin loading of your assets.
|
|
72
|
+
// "hsts" — 180-day https commitment; emitted over http too.
|
|
73
|
+
// `coop`/`corp` are never applied to `/_gina/*`, which is deliberately
|
|
74
|
+
// cross-origin (metrics/health/SSE emit `access-control-allow-origin: *`).
|
|
75
|
+
"securityHeaders": {
|
|
76
|
+
"enabled": true
|
|
77
|
+
},
|
|
17
78
|
// #H11 — opt-in Alt-Svc HTTP/3-advertisement header. When `true`, every
|
|
18
79
|
// routed (user-facing) response carries `Alt-Svc: h3=":443"; ma=86400`,
|
|
19
80
|
// advertising HTTP/3 (QUIC) availability so QUIC-capable clients upgrade
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
28
|
"javascriptsDeferEnabled": true, // will place scripts in defer mode in the head by default. If false, will place in the footer
|
|
29
|
+
"sriEnabled": false, // opt-in Subresource Integrity: adds integrity= + crossorigin= to same-origin <script>/<link> tags whose files resolve on disk; external URLs and unresolvable paths are skipped (fail-open)
|
|
29
30
|
"javascripts": [
|
|
30
31
|
{
|
|
31
32
|
"name" : "gina",
|
|
@@ -146,6 +146,23 @@ function Lib() {
|
|
|
146
146
|
// security-bearing, which keeps it out of the hot-reload path entirely
|
|
147
147
|
// (the lib/authn precedent).
|
|
148
148
|
maintenance : require('./maintenance'),
|
|
149
|
+
// #OW1 — engine-agnostic security-header emission (OWASP A02). The
|
|
150
|
+
// #HDR1-14 plugins are express middleware, and the DEFAULT engine
|
|
151
|
+
// (isaac) never runs the express chain for HTTP responses, so a mounted
|
|
152
|
+
// orchestrator emits nothing there; this is the framework-side twin, in
|
|
153
|
+
// the same shape as the #HDR8 hidePoweredBy gate.
|
|
154
|
+
// PLAIN require (NOT _require) for the same reason as admin/maintenance
|
|
155
|
+
// above: a stateless pure-function leaf with no state to hot-reload, and
|
|
156
|
+
// security-bearing, which keeps it out of the hot-reload path entirely.
|
|
157
|
+
securityHeadersEmitter : require('./security-headers-emitter'),
|
|
158
|
+
// #OW3 — Subresource Integrity attribute computation (OWASP A08),
|
|
159
|
+
// consumed by the controller's resource builder when a bundle opts in
|
|
160
|
+
// via templates.json `"sriEnabled": true`. PLAIN require (NOT _require):
|
|
161
|
+
// security-bearing like the emitter/authn precedent above, and it holds
|
|
162
|
+
// a module-scope stat-validated hash cache that a per-request re-require
|
|
163
|
+
// would pointlessly discard (the cache can never go stale — every
|
|
164
|
+
// lookup re-stats the file — so surviving reloads costs nothing).
|
|
165
|
+
sri : require('./sri'),
|
|
149
166
|
// #AI6 — Async-job primitive. Holds an in-memory job registry, a
|
|
150
167
|
// concurrency-limited worker, and a self-contained unref'd setInterval
|
|
151
168
|
// sweep timer at module scope. Like State / logger below, it MUST use a
|