gina 0.6.33 → 0.7.0
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 +31 -0
- package/CONVENTIONS.md +1 -1
- package/README.md +61 -79
- package/ROADMAP.md +21 -16
- package/SECURITY.md +37 -0
- package/bin/gina +11 -7
- package/framework/v0.7.0/VERSION +1 -0
- package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.js +124 -90
- package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js +720 -0
- 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.6.33 → v0.7.0}/core/config.js +15 -0
- package/framework/v0.7.0/core/config.requirements-anchor.js +218 -0
- package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.js +101 -7
- package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-swig-async.js +7 -3
- package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-swig.js +53 -13
- package/framework/{v0.6.33 → v0.7.0}/core/gna.js +16 -3
- package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/src/form-validator.js +74 -16
- package/framework/{v0.6.33 → v0.7.0}/core/server.express.js +143 -10
- package/framework/{v0.6.33 → v0.7.0}/core/server.isaac.js +6 -1
- package/framework/{v0.6.33 → v0.7.0}/core/server.js +240 -255
- package/framework/v0.7.0/core/server.route-candidates.js +326 -0
- package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/connectors.json +1 -1
- package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/settings.json +6 -0
- package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/controllers/setup.js +9 -2
- package/framework/{v0.6.33 → v0.7.0}/helpers/path.js +36 -6
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/restart.js +100 -31
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/list.js +20 -2
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/add.js +34 -7
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/set.js +4 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/unset.js +4 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/init.js +76 -19
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/helper.js +16 -4
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/list.js +13 -4
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/reset.js +28 -7
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/add.js +63 -20
- package/framework/v0.7.0/lib/cmd/project/rename.js +285 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/set.js +3 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/mq/listener.js +20 -5
- package/framework/{v0.6.33 → v0.7.0}/lib/routing/src/main.js +48 -71
- package/framework/{v0.6.33 → v0.7.0}/lib/swig-filters/src/main.js +85 -0
- package/framework/{v0.6.33 → v0.7.0}/package.json +1 -1
- package/gna.js +5 -4
- package/llms.txt +36 -34
- package/package.json +4 -4
- package/schema/routing.json +2 -2
- package/schema/settings.json +3 -3
- package/script/generate_gna_types.js +1 -1
- package/script/post_install.js +100 -26
- package/script/pre_install.js +49 -8
- package/types/globals.d.ts +3 -1
- package/types/gna.d.ts +8 -2
- package/types/index.d.ts +1 -0
- package/utils/helper.js +60 -10
- package/framework/v0.6.33/VERSION +0 -1
- package/framework/v0.6.33/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -721
- package/framework/v0.6.33/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.33/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.6.33/lib/cmd/project/rename.js +0 -199
- package/framework/v0.6.33/lib/routing/src/radix.js +0 -114
- /package/framework/{v0.6.33 → v0.7.0}/AUTHORS +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/content.encoding +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-xml.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/inline-script.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/mime.types +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/entity.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/router.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/server.isaac.rapid-reset.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/status.codes +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/console.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/context.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/task.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/text.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/async/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/inc/name.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/inc/name.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/conf-view/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/conf-view/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/config.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/duration/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/duration/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/idempotency/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/idempotency/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/job/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/math/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/message-validator/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/message-validator/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/model.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/money/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/money/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/multipart/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/multipart/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/priority/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/priority/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/proc.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/push/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/security-headers-emitter/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/security-headers-emitter/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/session-lifetime/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/session-lifetime/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/shell.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/sri/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/sri/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/state.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/url/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/url/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/validator.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-session/src/main.js +0 -0
|
@@ -16,6 +16,8 @@ var Events = require('events');
|
|
|
16
16
|
var EventEmitter = require('events').EventEmitter;
|
|
17
17
|
var locales = require('./locales');
|
|
18
18
|
var lib = require('./../lib');
|
|
19
|
+
// #B360 — the unanchored-`requirements` boot warning (server-side only; reads routing, never rewrites it)
|
|
20
|
+
var requirementsAnchor = require('./config.requirements-anchor');
|
|
19
21
|
var Domain = lib.Domain;
|
|
20
22
|
var domainLib = new Domain();
|
|
21
23
|
var merge = lib.merge;
|
|
@@ -2542,6 +2544,19 @@ function Config(opt, contextResetNeeded) {
|
|
|
2542
2544
|
}
|
|
2543
2545
|
}
|
|
2544
2546
|
|
|
2547
|
+
// #B360 — a regex requirement is tested as a partial (search) match when a request is
|
|
2548
|
+
// matched, so `/[0-9]+/` accepts `123abc`. One warning per bundle lists the regex
|
|
2549
|
+
// requirements not anchored at both ends. Only the bundle this process runs (or every
|
|
2550
|
+
// bundle of a standalone process) is judged, as for `settings.log.redact` below, so a
|
|
2551
|
+
// bundle is not warned about its siblings. The routing table is read, never rewritten.
|
|
2552
|
+
var _requirementsApply = ( bundle === self.startingApp ) || ( self.Host && typeof(self.Host.isStandalone) == 'function' && self.Host.isStandalone() === true );
|
|
2553
|
+
if ( _requirementsApply ) {
|
|
2554
|
+
var _unanchored = requirementsAnchor.findUnanchoredRequirements(routing);
|
|
2555
|
+
if ( _unanchored.length > 0 ) {
|
|
2556
|
+
console.warn( requirementsAnchor.formatUnanchoredWarning(bundle, _unanchored) );
|
|
2557
|
+
}
|
|
2558
|
+
}
|
|
2559
|
+
|
|
2545
2560
|
self.setRouting(bundle, env, scope, routing);
|
|
2546
2561
|
// reverse routing
|
|
2547
2562
|
for (let rule in routing) {
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* #B360 — which routing `requirements` regexes are anchored at both ends.
|
|
4
|
+
*
|
|
5
|
+
* A `requirements` value such as `"/[0-9]+/"` is tested with `RegExp#test` when a request is
|
|
6
|
+
* matched, which is a partial (search) match: it accepts `123abc`, because the value CONTAINS a
|
|
7
|
+
* match. Only a pattern anchored at both ends (`^…$`) constrains the whole value. The config
|
|
8
|
+
* loader uses this module to warn once per bundle, listing the requirements that are not
|
|
9
|
+
* anchored; it only READS the routing table and never rewrites a requirement (the #P46
|
|
10
|
+
* route-candidate index caches per routing table object and reads requirement keys).
|
|
11
|
+
*
|
|
12
|
+
* "Anchored" is decided per top-level alternative, so `/(^draft$|^[0-9]+$)/` is anchored (each
|
|
13
|
+
* alternative is) while `/^txt|html$/` is not (`^txt` has no end anchor, `html$` no start
|
|
14
|
+
* anchor). The `m` flag makes `^` and `$` match at line breaks, so a value carrying a newline
|
|
15
|
+
* could pass: a pattern with it counts as not anchored. `validator::` requirements are not
|
|
16
|
+
* regexes and are skipped.
|
|
17
|
+
*
|
|
18
|
+
* Server-side only: the browser bundle never loads this file.
|
|
19
|
+
*
|
|
20
|
+
* @module core/config.requirements-anchor
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Split a regex body on its top-level `|` — outside groups and character classes, and not
|
|
25
|
+
* escaped.
|
|
26
|
+
*
|
|
27
|
+
* @inner
|
|
28
|
+
* @private
|
|
29
|
+
* @param {string} body - The pattern between the slashes
|
|
30
|
+
* @returns {string[]} The top-level alternatives (one entry when there is no top-level `|`)
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* splitTopLevel('^a|b$'); // ['^a', 'b$']
|
|
34
|
+
* splitTopLevel('^(a|b)$'); // ['^(a|b)$']
|
|
35
|
+
*/
|
|
36
|
+
function splitTopLevel(body) {
|
|
37
|
+
var parts = [], depth = 0, inClass = false, start = 0;
|
|
38
|
+
for (var i = 0; i < body.length; i++) {
|
|
39
|
+
var c = body[i];
|
|
40
|
+
if (c === '\\') { i++; continue; }
|
|
41
|
+
if (inClass) {
|
|
42
|
+
if (c === ']') { inClass = false; }
|
|
43
|
+
} else if (c === '[') {
|
|
44
|
+
inClass = true;
|
|
45
|
+
} else if (c === '(') {
|
|
46
|
+
depth++;
|
|
47
|
+
} else if (c === ')') {
|
|
48
|
+
depth--;
|
|
49
|
+
} else if (c === '|' && depth === 0) {
|
|
50
|
+
parts.push(body.slice(start, i));
|
|
51
|
+
start = i + 1;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
parts.push(body.slice(start));
|
|
55
|
+
return parts;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The inner body of a group that spans the whole alternative — `(…)` or `(?:…)` — or null.
|
|
60
|
+
*
|
|
61
|
+
* @inner
|
|
62
|
+
* @private
|
|
63
|
+
* @param {string} alt - One alternative
|
|
64
|
+
* @returns {?string} The group's inner body, without a leading `?:`, or null
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* wholeGroupBody('(^a$|^b$)'); // '^a$|^b$'
|
|
68
|
+
* wholeGroupBody('(a)b'); // null
|
|
69
|
+
*/
|
|
70
|
+
function wholeGroupBody(alt) {
|
|
71
|
+
if (alt.charAt(0) !== '(') { return null; }
|
|
72
|
+
var depth = 0, inClass = false;
|
|
73
|
+
for (var i = 0; i < alt.length; i++) {
|
|
74
|
+
var c = alt[i];
|
|
75
|
+
if (c === '\\') { i++; continue; }
|
|
76
|
+
if (inClass) {
|
|
77
|
+
if (c === ']') { inClass = false; }
|
|
78
|
+
} else if (c === '[') {
|
|
79
|
+
inClass = true;
|
|
80
|
+
} else if (c === '(') {
|
|
81
|
+
depth++;
|
|
82
|
+
} else if (c === ')') {
|
|
83
|
+
depth--;
|
|
84
|
+
if (depth === 0) {
|
|
85
|
+
if (i !== alt.length - 1) { return null; }
|
|
86
|
+
var inner = alt.slice(1, i);
|
|
87
|
+
return (inner.slice(0, 2) === '?:') ? inner.slice(2) : inner;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Whether a pattern ends with an unescaped `$` (an even count of backslashes before it).
|
|
96
|
+
*
|
|
97
|
+
* @inner
|
|
98
|
+
* @private
|
|
99
|
+
* @param {string} s - A pattern
|
|
100
|
+
* @returns {boolean} true when the final `$` is an anchor, not a literal
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* endsWithAnchor('a$'); // true
|
|
104
|
+
* endsWithAnchor('a\\$'); // false (a literal dollar)
|
|
105
|
+
*/
|
|
106
|
+
function endsWithAnchor(s) {
|
|
107
|
+
if (s.charAt(s.length - 1) !== '$') { return false; }
|
|
108
|
+
var backslashes = 0;
|
|
109
|
+
for (var j = s.length - 2; j >= 0 && s[j] === '\\'; j--) { backslashes++; }
|
|
110
|
+
return backslashes % 2 === 0;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Whether a regex body matches only whole values: every top-level alternative starts with
|
|
115
|
+
* `^` and ends with an unescaped `$`, or is one group spanning it whose body is anchored.
|
|
116
|
+
*
|
|
117
|
+
* @inner
|
|
118
|
+
* @private
|
|
119
|
+
* @param {string} body - The pattern between the slashes
|
|
120
|
+
* @returns {boolean} true when the body is anchored at both ends
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* isAnchoredBody('^[0-9]+$'); // true
|
|
124
|
+
* isAnchoredBody('(^draft$|^[0-9]+$)'); // true
|
|
125
|
+
* isAnchoredBody('^[0-9]+'); // false
|
|
126
|
+
*/
|
|
127
|
+
function isAnchoredBody(body) {
|
|
128
|
+
var alts = splitTopLevel(body);
|
|
129
|
+
if (alts.length > 1) {
|
|
130
|
+
return alts.every(isAnchoredBody);
|
|
131
|
+
}
|
|
132
|
+
var alt = alts[0];
|
|
133
|
+
if (alt.charAt(0) === '^' && alt.length > 1 && endsWithAnchor(alt)) {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
var inner = wholeGroupBody(alt);
|
|
137
|
+
return (inner !== null && inner !== '') ? isAnchoredBody(inner) : false;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Whether a routing `requirements` value is a regex that is NOT anchored at both ends.
|
|
142
|
+
* A `validator::` value, a non-string or a value not written as `/body/flags` is not a
|
|
143
|
+
* regex requirement and returns false (the config loader refuses any value that is neither
|
|
144
|
+
* `/…` nor `validator::` at boot).
|
|
145
|
+
*
|
|
146
|
+
* @param {*} value - A requirements value as written in routing.json
|
|
147
|
+
* @returns {boolean} true when the value is a regex a partial match can satisfy
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* isUnanchoredRequirement('/[0-9]+/'); // true
|
|
151
|
+
* isUnanchoredRequirement('/^[0-9]+$/'); // false
|
|
152
|
+
* isUnanchoredRequirement('/^[0-9]+$/m'); // true (the m flag)
|
|
153
|
+
* isUnanchoredRequirement('validator::{ isEmail: true }'); // false
|
|
154
|
+
*/
|
|
155
|
+
function isUnanchoredRequirement(value) {
|
|
156
|
+
if (typeof(value) !== 'string' || value.charAt(0) !== '/') { return false; }
|
|
157
|
+
var last = value.lastIndexOf('/');
|
|
158
|
+
if (last < 1) { return true; } // `/` alone: an empty pattern matches anything
|
|
159
|
+
var body = value.slice(1, last);
|
|
160
|
+
var flags = value.slice(last + 1);
|
|
161
|
+
if (flags.indexOf('m') > -1) { return true; }
|
|
162
|
+
return !isAnchoredBody(body);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* List a routing table's regex requirements that are not anchored at both ends, in table
|
|
167
|
+
* order. Reads only; the table and its requirement objects are left untouched.
|
|
168
|
+
*
|
|
169
|
+
* @param {object} routing - A bundle's routing table (rule name → rule)
|
|
170
|
+
* @returns {Array<{rule: string, key: string, value: string}>} The unanchored requirements
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* findUnanchoredRequirements({ item: { url: '/item/:id', requirements: { id: '/[0-9]+/' } } });
|
|
174
|
+
* // [ { rule: 'item', key: 'id', value: '/[0-9]+/' } ]
|
|
175
|
+
*/
|
|
176
|
+
function findUnanchoredRequirements(routing) {
|
|
177
|
+
var found = [];
|
|
178
|
+
if (!routing || typeof(routing) !== 'object') { return found; }
|
|
179
|
+
var rules = Object.keys(routing);
|
|
180
|
+
for (var r = 0; r < rules.length; r++) {
|
|
181
|
+
var rule = routing[rules[r]];
|
|
182
|
+
if (!rule || typeof(rule) !== 'object' || !rule.requirements || typeof(rule.requirements) !== 'object') { continue; }
|
|
183
|
+
var keys = Object.keys(rule.requirements);
|
|
184
|
+
for (var k = 0; k < keys.length; k++) {
|
|
185
|
+
var value = rule.requirements[keys[k]];
|
|
186
|
+
if (isUnanchoredRequirement(value)) {
|
|
187
|
+
found.push({ rule: rules[r], key: keys[k], value: value });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return found;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* The single warning line for a bundle's unanchored requirements.
|
|
196
|
+
*
|
|
197
|
+
* @param {string} bundle - The bundle name
|
|
198
|
+
* @param {Array<{rule: string, key: string, value: string}>} list - From findUnanchoredRequirements
|
|
199
|
+
* @returns {string} The warning text
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* formatUnanchoredWarning('api', [ { rule: 'item', key: 'id', value: '/[0-9]+/' } ]);
|
|
203
|
+
* // '[CONFIG][loadBundleConfig] [ api ] 1 routing requirement is not anchored ...: item { id: /[0-9]+/ } ...'
|
|
204
|
+
*/
|
|
205
|
+
function formatUnanchoredWarning(bundle, list) {
|
|
206
|
+
var n = list.length;
|
|
207
|
+
var items = list.map(function (u) { return u.rule + ' { ' + u.key + ': ' + u.value + ' }'; }).join(', ');
|
|
208
|
+
return '[CONFIG][loadBundleConfig] [ ' + bundle + ' ] ' + n + ' routing requirement' + (n === 1 ? ' is' : 's are')
|
|
209
|
+
+ ' not anchored at both ends (^…$), so ' + (n === 1 ? 'it is' : 'each is') + ' tested as a partial match and a value'
|
|
210
|
+
+ ' that only contains a match passes: ' + items + '. Anchor ' + (n === 1 ? 'it' : 'them') + ' (e.g. /^[0-9]+$/),'
|
|
211
|
+
+ ' or write an intended partial match in full (e.g. /^pk_.*$/). See https://gina.io/docs/guides/routing#regex-requirements';
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
module.exports = {
|
|
215
|
+
isUnanchoredRequirement : isUnanchoredRequirement,
|
|
216
|
+
findUnanchoredRequirements : findUnanchoredRequirements,
|
|
217
|
+
formatUnanchoredWarning : formatUnanchoredWarning
|
|
218
|
+
};
|
|
@@ -3284,7 +3284,12 @@ function SuperController(options) {
|
|
|
3284
3284
|
ignoreWebRoot = false
|
|
3285
3285
|
} else {
|
|
3286
3286
|
res = local.res;
|
|
3287
|
-
|
|
3287
|
+
// #B670 — `__stack` returns raw V8 CallSite objects, whose toString() has no
|
|
3288
|
+
// ` at ` prefix: joined as-is, the list escaped throwError's non-local cut
|
|
3289
|
+
// and shipped every absolute path to the client. Written as V8 frames, the
|
|
3290
|
+
// cut recognises it and the ref line keeps it whole.
|
|
3291
|
+
// was: var stack = __stack.splice(1).toString().split(',').join('\n');
|
|
3292
|
+
var stack = __stack.splice(1).map(function (c) { return ' at '+ c; }).join('\n');
|
|
3288
3293
|
self.throwError(res, 500, new Error('RedirectError: @param `ignoreWebRoot` must be a boolean\n' + stack));
|
|
3289
3294
|
return;
|
|
3290
3295
|
}
|
|
@@ -5087,6 +5092,12 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
5087
5092
|
* pre-transport failure (missing host, unreadable certificate, open
|
|
5088
5093
|
* circuit, nested-render refusal) — and on success `cb(false, data)`.
|
|
5089
5094
|
*
|
|
5095
|
+
* The success `data` is the upstream body as the client parsed it — a
|
|
5096
|
+
* JSON-shaped body becomes an object, anything else stays a string — and
|
|
5097
|
+
* is the same over HTTP/1.1 and HTTP/2: a body without `status` arrives
|
|
5098
|
+
* without one. Before #P47 F6 the HTTP/2 client added `status: 200` to such
|
|
5099
|
+
* a body and logged a warn on every call.
|
|
5100
|
+
*
|
|
5090
5101
|
* A query issued while the controller is rendering from another required
|
|
5091
5102
|
* controller (`renderingStack` deeper than one frame — the required
|
|
5092
5103
|
* controller shares the caller's options object) is refused without
|
|
@@ -6349,7 +6360,9 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6349
6360
|
* before sending on a cached session whose last PONG is older than HTTP2_PREFLIGHT_STALE_MS.
|
|
6350
6361
|
* Retries up to HTTP2_MAX_RETRIES times on transient failures (timeout, stream error,
|
|
6351
6362
|
* premature close, 502, pre-flight failure) with HTTP2_RETRY_DELAY_MS backoff on 2nd+ retry.
|
|
6352
|
-
* ECONNREFUSED is never retried.
|
|
6363
|
+
* ECONNREFUSED is never retried. A JSON-shaped response body is parsed and delivered as
|
|
6364
|
+
* it came, exactly like the HTTP/1.1 handler does: no `status` is added to a body that has
|
|
6365
|
+
* none (#P47 F6).
|
|
6353
6366
|
*
|
|
6354
6367
|
* @inner
|
|
6355
6368
|
* @param {object} browser - HTTP/2 client module (node:http2)
|
|
@@ -7211,11 +7224,19 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
7211
7224
|
if (typeof data === 'string' && /^(\{|%7B|\[{)|\[\]/.test(data)) {
|
|
7212
7225
|
try {
|
|
7213
7226
|
data = JSON.parse(data);
|
|
7214
|
-
|
|
7215
|
-
|
|
7216
|
-
|
|
7217
|
-
|
|
7218
|
-
|
|
7227
|
+
// #P47 F6 — the parsed body is delivered as it came, like the HTTP/1.1
|
|
7228
|
+
// client does. A body without `status` used to be logged ("Response status
|
|
7229
|
+
// code is undefined: switching to 200") and stamped `data.status = 200` on
|
|
7230
|
+
// every call: the same upstream answer then reached an HTTP/2 caller with
|
|
7231
|
+
// one key more than an HTTP/1.1 caller, `self.forward()` relayed that key
|
|
7232
|
+
// into the end client's body, and on a JSON string body (`"[]"`) the stamp
|
|
7233
|
+
// threw in strict mode and turned the success into a 500. The branch below
|
|
7234
|
+
// already reads an absent `status` as success, so nothing depended on it.
|
|
7235
|
+
// replaced: if (typeof data.status === 'undefined') {
|
|
7236
|
+
// replaced: const currentRule = local.options.rule || local.req.routing.rule;
|
|
7237
|
+
// replaced: console.warn(`[${currentRule}] Response status code is undefined: switching to 200`);
|
|
7238
|
+
// replaced: data.status = 200;
|
|
7239
|
+
// replaced: }
|
|
7219
7240
|
} catch (err) {
|
|
7220
7241
|
data = { status: 500, error: err };
|
|
7221
7242
|
console.error('[HTTP2] JSON Parse Error:', err);
|
|
@@ -8849,6 +8870,13 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
8849
8870
|
* dispatched via `renderCustomError` are consumer-owned — what the
|
|
8850
8871
|
* template renders from `req.params.errorObject` is the consumer's call.
|
|
8851
8872
|
*
|
|
8873
|
+
* #B670 — a stack passed AS the message (`throwError(res, 500, err.stack)`,
|
|
8874
|
+
* `throwError(500, err.stack)`, or an errorObj whose `title` / `message` /
|
|
8875
|
+
* `error` holds one) is treated like the `stack` field: outside local scope
|
|
8876
|
+
* the JSON body, the fallback HTML page and the data a custom error page
|
|
8877
|
+
* receives keep only its message line, and the full text goes to the
|
|
8878
|
+
* #ERRREF log line below. A caller's `msg` object is cut on a copy.
|
|
8879
|
+
*
|
|
8852
8880
|
* #ERRREF — every JSON error body additionally carries a top-level
|
|
8853
8881
|
* `ref`: a short incident ref minted per error (or honoured from a
|
|
8854
8882
|
* relay-safe producer-set `ref` on the error object / msg), present in
|
|
@@ -9295,6 +9323,15 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
9295
9323
|
var _errDetail = errorObject.stack || errorObject.message
|
|
9296
9324
|
|| ( ( errorObject.error && typeof(errorObject.error) === 'object' ) ? JSON.stringify(errorObject.error) : errorObject.error )
|
|
9297
9325
|
|| '';
|
|
9326
|
+
// #B670 — the egress gate below cuts a stack-bearing title/message/error
|
|
9327
|
+
// to its first line outside local scope, so that text must be in this
|
|
9328
|
+
// line in full. It already is, unless a hand-built object's own `stack`
|
|
9329
|
+
// was logged in its place.
|
|
9330
|
+
for (var _dk = 0, _detailKeys = ['title', 'message', 'error']; _dk < _detailKeys.length; ++_dk) {
|
|
9331
|
+
if ( typeof(errorObject[_detailKeys[_dk]]) == 'string' && /\n\s+at\s/.test(errorObject[_detailKeys[_dk]]) && String(_errDetail).indexOf(errorObject[_detailKeys[_dk]]) < 0 ) {
|
|
9332
|
+
_errDetail += '\n'+ errorObject[_detailKeys[_dk]];
|
|
9333
|
+
}
|
|
9334
|
+
}
|
|
9298
9335
|
if ( msg && typeof(msg) == 'object' && msg.cause ) {
|
|
9299
9336
|
_errDetail += '\ncaused by: '+ ( msg.cause.stack || msg.cause.message || msg.cause );
|
|
9300
9337
|
}
|
|
@@ -9308,6 +9345,20 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
9308
9345
|
if (!_isLocalScope && errorObject && errorObject.stack) {
|
|
9309
9346
|
delete errorObject.stack;
|
|
9310
9347
|
}
|
|
9348
|
+
// #B670 — a stack passed AS the message (`throwError(res, 500, err.stack)`,
|
|
9349
|
+
// the 2-arg form, or an errorObj whose `message` / `error` holds one)
|
|
9350
|
+
// carries the frames the gate above strips from the `stack` field.
|
|
9351
|
+
// Outside local scope the wire keeps its message line only — the same
|
|
9352
|
+
// rule as #B131 on the server-side twin; the pairing line above logged
|
|
9353
|
+
// the full text. Written inline: test/core/error-ref.test.js runs this
|
|
9354
|
+
// window as extracted bytes, where a module-level helper is out of reach.
|
|
9355
|
+
if (!_isLocalScope && errorObject) {
|
|
9356
|
+
for (var _wk = 0, _wireKeys = ['title', 'message', 'error']; _wk < _wireKeys.length; ++_wk) {
|
|
9357
|
+
if ( typeof(errorObject[_wireKeys[_wk]]) == 'string' && /\n\s+at\s/.test(errorObject[_wireKeys[_wk]]) ) {
|
|
9358
|
+
errorObject[_wireKeys[_wk]] = errorObject[_wireKeys[_wk]].split('\n')[0];
|
|
9359
|
+
}
|
|
9360
|
+
}
|
|
9361
|
+
}
|
|
9311
9362
|
|
|
9312
9363
|
var errOutput = null, output = errorObject.toString();
|
|
9313
9364
|
if ( output == '[object Object]' ) {
|
|
@@ -9366,7 +9417,50 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
9366
9417
|
var _logMsg = errorObject.stack || errorObject.message
|
|
9367
9418
|
|| (typeof(errorObject.error) === 'object' ? JSON.stringify(errorObject.error) : errorObject.error)
|
|
9368
9419
|
|| JSON.stringify(errorObject);
|
|
9420
|
+
// #B670 — when the caller passed a stack AS the message, `stack` above is
|
|
9421
|
+
// the throwError callsite: add the error's own text, which is logged
|
|
9422
|
+
// nowhere else and is cut from the page below outside local scope.
|
|
9423
|
+
for (var _lk = 0, _logKeys = ['title', 'message', 'error']; _lk < _logKeys.length; ++_lk) {
|
|
9424
|
+
if ( typeof(errorObject[_logKeys[_lk]]) == 'string' && /\n\s+at\s/.test(errorObject[_logKeys[_lk]]) && String(_logMsg).indexOf(errorObject[_logKeys[_lk]]) < 0 ) {
|
|
9425
|
+
_logMsg += '\n'+ errorObject[_logKeys[_lk]];
|
|
9426
|
+
}
|
|
9427
|
+
}
|
|
9369
9428
|
console.error('[ ref '+ _errRef +' ][ req '+ ( ( req && req._ginaReqId ) || '-' ) +' ] '+ req.method +' [ '+ errorObject.status +' ] '+ req.url + '\n'+ _logMsg);
|
|
9429
|
+
} else if ( msg && typeof(msg) == 'object' ) {
|
|
9430
|
+
// #B670 — the (res, code, errorObj) shape reaches this branch with no
|
|
9431
|
+
// errorObject, so no line paired the ref the page renders. Log the
|
|
9432
|
+
// caller's own text against it, like the line above.
|
|
9433
|
+
var _msgLog = '';
|
|
9434
|
+
for (var _mk = 0, _msgKeys = ['stack', 'message', 'error', 'title']; _mk < _msgKeys.length; ++_mk) {
|
|
9435
|
+
if ( typeof(msg[_msgKeys[_mk]]) == 'string' && msg[_msgKeys[_mk]] && _msgLog.indexOf(msg[_msgKeys[_mk]]) < 0 ) {
|
|
9436
|
+
_msgLog += ( _msgLog ? '\n' : '' ) + msg[_msgKeys[_mk]];
|
|
9437
|
+
}
|
|
9438
|
+
}
|
|
9439
|
+
console.error('[ ref '+ _errRef +' ][ req '+ ( ( req && req._ginaReqId ) || '-' ) +' ] '+ req.method +' [ '+ code +' ] '+ req.url + ( _msgLog ? '\n'+ _msgLog : '' ));
|
|
9440
|
+
}
|
|
9441
|
+
|
|
9442
|
+
// #B670 — outside local scope the page (the inline fallback page, or a
|
|
9443
|
+
// custom error page through `page.data` and `req.params.errorObject`)
|
|
9444
|
+
// keeps only the message line of a stack-bearing title/message/error,
|
|
9445
|
+
// like the JSON wire; the ref lines above logged the full text.
|
|
9446
|
+
// `errorObject` is cut in place, as the JSON branch's stack gate already
|
|
9447
|
+
// edits it; the caller's `msg` is replaced by a copy, never written.
|
|
9448
|
+
if ( !_isLocalScope ) {
|
|
9449
|
+
var _msgCopy = null;
|
|
9450
|
+
for (var _pk = 0, _pageKeys = ['title', 'message', 'error']; _pk < _pageKeys.length; ++_pk) {
|
|
9451
|
+
if ( errorObject && typeof(errorObject) == 'object' && typeof(errorObject[_pageKeys[_pk]]) == 'string' && /\n\s+at\s/.test(errorObject[_pageKeys[_pk]]) ) {
|
|
9452
|
+
errorObject[_pageKeys[_pk]] = errorObject[_pageKeys[_pk]].split('\n')[0];
|
|
9453
|
+
}
|
|
9454
|
+
if ( msg && typeof(msg) == 'object' && typeof(msg[_pageKeys[_pk]]) == 'string' && /\n\s+at\s/.test(msg[_pageKeys[_pk]]) ) {
|
|
9455
|
+
if ( !_msgCopy ) {
|
|
9456
|
+
_msgCopy = { title: msg.title, error: msg.error, message: msg.message, stack: msg.stack };
|
|
9457
|
+
}
|
|
9458
|
+
_msgCopy[_pageKeys[_pk]] = msg[_pageKeys[_pk]].split('\n')[0];
|
|
9459
|
+
}
|
|
9460
|
+
}
|
|
9461
|
+
if ( _msgCopy ) {
|
|
9462
|
+
msg = _msgCopy;
|
|
9463
|
+
}
|
|
9370
9464
|
}
|
|
9371
9465
|
|
|
9372
9466
|
// intercept none HTML mime types
|
|
@@ -133,7 +133,7 @@ function getSwigEngine(swigMod, templateRoot, loader, autoescape, SwigFilters, t
|
|
|
133
133
|
});
|
|
134
134
|
// #B25 / #TPL1 Tier-2 — register the gina filters ONCE on the shared
|
|
135
135
|
// engine (context-free; per-request context flows via _renderALS).
|
|
136
|
-
registerGinaFilters(engine, SwigFilters, throwError);
|
|
136
|
+
registerGinaFilters(engine, SwigFilters, throwError, (autoescape === true));
|
|
137
137
|
process.gina._swigEngines[key] = {
|
|
138
138
|
engine: engine,
|
|
139
139
|
compiled: new Map()
|
|
@@ -227,15 +227,19 @@ function computeIsProxyHost(req, localOptions) {
|
|
|
227
227
|
* shared filter table can't bleed one request's context into another's
|
|
228
228
|
* interleaved async render (#B25). The build-time conf is therefore empty —
|
|
229
229
|
* everything flows through the ALS store stamped by the render `.run()` wrap.
|
|
230
|
+
* The one exception is the engine's autoescape mode (#B359 prep): nl2br escapes
|
|
231
|
+
* its input and is flagged `.safe` only when the engine escapes, and the empty
|
|
232
|
+
* options cannot say so, so it is passed explicitly.
|
|
230
233
|
*
|
|
231
234
|
* @inner
|
|
232
235
|
* @param {*} engine - The per-bundle swig engine instance
|
|
233
236
|
* @param {function} SwigFilters - The SwigFilters factory (from `deps`)
|
|
234
237
|
* @param {function} throwError - `self.throwError`, carried for the singleton-fallback path
|
|
238
|
+
* @param {boolean} [autoescape=false] - The engine's own autoescape mode
|
|
235
239
|
* @returns {void}
|
|
236
240
|
*/
|
|
237
|
-
function registerGinaFilters(engine, SwigFilters, throwError) {
|
|
238
|
-
var filters = SwigFilters({ options: {}, isProxyHost: false, throwError: throwError });
|
|
241
|
+
function registerGinaFilters(engine, SwigFilters, throwError, autoescape) {
|
|
242
|
+
var filters = SwigFilters({ options: {}, isProxyHost: false, throwError: throwError, autoescape: (autoescape === true) });
|
|
239
243
|
|
|
240
244
|
for (var name in filters) {
|
|
241
245
|
if (typeof filters[name] === 'function' && name !== 'getConfig') {
|
|
@@ -21,6 +21,46 @@ var releaseBanner = require('./release-banner');
|
|
|
21
21
|
// Precompiled regex — avoids per-request RegExp allocation (#P3)
|
|
22
22
|
var blacklistRe = /[<>]/g;
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* #B690 — the asset placeholders this delegate injects into the layout. Their values
|
|
26
|
+
* (`data.page.view.stylesheets` / `.scripts`) are the `<link>` / `<script>` tags gina
|
|
27
|
+
* builds from templates.json, so they are injected with `| safe`: under
|
|
28
|
+
* `settings.swig.autoescape: true` a bare placeholder rendered every injected tag as
|
|
29
|
+
* visible text and the page lost its CSS and JS. With autoescape off (the default until
|
|
30
|
+
* 0.8.0) `safe` passes its input through, so the output is unchanged. The render-nunjucks
|
|
31
|
+
* delegate documents the same `| safe` form for a layout that places them itself.
|
|
32
|
+
*
|
|
33
|
+
* @constant
|
|
34
|
+
* @type {string}
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
37
|
+
var STYLESHEETS_PLACEHOLDER = '{{ page.view.stylesheets | safe }}';
|
|
38
|
+
/**
|
|
39
|
+
* #B690 — see STYLESHEETS_PLACEHOLDER.
|
|
40
|
+
*
|
|
41
|
+
* @constant
|
|
42
|
+
* @type {string}
|
|
43
|
+
* @private
|
|
44
|
+
*/
|
|
45
|
+
var SCRIPTS_PLACEHOLDER = '{{ page.view.scripts | safe }}';
|
|
46
|
+
/**
|
|
47
|
+
* #B690 — a layout that already holds the stylesheets placeholder, bare or with `| safe`
|
|
48
|
+
* (its own, or one injected by an earlier pass), is not injected a second time.
|
|
49
|
+
*
|
|
50
|
+
* @constant
|
|
51
|
+
* @type {RegExp}
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
var STYLESHEETS_PLACED_RE = /\{\{\s+(page\.view\.stylesheets)(\s*\|\s*safe)?\s+\}\}/;
|
|
55
|
+
/**
|
|
56
|
+
* #B690 — the scripts twin of STYLESHEETS_PLACED_RE (single spaces, as before).
|
|
57
|
+
*
|
|
58
|
+
* @constant
|
|
59
|
+
* @type {RegExp}
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
var SCRIPTS_PLACED_RE = /\{\{ page\.view\.scripts(\s*\|\s*safe)? \}\}/;
|
|
63
|
+
|
|
24
64
|
/**
|
|
25
65
|
* Lazily construct the process-wide render-context AsyncLocalStorage, parked on
|
|
26
66
|
* `process.gina` so it survives dev-mode `require.cache` eviction of this
|
|
@@ -1460,8 +1500,8 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1460
1500
|
}
|
|
1461
1501
|
|
|
1462
1502
|
// adding stylesheets
|
|
1463
|
-
if (!isWithoutLayout && data.page.view.stylesheets &&
|
|
1464
|
-
layout = layout.replace(/\<\/head\>/i, '\n\t
|
|
1503
|
+
if (!isWithoutLayout && data.page.view.stylesheets && !STYLESHEETS_PLACED_RE.test(layout) ) {
|
|
1504
|
+
layout = layout.replace(/\<\/head\>/i, '\n\t'+ STYLESHEETS_PLACEHOLDER +'\n</head>')
|
|
1465
1505
|
}
|
|
1466
1506
|
|
|
1467
1507
|
if (hasViews() && isWithoutLayout) {
|
|
@@ -1623,18 +1663,18 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1623
1663
|
layout.replace('{{ page.view.scripts }}', '');
|
|
1624
1664
|
// placed in the HEAD excepted when rendering a partial or when `isDeferModeEnabled` == true
|
|
1625
1665
|
if (isLoadingPartial) {
|
|
1626
|
-
if (
|
|
1627
|
-
layout += '\t
|
|
1666
|
+
if ( !SCRIPTS_PLACED_RE.test(layout) ) {
|
|
1667
|
+
layout += '\t'+ SCRIPTS_PLACEHOLDER;
|
|
1628
1668
|
}
|
|
1629
1669
|
} else {
|
|
1630
1670
|
// placed in the HEAD
|
|
1631
1671
|
if ( isDeferModeEnabled ) {
|
|
1632
|
-
layout = layout.replace(/\<\/head\>/i, '\t
|
|
1672
|
+
layout = layout.replace(/\<\/head\>/i, '\t'+ SCRIPTS_PLACEHOLDER +'\n\t</head>');
|
|
1633
1673
|
}
|
|
1634
1674
|
// placed in the BODY
|
|
1635
1675
|
else {
|
|
1636
|
-
if (
|
|
1637
|
-
layout = layout.replace(/\<\/body\>/i, '\t
|
|
1676
|
+
if ( !SCRIPTS_PLACED_RE.test(layout) ) {
|
|
1677
|
+
layout = layout.replace(/\<\/body\>/i, '\t'+ SCRIPTS_PLACEHOLDER +'\n</body>');
|
|
1638
1678
|
}
|
|
1639
1679
|
if (hasExternalsPlugins) {
|
|
1640
1680
|
for (let i =0, len = localOptions.template.externalPlugins.length; i<len; i++) {
|
|
@@ -1679,8 +1719,8 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1679
1719
|
// adding javascripts
|
|
1680
1720
|
layout.replace('{{ page.view.scripts }}', '');
|
|
1681
1721
|
if (isLoadingPartial) {
|
|
1682
|
-
if (
|
|
1683
|
-
layout += '\t
|
|
1722
|
+
if ( !SCRIPTS_PLACED_RE.test(layout) ) {
|
|
1723
|
+
layout += '\t'+ SCRIPTS_PLACEHOLDER +'\n';
|
|
1684
1724
|
}
|
|
1685
1725
|
if (
|
|
1686
1726
|
!localOptions.template.javascriptsExcluded
|
|
@@ -1696,14 +1736,14 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1696
1736
|
// placed in the HEAD
|
|
1697
1737
|
if (
|
|
1698
1738
|
isDeferModeEnabled && /\<\/head\>/i.test(layout)
|
|
1699
|
-
&&
|
|
1739
|
+
&& !SCRIPTS_PLACED_RE.test(layout)
|
|
1700
1740
|
) { // placed in the HEAD
|
|
1701
|
-
layout = layout.replace(/\<\/head\>/i, '\t
|
|
1741
|
+
layout = layout.replace(/\<\/head\>/i, '\t'+ SCRIPTS_PLACEHOLDER +'\n\t</head>');
|
|
1702
1742
|
}
|
|
1703
1743
|
// placed in the BODY
|
|
1704
1744
|
else {
|
|
1705
|
-
if (
|
|
1706
|
-
layout = layout.replace(/\<\/body\>/i, '\t
|
|
1745
|
+
if ( !SCRIPTS_PLACED_RE.test(layout) ) {
|
|
1746
|
+
layout = layout.replace(/\<\/body\>/i, '\t'+ SCRIPTS_PLACEHOLDER +'\n</body>');
|
|
1707
1747
|
}
|
|
1708
1748
|
if (hasExternalsPlugins) {
|
|
1709
1749
|
for (let i =0, len = localOptions.template.externalPlugins.length; i<len; i++) {
|
|
@@ -3154,12 +3154,25 @@ gna.getRunDir = getRunDir;
|
|
|
3154
3154
|
gna.getTmpDir = getTmpDir;
|
|
3155
3155
|
|
|
3156
3156
|
/**
|
|
3157
|
-
*
|
|
3158
|
-
*
|
|
3157
|
+
* Resolve the argv dir — `<GINA_HOMEDIR>/run`, created `0700` when absent —
|
|
3158
|
+
* where each bundle's start argv is saved for the `gina tail --follow` crash
|
|
3159
|
+
* restart. Never the shared tmp dir: that restart executes the file's first token.
|
|
3160
|
+
*
|
|
3161
|
+
* @returns {string} Argv-dir path
|
|
3162
|
+
* @example
|
|
3163
|
+
* var dir = getArgvDir();
|
|
3164
|
+
*/
|
|
3165
|
+
gna.getArgvDir = getArgvDir;
|
|
3166
|
+
|
|
3167
|
+
/**
|
|
3168
|
+
* Read the saved startup argv for a given bundle@project from the argv dir
|
|
3169
|
+
* (`getArgvDir()`) — used by `gina tail --follow` to restart a crashed bundle
|
|
3170
|
+
* with the exact same start command. On POSIX the file must be a regular file
|
|
3171
|
+
* owned by the current user that group/other cannot write, or it is refused.
|
|
3159
3172
|
*
|
|
3160
3173
|
* @param {string} bundle - Bundle name
|
|
3161
3174
|
* @param {string} project - Project name
|
|
3162
|
-
* @returns {string|null} Space-separated argv, or `null` when no file exists
|
|
3175
|
+
* @returns {string|null} Space-separated argv, or `null` when no usable file exists
|
|
3163
3176
|
* @example
|
|
3164
3177
|
* var argv = getBundleStartingArgv('myApp', 'demo');
|
|
3165
3178
|
*/
|