gina 0.7.0 → 0.7.1
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 +39 -0
- package/README.md +45 -61
- package/ROADMAP.md +3 -2
- package/bin/cli +5 -2
- package/bin/gina +10 -25
- package/framework/v0.7.1/VERSION +1 -0
- package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +21 -8
- package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.js +8 -11
- package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +160 -160
- package/framework/v0.7.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.7.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.7.0 → v0.7.1}/core/config.js +10 -1
- package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.js +67 -15
- package/framework/{v0.7.0 → v0.7.1}/core/router.js +68 -8
- package/framework/{v0.7.0 → v0.7.1}/core/server.isaac.js +183 -45
- package/framework/{v0.7.0 → v0.7.1}/core/server.js +173 -55
- package/framework/{v0.7.0 → v0.7.1}/helpers/context.js +93 -32
- package/framework/{v0.7.0 → v0.7.1}/helpers/path.js +61 -43
- package/framework/{v0.7.0 → v0.7.1}/helpers/task.js +47 -35
- package/framework/v0.7.1/lib/admin/src/main.js +451 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/add.js +24 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/copy.js +14 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/help.txt +11 -0
- package/framework/v0.7.1/lib/cmd/bundle/inc/boot-lines.js +263 -0
- package/framework/v0.7.1/lib/cmd/bundle/inc/name.js +70 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/remove.js +8 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/rename.js +14 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/start.js +47 -12
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/stop.js +64 -8
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/remove.js +7 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/add.js +37 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/build.js +20 -5
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/dot.js +10 -4
- package/framework/v0.7.1/lib/cmd/framework/inc/ps-titles.js +113 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/init.js +7 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/link.js +10 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/open.js +30 -6
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/restart.js +24 -69
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/start.js +6 -24
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/status.js +44 -25
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/tail.js +1 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/helper.js +56 -13
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/help.txt +2 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/open.js +93 -30
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/kill.js +52 -25
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/list.js +15 -6
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/reset.js +11 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/add.js +50 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/help.txt +8 -8
- package/framework/v0.7.1/lib/cmd/project/inc/name.js +71 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/remove.js +5 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/rename.js +12 -0
- package/framework/v0.7.1/lib/cmd/project/restart.js +126 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/restore.js +19 -0
- package/framework/v0.7.1/lib/cmd/project/start.js +125 -0
- package/framework/v0.7.1/lib/cmd/project/stop.js +98 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/set.js +7 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/inherits/src/main.js +8 -11
- package/framework/{v0.7.0 → v0.7.1}/lib/maintenance/src/main.js +3 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/metrics/src/main.js +30 -6
- package/framework/{v0.7.0 → v0.7.1}/lib/shell.js +58 -25
- package/framework/{v0.7.0 → v0.7.1}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +13 -13
- package/package.json +4 -4
- package/schema/app.json +3 -3
- package/script/post_install.js +20 -2
- package/script/pre_install.js +31 -6
- package/utils/helper.js +21 -9
- package/framework/v0.7.0/VERSION +0 -1
- package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.7.0/lib/admin/src/main.js +0 -217
- package/framework/v0.7.0/lib/cmd/project/restart.js +0 -85
- package/framework/v0.7.0/lib/cmd/project/start.js +0 -85
- package/framework/v0.7.0/lib/cmd/project/stop.js +0 -66
- /package/framework/{v0.7.0 → v0.7.1}/AUTHORS +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/html/static.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/config.requirements-anchor.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/content.encoding +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-xml.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/inline-script.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/gna.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/currency.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/mime.types +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/entity.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/template/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/server.express.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/server.isaac.rapid-reset.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/server.route-candidates.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/status.codes +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/_gitignore +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/env.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/console.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/prototypes.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/text.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/admin/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/async/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/async/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/audit/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/audit-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/inc/name.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/inc/name.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/conf-view/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/conf-view/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/config.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cron/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cron/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/duration/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/duration/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/generator/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/i18n/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/idempotency/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/idempotency/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/image-build/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/instrument/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/job/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/job/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/kv/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/kv-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/math/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/merge/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/merge/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/message-validator/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/message-validator/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/metrics/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/model.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/money/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/money/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/multipart/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/multipart/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/priority/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/priority/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/proc.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/push/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/push/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/security-headers-emitter/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/security-headers-emitter/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/session-lifetime/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/session-lifetime/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/sri/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/sri/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/state.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/url/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/url/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/url/routing.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/uuid/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/validator.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/watcher/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-session/src/main.js +0 -0
|
@@ -6,7 +6,10 @@ const fs = require('fs');
|
|
|
6
6
|
const crypto = require('crypto');
|
|
7
7
|
const nodePath = require('path'); // #B179: used for path-traversal boundary enforcement
|
|
8
8
|
const os = require('os'); // maintenance status payload: pid + hostname (per-process identity)
|
|
9
|
-
|
|
9
|
+
// #B665 S2 (2026-09-27) — execFileSync / execFile: the brotli and gzip lookups and compressions
|
|
10
|
+
// run from argument vectors, so the cache path reaches them whole.
|
|
11
|
+
// const { execSync, exec } = require('child_process');
|
|
12
|
+
const { execFileSync, execFile } = require('child_process');
|
|
10
13
|
const {EventEmitter} = require('events');
|
|
11
14
|
// #B10 fix: engine.io is only needed when options.ioServer is configured (WebSocket support).
|
|
12
15
|
// Require it lazily so bundles without WebSocket support don't crash if engine.io is absent.
|
|
@@ -133,6 +136,9 @@ function _instrumentKeyValid(req) {
|
|
|
133
136
|
* populated it; otherwise drains the request stream (works for HTTP/1.1
|
|
134
137
|
* IncomingMessage and HTTP/2 Http2ServerRequest). A 2s timeout guards against
|
|
135
138
|
* an already-consumed stream that never re-fires `end`. Calls back exactly once.
|
|
139
|
+
* Accepts Buffer and string chunks: a request whose encoding was set emits strings
|
|
140
|
+
* (core/server.js calls `request.setEncoding` for every non-multipart request), which
|
|
141
|
+
* are turned back into bytes so the cap counts bytes and the read cannot throw (#B714).
|
|
136
142
|
*
|
|
137
143
|
* @inner
|
|
138
144
|
* @param {http.IncomingMessage|http2.Http2ServerRequest} req
|
|
@@ -157,6 +163,12 @@ function _readInstrumentBody(req, cb) {
|
|
|
157
163
|
_timer = setTimeout(function() { _finish(new Error('body read timeout')); }, 2000);
|
|
158
164
|
if (_timer && typeof _timer.unref === 'function') { _timer.unref(); }
|
|
159
165
|
req.on('data', function(chunk) {
|
|
166
|
+
// #B714 — a request whose encoding was set emits strings (core/server.js onInstance
|
|
167
|
+
// calls request.setEncoding for every non-multipart request): turn a string back into
|
|
168
|
+
// bytes, so the cap counts bytes and Buffer.concat below accepts every chunk.
|
|
169
|
+
if ( typeof(chunk) == 'string' ) {
|
|
170
|
+
chunk = Buffer.from(chunk, req.readableEncoding || 'utf8');
|
|
171
|
+
}
|
|
160
172
|
_size += chunk.length;
|
|
161
173
|
if (_size > _MAX) {
|
|
162
174
|
_finish(new Error('body too large'));
|
|
@@ -166,7 +178,14 @@ function _readInstrumentBody(req, cb) {
|
|
|
166
178
|
_chunks.push(chunk);
|
|
167
179
|
});
|
|
168
180
|
req.on('end', function() {
|
|
169
|
-
|
|
181
|
+
// #B714 — a throw here escapes as an uncaughtException and stops the bundle:
|
|
182
|
+
// answer it through the callback.
|
|
183
|
+
var _raw;
|
|
184
|
+
try {
|
|
185
|
+
_raw = Buffer.concat(_chunks).toString('utf8').trim();
|
|
186
|
+
} catch (e) {
|
|
187
|
+
return _finish(e);
|
|
188
|
+
}
|
|
170
189
|
if (!_raw) return _finish(null, {});
|
|
171
190
|
try { _finish(null, JSON.parse(_raw)); }
|
|
172
191
|
catch (e) { _finish(new Error('invalid JSON body')); }
|
|
@@ -211,6 +230,39 @@ var confineToBase = function(filename, base) {
|
|
|
211
230
|
return null;
|
|
212
231
|
}
|
|
213
232
|
|
|
233
|
+
/**
|
|
234
|
+
* #B715 — the `/_gina/*` paths the maintenance gate leaves to core/server.js. core/server.js
|
|
235
|
+
* answers them in its own /_gina band, above its twin gate, where this listener does not
|
|
236
|
+
* answer them (or not in that shape), so a window would otherwise close them on this engine
|
|
237
|
+
* only: storage/stats, storage/gc and storage/verify exist only in core/server.js, and a
|
|
238
|
+
* health check whose url carries a query string misses the `$`-anchored handler here, which
|
|
239
|
+
* tests the raw url, while the core/server.js twin sees the url without its query.
|
|
240
|
+
*
|
|
241
|
+
* The compare is on the exact query-free root path, so a route the bundle declares elsewhere
|
|
242
|
+
* under /_gina/ stays behind the gate; a method or a shape core/server.js does not answer
|
|
243
|
+
* meets its twin gate there. Keep the list in step with the core/server.js /_gina band:
|
|
244
|
+
* `test/core/maintenance-gate-left-to-server-b715.test.js` fails when a core/server.js
|
|
245
|
+
* endpoint has neither a handler here above the gate nor an entry below.
|
|
246
|
+
*
|
|
247
|
+
* @inner
|
|
248
|
+
* @private
|
|
249
|
+
* @memberof module:gina/core/server.isaac
|
|
250
|
+
* @param {string} url - The raw request url, query included
|
|
251
|
+
* @returns {boolean} `true` when the gate lets the request through to core/server.js
|
|
252
|
+
* @example
|
|
253
|
+
* _isLeftToServerJs('/_gina/storage/gc?dryRun=1'); // → true
|
|
254
|
+
* _isLeftToServerJs('/_gina/health/check?probe=1'); // → true
|
|
255
|
+
* _isLeftToServerJs('/_gina/info'); // → false (answered above the gate)
|
|
256
|
+
* _isLeftToServerJs('/web/_gina/storage/stats'); // → false (not the root path)
|
|
257
|
+
*/
|
|
258
|
+
function _isLeftToServerJs(url) {
|
|
259
|
+
var p = ( typeof(url) == 'string' ) ? url.split('?')[0] : '';
|
|
260
|
+
return p === '/_gina/storage/stats'
|
|
261
|
+
|| p === '/_gina/storage/gc'
|
|
262
|
+
|| p === '/_gina/storage/verify'
|
|
263
|
+
|| p === '/_gina/health/check';
|
|
264
|
+
}
|
|
265
|
+
|
|
214
266
|
/**
|
|
215
267
|
* Reloads all core and lib modules from disk by replacing their require.cache
|
|
216
268
|
* entries with fresh exports. Excludes gna.js itself. Also refreshes the
|
|
@@ -389,14 +441,16 @@ function ServerEngineClass(options) {
|
|
|
389
441
|
// Checking if brotli is installed
|
|
390
442
|
var brotliBin = null;
|
|
391
443
|
try {
|
|
392
|
-
brotliBin = execSync( 'which brotli' ).toString().trim();
|
|
444
|
+
// was: brotliBin = execSync( 'which brotli' ).toString().trim();
|
|
445
|
+
brotliBin = execFileSync( 'which', ['brotli'] ).toString().trim();
|
|
393
446
|
} catch (binErr) {
|
|
394
447
|
// Means that it is not installed.
|
|
395
448
|
}
|
|
396
449
|
// Checking if gzip is installed
|
|
397
450
|
var gZipBin = null;
|
|
398
451
|
try {
|
|
399
|
-
gZipBin = execSync( 'which gzip' ).toString().trim();
|
|
452
|
+
// was: gZipBin = execSync( 'which gzip' ).toString().trim();
|
|
453
|
+
gZipBin = execFileSync( 'which', ['gzip'] ).toString().trim();
|
|
400
454
|
} catch (binErr) {
|
|
401
455
|
// Means that it is not installed.
|
|
402
456
|
}
|
|
@@ -410,7 +464,7 @@ function ServerEngineClass(options) {
|
|
|
410
464
|
let targetFile = null
|
|
411
465
|
, fd = null
|
|
412
466
|
, buffer = null
|
|
413
|
-
, cmd = null
|
|
467
|
+
// , cmd = null (#B665 S2: the compressions take argument vectors)
|
|
414
468
|
, brFileObj = null
|
|
415
469
|
, gzFileObj = null
|
|
416
470
|
;
|
|
@@ -435,10 +489,12 @@ function ServerEngineClass(options) {
|
|
|
435
489
|
brFileObj.rmSync();
|
|
436
490
|
}
|
|
437
491
|
// Creating a new br version
|
|
438
|
-
|
|
492
|
+
// #B665 S2 (2026-09-27) — an argument vector: the cache path reaches brotli whole.
|
|
493
|
+
// was: cmd = brotliBin +' --best '+ _(targetDir +'/'+ targetFile, true);
|
|
439
494
|
// replaced: execSync — async exec to avoid blocking event loop during startup (#P32)
|
|
440
495
|
// console.debug( execSync( cmd ).toString() );
|
|
441
|
-
exec(cmd, function(brCmdErr, stdout) {
|
|
496
|
+
// was: exec(cmd, function(brCmdErr, stdout) {
|
|
497
|
+
execFile(brotliBin, ['--best', _(targetDir +'/'+ targetFile, true)], function(brCmdErr, stdout) {
|
|
442
498
|
if (brCmdErr) { console.error('[ SERVER ] brotli compression error: ' + (brCmdErr.stack || brCmdErr.message)); return; }
|
|
443
499
|
if (stdout) console.debug(stdout.toString().trim());
|
|
444
500
|
});
|
|
@@ -459,10 +515,12 @@ function ServerEngineClass(options) {
|
|
|
459
515
|
gzFileObj.rmSync();
|
|
460
516
|
}
|
|
461
517
|
// Creating a new gz version
|
|
462
|
-
|
|
518
|
+
// #B665 S2 (2026-09-27) — an argument vector: the cache path reaches gzip whole.
|
|
519
|
+
// was: cmd = gZipBin +' -9 -k '+ _(targetDir +'/'+ targetFile, true);
|
|
463
520
|
// replaced: execSync — async exec to avoid blocking event loop during startup (#P32)
|
|
464
521
|
// console.debug( execSync( cmd ).toString() );
|
|
465
|
-
exec(cmd, function(gzCmdErr, stdout) {
|
|
522
|
+
// was: exec(cmd, function(gzCmdErr, stdout) {
|
|
523
|
+
execFile(gZipBin, ['-9', '-k', _(targetDir +'/'+ targetFile, true)], function(gzCmdErr, stdout) {
|
|
466
524
|
if (gzCmdErr) { console.error('[ SERVER ] gzip compression error: ' + (gzCmdErr.stack || gzCmdErr.message)); return; }
|
|
467
525
|
if (stdout) console.debug(stdout.toString().trim());
|
|
468
526
|
});
|
|
@@ -491,8 +549,9 @@ function ServerEngineClass(options) {
|
|
|
491
549
|
if ( brFileObj.existsSync() ) {
|
|
492
550
|
brFileObj.rmSync();
|
|
493
551
|
}
|
|
494
|
-
cmd = brotliBin +' --best '+ _(targetDir +'/'+ targetFile, true);
|
|
495
|
-
exec(cmd, function(brCmdErr, stdout) {
|
|
552
|
+
// was: cmd = brotliBin +' --best '+ _(targetDir +'/'+ targetFile, true);
|
|
553
|
+
// was: exec(cmd, function(brCmdErr, stdout) {
|
|
554
|
+
execFile(brotliBin, ['--best', _(targetDir +'/'+ targetFile, true)], function(brCmdErr, stdout) {
|
|
496
555
|
if (brCmdErr) { console.error('[ SERVER ] brotli compression error: ' + (brCmdErr.stack || brCmdErr.message)); return; }
|
|
497
556
|
if (stdout) console.debug(stdout.toString().trim());
|
|
498
557
|
});
|
|
@@ -508,8 +567,9 @@ function ServerEngineClass(options) {
|
|
|
508
567
|
if ( gzFileObj.existsSync() ) {
|
|
509
568
|
gzFileObj.rmSync();
|
|
510
569
|
}
|
|
511
|
-
cmd = gZipBin +' -9 -k '+ _(targetDir +'/'+ targetFile, true);
|
|
512
|
-
exec(cmd, function(gzCmdErr, stdout) {
|
|
570
|
+
// was: cmd = gZipBin +' -9 -k '+ _(targetDir +'/'+ targetFile, true);
|
|
571
|
+
// was: exec(cmd, function(gzCmdErr, stdout) {
|
|
572
|
+
execFile(gZipBin, ['-9', '-k', _(targetDir +'/'+ targetFile, true)], function(gzCmdErr, stdout) {
|
|
513
573
|
if (gzCmdErr) { console.error('[ SERVER ] gzip compression error: ' + (gzCmdErr.stack || gzCmdErr.message)); return; }
|
|
514
574
|
if (stdout) console.debug(stdout.toString().trim());
|
|
515
575
|
});
|
|
@@ -1167,6 +1227,14 @@ function ServerEngineClass(options) {
|
|
|
1167
1227
|
if ( typeof(request.priority) == 'undefined' ) {
|
|
1168
1228
|
request.priority = lib.priority.parse(request.headers['priority']);
|
|
1169
1229
|
}
|
|
1230
|
+
// #B709 — the proxy classification of a /_gina/* request, taken ONCE from
|
|
1231
|
+
// its pristine headers: the h1 Host rewrite further down would make every
|
|
1232
|
+
// direct caller of a server.js-only handler (storage/*) look proxied. The
|
|
1233
|
+
// admin and metrics allowlists read it. First-seer; server.js's onInstance
|
|
1234
|
+
// top fills it when absent (Express). Keep the two tops in sync.
|
|
1235
|
+
if ( request.url.indexOf('/_gina/') > -1 ) {
|
|
1236
|
+
lib.admin.stampProxied(request);
|
|
1237
|
+
}
|
|
1170
1238
|
// #OBS1 slice 3 — HTTP request lifecycle hook for Prometheus metrics.
|
|
1171
1239
|
// Gated on lib.metrics.isEnabled() so the listener is only wired when
|
|
1172
1240
|
// app.json metrics.enabled is true. Records on response 'finish' (fires
|
|
@@ -1230,8 +1298,15 @@ function ServerEngineClass(options) {
|
|
|
1230
1298
|
// Placed above every /_gina/* handler so current AND future ones
|
|
1231
1299
|
// inherit the refusal. SAFE methods are untouched — the Inspector's
|
|
1232
1300
|
// cross-origin GET/SSE channels are a documented design.
|
|
1301
|
+
//
|
|
1302
|
+
// #B708 — placement is not enough: the URL test must also match
|
|
1303
|
+
// wherever a write handler matches. It looks for `/_gina/` anywhere
|
|
1304
|
+
// in the full url, in any case, because the unanchored handlers
|
|
1305
|
+
// (cache/clear, maintenance, instrument) accept a path prefix and the
|
|
1306
|
+
// endpoint path at the end of the query string, and cache/clear and
|
|
1307
|
+
// release/* accept any case — see the core/server.js twin.
|
|
1233
1308
|
if (
|
|
1234
|
-
|
|
1309
|
+
/\/_gina\//i.test(request.url)
|
|
1235
1310
|
&& !lib.admin.isSafeMethod(request.method)
|
|
1236
1311
|
&& lib.admin.isCrossOriginWrite(request)
|
|
1237
1312
|
) {
|
|
@@ -1261,11 +1336,26 @@ function ServerEngineClass(options) {
|
|
|
1261
1336
|
return response.end(xOrgBody);
|
|
1262
1337
|
}
|
|
1263
1338
|
|
|
1339
|
+
// #B709 — the admin-gated handlers below (metrics, info, cache/*,
|
|
1340
|
+
// maintenance) match this query-free path EXACTLY — the root form, or the
|
|
1341
|
+
// bundle's own webroot form — never the raw url: a nested endpoint path,
|
|
1342
|
+
// the endpoint path in a query string, another letter case or an empty
|
|
1343
|
+
// leading segment reaches none of them. storage/* and release/* stay
|
|
1344
|
+
// anchored on the url. See the core/server.js twin.
|
|
1345
|
+
var _ginaCtlPath = lib.admin.controlPath(request.url, options.webroot);
|
|
1346
|
+
|
|
1264
1347
|
// healthcheck
|
|
1265
1348
|
// TODO - add a top level API : server.api.js (check, get ...)
|
|
1266
1349
|
// TODO - on 90% RAM usage, redirect to `come back later then restart bundle`
|
|
1267
1350
|
// TODO - check url against wroot : getContext() ?
|
|
1268
|
-
|
|
1351
|
+
// #B717 — a query string no longer misses the handler (`(?:\?|$)`, the idiom of the
|
|
1352
|
+
// instrument and agent handlers). #B718 — HEAD is answered too (a load balancer may
|
|
1353
|
+
// probe with HEAD): the same status and headers, no body. Kept in sync with the
|
|
1354
|
+
// core/server.js twin.
|
|
1355
|
+
// #B712 — `^[^?]*`: the endpoint path must end the url's PATH, not its query string
|
|
1356
|
+
// (`/web/?next=/_gina/health/check` is the page's). Kept in sync with core/server.js.
|
|
1357
|
+
var _healthMethod = request.method.toUpperCase();
|
|
1358
|
+
if ( ( _healthMethod === 'GET' || _healthMethod === 'HEAD' ) && /^[^?]*\_gina\/health\/check(?:\?|$)/i.test(request.url) ) {
|
|
1269
1359
|
|
|
1270
1360
|
const healthStatus = JSON.stringify({
|
|
1271
1361
|
status: "healthy",
|
|
@@ -1281,6 +1371,14 @@ function ServerEngineClass(options) {
|
|
|
1281
1371
|
|
|
1282
1372
|
// HTTP/2 (Multiplexing)
|
|
1283
1373
|
if (response.stream) {
|
|
1374
|
+
if ( _healthMethod === 'HEAD' ) {
|
|
1375
|
+
response.stream.respond({
|
|
1376
|
+
':status': 200,
|
|
1377
|
+
...healthHeaders,
|
|
1378
|
+
'content-length': Buffer.byteLength(healthStatus)
|
|
1379
|
+
});
|
|
1380
|
+
return response.stream.end();
|
|
1381
|
+
}
|
|
1284
1382
|
// On utilise le stream pour garder la session ouverte
|
|
1285
1383
|
response.stream.respond({
|
|
1286
1384
|
':status': 200,
|
|
@@ -1290,12 +1388,17 @@ function ServerEngineClass(options) {
|
|
|
1290
1388
|
}
|
|
1291
1389
|
|
|
1292
1390
|
// Fallback HTTP/1.1
|
|
1391
|
+
if ( _healthMethod === 'HEAD' ) {
|
|
1392
|
+
healthHeaders['content-length'] = Buffer.byteLength(healthStatus);
|
|
1393
|
+
response.writeHead(200, healthHeaders);
|
|
1394
|
+
return response.end();
|
|
1395
|
+
}
|
|
1293
1396
|
response.writeHead(200, healthHeaders);
|
|
1294
1397
|
return response.end(healthStatus);
|
|
1295
1398
|
}
|
|
1296
1399
|
|
|
1297
1400
|
// /_gina/metrics — Prometheus exposition format (#OBS1, slice 2)
|
|
1298
|
-
if ( request.method.toUpperCase() === 'GET' &&
|
|
1401
|
+
if ( request.method.toUpperCase() === 'GET' && /^\/_gina\/metrics$/.test(_ginaCtlPath) ) {
|
|
1299
1402
|
if ( !lib.metrics.isClientAllowed(request) ) {
|
|
1300
1403
|
var metricsForbiddenBody = JSON.stringify({ error: 'forbidden', message: '/_gina/metrics: client IP not in app.json metrics.allowFrom' });
|
|
1301
1404
|
var metricsForbiddenHeaders = _setPoweredByHeader({
|
|
@@ -1350,7 +1453,7 @@ function ServerEngineClass(options) {
|
|
|
1350
1453
|
});
|
|
1351
1454
|
}
|
|
1352
1455
|
|
|
1353
|
-
if ( request.method.toUpperCase() === 'GET' &&
|
|
1456
|
+
if ( request.method.toUpperCase() === 'GET' && /^\/_gina\/info$/.test(_ginaCtlPath) ) {
|
|
1354
1457
|
|
|
1355
1458
|
// #S7 — IP allowlist gate. Mirrors the metrics endpoint
|
|
1356
1459
|
// gate at L605-621. 403 on deny.
|
|
@@ -1411,7 +1514,7 @@ function ServerEngineClass(options) {
|
|
|
1411
1514
|
return response.end(infoStatus);
|
|
1412
1515
|
}
|
|
1413
1516
|
|
|
1414
|
-
if ( request.method.toUpperCase() === 'GET' &&
|
|
1517
|
+
if ( request.method.toUpperCase() === 'GET' && /^\/_gina\/cache\/stats$/.test(_ginaCtlPath) ) {
|
|
1415
1518
|
|
|
1416
1519
|
// #S7 — IP allowlist gate. Same shape as the /_gina/info gate above.
|
|
1417
1520
|
if ( !lib.admin.isClientAllowed(request) ) {
|
|
@@ -1466,7 +1569,7 @@ function ServerEngineClass(options) {
|
|
|
1466
1569
|
// cache.invalidateOnEvents) and takes precedence over ?bundle.
|
|
1467
1570
|
// Current-namespace fs bodies are removed via the entries' cleanup fns;
|
|
1468
1571
|
// old-namespace fs orphans are reclaimed by the CLI (gina cache:clear).
|
|
1469
|
-
if ( request.method.toUpperCase() === 'POST' &&
|
|
1572
|
+
if ( request.method.toUpperCase() === 'POST' && /^\/_gina\/cache\/clear$/.test(_ginaCtlPath) ) {
|
|
1470
1573
|
|
|
1471
1574
|
if ( !lib.admin.isClientAllowed(request) ) {
|
|
1472
1575
|
var cacheClearForbiddenBody = JSON.stringify({ error: 'forbidden', message: '/_gina/cache/clear: client IP not in app.json admin.allowFrom' });
|
|
@@ -1528,7 +1631,8 @@ function ServerEngineClass(options) {
|
|
|
1528
1631
|
if (
|
|
1529
1632
|
lib.releaseWatch.isActive()
|
|
1530
1633
|
&& request.method.toUpperCase() === 'GET'
|
|
1531
|
-
|
|
1634
|
+
// #B717 — `(?:\?|$)`: a query string no longer misses the handler
|
|
1635
|
+
&& /^\/_gina\/release\/status(?:\?|$)/.test(request.url)
|
|
1532
1636
|
) {
|
|
1533
1637
|
if ( !lib.admin.isClientAllowed(request) ) {
|
|
1534
1638
|
var _rwStatusForbiddenBody = JSON.stringify({ error: 'forbidden', message: '/_gina/release/status: client IP not in app.json admin.allowFrom' });
|
|
@@ -1562,7 +1666,7 @@ function ServerEngineClass(options) {
|
|
|
1562
1666
|
if (
|
|
1563
1667
|
lib.releaseWatch.isActive()
|
|
1564
1668
|
&& request.method.toUpperCase() === 'POST'
|
|
1565
|
-
&& /^\/_gina\/release\/rebuild(\?.*)
|
|
1669
|
+
&& /^\/_gina\/release\/rebuild(\?.*)?$/.test(request.url)
|
|
1566
1670
|
) {
|
|
1567
1671
|
if ( !lib.admin.isClientAllowed(request) ) {
|
|
1568
1672
|
var _rwRebuildForbiddenBody = JSON.stringify({ error: 'forbidden', message: '/_gina/release/rebuild: client IP not in app.json admin.allowFrom' });
|
|
@@ -1609,7 +1713,8 @@ function ServerEngineClass(options) {
|
|
|
1609
1713
|
if (
|
|
1610
1714
|
lib.releaseWatch.isActive()
|
|
1611
1715
|
&& request.method.toUpperCase() === 'GET'
|
|
1612
|
-
|
|
1716
|
+
// #B717 — `(?:\?|$)`: a query string no longer misses the handler
|
|
1717
|
+
&& /^\/_gina\/release\/events(?:\?|$)/.test(request.url)
|
|
1613
1718
|
) {
|
|
1614
1719
|
if ( !lib.admin.isClientAllowed(request) ) {
|
|
1615
1720
|
var _rwEventsForbiddenBody = JSON.stringify({ error: 'forbidden', message: '/_gina/release/events: client IP not in app.json admin.allowFrom' });
|
|
@@ -1624,10 +1729,11 @@ function ServerEngineClass(options) {
|
|
|
1624
1729
|
response.writeHead(403, _rwEventsForbiddenHeaders);
|
|
1625
1730
|
return response.end(_rwEventsForbiddenBody);
|
|
1626
1731
|
}
|
|
1732
|
+
// #B722 — no `connection` in the shared set: HTTP/2 forbids connection-specific
|
|
1733
|
+
// headers, node's respond() threw on it, and the stream never opened over h2
|
|
1627
1734
|
var _rwSseHeaders = _setPoweredByHeader({
|
|
1628
1735
|
'content-type': 'text/event-stream; charset=utf-8',
|
|
1629
1736
|
'cache-control': 'no-cache, no-store',
|
|
1630
|
-
'connection': 'keep-alive',
|
|
1631
1737
|
'x-content-type-options': 'nosniff'
|
|
1632
1738
|
});
|
|
1633
1739
|
var _rwWrite, _rwOnClose;
|
|
@@ -1637,8 +1743,8 @@ function ServerEngineClass(options) {
|
|
|
1637
1743
|
_rwWrite = function(d) { try { response.stream.write(d); } catch(e){} };
|
|
1638
1744
|
_rwOnClose = function(fn) { response.stream.on('close', fn); };
|
|
1639
1745
|
} else {
|
|
1640
|
-
// HTTP/1.1
|
|
1641
|
-
response.writeHead(200, _rwSseHeaders);
|
|
1746
|
+
// HTTP/1.1 — `connection` is an HTTP/1 header (#B722)
|
|
1747
|
+
response.writeHead(200, { ..._rwSseHeaders, 'connection': 'keep-alive' });
|
|
1642
1748
|
_rwWrite = function(d) { try { response.write(d); } catch(e){} };
|
|
1643
1749
|
_rwOnClose = function(fn) { request.on('close', fn); };
|
|
1644
1750
|
}
|
|
@@ -1671,8 +1777,9 @@ function ServerEngineClass(options) {
|
|
|
1671
1777
|
// timestamps), never result / error. Engine-agnostic handler lives in
|
|
1672
1778
|
// server.js; this is the Isaac (HTTP/2) fast-path. 404 on unknown /
|
|
1673
1779
|
// malformed id.
|
|
1780
|
+
// #B712 — `^[^?]*`: the job path must be the url's path, never its query string.
|
|
1674
1781
|
var _jobsMatch = (request.method.toUpperCase() === 'GET')
|
|
1675
|
-
? request.url.match(
|
|
1782
|
+
? request.url.match(/^[^?]*\/_gina\/jobs\/([A-Za-z0-9_-]+)\/?(\?.*)?$/)
|
|
1676
1783
|
: null;
|
|
1677
1784
|
if ( _jobsMatch ) {
|
|
1678
1785
|
var _jobsId = _jobsMatch[1];
|
|
@@ -1712,7 +1819,7 @@ function ServerEngineClass(options) {
|
|
|
1712
1819
|
// settings.json says is closed.
|
|
1713
1820
|
if (
|
|
1714
1821
|
( request.method.toUpperCase() === 'GET' || request.method.toUpperCase() === 'POST' )
|
|
1715
|
-
&&
|
|
1822
|
+
&& /^\/_gina\/maintenance$/.test(_ginaCtlPath)
|
|
1716
1823
|
) {
|
|
1717
1824
|
var _mtCtlHeaders = _setPoweredByHeader({
|
|
1718
1825
|
'cache-control': 'no-cache, no-store, must-revalidate',
|
|
@@ -1850,7 +1957,8 @@ function ServerEngineClass(options) {
|
|
|
1850
1957
|
if (
|
|
1851
1958
|
process.gina && process.gina._inspectorInstrumentEnabled
|
|
1852
1959
|
&& (request.method.toUpperCase() === 'GET' || request.method.toUpperCase() === 'POST')
|
|
1853
|
-
|
|
1960
|
+
// #B712 — `^[^?]*`: in the url's path, not its query string
|
|
1961
|
+
&& /^[^?]*\/_gina\/instrument(?:\?|$)/.test(request.url)
|
|
1854
1962
|
) {
|
|
1855
1963
|
var _instrHeaders = _setPoweredByHeader({
|
|
1856
1964
|
'content-type': 'application/json; charset=utf8',
|
|
@@ -1896,14 +2004,17 @@ function ServerEngineClass(options) {
|
|
|
1896
2004
|
if (
|
|
1897
2005
|
isCacheless
|
|
1898
2006
|
&& request.method.toUpperCase() === 'GET'
|
|
1899
|
-
|
|
2007
|
+
// #B712 — `^[^?]*…(?:\?|$)`: in the url's path, and a query string no longer misses it
|
|
2008
|
+
&& /^[^?]*\/_gina\/inspector(\/[^?]*)?(?:\?|$)/.test(request.url)
|
|
1900
2009
|
) {
|
|
1901
2010
|
// Activate profiling on first Inspector access — one-way flag,
|
|
1902
2011
|
// stays true until bundle restart. QI (controller.js:257) gates
|
|
1903
2012
|
// on this; it must be true before any request is processed.
|
|
1904
2013
|
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
1905
2014
|
var _inspBase = __dirname + '/asset/plugin/dist/vendor/gina/inspector';
|
|
1906
|
-
|
|
2015
|
+
// #B712 — read from the url's path, like the matcher above: a query string that
|
|
2016
|
+
// names another Inspector path no longer picks the file
|
|
2017
|
+
var _inspPath = request.url.split('?')[0].replace(/^.*\/_gina\/inspector\/?/, '');
|
|
1907
2018
|
if (!_inspPath || _inspPath === '') _inspPath = 'index.html';
|
|
1908
2019
|
|
|
1909
2020
|
var _inspMime = {
|
|
@@ -1953,15 +2064,17 @@ function ServerEngineClass(options) {
|
|
|
1953
2064
|
if (
|
|
1954
2065
|
isCacheless
|
|
1955
2066
|
&& request.method.toUpperCase() === 'GET'
|
|
1956
|
-
|
|
2067
|
+
// #B712 — `^[^?]*…(?:\?|$)`: in the url's path, and a query string no longer misses it
|
|
2068
|
+
&& /^[^?]*\/_gina\/logs(?:\?|$)/.test(request.url)
|
|
1957
2069
|
) {
|
|
1958
2070
|
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
1959
2071
|
var _ansiRe = /\x1B\[\d+m/g;
|
|
1960
2072
|
|
|
2073
|
+
// #B722 — no `connection` in the shared set: HTTP/2 forbids connection-specific
|
|
2074
|
+
// headers, node's respond() threw on it, and the stream never opened over h2
|
|
1961
2075
|
var _sseHeaders = _setPoweredByHeader({
|
|
1962
2076
|
'content-type': 'text/event-stream; charset=utf-8',
|
|
1963
2077
|
'cache-control': 'no-cache, no-store',
|
|
1964
|
-
'connection': 'keep-alive',
|
|
1965
2078
|
'x-content-type-options': 'nosniff',
|
|
1966
2079
|
'access-control-allow-origin': '*'
|
|
1967
2080
|
});
|
|
@@ -1974,8 +2087,8 @@ function ServerEngineClass(options) {
|
|
|
1974
2087
|
_write = function(d) { try { response.stream.write(d); } catch(e){} };
|
|
1975
2088
|
_onClose = function(fn) { response.stream.on('close', fn); };
|
|
1976
2089
|
} else {
|
|
1977
|
-
// HTTP/1.1
|
|
1978
|
-
response.writeHead(200, _sseHeaders);
|
|
2090
|
+
// HTTP/1.1 — `connection` is an HTTP/1 header (#B722)
|
|
2091
|
+
response.writeHead(200, { ..._sseHeaders, 'connection': 'keep-alive' });
|
|
1979
2092
|
_write = function(d) { try { response.write(d); } catch(e){} };
|
|
1980
2093
|
_onClose = function(fn) { request.on('close', fn); };
|
|
1981
2094
|
}
|
|
@@ -2021,7 +2134,8 @@ function ServerEngineClass(options) {
|
|
|
2021
2134
|
if (
|
|
2022
2135
|
(isCacheless || (process.gina && process.gina._inspectorAgentEnabled))
|
|
2023
2136
|
&& request.method.toUpperCase() === 'GET'
|
|
2024
|
-
|
|
2137
|
+
// #B712 — `^[^?]*`: in the url's path, not its query string
|
|
2138
|
+
&& /^[^?]*\/_gina\/agent(?:\?|$)/.test(request.url)
|
|
2025
2139
|
) {
|
|
2026
2140
|
// #INS9b — outside dev mode the agent endpoint requires a valid
|
|
2027
2141
|
// key (x-gina-inspector-key header or ?key= query param). In dev
|
|
@@ -2042,10 +2156,10 @@ function ServerEngineClass(options) {
|
|
|
2042
2156
|
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
2043
2157
|
var _agAnsiRe = /\x1B\[\d+m/g;
|
|
2044
2158
|
|
|
2159
|
+
// #B722 — no `connection` in the shared set (see the /_gina/logs stream above)
|
|
2045
2160
|
var _agHeaders = _setPoweredByHeader({
|
|
2046
2161
|
'content-type': 'text/event-stream; charset=utf-8',
|
|
2047
2162
|
'cache-control': 'no-cache, no-store',
|
|
2048
|
-
'connection': 'keep-alive',
|
|
2049
2163
|
'access-control-allow-origin': '*',
|
|
2050
2164
|
'x-content-type-options': 'nosniff'
|
|
2051
2165
|
});
|
|
@@ -2058,8 +2172,8 @@ function ServerEngineClass(options) {
|
|
|
2058
2172
|
_agWrite = function(d) { try { response.stream.write(d); } catch(e){} };
|
|
2059
2173
|
_agOnClose = function(fn) { response.stream.on('close', fn); };
|
|
2060
2174
|
} else {
|
|
2061
|
-
// HTTP/1.1
|
|
2062
|
-
response.writeHead(200, _agHeaders);
|
|
2175
|
+
// HTTP/1.1 — `connection` is an HTTP/1 header (#B722)
|
|
2176
|
+
response.writeHead(200, { ..._agHeaders, 'connection': 'keep-alive' });
|
|
2063
2177
|
_agWrite = function(d) { try { response.write(d); } catch(e){} };
|
|
2064
2178
|
_agOnClose = function(fn) { request.on('close', fn); };
|
|
2065
2179
|
}
|
|
@@ -2158,7 +2272,8 @@ function ServerEngineClass(options) {
|
|
|
2158
2272
|
if (
|
|
2159
2273
|
isCacheless
|
|
2160
2274
|
&& request.method.toUpperCase() === 'GET'
|
|
2161
|
-
|
|
2275
|
+
// #B712 — `^[^?]*…(?:\?|$)`: in the url's path, and a query string no longer misses it
|
|
2276
|
+
&& /^[^?]*\/_gina\/indexes(?:\?|$)/.test(request.url)
|
|
2162
2277
|
) {
|
|
2163
2278
|
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
2164
2279
|
|
|
@@ -2224,7 +2339,8 @@ function ServerEngineClass(options) {
|
|
|
2224
2339
|
if (
|
|
2225
2340
|
isCacheless
|
|
2226
2341
|
&& request.method.toUpperCase() === 'GET'
|
|
2227
|
-
|
|
2342
|
+
// #B712 — `^[^?]*…(?:\?|$)`: in the url's path, and a query string no longer misses it
|
|
2343
|
+
&& /^[^?]*\/_gina\/reveal(?:\?|$)/.test(request.url)
|
|
2228
2344
|
) {
|
|
2229
2345
|
var _rvHeaders = _setPoweredByHeader({
|
|
2230
2346
|
'content-type': 'application/json; charset=utf8',
|
|
@@ -2378,11 +2494,19 @@ function ServerEngineClass(options) {
|
|
|
2378
2494
|
|
|
2379
2495
|
|
|
2380
2496
|
if (
|
|
2381
|
-
request.method.toUpperCase() === 'GET' && /\_gina\/assets\/routing\.json
|
|
2497
|
+
request.method.toUpperCase() === 'GET' && /\_gina\/assets\/routing\.json(?:\?|$)/i.test(request.url)
|
|
2382
2498
|
) {
|
|
2383
2499
|
// server.toApi(reques, response)
|
|
2384
2500
|
// console.debug('[ SERVER ][200] '+ request.url);
|
|
2385
|
-
|
|
2501
|
+
// #B717 — a query string no longer misses the handler (`(?:\?|$)`), and the asset
|
|
2502
|
+
// lookup reads the file name the test matched: the url's last segment of
|
|
2503
|
+
// `routing.json?x` named no asset, and the `localAsset.mime` read below would
|
|
2504
|
+
// have thrown. Not the query-free path's last segment either — the test also
|
|
2505
|
+
// matches `/x?y=/_gina/assets/routing.json`, whose path names `x`.
|
|
2506
|
+
// #B707 — the name is lower-cased: the test is case-insensitive while `findOne`
|
|
2507
|
+
// compares strictly, so `Routing.json` named no asset and the `localAsset.mime`
|
|
2508
|
+
// read below threw — an uncaughtException that ended the process.
|
|
2509
|
+
localAsset = assetsCollection.findOne({ file: /\_gina\/assets\/(routing\.json)(?:\?|$)/i.exec(request.url)[1].toLowerCase() });
|
|
2386
2510
|
// #B66 — on a proxied deployment serve the host-stripped routing.json so
|
|
2387
2511
|
// the browser never receives any bundle's INTERNAL scheme://host:port (an
|
|
2388
2512
|
// information disclosure) and cross-bundle client toUrl resolves
|
|
@@ -2494,8 +2618,12 @@ function ServerEngineClass(options) {
|
|
|
2494
2618
|
// core/server.js then serves the asset underneath it — MEASURED as a
|
|
2495
2619
|
// 200 bypass, against a synchronous arm that held at 503. The full
|
|
2496
2620
|
// mechanism is documented at the core/server.js twin.
|
|
2621
|
+
//
|
|
2622
|
+
// #B715 — the `/_gina/*` paths only core/server.js answers pass through to
|
|
2623
|
+
// it (`_isLeftToServerJs`); the check runs last, so it costs nothing while
|
|
2624
|
+
// no window is open.
|
|
2497
2625
|
var _mtState = server._maintenance;
|
|
2498
|
-
if ( _mtState && lib.maintenance.isActive(_mtState) ) {
|
|
2626
|
+
if ( _mtState && lib.maintenance.isActive(_mtState) && !_isLeftToServerJs(request.url) ) {
|
|
2499
2627
|
var _mtNow = Date.now();
|
|
2500
2628
|
var _mtConf = lib.maintenance.effectiveConf(_mtState, _mtNow);
|
|
2501
2629
|
var _mtVerdict = lib.maintenance.evaluateBypass(
|
|
@@ -2546,9 +2674,19 @@ function ServerEngineClass(options) {
|
|
|
2546
2674
|
return response.end();
|
|
2547
2675
|
}
|
|
2548
2676
|
// cookie / header / allowlisted-and-not-proxied: straight through.
|
|
2677
|
+
// #B711 — mark the verdict for core/server.js. Below, isaac rewrites an http/1.1
|
|
2678
|
+
// `Host` without its port before handing the request over, and server.js's own
|
|
2679
|
+
// gate would decide again on that rewritten `Host`, read a listed direct client as
|
|
2680
|
+
// proxied and answer 503. server.js honours this mark instead of re-deciding.
|
|
2681
|
+
request._ginaMaintenanceAdmitted = true;
|
|
2549
2682
|
}
|
|
2550
2683
|
|
|
2551
|
-
|
|
2684
|
+
// The output cache is looked up only while `server.cache.enable` is on. Every
|
|
2685
|
+
// writer refuses to store while it is off (render-swig / render-json writeCache),
|
|
2686
|
+
// the engine-agnostic read in server.js gates on the same flag, and the former
|
|
2687
|
+
// production-unconditional lookup cost two existsSync() calls per GET and could
|
|
2688
|
+
// serve an entry left on disk by an earlier run that had the cache enabled.
|
|
2689
|
+
if ( String(server._cacheIsEnabled).toLowerCase() === 'true' ) {
|
|
2552
2690
|
if ( request.method.toUpperCase() === 'GET' ) {
|
|
2553
2691
|
var cacheStatus = null;
|
|
2554
2692
|
if ( String(server._cacheIsEnabled).toLowerCase() === 'true' ) {
|
|
@@ -3205,7 +3343,7 @@ function ServerEngineClass(options) {
|
|
|
3205
3343
|
server.on('upgrade', function(req, socket, head){
|
|
3206
3344
|
// #INS8 — defer /_gina/agent upgrades to the WebSocket agent handler
|
|
3207
3345
|
// attached in server.js; engine.io owns only its own upgrade path.
|
|
3208
|
-
if (/\/_gina\/agent(?:\?|$)/.test(req.url
|
|
3346
|
+
if (/\/_gina\/agent(?:\?|$)/.test(req.url ? req.url.split('?')[0] : '')) { return; }
|
|
3209
3347
|
console.debug('[IO SERVER ] upgrading socket #'+ this.id);
|
|
3210
3348
|
ioServer.handleUpgrade(req, socket, head);
|
|
3211
3349
|
});
|