gina 0.6.1 → 0.6.2
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 +11 -0
- package/README.md +15 -25
- package/ROADMAP.md +8 -6
- package/framework/v0.6.2/VERSION +1 -0
- package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.js +12 -3
- package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +160 -160
- package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.1 → v0.6.2}/core/config.js +63 -2
- package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.js +279 -10
- package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.render-nunjucks.js +5 -1
- package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.render-swig.js +13 -1
- package/framework/{v0.6.1 → v0.6.2}/core/gna.js +31 -0
- package/framework/{v0.6.1 → v0.6.2}/core/template/conf/env.json +12 -0
- package/framework/{v0.6.1 → v0.6.2}/lib/nunjucks-filters/src/main.js +7 -1
- package/framework/{v0.6.1 → v0.6.2}/lib/proc.js +15 -1
- package/framework/{v0.6.1 → v0.6.2}/lib/swig-filters/src/main.js +12 -1
- package/framework/{v0.6.1 → v0.6.2}/lib/uuid/src/main.js +12 -3
- package/framework/{v0.6.1 → v0.6.2}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +5 -3
- package/package.json +3 -3
- package/schema/settings.json +22 -0
- package/script/perf/analyze-cpuprofile.js +187 -0
- package/script/perf/profile-baseline.js +811 -0
- package/script/perf/ws-codec-server.js +44 -0
- package/utils/prototypes.json_clone.js +5 -2
- package/framework/v0.6.1/VERSION +0 -1
- package/framework/v0.6.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/AUTHORS +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/LICENSE +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/content.encoding +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/dev/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/locales/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/locales/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/mime.types +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/model/entity.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/model/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/router.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/server.express.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/server.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/status.codes +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/console.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/context.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/path.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/task.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/helpers/text.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/async/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/config.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/job/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/job-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/math/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/model.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/session-store.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/shell.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/state.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/url/README.md +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/url/index.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/validator.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.1 → v0.6.2}/lib/ws-session/src/main.js +0 -0
|
@@ -348,10 +348,21 @@ function Config(opt, contextResetNeeded) {
|
|
|
348
348
|
* @param {string} env - Environment name
|
|
349
349
|
* @param {string} scope - Scope name
|
|
350
350
|
* @param {object} conf - Core server configuration object
|
|
351
|
+
* @throws {Error} When `envConf` carries no block for `bundle`/`env` — i.e.
|
|
352
|
+
* the project's `env.json` never declared it (#B181(b)).
|
|
353
|
+
* The boot path guards this at the `loadBundleConfig` call
|
|
354
|
+
* site, which can refuse through its callback; this throw
|
|
355
|
+
* is the defense-in-depth for any other caller.
|
|
351
356
|
*/
|
|
352
357
|
this.setServerCoreConf = function(bundle, env, scope, conf) {
|
|
353
358
|
self.env = env;
|
|
354
359
|
self.scope = scope;
|
|
360
|
+
// #B181(b) — a NAMED failure beats the opaque
|
|
361
|
+
// `Cannot read properties of undefined (reading '<env>')` deref that
|
|
362
|
+
// this line produced when env.json declared no block for the bundle.
|
|
363
|
+
if ( !self.envConf[bundle] || !self.envConf[bundle][env] ) {
|
|
364
|
+
throw new Error('setServerCoreConf(`'+ bundle +'`, `'+ env +'`): no env.json configuration block for this bundle/env');
|
|
365
|
+
}
|
|
355
366
|
self.envConf[bundle][env].server['coreConfiguration'] = conf;
|
|
356
367
|
}
|
|
357
368
|
|
|
@@ -772,9 +783,19 @@ function Config(opt, contextResetNeeded) {
|
|
|
772
783
|
// newContent[app][env].bundlesPath = newContent[app][env].sources;
|
|
773
784
|
// }
|
|
774
785
|
tmpSettings = {};
|
|
775
|
-
newContent[app][env].bundlesPath = bundlesPath;
|
|
776
786
|
|
|
777
787
|
if ( typeof(content[app][env]) != "undefined" ) {
|
|
788
|
+
// #B183 — this assignment MUST stay inside the guard. `newContent`
|
|
789
|
+
// is a deep clone of `content` (see its declaration at the top of
|
|
790
|
+
// this function), so `newContent[app][env]` is undefined for
|
|
791
|
+
// exactly the apps this guard rejects: an app declared in the
|
|
792
|
+
// project env.json but NOT for the env being started. Assigning it
|
|
793
|
+
// one line earlier — outside the guard meant to protect it — threw
|
|
794
|
+
// an opaque `TypeError: Cannot set properties of undefined (setting
|
|
795
|
+
// 'bundlesPath')` and killed the boot at exit 143, ~750 lines before
|
|
796
|
+
// the #B181(b) refusal that names the bundle, the env and the
|
|
797
|
+
// env.json path could ever fire.
|
|
798
|
+
newContent[app][env].bundlesPath = bundlesPath;
|
|
778
799
|
try {
|
|
779
800
|
// reverted: async readdir (#P33) breaks synchronous Config init contract
|
|
780
801
|
configFiles = fs.readdirSync(_(appPath + '/config'));
|
|
@@ -1147,6 +1168,18 @@ function Config(opt, contextResetNeeded) {
|
|
|
1147
1168
|
newContent[app][env].projectName = self.projectName;
|
|
1148
1169
|
}
|
|
1149
1170
|
|
|
1171
|
+
// #B181(a) — `host` is the one key the substitution dictionary below
|
|
1172
|
+
// reads off this block that a project can only supply from its own
|
|
1173
|
+
// env.json; the framework template now carries the same `localhost`
|
|
1174
|
+
// default the CLI writes, so a partial block resolves instead of
|
|
1175
|
+
// leaving `${host}` unsubstituted inside the credentials paths.
|
|
1176
|
+
// Report the omission rather than defaulting silently — and test the
|
|
1177
|
+
// RAW `content` block, since the merged one always carries the
|
|
1178
|
+
// default by this point and could never satisfy the condition.
|
|
1179
|
+
if ( typeof(content[app][env].host) == 'undefined' ) {
|
|
1180
|
+
console.warn('[CONFIG]['+ app +']['+ env +'] no `host` declared in the project env.json — defaulting to `'+ newContent[app][env].host +'`');
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1150
1183
|
|
|
1151
1184
|
|
|
1152
1185
|
// replacement for {bundle}@{project}
|
|
@@ -1211,8 +1244,15 @@ function Config(opt, contextResetNeeded) {
|
|
|
1211
1244
|
return;
|
|
1212
1245
|
}
|
|
1213
1246
|
|
|
1247
|
+
} else {
|
|
1248
|
+
//Else not in the scenario.
|
|
1249
|
+
// #B183 — the app IS declared in the project env.json, but not for
|
|
1250
|
+
// the env being started, so it is skipped here. Say so: without it
|
|
1251
|
+
// the bundle would simply never load, with nothing explaining why.
|
|
1252
|
+
// The STARTING bundle additionally refuses the boot further down,
|
|
1253
|
+
// in loadBundleConfig (#B181(b)).
|
|
1254
|
+
console.warn('[CONFIG]['+ app +']['+ env +'] no `'+ env +'` block in the project env.json — skipping this bundle for this environment');
|
|
1214
1255
|
}
|
|
1215
|
-
//Else not in the scenario.
|
|
1216
1256
|
|
|
1217
1257
|
}//EO for.
|
|
1218
1258
|
|
|
@@ -1510,6 +1550,27 @@ function Config(opt, contextResetNeeded) {
|
|
|
1510
1550
|
console.debug('[CONFIG][loadBundleConfig] Loading `'+ bundle +'/'+ env +':'+ scope +'` configuration, please wait ...');
|
|
1511
1551
|
|
|
1512
1552
|
|
|
1553
|
+
// #B181(b) — the bundle list is built inside the env.json template-merge
|
|
1554
|
+
// loop, so an env.json that is empty, ABSENT (userConf stays false), or
|
|
1555
|
+
// that declares only bundles missing from manifest.json yields an EMPTY
|
|
1556
|
+
// list; `bundles[b]` is then undefined and `bundle` falls back to
|
|
1557
|
+
// startingApp above — a bundle `envConf` was never populated for. The
|
|
1558
|
+
// setServerCoreConf call below would deref `envConf[bundle][env]` and
|
|
1559
|
+
// die as an uncaughtException naming neither env.json nor the bundle.
|
|
1560
|
+
// Refuse here instead, matching the #B132 routing.json refusal further
|
|
1561
|
+
// down this same function (callback(err) leads to process.exit(1)), so
|
|
1562
|
+
// an external supervisor retries while a release tree settles. This
|
|
1563
|
+
// predicate can only be true in a configuration that ALREADY crashed,
|
|
1564
|
+
// so it cannot refuse a boot that works today.
|
|
1565
|
+
if ( !conf[bundle] || !conf[bundle][env] ) {
|
|
1566
|
+
var _envBlockMsg = '[ ' + bundle + ' ][ ' + env + ' ] no configuration block for this bundle/env in '
|
|
1567
|
+
+ self.executionPath + '/env.json ('
|
|
1568
|
+
+ ( self.userConf ? 'the file declares no `'+ bundle +'.'+ env +'` block' : 'file NOT FOUND' )
|
|
1569
|
+
+ ') — every bundle must be declared there for the env it starts in; refusing to start';
|
|
1570
|
+
console.error(_envBlockMsg);
|
|
1571
|
+
return callback(new Error(_envBlockMsg));
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1513
1574
|
self.setServerCoreConf(bundle, env, scope, conf.core);
|
|
1514
1575
|
|
|
1515
1576
|
// bundle paths, ports, protocols
|
|
@@ -102,6 +102,154 @@ var _mintErrorRef = function(supplied) {
|
|
|
102
102
|
}
|
|
103
103
|
return crypto.randomBytes(3).toString('hex').toUpperCase();
|
|
104
104
|
};
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* #CE1 — resolves the bundle's `server.transientErrors` block into its
|
|
108
|
+
* effective values. Total: never throws, and tolerates any malformed shape
|
|
109
|
+
* by falling back to the documented defaults (the boot-time warn pass in
|
|
110
|
+
* `core/gna.js` names each ignored key once at startup — keep both sites'
|
|
111
|
+
* rules in sync). Strictness rules:
|
|
112
|
+
* - `enabled` must be strictly boolean `true` — any other type or value
|
|
113
|
+
* leaves the feature off (an error-rendering opt-in must never turn on
|
|
114
|
+
* by accident);
|
|
115
|
+
* - `retryAfter` must be an integer within 1..86400 seconds, else 30;
|
|
116
|
+
* - `message` must be a non-empty string, else null (the caller falls
|
|
117
|
+
* back to the standard status text).
|
|
118
|
+
*
|
|
119
|
+
* @private
|
|
120
|
+
* @param {object} bundleConf - the per-request bundle configuration
|
|
121
|
+
* @returns {{enabled: boolean, retryAfter: number, message: (string|null)}} effective values
|
|
122
|
+
*/
|
|
123
|
+
var _getTransientErrorsConf = function(bundleConf) {
|
|
124
|
+
var out = { enabled: false, retryAfter: 30, message: null };
|
|
125
|
+
try {
|
|
126
|
+
var block = bundleConf && bundleConf.server && bundleConf.server.transientErrors;
|
|
127
|
+
if ( !block || typeof(block) != 'object' ) {
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
out.enabled = ( block.enabled === true );
|
|
131
|
+
if (
|
|
132
|
+
typeof(block.retryAfter) == 'number'
|
|
133
|
+
&& isFinite(block.retryAfter)
|
|
134
|
+
&& Math.floor(block.retryAfter) === block.retryAfter
|
|
135
|
+
&& block.retryAfter >= 1
|
|
136
|
+
&& block.retryAfter <= 86400
|
|
137
|
+
) {
|
|
138
|
+
out.retryAfter = block.retryAfter;
|
|
139
|
+
}
|
|
140
|
+
if ( typeof(block.message) == 'string' && block.message.length > 0 ) {
|
|
141
|
+
out.message = block.message;
|
|
142
|
+
}
|
|
143
|
+
} catch (confReadErr) {
|
|
144
|
+
// hostile getters on a user-supplied config object — keep the
|
|
145
|
+
// defaults; rendering of the request error must not be derailed
|
|
146
|
+
// by a config-read failure (same total-function bar as
|
|
147
|
+
// lib/connector-error.classify()).
|
|
148
|
+
}
|
|
149
|
+
return out;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// #P39 — per-culture locale-resolution memo. setOptions used to build TWO
|
|
153
|
+
// Collections per request over the boot-loaded region sets (a full deep copy
|
|
154
|
+
// of ~500 nested records each time, plus one 16-char id minted per record —
|
|
155
|
+
// ~750 webcrypto calls) to answer two lookups: language → region set, and
|
|
156
|
+
// country → one row. The lookups are pure functions of boot-static data
|
|
157
|
+
// (`getContext('gina').locales` is set once at bundle start), so they are
|
|
158
|
+
// memoized at module level. The memo holds only references into that
|
|
159
|
+
// process-global context — no request state — and rebuilds whenever the
|
|
160
|
+
// context array's identity changes (or when dev-mode eviction re-requires
|
|
161
|
+
// this module, where a rebuild costs one pass over the language rows).
|
|
162
|
+
var _localesIdxSrc = null;
|
|
163
|
+
var _localesIdx = null;
|
|
164
|
+
var _localeRowMemo = null;
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Language index over the boot-loaded locales context.
|
|
168
|
+
* Maps a language code to its `{ lang, content }` row — first row wins on a
|
|
169
|
+
* duplicate language, matching the historical first-match lookup semantics.
|
|
170
|
+
*
|
|
171
|
+
* @private
|
|
172
|
+
* @returns {object} lang → locales row (shared, pristine — callers must not mutate)
|
|
173
|
+
*/
|
|
174
|
+
var _resolveLocalesIndex = function() {
|
|
175
|
+
var src = getContext('gina').locales;
|
|
176
|
+
if (_localesIdxSrc !== src || !_localesIdx) {
|
|
177
|
+
_localesIdxSrc = src;
|
|
178
|
+
_localesIdx = {};
|
|
179
|
+
_localeRowMemo = {};
|
|
180
|
+
for (var i = 0, len = src.length; i < len; ++i) {
|
|
181
|
+
if ( typeof(_localesIdx[src[i].lang]) == 'undefined' ) {
|
|
182
|
+
_localesIdx[src[i].lang] = src[i];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return _localesIdx;
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Country-row lookup within a language's region set, memoized per
|
|
191
|
+
* `<lang>|<ISO>` culture pair (misses are memoized too).
|
|
192
|
+
*
|
|
193
|
+
* Region rows key countries by UPPERCASE `isoShort` (ISO 3166-1 alpha-2 —
|
|
194
|
+
* #B101), so a strict compare after `toUpperCase()` matches what the former
|
|
195
|
+
* case-insensitive whole-string lookup resolved on this data.
|
|
196
|
+
*
|
|
197
|
+
* @private
|
|
198
|
+
* @param {array} contentRows - a language's region set (the index row's `.content`)
|
|
199
|
+
* @param {string} langCode - the language the rows were resolved FOR (fallback-resolved lang keys consistently)
|
|
200
|
+
* @param {string} countryCode - ISO 3166-1 alpha-2 country code, any case
|
|
201
|
+
* @returns {object|null} the shared pristine row, or null when the country is not in the set
|
|
202
|
+
*/
|
|
203
|
+
var _resolveLocaleRow = function(contentRows, langCode, countryCode) {
|
|
204
|
+
var iso = countryCode.toUpperCase();
|
|
205
|
+
var key = langCode + '|' + iso;
|
|
206
|
+
if ( typeof(_localeRowMemo[key]) != 'undefined' ) {
|
|
207
|
+
return _localeRowMemo[key];
|
|
208
|
+
}
|
|
209
|
+
var row = null;
|
|
210
|
+
for (var i = 0, len = contentRows.length; i < len; ++i) {
|
|
211
|
+
if ( contentRows[i] && contentRows[i].isoShort === iso ) {
|
|
212
|
+
row = contentRows[i];
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
_localeRowMemo[key] = row;
|
|
217
|
+
return row;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Defines `conf.locales` as a LAZY, self-replacing accessor: the request's
|
|
222
|
+
* own deep copy of the region set is materialized on first read and cached
|
|
223
|
+
* on the request's conf object from then on.
|
|
224
|
+
*
|
|
225
|
+
* The render path itself never reads `conf.locales` — its only framework
|
|
226
|
+
* reader is `self.getLocales()` — so the common request pays nothing, while
|
|
227
|
+
* a request that does read it gets exactly the isolation the former eager
|
|
228
|
+
* per-request copy provided (a fresh deep copy, safe to mutate). Whole-conf
|
|
229
|
+
* consumers (`self.getConfig()`, serializers) materialize it through the
|
|
230
|
+
* accessor transparently. The accessor is enumerable and writable-through
|
|
231
|
+
* (assignment replaces it with a plain value), and configurable so a second
|
|
232
|
+
* `setOptions()` on the same request re-defines it cleanly.
|
|
233
|
+
*
|
|
234
|
+
* @private
|
|
235
|
+
* @param {object} conf - the request's conf (the router's per-request shallow copy)
|
|
236
|
+
* @param {array} srcRows - the resolved language's region set (shared, pristine)
|
|
237
|
+
* @returns {void}
|
|
238
|
+
*/
|
|
239
|
+
var _defineLazyLocales = function(conf, srcRows) {
|
|
240
|
+
Object.defineProperty(conf, 'locales', {
|
|
241
|
+
configurable: true,
|
|
242
|
+
enumerable: true,
|
|
243
|
+
get: function() {
|
|
244
|
+
var rows = JSON.clone(srcRows);
|
|
245
|
+
Object.defineProperty(this, 'locales', { configurable: true, enumerable: true, writable: true, value: rows });
|
|
246
|
+
return rows;
|
|
247
|
+
},
|
|
248
|
+
set: function(v) {
|
|
249
|
+
Object.defineProperty(this, 'locales', { configurable: true, enumerable: true, writable: true, value: v });
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
};
|
|
105
253
|
var _isProdScope = process.env.NODE_SCOPE_IS_PRODUCTION && process.env.NODE_SCOPE_IS_PRODUCTION.toLowerCase() === 'true';
|
|
106
254
|
|
|
107
255
|
|
|
@@ -835,24 +983,32 @@ function SuperController(options) {
|
|
|
835
983
|
var userLangCode = userCultureCode[0];
|
|
836
984
|
var userCountryCode = userCultureCode[1];
|
|
837
985
|
|
|
838
|
-
|
|
986
|
+
// #P39 — memoized language index over the boot-static locales
|
|
987
|
+
// context (was: a per-request Collection deep-copying every region
|
|
988
|
+
// set and minting an id per record, twice, to answer two lookups).
|
|
989
|
+
var localesIdx = _resolveLocalesIndex();
|
|
990
|
+
var userLangRow = localesIdx[userLangCode];
|
|
839
991
|
var userLocales = null;
|
|
840
992
|
|
|
841
993
|
try {
|
|
842
|
-
userLocales =
|
|
994
|
+
userLocales = userLangRow.content;
|
|
843
995
|
} catch (err) {
|
|
844
996
|
// #B100 — guarded fallback: the old blind `region.shortCode` deref
|
|
845
997
|
// threw here when the `region` block was absent, and the unguarded
|
|
846
|
-
// fallback
|
|
847
|
-
//
|
|
998
|
+
// fallback lookup threw when the resolved language was not in the
|
|
999
|
+
// loaded region set.
|
|
848
1000
|
var _fallbackLang = getLocaleFallbackLang(local.options.conf);
|
|
849
1001
|
console.warn('language code `'+ userLangCode +'` not handled by current locales setup: replacing by default: `'+ _fallbackLang +'`');
|
|
850
|
-
var _fallbackLocales =
|
|
1002
|
+
var _fallbackLocales = localesIdx[_fallbackLang] || localesIdx['en'];
|
|
851
1003
|
userLocales = ( _fallbackLocales && _fallbackLocales.content ) ? _fallbackLocales.content : [];
|
|
852
1004
|
}
|
|
853
1005
|
|
|
854
1006
|
// user locales list
|
|
855
|
-
|
|
1007
|
+
// #P39 — materialized lazily: the request's own deep copy is built
|
|
1008
|
+
// on first read (see _defineLazyLocales), so a request that never
|
|
1009
|
+
// reads `conf.locales` — the common case — no longer pays a copy
|
|
1010
|
+
// of the whole region set.
|
|
1011
|
+
_defineLazyLocales(local.options.conf, userLocales);
|
|
856
1012
|
|
|
857
1013
|
// user locale
|
|
858
1014
|
// #B101 — region rows key countries by `isoShort` (uppercase ISO
|
|
@@ -862,8 +1018,12 @@ function SuperController(options) {
|
|
|
862
1018
|
// a filter whose only key is undefined-valued serializes to `{}`
|
|
863
1019
|
// and matches everything. A country-less culture (bare `en`) now
|
|
864
1020
|
// resolves to an explicit `{}` instead.
|
|
1021
|
+
// #P39 — the row comes from the culture memo (shared, pristine) and
|
|
1022
|
+
// is deep-copied per request: the `.date` write a few lines below —
|
|
1023
|
+
// and anything a template or an action does to `page.view.locale` —
|
|
1024
|
+
// must never reach a sibling request.
|
|
865
1025
|
options.conf.locale = ( typeof(userCountryCode) == 'string' && userCountryCode.length > 0 )
|
|
866
|
-
? (
|
|
1026
|
+
? ( JSON.clone( _resolveLocaleRow(userLocales, userLangCode, userCountryCode) || {} ) )
|
|
867
1027
|
: {};
|
|
868
1028
|
|
|
869
1029
|
// current date
|
|
@@ -5337,15 +5497,19 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
5337
5497
|
|
|
5338
5498
|
if ( typeof(shortCountryCode) != 'undefined' ) {
|
|
5339
5499
|
shortCountryCode = shortCountryCode.toLowerCase();
|
|
5340
|
-
|
|
5500
|
+
// #P39 — memoized language index (was: a per-call Collection deep-
|
|
5501
|
+
// copying every region set). The rows handed on are shared and
|
|
5502
|
+
// pristine; the only consumer below is the getCountries projection,
|
|
5503
|
+
// which builds fresh output rows and never writes into its input.
|
|
5504
|
+
var localesIdx = _resolveLocalesIndex();
|
|
5341
5505
|
|
|
5342
5506
|
try {
|
|
5343
|
-
userLocales =
|
|
5507
|
+
userLocales = localesIdx[shortCountryCode].content
|
|
5344
5508
|
} catch (err) {
|
|
5345
5509
|
// #B100 — same guarded fallback as the setOptions locale bridge.
|
|
5346
5510
|
var _fallbackLang = getLocaleFallbackLang(local.options.conf);
|
|
5347
5511
|
console.warn('language code `'+ shortCountryCode +'` not handled to setup locales: replacing by `'+ _fallbackLang +'`');
|
|
5348
|
-
var _fallbackLocales =
|
|
5512
|
+
var _fallbackLocales = localesIdx[_fallbackLang] || localesIdx['en'];
|
|
5349
5513
|
userLocales = ( _fallbackLocales && _fallbackLocales.content ) ? _fallbackLocales.content : [];
|
|
5350
5514
|
}
|
|
5351
5515
|
}
|
|
@@ -6051,6 +6215,19 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6051
6215
|
* - `throwError(code, err)` — 2-arg form: HTTP status + Error|string
|
|
6052
6216
|
* - `throwError(res, code, msg)` — internal 3-arg form used by the router
|
|
6053
6217
|
*
|
|
6218
|
+
* #CE1 — transient upgrade (opt-in): when the bundle sets
|
|
6219
|
+
* `server.transientErrors.enabled: true` and any call argument carries
|
|
6220
|
+
* `isTransient === true` (a `lib/connector-error`-stamped datastore
|
|
6221
|
+
* error), a resolution that would render 500 renders 503 instead, with
|
|
6222
|
+
* a `Retry-After: <server.transientErrors.retryAfter>` header (default
|
|
6223
|
+
* 30s) and the user-facing `error` field set to
|
|
6224
|
+
* `server.transientErrors.message` (default: the standard 503 status
|
|
6225
|
+
* text). Explicit non-500 statuses are never upgraded; `message` and
|
|
6226
|
+
* `stack` keep their existing scope semantics, and the #ERRREF pairing
|
|
6227
|
+
* line below keeps the full pre-strip detail server-side. Deliberately
|
|
6228
|
+
* NOT mirrored in the server-side throwError twin (core/server.js):
|
|
6229
|
+
* stamped connector errors surface through controller actions only.
|
|
6230
|
+
*
|
|
6054
6231
|
* Late calls: when throwError fires after a response terminal exit has
|
|
6055
6232
|
* already released the per-request refs (`local.res` is null — e.g. an
|
|
6056
6233
|
* entity/query callback resuming after a redirect() sent its 301), the
|
|
@@ -6070,6 +6247,68 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6070
6247
|
* */
|
|
6071
6248
|
this.throwError = function(res, code, msg) {
|
|
6072
6249
|
|
|
6250
|
+
// #CE1 — capture the transient-classified error source (if any)
|
|
6251
|
+
// BEFORE the call-shape normalizations below reassign res/code/msg.
|
|
6252
|
+
// Only `lib/connector-error.stamp()`ed datastore errors carry
|
|
6253
|
+
// `isTransient === true`, so scanning the raw call arguments is an
|
|
6254
|
+
// unambiguous, total probe (guarded against hostile getters).
|
|
6255
|
+
var _transientSrc = null;
|
|
6256
|
+
var _teConf = null; // resolved lazily, only when a 500 would upgrade
|
|
6257
|
+
var _transient503Applied = false;
|
|
6258
|
+
try {
|
|
6259
|
+
for (var _ti = 0; _ti < arguments.length && _ti < 3; _ti++) {
|
|
6260
|
+
if ( arguments[_ti] && typeof(arguments[_ti]) == 'object' && arguments[_ti].isTransient === true ) {
|
|
6261
|
+
_transientSrc = arguments[_ti];
|
|
6262
|
+
break;
|
|
6263
|
+
}
|
|
6264
|
+
}
|
|
6265
|
+
} catch (_teScanErr) {}
|
|
6266
|
+
|
|
6267
|
+
/**
|
|
6268
|
+
* #CE1 — opt-in transient upgrade: with `server.transientErrors.enabled`,
|
|
6269
|
+
* a transient connector failure that would render as 500 renders as
|
|
6270
|
+
* 503 + `Retry-After` instead; any explicit non-500 status is
|
|
6271
|
+
* respected. Applied at BOTH status-resolution sites below.
|
|
6272
|
+
*
|
|
6273
|
+
* @inner
|
|
6274
|
+
* @param {number|string} resolvedCode - the status the resolution chain settled on
|
|
6275
|
+
* @returns {number|string} 503 when the upgrade applies, else `resolvedCode` unchanged
|
|
6276
|
+
*/
|
|
6277
|
+
var _maybeUpgradeTransient503 = function(resolvedCode) {
|
|
6278
|
+
if ( _transientSrc && resolvedCode == 500 ) {
|
|
6279
|
+
if (_teConf === null) {
|
|
6280
|
+
_teConf = _getTransientErrorsConf(local.options.conf);
|
|
6281
|
+
}
|
|
6282
|
+
if (_teConf.enabled) {
|
|
6283
|
+
_transient503Applied = true;
|
|
6284
|
+
return 503;
|
|
6285
|
+
}
|
|
6286
|
+
}
|
|
6287
|
+
return resolvedCode;
|
|
6288
|
+
};
|
|
6289
|
+
|
|
6290
|
+
/**
|
|
6291
|
+
* #CE1 — an upgraded 503 advertises when to retry. A single early
|
|
6292
|
+
* setHeader survives every downstream egress: the JSON writeHead
|
|
6293
|
+
* calls merge per-key (Retry-After is never overwritten), the HTML
|
|
6294
|
+
* fallback writeHead does the same, and the renderCustomError →
|
|
6295
|
+
* render pipeline forwards res.getHeaders() into the HTTP/2 frame
|
|
6296
|
+
* (#H8). Idempotent — safe to call at both upgrade sites; no-ops
|
|
6297
|
+
* unless the upgrade fired.
|
|
6298
|
+
*
|
|
6299
|
+
* @inner
|
|
6300
|
+
* @param {object} targetRes - the normalized live response
|
|
6301
|
+
* @returns {void}
|
|
6302
|
+
*/
|
|
6303
|
+
var _setTransientRetryAfterHeader = function(targetRes) {
|
|
6304
|
+
if ( !_transient503Applied || !targetRes || typeof(targetRes.setHeader) != 'function' ) {
|
|
6305
|
+
return;
|
|
6306
|
+
}
|
|
6307
|
+
try {
|
|
6308
|
+
targetRes.setHeader('Retry-After', String(_teConf.retryAfter));
|
|
6309
|
+
} catch (_teHdrErr) {}
|
|
6310
|
+
};
|
|
6311
|
+
|
|
6073
6312
|
// 2-arg form (statusCode, Error|string) — without this shift, the
|
|
6074
6313
|
// downstream Error/string branch coerces code via /^\d{3}$/.test(String(code))
|
|
6075
6314
|
// and falls back to 500 because `code` holds the Error or string, not
|
|
@@ -6139,6 +6378,9 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6139
6378
|
msg = ( !/^\d+$/.test(code) && typeof(msg) == 'undefined' ) ? code : msg;
|
|
6140
6379
|
// Preserve an explicitly passed 3-digit HTTP status code; fall back to res.status or 500
|
|
6141
6380
|
code = ( /^\d{3}$/.test(String(code)) ) ? code : ( res && typeof(res.status) != 'undefined' ) ? res.status : 500;
|
|
6381
|
+
// #CE1 — a transient datastore failure resolving to 500 upgrades
|
|
6382
|
+
// to 503 when the bundle opted in (explicit non-500 preserved above)
|
|
6383
|
+
code = _maybeUpgradeTransient503(code);
|
|
6142
6384
|
|
|
6143
6385
|
if ( typeof(statusCodes[code]) != 'undefined' ) {
|
|
6144
6386
|
standardErrorMessage = statusCodes[code];
|
|
@@ -6242,6 +6484,10 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6242
6484
|
responseHeaders = res.getHeaders() || local.res.getHeaders();
|
|
6243
6485
|
}
|
|
6244
6486
|
// var responseHeaders = res.getHeaders() || local.res.getHeaders();
|
|
6487
|
+
// #CE1 — first upgrade site fired above: `res` is the normalized live
|
|
6488
|
+
// response by this point, so the Retry-After header lands here, ahead
|
|
6489
|
+
// of every branch (JSON writeHead trio, HTML fallback, custom pages).
|
|
6490
|
+
_setTransientRetryAfterHeader(res);
|
|
6245
6491
|
var req = local.req;
|
|
6246
6492
|
var next = local.next;
|
|
6247
6493
|
if (!headersSent()) {
|
|
@@ -6274,6 +6520,12 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6274
6520
|
if ( typeof(code) == 'object' && !msg && typeof(code.status) != 'undefined' && typeof(code.error) != 'undefined' ) {
|
|
6275
6521
|
msg = code.error || code.message;
|
|
6276
6522
|
code = code.status || 500;
|
|
6523
|
+
// #CE1 — second upgrade site: the 2-arg errorObj shape
|
|
6524
|
+
// resolves its status only here, after the early header
|
|
6525
|
+
// point above — so this site sets its own header too
|
|
6526
|
+
// (idempotent with the first call).
|
|
6527
|
+
code = _maybeUpgradeTransient503(code);
|
|
6528
|
+
_setTransientRetryAfterHeader(res);
|
|
6277
6529
|
}
|
|
6278
6530
|
if ( typeof(statusCodes[code]) != 'undefined' ) {
|
|
6279
6531
|
standardErrorMessage = statusCodes[code];
|
|
@@ -6319,6 +6571,15 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6319
6571
|
}
|
|
6320
6572
|
}
|
|
6321
6573
|
|
|
6574
|
+
// #CE1 — on an upgraded 503 the user-facing `error` field
|
|
6575
|
+
// carries the configured (or standard) service-unavailable
|
|
6576
|
+
// text instead of the raw datastore error; `message`/`stack`
|
|
6577
|
+
// keep their existing scope semantics, and the full detail
|
|
6578
|
+
// stays in the #ERRREF pairing line below.
|
|
6579
|
+
if ( _transient503Applied && errorObject ) {
|
|
6580
|
+
errorObject.error = _teConf.message || standardErrorMessage || statusCodes['503'];
|
|
6581
|
+
}
|
|
6582
|
+
|
|
6322
6583
|
// #ERRREF — mint/honour the incident ref + the ONE full-detail
|
|
6323
6584
|
// pairing line, emitted BEFORE the egress strip below: outside
|
|
6324
6585
|
// local scope this is the only server-side capture of the full
|
|
@@ -6382,6 +6643,14 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
6382
6643
|
errorObject.ref = _errRef;
|
|
6383
6644
|
}
|
|
6384
6645
|
|
|
6646
|
+
// #CE1 — custom error pages (eData) get the clean
|
|
6647
|
+
// service-unavailable text on an upgraded 503; the eData
|
|
6648
|
+
// merge below carries it. The inline fallback page keeps
|
|
6649
|
+
// rendering the thrown error's own fields, as before.
|
|
6650
|
+
if ( _transient503Applied && errorObject ) {
|
|
6651
|
+
errorObject.error = _teConf.message || standardErrorMessage || statusCodes['503'];
|
|
6652
|
+
}
|
|
6653
|
+
|
|
6385
6654
|
if ( errorObject && errorObject != 'null' && /object/i.test(typeof(errorObject)) ) {
|
|
6386
6655
|
// replaced: (errorObject.stack||errorObject.message) — both may be undefined for plain
|
|
6387
6656
|
// object errors forwarded from query() (e.g. an upstream non-2xx). Fall back to serializing
|
|
@@ -661,8 +661,12 @@ function registerGinaFilters(env, self, local, localOptions, req, res) {
|
|
|
661
661
|
typeof(process.gina) != 'undefined' && typeof(process.gina.PROXY_HOSTNAME) != 'undefined'
|
|
662
662
|
) ? true : false;
|
|
663
663
|
|
|
664
|
+
// #P39 — `options` passed by REFERENCE, mirroring render-swig: the filter
|
|
665
|
+
// singleton only READS the stash, and the former per-render deep copy of
|
|
666
|
+
// the whole `local.options` (routing tables + templates + settings + forms
|
|
667
|
+
// + locales) was one of the heaviest CPU sites in the render profile.
|
|
664
668
|
var filters = nunjucksFilters({
|
|
665
|
-
options:
|
|
669
|
+
options: localOptions,
|
|
666
670
|
isProxyHost: isProxyHost,
|
|
667
671
|
throwError: self.throwError,
|
|
668
672
|
req: req,
|
|
@@ -780,8 +780,20 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
780
780
|
|
|
781
781
|
|
|
782
782
|
// Setup swig default filters
|
|
783
|
+
// #P39 — `options` is passed by REFERENCE. The former per-render deep
|
|
784
|
+
// copy here was one of the two heaviest CPU sites in the whole render
|
|
785
|
+
// path (the payload carries the all-bundle routing tables, the full
|
|
786
|
+
// templates conf, settings, forms and locales), and it bought nothing:
|
|
787
|
+
// SwigFilters' `_options` write-set is empty beyond the stash itself —
|
|
788
|
+
// every filter only READS it — and the request path already shares
|
|
789
|
+
// `conf.routing` / `conf.reverseRouting` / `conf.forms` by reference
|
|
790
|
+
// (setOptions grafts the shared per-worker objects), so the filters see
|
|
791
|
+
// the same objects the controller itself uses. The stash-then-await
|
|
792
|
+
// interleave window is unchanged: with the copy, an interleaved render
|
|
793
|
+
// overwrote the singleton with ITS copy; by reference it overwrites it
|
|
794
|
+
// with ITS options — same wrongness class, zero new exposure.
|
|
783
795
|
var filters = SwigFilters({
|
|
784
|
-
options :
|
|
796
|
+
options : localOptions,
|
|
785
797
|
isProxyHost : isProxyHost,
|
|
786
798
|
throwError : self.throwError,
|
|
787
799
|
req : req,
|
|
@@ -1525,6 +1525,37 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1525
1525
|
console.warn('[render-cache] config validation skipped: ' + (rcErr.message || rcErr));
|
|
1526
1526
|
}
|
|
1527
1527
|
|
|
1528
|
+
// #CE1 — `server.transientErrors` boot-time shape check
|
|
1529
|
+
// (warn-only, NEVER fatal: the opt-in governs how a
|
|
1530
|
+
// transient datastore error RENDERS — a bad value must
|
|
1531
|
+
// not refuse a boot, and the controller-side reader
|
|
1532
|
+
// (`controller.js` `_getTransientErrorsConf()`, kept in
|
|
1533
|
+
// sync with these rules) independently falls back to
|
|
1534
|
+
// the same defaults at request time).
|
|
1535
|
+
try {
|
|
1536
|
+
var _teBlock = null;
|
|
1537
|
+
try {
|
|
1538
|
+
_teBlock = config.getInstance()[gna.core.startingApp][env].server.transientErrors;
|
|
1539
|
+
} catch (teConfErr) { _teBlock = null; }
|
|
1540
|
+
if ( typeof(_teBlock) != 'undefined' && _teBlock !== null ) {
|
|
1541
|
+
if ( typeof(_teBlock) != 'object' || Array.isArray(_teBlock) ) {
|
|
1542
|
+
console.warn('[transient-errors] `server.transientErrors` must be an object — ignoring the whole block (feature off)');
|
|
1543
|
+
} else {
|
|
1544
|
+
if ( typeof(_teBlock.enabled) != 'undefined' && _teBlock.enabled !== true && _teBlock.enabled !== false ) {
|
|
1545
|
+
console.warn('[transient-errors] `server.transientErrors.enabled` must be a strict boolean — treating as disabled');
|
|
1546
|
+
}
|
|
1547
|
+
if ( typeof(_teBlock.retryAfter) != 'undefined' && !( typeof(_teBlock.retryAfter) == 'number' && isFinite(_teBlock.retryAfter) && Math.floor(_teBlock.retryAfter) === _teBlock.retryAfter && _teBlock.retryAfter >= 1 && _teBlock.retryAfter <= 86400 ) ) {
|
|
1548
|
+
console.warn('[transient-errors] `server.transientErrors.retryAfter` must be an integer between 1 and 86400 seconds — using the default (30)');
|
|
1549
|
+
}
|
|
1550
|
+
if ( typeof(_teBlock.message) != 'undefined' && ( typeof(_teBlock.message) != 'string' || _teBlock.message.length === 0 ) ) {
|
|
1551
|
+
console.warn('[transient-errors] `server.transientErrors.message` must be a non-empty string — falling back to the standard status text');
|
|
1552
|
+
}
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1555
|
+
} catch (teErr) {
|
|
1556
|
+
console.warn('[transient-errors] config validation skipped: ' + (teErr.message || teErr));
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1528
1559
|
// setting default global middlewares
|
|
1529
1560
|
if ( typeof(instance.use) == 'function' ) {
|
|
1530
1561
|
|
|
@@ -28,6 +28,18 @@
|
|
|
28
28
|
// - the `rootDomain` defined in your bundle/config/settings.server.json
|
|
29
29
|
// Since overrides are possible, last defined value will be the one taken in consideration by gina
|
|
30
30
|
"rootDomain": "",
|
|
31
|
+
// This is the FQDN the bundle answers on, and the value substituted into
|
|
32
|
+
// every `${host}` token — notably the `server.credentials` paths declared
|
|
33
|
+
// in `core/template/conf/settings.json`.
|
|
34
|
+
// It is normally written per bundle/env into the project's own `env.json`
|
|
35
|
+
// by the CLI, which seeds exactly this value. The default lives here too
|
|
36
|
+
// so that a hand-written or partial block (one that sets, say, only
|
|
37
|
+
// `server.cache`) still resolves: without it `host` was the single key the
|
|
38
|
+
// configuration reads off this block with no framework-side default, and
|
|
39
|
+
// an unset one left `${host}` unsubstituted inside a filesystem path
|
|
40
|
+
// (#B181(a) — unknown tokens are preserved verbatim and silently, by
|
|
41
|
+
// design since #B12). Override it in your project `env.json`.
|
|
42
|
+
"host": "localhost",
|
|
31
43
|
"projectPath": "${executionPath}",
|
|
32
44
|
"projectVersion": "${projectVersion}",
|
|
33
45
|
"projectVersionMajor": "${projectVersionMajor}",
|
|
@@ -110,7 +110,13 @@ function NunjucksFilters(conf) {
|
|
|
110
110
|
|
|
111
111
|
var getInstance = function() {
|
|
112
112
|
if (conf) {
|
|
113
|
-
|
|
113
|
+
// #P39 — stash by REFERENCE, mirroring lib/swig-filters: `_options`
|
|
114
|
+
// has no writer beyond this assignment (the getUrl/getWebroot merge
|
|
115
|
+
// fills a fresh `{}` target), the wrapper's `.options` is the
|
|
116
|
+
// render's per-request `local.options` (#M1), and `req`/`res` were
|
|
117
|
+
// by-reference through the former deep copy anyway. The per-call
|
|
118
|
+
// copy was pure CPU waste on every render.
|
|
119
|
+
self.options = NunjucksFilters.instance._options = conf;
|
|
114
120
|
}
|
|
115
121
|
return NunjucksFilters.instance;
|
|
116
122
|
};
|
|
@@ -527,6 +527,16 @@ function Proc(bundle, proc, usePidFile){
|
|
|
527
527
|
generator.createFileFromDataSync( JSON.stringify(runningProcs, null, 2), runningProcsPath);
|
|
528
528
|
}
|
|
529
529
|
|
|
530
|
+
/**
|
|
531
|
+
* Remove the running-process record matching `pid` from the
|
|
532
|
+
* `~/.gina/procs.json` registry. Entries are keyed by bundle name and
|
|
533
|
+
* matched here by their `pid` field; the matched entry is removed under
|
|
534
|
+
* its own key, whatever bundle this instance was constructed for.
|
|
535
|
+
*
|
|
536
|
+
* @param {number} pid - PID of the process whose record must be dropped
|
|
537
|
+
*
|
|
538
|
+
* @private
|
|
539
|
+
* */
|
|
530
540
|
var removeRunningProc = function(pid) {
|
|
531
541
|
var runningProcsPath = _(GINA_HOMEDIR + '/procs.json', true)
|
|
532
542
|
, runningProcsPathObj = new _(runningProcsPath)
|
|
@@ -536,7 +546,11 @@ function Proc(bundle, proc, usePidFile){
|
|
|
536
546
|
runningProcs = requireJSON(runningProcsPath);
|
|
537
547
|
for (let name in runningProcs) {
|
|
538
548
|
if (runningProcs[name].pid == pid) {
|
|
539
|
-
delete runningProcs[bundle]
|
|
549
|
+
// Fixed #B180: was `delete runningProcs[bundle]` — the constructor's
|
|
550
|
+
// closure-captured parameter, so the delete targeted the constructing
|
|
551
|
+
// instance's own key instead of the entry matched by pid: dead records
|
|
552
|
+
// survived (and a live one was destroyed when the keys differed).
|
|
553
|
+
delete runningProcs[name];
|
|
540
554
|
generator.createFileFromDataSync( JSON.stringify(runningProcs, null, 2), runningProcsPath);
|
|
541
555
|
break;
|
|
542
556
|
}
|