gina 0.6.7 → 0.6.8
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 +22 -0
- package/README.md +27 -26
- package/ROADMAP.md +3 -2
- package/framework/v0.6.8/VERSION +1 -0
- package/framework/{v0.6.7 → v0.6.8}/core/config.js +10 -0
- package/framework/v0.6.8/core/connectors/couchbase/lib/storage-store.js +1074 -0
- package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.js +532 -22
- package/framework/v0.6.8/core/controller/controller.render-stream.js +270 -0
- package/framework/{v0.6.7 → v0.6.8}/core/gna.js +10 -2
- package/framework/{v0.6.7 → v0.6.8}/core/router.js +30 -10
- package/framework/{v0.6.7 → v0.6.8}/core/server.isaac.js +42 -7
- package/framework/{v0.6.7 → v0.6.8}/lib/cmd/storage/gc.js +6 -0
- package/framework/{v0.6.7 → v0.6.8}/lib/cmd/storage/stats.js +7 -0
- package/framework/{v0.6.7 → v0.6.8}/lib/cmd/storage/verify.js +6 -0
- package/framework/{v0.6.7 → v0.6.8}/lib/storage/src/local-cas.js +107 -9
- package/framework/v0.6.8/lib/storage/src/local-stream.js +1418 -0
- package/framework/{v0.6.7 → v0.6.8}/lib/storage/src/local.js +177 -16
- package/framework/{v0.6.7 → v0.6.8}/lib/storage/src/main.js +406 -25
- package/framework/{v0.6.7 → v0.6.8}/lib/storage/src/meta-store.js +13 -2
- package/framework/v0.6.8/lib/storage/src/s3.js +759 -0
- package/framework/{v0.6.7 → v0.6.8}/lib/storage/src/util.js +26 -1
- package/framework/{v0.6.7 → v0.6.8}/lib/storage-store.js +33 -23
- package/framework/{v0.6.7 → v0.6.8}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +22 -47
- package/package.json +3 -3
- package/schema/routing.json +4 -0
- package/schema/settings.json +84 -10
- package/script/check_no_local_leak.js +2 -1
- package/script/retry_lockfile_sync.js +2 -1
- package/script/soak/storage-couchbase/README.md +61 -0
- package/script/soak/storage-couchbase/probe-cas.js +77 -0
- package/script/soak/storage-couchbase/probe-store.js +101 -0
- package/types/index.d.ts +18 -0
- package/framework/v0.6.7/VERSION +0 -1
- package/framework/v0.6.7/core/controller/controller.render-stream.js +0 -169
- /package/framework/{v0.6.7 → v0.6.8}/AUTHORS +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/LICENSE +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/content.encoding +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/dev/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/locales/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/locales/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/mime.types +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/model/entity.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/model/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/server.express.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/server.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/status.codes +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/console.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/context.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/path.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/task.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/helpers/text.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/async/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/config.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/job/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/job-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/math/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/model.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/proc.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/session-store.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/shell.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/state.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/url/README.md +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/url/index.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/validator.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.7 → v0.6.8}/lib/ws-session/src/main.js +0 -0
|
@@ -0,0 +1,270 @@
|
|
|
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
|
+
* renderStream delegate — streams an AsyncIterable as a chunked HTTP response.
|
|
12
|
+
*
|
|
13
|
+
* Content-type determines framing:
|
|
14
|
+
* text/event-stream → SSE: each chunk is wrapped as `data: {chunk}\n\n`
|
|
15
|
+
* anything else → raw chunks written in sequence
|
|
16
|
+
* (HTTP/1.1 uses chunked transfer-encoding automatically)
|
|
17
|
+
*
|
|
18
|
+
* The caller (controller action) is responsible for yielding plain strings or
|
|
19
|
+
* Buffers. Object chunks are coerced via String(). Buffer chunks are decoded
|
|
20
|
+
* as UTF-8 on the SSE path only — on any other content-type they pass through
|
|
21
|
+
* VERBATIM, byte-exact, which is what makes this delegate usable for binary
|
|
22
|
+
* serving (#STO1 Range: 206 bodies must not be re-encoded).
|
|
23
|
+
*
|
|
24
|
+
* HEAD requests answer headers-only (no body, the iterable is never consumed —
|
|
25
|
+
* a destroyable source is destroy()ed) — the same render-layer body
|
|
26
|
+
* suppression every other delegate applies.
|
|
27
|
+
*
|
|
28
|
+
* HTTP/2: uses stream.respond() + stream.write() + stream.end()
|
|
29
|
+
* HTTP/1.1: uses response.setHeader() + response.write() + response.end()
|
|
30
|
+
*
|
|
31
|
+
* In both cases all pending response headers set upstream (CORS, Content-Range,
|
|
32
|
+
* etc.) are preserved and merged into the initial headers frame, and the
|
|
33
|
+
* delegate's own defaults (cache-control, connection, x-accel-buffering) apply
|
|
34
|
+
* only where the caller has not already chosen a value.
|
|
35
|
+
*
|
|
36
|
+
* @param {AsyncIterable} asyncIterable Source of string/Buffer chunks
|
|
37
|
+
* @param {string} contentType Response Content-Type (default: text/event-stream)
|
|
38
|
+
* @param {object} deps Injected by controller: { self, local, headersSent }
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
module.exports = function renderStream(asyncIterable, contentType, deps) {
|
|
42
|
+
|
|
43
|
+
// #B62 (sibling of the render-swig #B61 race fix): the per-request deps
|
|
44
|
+
// are FUNCTION-scoped. In prod this module is a shared singleton across
|
|
45
|
+
// concurrent requests; with module-scoped captures, the fire-and-forget
|
|
46
|
+
// _doStream IIFE below resumed after its `for await` reading a CONCURRENT
|
|
47
|
+
// request's refs — its catch reported errors through the other request's
|
|
48
|
+
// controller, and its finally nulled the OTHER request's live
|
|
49
|
+
// local.req/res/next mid-stream (measured) while never releasing its own.
|
|
50
|
+
var self = deps.self;
|
|
51
|
+
var local = deps.local;
|
|
52
|
+
var headersSent = deps.headersSent;
|
|
53
|
+
|
|
54
|
+
// Prevent double-render (same guard used by renderJSON / renderTEXT)
|
|
55
|
+
if (local.options.renderingStack.length > 1) return false;
|
|
56
|
+
if (self.isProcessingError) return;
|
|
57
|
+
|
|
58
|
+
// #B38 — released-response guard (see #B31 / #B36): a terminal exit (redirect() /
|
|
59
|
+
// renderTEXT() / throwError()) nulled the per-request refs before this stream began.
|
|
60
|
+
// renderStream's wrapper and this delegate are BOTH synchronous, so the read below
|
|
61
|
+
// would throw synchronously → uncaughtException → SIGTERM. The read happens BEFORE the
|
|
62
|
+
// headersSent() guard further down, so check here — mirrors render-json.js's #B36
|
|
63
|
+
// placement (after isProcessingError, before the first local.res deref). Behaviour-
|
|
64
|
+
// neutral on live requests (guard skipped while the refs exist).
|
|
65
|
+
if (local.res == null) return;
|
|
66
|
+
|
|
67
|
+
var response = local.res;
|
|
68
|
+
var stream = (typeof(response.stream) !== 'undefined') ? response.stream : null;
|
|
69
|
+
// #H10 — opt-in HTTP/2 response trailers (registered via self.sendTrailers()).
|
|
70
|
+
var _trailers = (local._trailers && typeof(local._trailers) === 'object') ? local._trailers : null;
|
|
71
|
+
|
|
72
|
+
if (headersSent(response)) {
|
|
73
|
+
local.req = null; local.res = null; local.next = null;
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
contentType = contentType || 'text/event-stream';
|
|
78
|
+
var isSSE = /text\/event-stream/i.test(contentType);
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Frame one chunk for the wire.
|
|
82
|
+
*
|
|
83
|
+
* SSE is a TEXT protocol, so Buffers are decoded as UTF-8 before framing.
|
|
84
|
+
* On the raw (non-SSE) path a Buffer passes through VERBATIM: the
|
|
85
|
+
* historical unconditional `chunk.toString('utf8')` replaced every
|
|
86
|
+
* non-UTF-8 byte with U+FFFD (measured: a 12-byte PNG header round-tripped
|
|
87
|
+
* to 20 bytes), which made this delegate unusable for byte serving. A
|
|
88
|
+
* valid-UTF-8 Buffer re-encodes byte-identically on write, so text
|
|
89
|
+
* consumers see no change.
|
|
90
|
+
*
|
|
91
|
+
* @inner
|
|
92
|
+
* @param {Buffer|string|*} chunk - One yielded chunk.
|
|
93
|
+
* @returns {Buffer|string} The bytes/string to write.
|
|
94
|
+
*/
|
|
95
|
+
function formatChunk(chunk) {
|
|
96
|
+
if (isSSE) {
|
|
97
|
+
var s = (chunk instanceof Buffer) ? chunk.toString('utf8') : String(chunk);
|
|
98
|
+
return 'data: ' + s + '\n\n';
|
|
99
|
+
}
|
|
100
|
+
return (chunk instanceof Buffer) ? chunk : String(chunk);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// HEAD parity — headers-only, no body, the iterable is never consumed.
|
|
104
|
+
// Every other delegate suppresses the body for HEAD in the render layer
|
|
105
|
+
// (render-json.js is the canonical pattern); this delegate was the lone
|
|
106
|
+
// exception, so a HEAD to a streaming route used to stream a full body.
|
|
107
|
+
// Runs synchronously before the IIFE: no #FI timeline entry is pushed
|
|
108
|
+
// (no stream occurred) and #H10 trailers are skipped (no body to trail).
|
|
109
|
+
if ( local.req && local.req.method && /^HEAD$/i.test(local.req.method) ) {
|
|
110
|
+
if (stream) {
|
|
111
|
+
if ( !stream.destroyed && !stream.closed && !stream.headersSent ) {
|
|
112
|
+
var _headHeaders = {
|
|
113
|
+
':status' : response.statusCode || 200,
|
|
114
|
+
'content-type' : contentType
|
|
115
|
+
};
|
|
116
|
+
var _headPending = response.getHeaders ? response.getHeaders() : {};
|
|
117
|
+
for (var hk in _headPending) {
|
|
118
|
+
if ( !(hk in _headHeaders) ) _headHeaders[hk] = _headPending[hk];
|
|
119
|
+
}
|
|
120
|
+
stream.respond(_headHeaders);
|
|
121
|
+
}
|
|
122
|
+
if ( !stream.destroyed && !stream.closed ) stream.end();
|
|
123
|
+
} else {
|
|
124
|
+
if ( !headersSent(response) ) {
|
|
125
|
+
response.setHeader('content-type', contentType);
|
|
126
|
+
response.statusCode = response.statusCode || 200;
|
|
127
|
+
}
|
|
128
|
+
response.end();
|
|
129
|
+
}
|
|
130
|
+
// A stream-like source the caller opened would otherwise leak its
|
|
131
|
+
// handle — it is never iterated on the HEAD path.
|
|
132
|
+
if ( asyncIterable && typeof asyncIterable.destroy === 'function' ) {
|
|
133
|
+
try { asyncIterable.destroy(); } catch (_dErr) { /* best-effort */ }
|
|
134
|
+
}
|
|
135
|
+
// #B357 — see the note at the h2 arm's assignment below.
|
|
136
|
+
try { response.headersSent = true; } catch (_hsErr) { /* getter-only — already true */ }
|
|
137
|
+
local.req = null; local.res = null; local.next = null;
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// #FI — stream start time for Inspector Flow tab
|
|
142
|
+
var _timeline = local._timeline || null;
|
|
143
|
+
var _streamStart = _timeline ? Date.now() : 0;
|
|
144
|
+
|
|
145
|
+
;(async function _doStream() {
|
|
146
|
+
var chunk;
|
|
147
|
+
try {
|
|
148
|
+
if (stream) {
|
|
149
|
+
// ── HTTP/2 ────────────────────────────────────────────────────────
|
|
150
|
+
if (stream.destroyed || stream.closed) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (!stream.headersSent) {
|
|
155
|
+
var _headers = {
|
|
156
|
+
// #B351 — never a literal: a hand-built h2 frame must carry the
|
|
157
|
+
// caller's status, because `setHeader(':status', …)` throws and no
|
|
158
|
+
// later merge can repair a pseudo-header. Without this, renderStream
|
|
159
|
+
// can only ever answer 200 — so 206/416 (Range) and 404 are
|
|
160
|
+
// unreachable on the h2 engine. Same class as #B172 (render-json).
|
|
161
|
+
':status' : response.statusCode || 200,
|
|
162
|
+
'content-type' : contentType
|
|
163
|
+
};
|
|
164
|
+
// Merge pending response headers set upstream (CORS, cookies,
|
|
165
|
+
// Content-Range, etc.)
|
|
166
|
+
var _pending = response.getHeaders ? response.getHeaders() : {};
|
|
167
|
+
for (var k in _pending) {
|
|
168
|
+
if (!(k in _headers)) _headers[k] = _pending[k];
|
|
169
|
+
}
|
|
170
|
+
// Delegate defaults apply only where the caller has not chosen
|
|
171
|
+
// a value — a byte-serving caller (#STO1 Range) sets its own
|
|
172
|
+
// Cache-Control, which the old frame literal silently beat.
|
|
173
|
+
if ( !('cache-control' in _headers) ) {
|
|
174
|
+
_headers['cache-control'] = 'no-cache';
|
|
175
|
+
}
|
|
176
|
+
if ( !('x-accel-buffering' in _headers) ) {
|
|
177
|
+
_headers['x-accel-buffering'] = 'no';
|
|
178
|
+
}
|
|
179
|
+
// #H10 — when trailers were registered, defer the stream close so the
|
|
180
|
+
// wantTrailers event can flush them after the final DATA frame.
|
|
181
|
+
if (_trailers) {
|
|
182
|
+
stream.once('wantTrailers', function() {
|
|
183
|
+
try {
|
|
184
|
+
if (!stream.destroyed && !stream.closed) stream.sendTrailers(_trailers);
|
|
185
|
+
} catch (_e) { /* trailers are best-effort — never fail the response */ }
|
|
186
|
+
});
|
|
187
|
+
stream.respond(_headers, { waitForTrailers: true });
|
|
188
|
+
} else {
|
|
189
|
+
stream.respond(_headers);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
for await (chunk of asyncIterable) {
|
|
194
|
+
if (stream.destroyed || stream.closed) break;
|
|
195
|
+
stream.write(formatChunk(chunk));
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (!stream.destroyed && !stream.closed) stream.end();
|
|
199
|
+
// #B357 — `headersSent` is a getter-only accessor on real
|
|
200
|
+
// ServerResponse / Http2ServerResponse objects, so a bare
|
|
201
|
+
// assignment THROWS under this file's strict mode. The wire was
|
|
202
|
+
// already complete (end() above), but the throw detoured every
|
|
203
|
+
// streaming request through the catch → a swallowed late
|
|
204
|
+
// throwError — and killed the #FI timeline entries below. Real
|
|
205
|
+
// responses already read true here (the getter tracks
|
|
206
|
+
// respond()/end()); the assignment only matters for
|
|
207
|
+
// plain-object test doubles, which stay writable.
|
|
208
|
+
try { response.headersSent = true; } catch (_hs2Err) { /* getter-only — already true */ }
|
|
209
|
+
|
|
210
|
+
} else {
|
|
211
|
+
// ── HTTP/1.1 ─────────────────────────────────────────────────────
|
|
212
|
+
if (!headersSent(response)) {
|
|
213
|
+
response.setHeader('content-type', contentType);
|
|
214
|
+
// Delegate defaults apply only where the caller has not
|
|
215
|
+
// already chosen a value (#STO1 Range) — setHeader would
|
|
216
|
+
// silently clobber a pre-set Cache-Control.
|
|
217
|
+
var _h1Pending = response.getHeaders ? response.getHeaders() : {};
|
|
218
|
+
if ( !('cache-control' in _h1Pending) ) {
|
|
219
|
+
response.setHeader('cache-control', 'no-cache');
|
|
220
|
+
}
|
|
221
|
+
if ( !('connection' in _h1Pending) ) {
|
|
222
|
+
response.setHeader('connection', 'keep-alive');
|
|
223
|
+
}
|
|
224
|
+
if ( isSSE && !('x-accel-buffering' in _h1Pending) ) {
|
|
225
|
+
response.setHeader('x-accel-buffering', 'no');
|
|
226
|
+
}
|
|
227
|
+
// #B351 — preserve a status the caller pre-set. The bare assignment
|
|
228
|
+
// clobbered it, which is worse than the h2 arm's literal: a controller
|
|
229
|
+
// that had already chosen 206/404 was silently answered 200.
|
|
230
|
+
response.statusCode = response.statusCode || 200;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
for await (chunk of asyncIterable) {
|
|
234
|
+
if (response.writableEnded || response.destroyed) break;
|
|
235
|
+
response.write(formatChunk(chunk));
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (!response.writableEnded) response.end();
|
|
239
|
+
// #B357 — see the h2 arm's note: guarded, real responses
|
|
240
|
+
// already read true post-end.
|
|
241
|
+
try { response.headersSent = true; } catch (_hs1Err) { /* getter-only — already true */ }
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// #FI — stream response + total timing
|
|
245
|
+
if (_streamStart && _timeline) {
|
|
246
|
+
var _streamEnd = Date.now();
|
|
247
|
+
_timeline.entries.push({
|
|
248
|
+
label: 'stream-write', cat: 'response',
|
|
249
|
+
startMs: _streamStart, endMs: _streamEnd,
|
|
250
|
+
durationMs: _streamEnd - _streamStart,
|
|
251
|
+
detail: contentType
|
|
252
|
+
});
|
|
253
|
+
_timeline.entries.push({
|
|
254
|
+
label: 'total', cat: 'total',
|
|
255
|
+
startMs: _timeline.requestStart,
|
|
256
|
+
endMs: _streamEnd,
|
|
257
|
+
durationMs: _streamEnd - _timeline.requestStart,
|
|
258
|
+
detail: null
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
} catch (err) {
|
|
263
|
+
self.throwError(response, 500, err);
|
|
264
|
+
} finally {
|
|
265
|
+
local.req = null;
|
|
266
|
+
local.res = null;
|
|
267
|
+
local.next = null;
|
|
268
|
+
}
|
|
269
|
+
})();
|
|
270
|
+
};
|
|
@@ -1689,7 +1689,9 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1689
1689
|
for (var _stoN in _stoDrivers) {
|
|
1690
1690
|
if ( typeof(_stoDrivers[_stoN].store) == 'string' && _stoDrivers[_stoN].store.length > 0 ) {
|
|
1691
1691
|
try {
|
|
1692
|
-
|
|
1692
|
+
// the driver name namespaces the store's rows, so two
|
|
1693
|
+
// drivers may share one connectors.json entry
|
|
1694
|
+
_stoStores[_stoN] = lib.StorageStore(_stoDrivers[_stoN].store, _stoN);
|
|
1693
1695
|
} catch (stoStoreErr) {
|
|
1694
1696
|
var _stoStoreMsg = '[storage] driver `' + _stoN + '` names store `' + _stoDrivers[_stoN].store + '`, which could not be built — aborting boot: ' + (stoStoreErr.message || stoStoreErr);
|
|
1695
1697
|
console.emerg(_stoStoreMsg + '\n' + (stoStoreErr.stack || ''));
|
|
@@ -1703,7 +1705,13 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1703
1705
|
// (§4 — a strategy flip on populated storage warns
|
|
1704
1706
|
// every boot; a hash change warns once). Same sink as
|
|
1705
1707
|
// the validateConfig warnings above.
|
|
1706
|
-
if ( lib.storage.start({ drivers: _stoDrivers, default: _stoSettings.default, stores: _stoStores,
|
|
1708
|
+
if ( lib.storage.start({ drivers: _stoDrivers, default: _stoSettings.default, stores: _stoStores, requireProjectModule: function(stoPkgName) {
|
|
1709
|
+
// s3-adapter SDK resolution — built HERE because
|
|
1710
|
+
// lib/storage is framework-independent (no `_`/
|
|
1711
|
+
// `getPath` globals inside it, test-enforced);
|
|
1712
|
+
// same project-path idiom as every connector.
|
|
1713
|
+
return require( _(getPath('project') + '/node_modules/' + stoPkgName, true) );
|
|
1714
|
+
}, warn: function(stoWarnMsg) { console.warn('[storage] ' + stoWarnMsg); } }) ) {
|
|
1707
1715
|
// console.info, NOT debug — the shipped
|
|
1708
1716
|
// default log level filters debug, and an
|
|
1709
1717
|
// operator needs to see which roots went live.
|
|
@@ -266,7 +266,26 @@ function Router(env, scope) {
|
|
|
266
266
|
// (raw) value (the #B65 freeze-guard). Host-only, public; scheme prefers
|
|
267
267
|
// X-Forwarded-Proto (TLS-terminating proxy) then PROXY_SCHEME then the
|
|
268
268
|
// bundle scheme.
|
|
269
|
-
|
|
269
|
+
// #B367 — SECURITY: these header values are attacker-supplied and end up
|
|
270
|
+
// spliced UNESCAPED into the client loader's JS string literals via
|
|
271
|
+
// page.environment.hostname / .webroot / .proxyHost / .proxyHostname
|
|
272
|
+
// (whisper() is a raw token replace — helpers/context.js:798-802), so a
|
|
273
|
+
// single quote in one of them closes the literal and executes arbitrary
|
|
274
|
+
// script on every rendered page, unauthenticated. Sanitise at ingest and
|
|
275
|
+
// fall back to the bundle's internal configured values when a value is
|
|
276
|
+
// malformed. Note `proxyReqHost` is the caller's own Host/:authority
|
|
277
|
+
// header and is validated for the same reason.
|
|
278
|
+
// Keep in sync with the core/server.isaac.js twin.
|
|
279
|
+
var _isSafeHostToken = function(v) {
|
|
280
|
+
return ( typeof(v) == 'string' && v.length > 0 && v.length <= 255
|
|
281
|
+
&& /^[A-Za-z0-9._:\[\]-]+$/.test(v) );
|
|
282
|
+
};
|
|
283
|
+
var _rawProxyReqHost = request.headers.host || request.headers[':authority'];
|
|
284
|
+
var proxyReqHost = _isSafeHostToken(_rawProxyReqHost) ? _rawProxyReqHost : null;
|
|
285
|
+
var _rawXfh = request.headers['x-forwarded-host'];
|
|
286
|
+
var _xfh = _isSafeHostToken(_rawXfh) ? _rawXfh : null;
|
|
287
|
+
var _rawXfProto = request.headers['x-forwarded-proto'];
|
|
288
|
+
var _safeXfProto = ( _rawXfProto === 'http' || _rawXfProto === 'https' ) ? _rawXfProto : null;
|
|
270
289
|
// #B152 — opt-in: server.proxy.requireForwardedHeaders (boot-resolved
|
|
271
290
|
// to process.gina._proxyRequireForwarded by server.js) disables the
|
|
272
291
|
// port-less-Host heuristic — only an explicit X-Forwarded-Host
|
|
@@ -274,15 +293,15 @@ function Router(env, scope) {
|
|
|
274
293
|
var proxyReqIsProxied = (
|
|
275
294
|
( proxyReqHost && !/\:[0-9]+$/.test(proxyReqHost)
|
|
276
295
|
&& process.gina._proxyRequireForwarded !== true )
|
|
277
|
-
||
|
|
296
|
+
|| _xfh
|
|
278
297
|
) ? true : false;
|
|
279
298
|
if ( proxyReqIsProxied ) {
|
|
280
|
-
var proxyReqScheme =
|
|
299
|
+
var proxyReqScheme = _safeXfProto
|
|
281
300
|
|| process.gina.PROXY_SCHEME
|
|
282
301
|
|| conf.server.scheme;
|
|
283
|
-
if (
|
|
284
|
-
process.gina.PROXY_HOSTNAME = proxyReqScheme +'://'+
|
|
285
|
-
process.gina.PROXY_HOST =
|
|
302
|
+
if ( _xfh ) {
|
|
303
|
+
process.gina.PROXY_HOSTNAME = proxyReqScheme +'://'+ _xfh;
|
|
304
|
+
process.gina.PROXY_HOST = _xfh;
|
|
286
305
|
} else {
|
|
287
306
|
process.gina.PROXY_HOSTNAME = proxyReqScheme +'://'+ proxyReqHost;
|
|
288
307
|
process.gina.PROXY_HOST = proxyReqHost;
|
|
@@ -302,12 +321,13 @@ function Router(env, scope) {
|
|
|
302
321
|
if ( typeof(request._ginaIsProxyHost) == 'undefined' ) {
|
|
303
322
|
request._ginaIsProxyHost = proxyReqIsProxied;
|
|
304
323
|
if (proxyReqIsProxied) {
|
|
305
|
-
|
|
324
|
+
// #B367 — sanitised tokens only (see the block above).
|
|
325
|
+
var _slotScheme = _safeXfProto
|
|
306
326
|
|| process.gina.PROXY_SCHEME
|
|
307
327
|
|| conf.server.scheme;
|
|
308
|
-
if (
|
|
309
|
-
request._ginaProxyHostname = _slotScheme +'://'+
|
|
310
|
-
request._ginaProxyHost =
|
|
328
|
+
if ( _xfh ) {
|
|
329
|
+
request._ginaProxyHostname = _slotScheme +'://'+ _xfh;
|
|
330
|
+
request._ginaProxyHost = _xfh;
|
|
311
331
|
} else {
|
|
312
332
|
request._ginaProxyHostname = _slotScheme +'://'+ proxyReqHost;
|
|
313
333
|
request._ginaProxyHost = proxyReqHost;
|
|
@@ -1987,22 +1987,49 @@ function ServerEngineClass(options) {
|
|
|
1987
1987
|
// port-less-Host heuristic — only an explicit X-Forwarded-Host
|
|
1988
1988
|
// classifies as proxied. Keep in sync with the core/router.js twin
|
|
1989
1989
|
// (proxyReqIsProxied).
|
|
1990
|
+
// #B367 — SECURITY: every value below is attacker-supplied and is spliced
|
|
1991
|
+
// UNESCAPED into the client loader's JS string literals (gina.onload.min.js:
|
|
1992
|
+
// `hostname:'{{ page.environment.hostname }}'`, `window.__ginaWebroot='…'`),
|
|
1993
|
+
// because whisper() (helpers/context.js:798-802) is a raw token replace with
|
|
1994
|
+
// no escaping. A single quote in one of these headers therefore CLOSES the
|
|
1995
|
+
// literal and executes arbitrary script on every rendered page, unauthenticated
|
|
1996
|
+
// (reproduced over real HTTP). SANITISE AT INGEST rather than escape at
|
|
1997
|
+
// emission: a host is `name[:port]` (or a bracketed IPv6 literal) and a prefix
|
|
1998
|
+
// is a path — neither legitimately carries a quote, backslash, angle bracket or
|
|
1999
|
+
// whitespace — so a malformed value is malformed at the source, and rejecting it
|
|
2000
|
+
// here protects EVERY downstream consumer of these slots, not just the loader.
|
|
2001
|
+
// Rejection is fail-safe: the request simply falls back to the bundle's internal
|
|
2002
|
+
// configured values, exactly as if the header had been absent.
|
|
2003
|
+
// Keep in sync with the core/router.js twin.
|
|
2004
|
+
var _isSafeHostToken = function(v) {
|
|
2005
|
+
return ( typeof(v) == 'string' && v.length > 0 && v.length <= 255
|
|
2006
|
+
&& /^[A-Za-z0-9._:\[\]-]+$/.test(v) );
|
|
2007
|
+
};
|
|
2008
|
+
var _xfhRaw = request.headers['x-forwarded-host'];
|
|
2009
|
+
var _xfh = _isSafeHostToken(_xfhRaw) ? _xfhRaw : null;
|
|
2010
|
+
var _safeRequestHost = _isSafeHostToken(requestHost) ? requestHost : null;
|
|
2011
|
+
// Scheme is a two-value whitelist — it is concatenated straight into the
|
|
2012
|
+
// whispered origin, and the pre-#B367 code emitted a literal `undefined://`
|
|
2013
|
+
// when the header was absent.
|
|
2014
|
+
var _xfpr = request.headers['x-forwarded-proto'];
|
|
2015
|
+
var _safeScheme = ( _xfpr === 'http' || _xfpr === 'https' ) ? _xfpr : null;
|
|
2016
|
+
|
|
1990
2017
|
var _thisReqProxied = (
|
|
1991
|
-
(
|
|
2018
|
+
( _safeRequestHost && !/\:[0-9]+$/.test(_safeRequestHost)
|
|
1992
2019
|
&& process.gina._proxyRequireForwarded !== true )
|
|
1993
|
-
||
|
|
2020
|
+
|| _xfh
|
|
1994
2021
|
) ? true : false;
|
|
1995
2022
|
request._ginaIsProxyHost = _thisReqProxied;
|
|
1996
2023
|
if ( _thisReqProxied ) {
|
|
1997
2024
|
// this request's proxied host/hostname — X-Forwarded-Host wins (multi-hop:
|
|
1998
2025
|
// TLS-terminating ingress -> inner proxy -> bundle), else the port-less
|
|
1999
2026
|
// Host (single-hop: reverse proxy -> bundle).
|
|
2000
|
-
if (
|
|
2001
|
-
request._ginaProxyHostname =
|
|
2002
|
-
request._ginaProxyHost =
|
|
2027
|
+
if ( _xfh ) {
|
|
2028
|
+
request._ginaProxyHostname = ( _safeScheme || process.gina.PROXY_SCHEME ) +'://'+ _xfh;
|
|
2029
|
+
request._ginaProxyHost = _xfh;
|
|
2003
2030
|
} else {
|
|
2004
|
-
request._ginaProxyHostname = process.gina.PROXY_SCHEME +'://'+
|
|
2005
|
-
request._ginaProxyHost =
|
|
2031
|
+
request._ginaProxyHostname = process.gina.PROXY_SCHEME +'://'+ _safeRequestHost;
|
|
2032
|
+
request._ginaProxyHost = _safeRequestHost;
|
|
2006
2033
|
}
|
|
2007
2034
|
// Refresh the worker-global on EVERY proxied request (freeze fix) — the
|
|
2008
2035
|
// value is always this request's proxied host, so a later internal
|
|
@@ -2034,6 +2061,14 @@ function ServerEngineClass(options) {
|
|
|
2034
2061
|
if (_xfp.length > 0 && _xfp.charAt(0) !== '/') {
|
|
2035
2062
|
_xfp = '/' + _xfp;
|
|
2036
2063
|
}
|
|
2064
|
+
// #B367 — SECURITY: this value is concatenated into the public webroot and
|
|
2065
|
+
// whispered into `window.__ginaWebroot='…'` in the client loader, so a quote
|
|
2066
|
+
// here closes that literal and executes arbitrary script (reproduced over
|
|
2067
|
+
// real HTTP). A mount path is percent-encoded URL-path characters only;
|
|
2068
|
+
// reject anything else and fall back to the bundle's internal webroot.
|
|
2069
|
+
if ( _xfp.length > 255 || !/^[A-Za-z0-9._~\/%-]*$/.test(_xfp) ) {
|
|
2070
|
+
_xfp = '';
|
|
2071
|
+
}
|
|
2037
2072
|
if (_xfp.length > 0) {
|
|
2038
2073
|
request._ginaProxyPrefix = _xfp;
|
|
2039
2074
|
}
|
|
@@ -246,6 +246,12 @@ function Gc(opt, cmd) {
|
|
|
246
246
|
if ( i >= names.length ) { return done(out); }
|
|
247
247
|
var name = names[i];
|
|
248
248
|
var d = block.drivers[name];
|
|
249
|
+
// s3 first — before the `store` check, so a warn-ignored `store`
|
|
250
|
+
// key on a remote driver cannot produce a misleading skip reason.
|
|
251
|
+
if ( d.adapter === 's3' ) {
|
|
252
|
+
out.drivers.push({ name: name, skipped: true, reason: 'remote adapter (`s3`) — no sweep to run (only `cas` collects garbage)' });
|
|
253
|
+
return nextDriver(i + 1);
|
|
254
|
+
}
|
|
249
255
|
if ( d.store ) {
|
|
250
256
|
out.drivers.push({ name: name, skipped: true, reason: 'connector-backed store (`' + d.store + '`) — nothing local to open; start the bundle and re-run' });
|
|
251
257
|
return nextDriver(i + 1);
|
|
@@ -250,6 +250,13 @@ function Stats(opt, cmd) {
|
|
|
250
250
|
if ( i >= names.length ) { return done(out); }
|
|
251
251
|
var name = names[i];
|
|
252
252
|
var d = block.drivers[name];
|
|
253
|
+
// s3 first — a remote adapter has neither a root nor a local
|
|
254
|
+
// store, and its SDK is resolvable only in a bundle's project
|
|
255
|
+
// scope; the RUNNING path serves its stats.
|
|
256
|
+
if ( d.adapter === 's3' ) {
|
|
257
|
+
out.drivers.push({ name: name, adapter: 's3', strategy: d.strategy || 'sharded', skipped: true, reason: 'remote adapter (`s3`) — nothing local to open; start the bundle and re-run' });
|
|
258
|
+
return nextDriver(i + 1);
|
|
259
|
+
}
|
|
253
260
|
if ( d.store ) {
|
|
254
261
|
out.drivers.push({ name: name, strategy: d.strategy, skipped: true, reason: 'connector-backed store (`' + d.store + '`) — nothing local to open; start the bundle and re-run' });
|
|
255
262
|
return nextDriver(i + 1);
|
|
@@ -248,6 +248,12 @@ function Verify(opt, cmd) {
|
|
|
248
248
|
if ( i >= names.length ) { return done(out); }
|
|
249
249
|
var name = names[i];
|
|
250
250
|
var d = block.drivers[name];
|
|
251
|
+
// s3 first — before the `store` check, so a warn-ignored `store`
|
|
252
|
+
// key on a remote driver cannot produce a misleading skip reason.
|
|
253
|
+
if ( d.adapter === 's3' ) {
|
|
254
|
+
out.drivers.push({ name: name, skipped: true, reason: 'remote adapter (`s3`) — verify is cas-only in v1' });
|
|
255
|
+
return nextDriver(i + 1);
|
|
256
|
+
}
|
|
251
257
|
if ( d.store ) {
|
|
252
258
|
out.drivers.push({ name: name, skipped: true, reason: 'connector-backed store (`' + d.store + '`) — nothing local to open; start the bundle and re-run' });
|
|
253
259
|
return nextDriver(i + 1);
|