gina 0.6.19 → 0.6.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +18 -22
- package/ROADMAP.md +1 -0
- package/framework/v0.6.20/VERSION +1 -0
- package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/js/gina.js +49 -6
- package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +270 -270
- package/framework/v0.6.20/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.20/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.19 → v0.6.20}/core/model/entity.js +139 -12
- package/framework/{v0.6.19 → v0.6.20}/lib/merge/src/main.js +49 -6
- package/framework/{v0.6.19 → v0.6.20}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +2 -2
- package/package.json +3 -3
- package/schema/settings.json +16 -0
- package/framework/v0.6.19/VERSION +0 -1
- package/framework/v0.6.19/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.19/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/AUTHORS +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/LICENSE +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/config.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/content.encoding +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/dev/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/gna.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/locales/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/locales/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/mime.types +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/model/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/router.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/server.express.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/server.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/status.codes +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/console.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/context.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/path.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/task.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/helpers/text.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/async/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/config.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/job/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/job-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/math/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/model.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/proc.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/push/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/session-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/shell.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/state.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/url/README.md +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/url/index.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/validator.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.19 → v0.6.20}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|
|
6
6
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## 0.6.20 - 2026-08-30
|
|
10
|
+
|
|
11
|
+
> **Pickup: restart your bundles AND rebuild them** (`gina bundle:build`). The browser bundle changed —
|
|
12
|
+
> `gina.min.js` differs from `0.6.19` (`gina.min.css` and `gina.onload.min.js` are unchanged), owed to the
|
|
13
|
+
> two `merge()` fixes below; `lib/merge` ships in the client bundle. The security fix is server-side and a
|
|
14
|
+
> restart alone picks it up. `0.6.20` is a patch — the `shortVersion` stays `0.6`, so there is no settings reset.
|
|
15
|
+
### Fixed
|
|
16
|
+
* `merge()` no longer throws `TypeError: Cannot create property 'id' on string` when a target array that repeats a primitive (`['v2', 'v2']`) is merged with an array of objects. The object-fill branch tested for a free index on the DEDUPED copy of the target and then wrote into the real one, whose index still held the string (or `null`), so a configuration overlay hitting that shape killed the boot instead of merging. An occupied index is now left alone — as it already was for an object landing on one — and the merge completes (#B437).
|
|
17
|
+
* `merge()` no longer duplicates a number the target already holds at a different index (`merge([9, 1], [1])` gave `[9, 1, 1]`; `{ ports: [8080, 8124] }` merged with `{ ports: [8124] }` gave `[8080, 8124, 8124]`), and a nested array is merged once per level instead of twice, so `[1, 2]` + `[3, 4]` one level down is `[1, 2, 3, 4]` rather than `[1, 2, 3, 4, 3, 4]` and merging the same source a second time is a no-op. The rule that lets a source repeat a number (`[25]` + `[25, 25]` still gives `[25, 25]`) now compares counts instead of positions. An array shared by both sides below the top level is also left untouched, closing a residual of the 0.6.19 source-mutation fix (#B436).
|
|
18
|
+
### Security
|
|
19
|
+
* #B440 — concurrent calls to a JS-defined, emit-style entity method are now paired to the call each completion came from, on both call forms (`await entity.method()` and `util.promisify(entity.method)`). One call that never signalled completion — it neither emitted its `<shortName>#<method>` trigger nor returned a Promise that settled, typically because something threw inside an asynchronous callback before the `emit` (swallowed as an unhandled rejection) — used to leave its pending slot at the head of that method's arrival-order queue forever: from then on every caller received the NEXT caller's record and the last one hung, every later caller hung when calls did not overlap, and each further lost completion made it one caller worse. Where the method reads a user-scoped or ownership-bearing record, a check performed on the returned row could pass for the wrong principal — a confidentiality and authorization concern, not only a correctness one, and the same shape as the 0.6.19 Couchbase fix. The trigger is data-dependent (an unexpected record shape), not load-dependent: invisible in a load test, present in any long-lived process. Every call now runs inside its own async context; a completion is matched to that context whatever the completion order (which also closes the documented out-of-order residual of the 0.6.11 fix), a completion for a call that already settled is dropped rather than handed to the next caller, and a completion that reaches the entity outside every call's context (a native driver calling back from a loop started at boot) still pairs in arrival order and now logs `DISPATCH:NO_CONTEXT` at debug level. The promisify form also chains on a Promise returned by the method — it used to discard it, so a Promise-returning method was only safe on the entity-context form. New opt-in `settings.json > model.emitTimeout` (ms) bounds a call that never completes: it rejects with an Error naming the trigger and a warn line is logged; absent or 0 keeps the previous behaviour, where that call — and now only that call — stays pending. Server-side only — pickup is a bundle restart, no re-bake.
|
|
20
|
+
|
|
9
21
|
## 0.6.19 - 2026-08-28
|
|
10
22
|
### Fixed
|
|
11
23
|
* #B431 — a failed couchbase query no longer settles its caller twice. Each dispatch chained `.catch(onError).then(onResult)` sequentially; a `.catch()` handler that returns normally RESOLVES the promise it produces, so the trailing `.then()` ran on every error with no result payload and delivered a second, bogus empty success. Measured: one failed query invoked an explicit trailing callback twice — first with the real error, then with `(false, null, {})` — so the canonical `if (err) { return next(err); } render(data);` shape ran BOTH branches, erroring the request and then rendering an empty result. On the `await` / `.onComplete()` path the second settlement was swallowed because a promise settles once, which is why this went unnoticed; it was still the reason a failed query emitted its trigger three times instead of once. `bulkInsert` shared the root cause with a different symptom: its result handler dereferenced the absent payload, so every failed bulk insert logged a spurious `TypeError: Cannot read properties of undefined (reading 'rows')`. All three dispatch sites now use the two-argument `.then(onResult, onError)` form, making the handlers mutually exclusive branches, and `bulkInsert` guards its payload the way the query path already did. Server-side only — pickup is a bundle restart, no re-bake.
|
package/README.md
CHANGED
|
@@ -62,35 +62,31 @@ open https://localhost:3100
|
|
|
62
62
|
|
|
63
63
|
> **npm 12+** blocks install scripts by default, and gina's post-install bootstraps `~/.gina` and the framework dependencies. Install with `npm install -g gina@latest --allow-scripts=gina`, or allow it once for all global installs with `npm config set allow-scripts=gina --location=user`. (Not needed on npm ≤ 11.)
|
|
64
64
|
|
|
65
|
-
## What's in 0.6.
|
|
65
|
+
## What's in 0.6.20
|
|
66
66
|
|
|
67
67
|
> **Restart your bundles AND rebuild them.** This release changes the browser
|
|
68
|
-
> bundle: `gina.min.js` differs from `0.6.
|
|
68
|
+
> bundle: `gina.min.js` differs from `0.6.19` (`gina.min.css` and
|
|
69
69
|
> `gina.onload.min.js` are unchanged). A restart alone updates the server half
|
|
70
70
|
> only — each bundle bakes its own copy of the client assets, so the `merge()`
|
|
71
|
-
>
|
|
71
|
+
> fixes below would not reach a browser at all. The security fix is server-side
|
|
72
|
+
> and a restart is enough for it; the rebuild is owed to `lib/merge`.
|
|
72
73
|
|
|
73
|
-
> **No settings reset.** `0.6.
|
|
74
|
+
> **No settings reset.** `0.6.20` is a patch — the `shortVersion` stays `0.6`, so
|
|
74
75
|
> your `~/.gina/0.6/settings.json` is untouched. (`0.6.0` was the reset.)
|
|
75
76
|
|
|
76
|
-
**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
- **
|
|
88
|
-
- **
|
|
89
|
-
- **Fixed — a Couchbase callback that throws is no longer invoked twice (#B430).** The delivery path wrapped the callback in a `try` whose `catch` called the same callback again with identical arguments. The throw is now reported with the query trigger for context and the callback is never re-entered.
|
|
90
|
-
- **Fixed — a failed Couchbase query no longer settles its caller twice (#B431).** Each dispatch chained `.catch(onError).then(onResult)` sequentially, so every error was followed by a bogus empty success — the canonical `if (err) { return next(err); } render(data);` shape ran both branches. Failed `bulkInsert` calls also logged a spurious `TypeError`; that is gone.
|
|
91
|
-
- **Fixed — an entity query callback is no longer invoked twice when the callback itself throws (#B432).** The sqlite, mongodb and scylladb connectors delivered results inside a `try` or a `.then()` whose error path called the same callback a second time with the caller's own exception dressed up as a database failure. A throwing callback is now logged once, as `[ <label> ] callback exception:`, and never re-entered.
|
|
92
|
-
- **Fixed — a logged `Error` object keeps its message, stack, own properties and `cause` chain (#B434).** Both log writers walked enumerable properties only, so `console.error(err)` rendered `{}` (or just `{"code": …}`). Errors now render the way Node's own console does — directly, among other arguments, nested inside a logged object, and on `console.log` alike — and the rendered message still goes through redaction. Passing `err.stack` as a string keeps working unchanged.
|
|
93
|
-
- **Fixed — `merge()` no longer rewrites the object it was given (#B428).** A source subtree merged into an existing target level that lacked its key was referenced and then walked again as if merged into itself: every array inside the caller's object was replaced by a copy at every depth, and an array of primitives silently lost its duplicates. A subtree that is the same object on both sides is now skipped, so a grafted source keeps its arrays and duplicates and the result references it. Merging two different values is unchanged. `lib/merge` is part of the browser bundle — hence the rebuild.
|
|
77
|
+
**One security fix, and two `merge()` defects closed.** Concurrent calls to an
|
|
78
|
+
emit-style entity method are now paired to the call each completion came from, so
|
|
79
|
+
a single call that never signals completion can no longer desynchronise every
|
|
80
|
+
caller that follows it — the same confidentiality shape as the `0.6.19` Couchbase
|
|
81
|
+
fix, reached by a different route. Alongside it, `merge()` stops duplicating
|
|
82
|
+
values a target already holds and stops throwing on a mixed array shape that
|
|
83
|
+
could kill a boot. **One change may require action** — the new
|
|
84
|
+
`model.emitTimeout` is opt-in and off by default, so nothing changes unless you
|
|
85
|
+
set it; details in the [migration guide](https://gina.io/docs/migration).
|
|
86
|
+
|
|
87
|
+
- **Security — concurrent entity calls no longer receive each other's records (#B440).** Both call forms (`await entity.method()` and `util.promisify(entity.method)`) paired completions to callers by arrival order, with no call identity. One call that never signalled completion — it neither emitted its `<shortName>#<method>` trigger nor returned a Promise that settled, typically because something threw inside an asynchronous callback before the `emit` and was swallowed as an unhandled rejection — left its pending slot at the head of that method's queue forever: from then on every caller received the *next* caller's record and the last one hung, every later caller hung outright when calls did not overlap, and each further lost completion made it one caller worse. Where the method reads a user-scoped or ownership-bearing record, a check performed on the returned row could pass for the wrong principal — a confidentiality and authorization concern, not only a correctness one. The trigger is **data-dependent** (an unexpected record shape), not load-dependent: invisible in a load test, present in any long-lived process. Every call now runs inside its own async context and a completion is matched to that context whatever the completion order — which also closes the documented out-of-order residual of the `0.6.11` fix. A completion for a call that already settled is dropped rather than handed to the next caller, and a completion reaching the entity outside every call's context (a native driver calling back from a loop started at boot) still pairs in arrival order and now logs `DISPATCH:NO_CONTEXT` at debug level. The `promisify` form also chains on a Promise returned by the method — it used to discard it, so a Promise-returning method was only safe on the entity-context form. **New opt-in** `settings.json > model.emitTimeout` (ms) bounds a call that never completes: it rejects with an Error naming the trigger and logs a warning; absent or `0` keeps the previous behaviour, where that call — and now only that call — stays pending. Server-side only.
|
|
88
|
+
- **Fixed — `merge()` no longer duplicates a number the target already holds (#B436).** `merge([9, 1], [1])` gave `[9, 1, 1]`, and `{ ports: [8080, 8124] }` merged with `{ ports: [8124] }` gave `[8080, 8124, 8124]`. A nested array is also merged once per level instead of twice, so `[1, 2]` + `[3, 4]` one level down is `[1, 2, 3, 4]` rather than `[1, 2, 3, 4, 3, 4]`, and merging the same source a second time is now a no-op. The rule that lets a source legitimately repeat a number (`[25]` + `[25, 25]` still gives `[25, 25]`) now compares counts instead of positions. An array shared by both sides below the top level is left untouched, closing a residual of the `0.6.19` source-mutation fix.
|
|
89
|
+
- **Fixed — `merge()` no longer throws on a mixed array shape (#B437).** Merging a target array that repeats a primitive (`['v2', 'v2']`) with an array of objects raised `TypeError: Cannot create property 'id' on string`: the object-fill branch tested for a free index on the *deduped* copy of the target and then wrote into the real one, whose index still held the string (or `null`). A configuration overlay hitting that shape killed the boot instead of merging. An occupied index is now left alone — as it already was for an object landing on one — and the merge completes.
|
|
94
90
|
|
|
95
91
|
## Documentation
|
|
96
92
|
|
package/ROADMAP.md
CHANGED
|
@@ -71,6 +71,7 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
71
71
|
| **Q4 2026** | `0.6.17` ✅ | **Fixed**: a route whose URL structurally matches but whose `requirements` reject the request no longer drops the connection once the route cache is warm — the cache is keyed on method and pathname with the query string stripped before dispatch, so every query variant of one pathname shares a single entry, and the warm path re-evaluated the requirements on each hit and then discarded the verdict, force-matching a request that had just been rejected and dispatching it with no routing description, which closed the connection with no HTTP response at all — no status and no body; the warm path now honours the verdict, treating a rejecting or throwing evaluation as a cache miss that falls through to the routing scan and answers correctly (404 when nothing matches, the sibling rule when one does, or a 500 naming the rule when a `validator::` requirement throws, which was previously also a dropped connection), while the cache entry is kept so the variants the requirements accept stay warm. **Fixed**: the `toFloat`, `set` and `format` validator rules are context-safe — all three are documented rules that threw on every server-side call, with `toFloat` opening by reading the live DOM element unguarded so server-side rule sets could not coerce a float at all (it now reads the live value only when one is reachable and otherwise uses the submitted value, which on the server is the raw value, and a missing comma in the same statement that leaked `isFloatingWithCommas` as an implicit global into every page is fixed with it), `set` now assigning the field value in both contexts while reflecting it onto the DOM element only in the browser where an element exists, and `format` — which already worked in both contexts when chained after `isDate`, as its documentation shows — now reporting a non-`Date` value as a named rule-authoring error pointing at the missing `isDate` instead of the opaque `val.format is not a function`. **Fixed**: a bundle declaring a redirect route no longer floods its log with `source[host] is undefined` warnings — redirect rules are deliberately excluded from the per-rule host and hostname defaulting so those keys are absent on them, but the per-request routing copy assigned them unconditionally, creating properties holding `undefined` on a clone kept for the lifetime of the process, so every later no-arg `getConfig()` emitted one `host` and one `hostname` warning per redirect rule indefinitely, measured by a consumer at roughly three quarters of that log line's total volume and drowning the genuine warnings it exists to surface; the copy is now existence-guarded, so an absent key stays absent and rules that do carry a host are copied exactly as before, which removes log noise rather than a functional defect, and only template and view routes reach it so API-only bundles were never affected. Pickup: restart **and** rebuild your bundles (the browser bundle changed — `gina.min.js` differs from `0.6.16`; `gina.min.css` and `gina.onload.min.js` are unchanged). |
|
|
72
72
|
| **Q4 2026** | `0.6.18` ✅ | **Fixed**: a field validated by a `query` (live-check) rule no longer gets the wrong verdict when its value contains a `+` — the live-check body is JSON but the request was labelled `application/x-www-form-urlencoded`, so the server url-decoded it before parsing and turned every `+` into a space; the mangled body was still valid JSON, so the endpoint answered 200 with a verdict computed from a corrupted value, and because a `query` rule also gates the submit trigger the common case of an email plus-address was a hard lockout on sign-in and password-recovery forms rather than a warning. Live-check bodies are no longer URL-decoded at all, so `%XX` sequences reach your action verbatim. **Fixed**: the dotted-path render data setter no longer walks and rewrites the shared forms catalog on every request — a first write is now stored by reference instead of being deep-merged through the render tree, ending both a per-request CPU cost and a silent mutation of the per-process catalog. Restart **and** rebuild your bundles (the browser bundle changed — `gina.min.js` differs from `0.6.17`; `gina.min.css` and `gina.onload.min.js` are unchanged). |
|
|
73
73
|
| **Q4 2026** | `0.6.19` ✅ | **Security**: credentials carried in a request URL no longer reach the logs — every log message is redacted at the logger's single pre-render point before any sink renders it; configured per bundle in `settings.json > log.redact`, on by default with a built-in credential set, your own `patterns`, and every `${secret:KEY}` value masked verbatim. **Security**: concurrent calls to the same Couchbase entity method no longer cross-deliver results — the completion trigger carried no call identity, so the first query to finish woke every in-flight caller with its own payload. **Fixed**: a connector callback that throws is no longer invoked a second time, and a failed Couchbase query no longer settles its caller twice. **Fixed**: a logged `Error` keeps its message, stack, own properties and `cause` chain. **Fixed**: `merge()` no longer rewrites the object it was given. Restart **and** rebuild your bundles (the browser bundle changed — `gina.min.js` differs from `0.6.18`; `gina.min.css` and `gina.onload.min.js` are unchanged). |
|
|
74
|
+
| **Q4 2026** | `0.6.20` ✅ | **Security**: concurrent calls to an emit-style entity method are now paired to the call each completion came from. Both call forms (`await entity.method()` and `util.promisify(entity.method)`) paired by arrival order with no call identity, so one call that never signalled completion — it neither emitted its trigger nor returned a Promise that settled, typically because something threw inside an asynchronous callback and was swallowed as an unhandled rejection — left its slot at the head of that method's queue forever: every caller after it received the *next* caller's record, the last one hung, and each further lost completion made it one caller worse. Where the method reads a user-scoped or ownership-bearing record, a check performed on the returned row could pass for the wrong principal. The trigger is data-dependent, not load-dependent — invisible in a load test, present in any long-lived process. Every call now runs inside its own async context, a completion for an already-settled call is dropped rather than handed to the next caller, one reaching the entity outside every call's context still pairs in arrival order and logs `DISPATCH:NO_CONTEXT` at debug level, and the `promisify` form chains on a Promise the method returns instead of discarding it. New opt-in `settings.json > model.emitTimeout` (ms) bounds a call that never completes. **Fixed**: `merge()` no longer duplicates a number the target already holds at a different index, and merges a nested array once per level instead of twice. **Fixed**: `merge()` no longer throws `TypeError: Cannot create property 'id' on string` when a target array that repeats a primitive is merged with an array of objects — a configuration overlay hitting that shape killed the boot. Restart **and** rebuild your bundles (the browser bundle changed — `gina.min.js` differs from `0.6.19`; `gina.min.css` and `gina.onload.min.js` are unchanged). |
|
|
74
75
|
| **Q1 2027** | `0.6.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
|
|
75
76
|
| **2027** | `0.7.0` | Performance — remaining measure-gated candidates: multipart & WebSocket fast paths, render/log cleanups, SIMD scanner (the render-path deep-clone & id-mint reduction shipped early in `0.6.2` with a measured 4.4× render-throughput gain; the profiling baseline itself also shipped in `0.6.2`) |
|
|
76
77
|
| **2027** | `0.8.0` | Financial-messaging foundations — XML request/response handling · pluggable message-schema validation · IBAN/BIC validation rules · money & ISO 4217 minor-unit utilities · idempotency keys · sequence primitive · OAuth2 client-credentials egress |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.6.20
|
|
@@ -2157,6 +2157,12 @@ define("requireLib", function(){});
|
|
|
2157
2157
|
* - Missing keys are always filled from `source`; on a CONFLICTING key the
|
|
2158
2158
|
* `target` value is preserved by default.
|
|
2159
2159
|
* - Pass `true` as the last argument (`override`) to make `source` win instead.
|
|
2160
|
+
* - Arrays of primitives merge as an ordered union: the target's elements first,
|
|
2161
|
+
* then every source element the result lacks. A number the source repeats more
|
|
2162
|
+
* often than the result is topped up to the source's count (`[25]` + `[25,25]`
|
|
2163
|
+
* gives `[25,25]`), a value already present is never pushed again, and merging
|
|
2164
|
+
* the same source a second time is a no-op (#B436). A nested array is merged
|
|
2165
|
+
* once per level.
|
|
2160
2166
|
*
|
|
2161
2167
|
* @example
|
|
2162
2168
|
* var merge = require('lib/merge');
|
|
@@ -2199,6 +2205,7 @@ function Merge() {
|
|
|
2199
2205
|
* merge([1, 2], [3, 4]) // [1, 2, 3, 4]
|
|
2200
2206
|
* merge([1, 2], [3, 4], true) // [3, 4]
|
|
2201
2207
|
* merge({ a: [null, 'x'] }, { a: [null, 'x'] }) // { a: [null, 'x'] } — null elements are preserved (#B226)
|
|
2208
|
+
* merge({ ports: [8080, 8124] }, { ports: [8124] }) // { ports: [8080, 8124] } — a value already present is not pushed again (#B436)
|
|
2202
2209
|
*/
|
|
2203
2210
|
var browse = function (_target, _source) {
|
|
2204
2211
|
|
|
@@ -2354,7 +2361,12 @@ function Merge() {
|
|
|
2354
2361
|
} else {
|
|
2355
2362
|
clone[ prop ] = copy[ prop ] // don't override existing
|
|
2356
2363
|
}
|
|
2357
|
-
} else if ( Array.isArray(copy[ prop ]) && Array.isArray(clone[ prop ]) ) {
|
|
2364
|
+
} else if ( createMode && Array.isArray(copy[ prop ]) && Array.isArray(clone[ prop ]) ) {
|
|
2365
|
+
// #B436 — createMode has no recursion below, so this is its one
|
|
2366
|
+
// pass; on an existing level the `browse(clone, copy)` recursion
|
|
2367
|
+
// that follows merges this array itself, and merging it here too
|
|
2368
|
+
// walked every nested array twice (and replaced an array SHARED
|
|
2369
|
+
// by both sides with a deduped copy, past the #B428 identity guard)
|
|
2358
2370
|
clone[ prop ] = mergeArray(copy[ prop ], clone[ prop ], override);
|
|
2359
2371
|
}
|
|
2360
2372
|
}
|
|
@@ -2426,6 +2438,19 @@ function Merge() {
|
|
|
2426
2438
|
* validator rule `"setFlash": [null, "message"]` on the client-side
|
|
2427
2439
|
* rules path.
|
|
2428
2440
|
*
|
|
2441
|
+
* An OBJECT element of `options` fills a HOLE of `target` (an index the
|
|
2442
|
+
* target lacks) by copying its keys; an occupied index — an existing
|
|
2443
|
+
* object, a primitive or `null` — is never written into. That guard is
|
|
2444
|
+
* #B437: the hole test runs on the deduped rebuild, whose indexes shift
|
|
2445
|
+
* against a target carrying duplicate primitives, so the key write used to
|
|
2446
|
+
* reach a string or null and throw, killing the whole merge.
|
|
2447
|
+
*
|
|
2448
|
+
* Primitive elements form an ordered union — the target's first, then every
|
|
2449
|
+
* source element the result lacks. A `number` the source carries more often
|
|
2450
|
+
* than the result so far is pushed again, up to the source's count (#B436):
|
|
2451
|
+
* the comparison is by COUNT, so a number already present at another index
|
|
2452
|
+
* is never duplicated and merging the same source twice is a no-op.
|
|
2453
|
+
*
|
|
2429
2454
|
* @inner
|
|
2430
2455
|
* @private
|
|
2431
2456
|
* @param {Array} options - Source array (merged INTO target)
|
|
@@ -2638,10 +2663,18 @@ function Merge() {
|
|
|
2638
2663
|
if (typeof (newTarget[a]) == 'undefined')
|
|
2639
2664
|
newTarget[a] = {};
|
|
2640
2665
|
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2666
|
+
// #B437 — the hole test above ran on the DEDUPED rebuild; after
|
|
2667
|
+
// the rebind `newTarget = target` the same index can hold a
|
|
2668
|
+
// primitive or null on the real target (a target carrying
|
|
2669
|
+
// duplicate primitives is SHORTER once deduped), and writing
|
|
2670
|
+
// keys into a string / null threw a TypeError that killed the
|
|
2671
|
+
// whole merge. An occupied slot is not a hole: skip it, as the
|
|
2672
|
+
// chain below already does for an object at an occupied index.
|
|
2673
|
+
if (newTarget[a] !== null && typeof(newTarget[a]) == 'object') {
|
|
2674
|
+
for (let k in options[a]) {
|
|
2675
|
+
if (!newTarget[a].hasOwnProperty(k)) {
|
|
2676
|
+
newTarget[a][k] = options[a][k]
|
|
2677
|
+
}
|
|
2645
2678
|
}
|
|
2646
2679
|
}
|
|
2647
2680
|
|
|
@@ -2655,7 +2688,17 @@ function Merge() {
|
|
|
2655
2688
|
// ok but not if @ same position
|
|
2656
2689
|
//&& options[a] !== newTarget[a]
|
|
2657
2690
|
) {
|
|
2658
|
-
|
|
2691
|
+
// #B436 — top up by COUNT, never by index. The source may carry a
|
|
2692
|
+
// repeated number the target has fewer copies of (a = [25];
|
|
2693
|
+
// b = [25,25] must give [25,25]), but the old test compared POSITIONS,
|
|
2694
|
+
// so a number already present at a different index was pushed again
|
|
2695
|
+
// ([9,1] + [1] gave [9,1,1]) and the merge was not idempotent — the
|
|
2696
|
+
// second pass a nested level used to take doubled every number.
|
|
2697
|
+
// was: if (options[a] !== newTarget[a]) { newTarget.push(options[a]); continue }
|
|
2698
|
+
var _seenInSource = 0, _seenInTarget = 0, _o = 0;
|
|
2699
|
+
for (; _o <= a; ++_o) { if (options[_o] === options[a]) ++_seenInSource; }
|
|
2700
|
+
for (_o = 0; _o < newTarget.length; ++_o) { if (newTarget[_o] === options[a]) ++_seenInTarget; }
|
|
2701
|
+
if (_seenInSource > _seenInTarget) {
|
|
2659
2702
|
newTarget.push(options[a]);
|
|
2660
2703
|
continue
|
|
2661
2704
|
}
|