gina 0.6.24 → 0.6.25
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 +14 -0
- package/README.md +23 -13
- package/ROADMAP.md +10 -9
- package/framework/v0.6.25/VERSION +1 -0
- package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.js +554 -4
- package/framework/v0.6.25/core/asset/plugin/dist/vendor/gina/js/gina.min.js +665 -0
- package/framework/v0.6.25/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.25/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.24 → v0.6.25}/core/config.js +11 -0
- package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.js +114 -2
- package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-json.js +9 -0
- package/framework/v0.6.25/core/controller/controller.render-xml.js +226 -0
- package/framework/{v0.6.24 → v0.6.25}/core/controller/inline-script.js +54 -3
- package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/src/form-validator.js +163 -0
- package/framework/{v0.6.24 → v0.6.25}/core/router.js +88 -4
- package/framework/{v0.6.24 → v0.6.25}/core/server.js +115 -0
- package/framework/v0.6.25/lib/idempotency/package.json +6 -0
- package/framework/v0.6.25/lib/idempotency/src/main.js +514 -0
- package/framework/{v0.6.24 → v0.6.25}/lib/index.js +11 -0
- package/framework/v0.6.25/lib/message-validator/package.json +6 -0
- package/framework/v0.6.25/lib/message-validator/src/main.js +340 -0
- package/framework/v0.6.25/lib/money/package.json +17 -0
- package/framework/v0.6.25/lib/money/src/main.js +355 -0
- package/framework/{v0.6.24 → v0.6.25}/lib/routing/src/main.js +26 -2
- package/framework/{v0.6.24 → v0.6.25}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +13 -6
- package/package.json +3 -3
- package/schema/settings.json +44 -1
- package/types/index.d.ts +38 -0
- package/framework/v0.6.24/VERSION +0 -1
- package/framework/v0.6.24/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -655
- package/framework/v0.6.24/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.24/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/AUTHORS +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/content.encoding +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/gna.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/mime.types +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/entity.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/server.express.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/status.codes +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/console.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/context.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/path.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/task.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/text.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/async/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/config.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/job/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/math/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/model.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/proc.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/push/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/security-headers-emitter/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/security-headers-emitter/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/shell.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/sri/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/sri/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/state.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/url/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/url/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/validator.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,20 @@ 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.25 - 2026-09-03
|
|
10
|
+
### Added
|
|
11
|
+
* Exact-money primitive (#FIN5): lib.money server-side and gina.money in the browser bundle — ISO 4217 minor-unit integer arithmetic on BigInt, with an in-lib exponent table (JPY 0, BHD 3, CLF 4, default 2). Strict wire-string parse() rejects float inputs and excess fractional precision (rounding stays the application's decision); add/subtract/compare/multiply throw on currency mismatch and integer-factor violations; format() renders the canonical wire string with exactly the currency's fraction digits; toMinor()/fromMinor() round-trip JSON-safe minor-unit counts. Amounts stay exact beyond Number.MAX_SAFE_INTEGER minor units. Display formatting deliberately stays with the i18n layer (Intl.NumberFormat). The module is dependency-free and dual-published; changes to it ride the browser bundle (pickup: restart and re-bake).
|
|
12
|
+
* isIban and isBic FormValidator rules (#FIN4): IBAN validation per ISO 13616 - shape, official per-country length for 87 registered countries, and the ISO 7064 MOD 97-10 checksum - with a tolerant read (case and space/hyphen separators are normalized for validation only; the stored value is never mutated, and unknown country codes pass on shape + checksum), plus BIC validation per ISO 9362 (8- or 11-character shape, case-insensitive). Shared client + server like every FormValidator rule; empty values stay adjudicated by isRequired alone.
|
|
13
|
+
* Idempotency keys (#FIN6): opt-in Idempotency-Key request deduplication at the router band, per the IETF draft. Arm it with settings.json server.idempotency (a declared kv namespace + keyField) and opt routes in with routing.json top-level idempotency true (or required true to answer 400 when the header is missing). The first request bearing a key reserves the operation and executes; its rendered JSON response is recorded, and a retry with the same key and payload is answered with the recorded response plus Idempotency-Replayed true. A duplicate while the original is in flight gets 409 + Retry-After; the same key with a different payload gets 422. Anonymous callers are skipped (a stored response never crosses principals), 5xx and oversize responses release the reservation so retries re-execute, and the dedup scope follows the kv namespace backend (memory per process, redis/sqlite replica-shared).
|
|
14
|
+
* XML request handling (#FIN1): application/xml, text/xml and application/*+xml request bodies now reach the application verbatim on POST, PUT and PATCH instead of being run through the form-encoded decode path. request.body keeps the exact document the client sent (the same string request.rawBody carries) and the application parses it with the XML library of its choice — the framework never parses XML itself, so it takes on no XML parser surface. Previously such a body was silently destroyed rather than rejected: the form decoder splits on & and then on =, keeping only the first pair, so the XML declaration alone collapsed a whole document to one bogus key, and that object then replaced request.body. The matched set follows the convention ASP.NET Core, Spring and type-is share — the +xml structured-suffix wildcard is scoped to application/, so image/svg+xml is not matched, and the RFC 7303 types that are not XML documents (application/xml-dtd and both xml-external-parsed-entity forms) are excluded. urlencoded, JSON and multipart bodies are unaffected, and the same single chokepoint serves both engines.
|
|
15
|
+
* renderXML delegate (#FIN2): first-class XML responses, the outbound counterpart to verbatim XML request handling. Call self.renderXML(xmlContent) from a controller action to send a pre-serialised document — gina does not build XML any more than it parses it, so you serialise with the library of your choice and the delegate owns the wire concerns. The content type defaults to application/xml (RFC 7303 recommends it over text/xml) with the charset taken from the bundle encoding, and an optional second argument covers the suffix family: self.renderXML(doc, "application/soap+xml"), atom+xml for a feed, or a vendor tree. The status code comes from response.statusCode rather than the payload — an XML string has no envelope for the renderJSON status convention — so set it upstream or answer errors with self.throwError(). HEAD requests get the headers including a byte-accurate content-length with no body, HTTP/2 responses carry the status as a pseudo-header with upstream headers folded into the frame, and opt-in HTTP/2 trailers work as they do for every other delegate. A route using idempotency keys records its response envelope here too, so a retried XML mutation replays rather than re-executing.
|
|
16
|
+
* Message-schema validation seam (#FIN3): routes can now run the raw request body through an application-supplied validator before the controller action. Declare param.messageValidator: "<name>" on a route and ship a factory module at message-validators/<name>.js — the factory runs once at bundle boot (compile your XSD or open your sidecar pool there; a broken module refuses the boot instead of silently skipping validation), and the returned validate(document, req) function — sync or async — receives the verbatim body string on every matching request. Return { valid: true } to proceed, or { valid: false, status, errors } to refuse: 422 by default (schema-invalid, with your errors array forwarded on the response body), 400 for a document that does not parse at all, or 503 with an optional retryAfter when the checker itself is unavailable. A thrown error fails closed as a 500 — a request never proceeds unvalidated. The framework ships no schema engine and takes on no XML or JSON-Schema parser surface: the validator is yours (an XSD library, a Schematron sidecar, a JSON-Schema engine), the hook, ordering and refusal shape are gina's. The gate runs after authorization, rate limiting and idempotency, and before DTO field validation; routes without the declaration are byte-identical.
|
|
17
|
+
### Fixed
|
|
18
|
+
* Client-side routing helper no longer swallows its own "route not found inside your view" diagnostic: when a rendered 404 marker or an alternate-route lookup identifies a route missing from the running table, the composed message is now emitted via console.warn on the first sighting of each route (the gina.notFound registry still dedups repeats), and the alternate-route arm now records its registry entry so repeat counts accumulate instead of resetting. Server-side miss logging is unchanged. (#B462)
|
|
19
|
+
* The query() basic-auth option is now honoured on HTTP/2 — and can no longer leak. `options.auth` ("user:password") was consumed by node's own request() on HTTP/1.x only; on the HTTP/2 path the option-copy loop forwarded it into the outgoing header block as a literal `auth:` header (the strip set did not list it) and no `Authorization` header was ever minted, so the credential travelled in a nonstandard header while authentication silently never happened. The option is now minted into `Authorization: Basic <base64>` before dispatch on BOTH transports through one code path — a caller-supplied authorization header always wins, matching node's HTTP/1.x behaviour — and the option itself is deleted pre-dispatch (and listed in the HTTP/2 strip set as a belt), so an empty or malformed credential cannot travel as a header either. If anything downstream relied on receiving the literal `auth:` header on HTTP/2, that was the defect, not a contract. (#B465)
|
|
20
|
+
### Security
|
|
21
|
+
* Server-side data serialised into the Inspector's inline `<script>` blocks can no longer be read as template source by the swig renderer. The `__ginaData` and `__ginaLogs` scripts are spliced into the layout before it is compiled (their per-request nonce is a swig conditional), which left every swig delimiter live inside the serialised page data: a stored value such as `A{{ 7*7 }}B` rendered as `A49B`, and a `{% %}` tag inside a value executed with the page's locals in scope. The shared inline-script helper now also escapes `{` and `}` inside JSON string literals (`\u007b` / `\u007d` are valid JSON escapes, so every value still parses back identical); structural braces are untouched. Same reachability as the 0.6.23 hardening: only pages that emit the Inspector block (development by default, production only when `displayInspector` is enabled). The nunjucks renderer injects after rendering and was not affected. Server-side only: pick it up with a bundle restart, no rebuild needed. Internal reference #B463.
|
|
22
|
+
|
|
9
23
|
## 0.6.24 - 2026-09-02
|
|
10
24
|
### Fixed
|
|
11
25
|
* Couchbase `bulkInsert` no longer returns `undefined` when its own prologue throws. Its outer `try` wraps the method body, so a synchronous failure — a connection that cannot be resolved, or either of the two deliberate `rec` validations — was caught, logged to `console.error` and then swallowed, and the method fell off the end. Both documented call shapes broke on that path: the `await` form (the first `@example` in its own docblock) resolved with `undefined`, so a caller treating "did not throw" as success recorded an insert that never happened, and the `.onComplete(cb)` form threw a TypeError on `undefined`. In both, the error existed only in the log and was unreachable to the caller. The promise, its one-shot resolver and the `.onComplete` shim are now built before the `try`, so the outer catch settles this call instead: `.onComplete(cb)` receives `(err)` and the promise rejects. The `_settled` latch means a late throw cannot double-settle, and the happy path is unchanged. Note that a fire-and-forget call that ignores the return will now surface an unhandled rejection where it previously failed silently. **Scope, and it matters if you documented the old behaviour:** this changes what `bulkInsert` RETURNS, not what its promise RESOLVES WITH. A rows-less success still settles as `null`, so a non-rejection is still not proof that rows were inserted — keep any rows-based success check you have, and re-read any comment or guard whose premise was the old return-`undefined` behaviour: the premise goes stale while the conclusion usually stays correct. (#B460)
|
package/README.md
CHANGED
|
@@ -40,6 +40,10 @@ MVC framework for Node.js and Bun with built-in HTTP/2, multi-bundle architectur
|
|
|
40
40
|
| Security headers | CSP with per-response nonces, HSTS, COOP / COEP / CORP, Referrer-Policy and the X-* family — per-header plugins or one `SecurityHeaders` wrapper |
|
|
41
41
|
| Secrets | `${secret:KEY}` placeholders in bundle config — fail-closed, env-backed, with opt-in file and exec-bridge tiers beneath the environment; `secrets:scan` / `secrets:check` CLI |
|
|
42
42
|
| Internationalisation | Per-bundle JSON catalogs, `t()` helper, swig + nunjucks `t` filter, CLDR plurals, ICU MessageFormat opt-in via `t.icu()` |
|
|
43
|
+
| Exact money | `lib.money` / `gina.money` — ISO 4217 minor-unit integer arithmetic (BigInt-safe), strict wire-string parsing, same-currency guards; display via `Intl.NumberFormat` |
|
|
44
|
+
| Idempotency keys | Opt-in `Idempotency-Key` dedup at the router band (IETF draft): retried mutations replay the recorded first response — 409 while in flight, 422 on payload reuse, principal-scoped over the kv primitive |
|
|
45
|
+
| Message validation | `param.messageValidator` — a route-level seam running the raw request body through an application-supplied validator (XSD sidecar, JSON Schema, anything) before the action: boot-compiled factory, sync or async, fail-closed 400/422/503 refusals with `Retry-After` on checker outage |
|
|
46
|
+
| XML in and out | `application/xml`, `text/xml` and `application/*+xml` request bodies reach the action verbatim on `req.body`; `self.renderXML()` sends pre-serialised responses with the right content type and charset. The application brings its own XML library — the framework parses none and builds none |
|
|
43
47
|
| Observability | Built-in `/_gina/metrics` Prometheus endpoint (opt-in, IP-allowlisted) — process metrics + HTTP counter / duration histogram with cardinality-safe route labels; structured JSON logs with request ids (`GINA_LOG_FORMAT=json`) |
|
|
44
48
|
| Dev Inspector | Embedded dev SPA at `/_gina/inspector` — request data, live logs, SQL with index-coverage badges, flow timings, app events, AI token stream |
|
|
45
49
|
| OpenAPI & MCP | `bundle:openapi` emits OpenAPI 3.1 from `routing.json`; `bundle:mcp` emits an MCP tool manifest; built-in MCP runtime server (stdio + Streamable HTTP) |
|
|
@@ -62,23 +66,29 @@ open https://localhost:3100
|
|
|
62
66
|
|
|
63
67
|
> **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
68
|
|
|
65
|
-
## What's in 0.6.
|
|
69
|
+
## What's in 0.6.25
|
|
66
70
|
|
|
67
|
-
> **Restart your bundles
|
|
68
|
-
>
|
|
69
|
-
>
|
|
70
|
-
>
|
|
71
|
+
> **Restart AND rebuild your bundles.** This release changes the browser bundle:
|
|
72
|
+
> the exact-money primitive (`gina.money`), the `isIban`/`isBic` validation
|
|
73
|
+
> rules and the routing-helper diagnostic all ride `gina.min.js`. Run
|
|
74
|
+
> `gina bundle:build` after upgrading, then `gina bundle:restart`.
|
|
71
75
|
|
|
72
|
-
> **No settings reset.** `0.6.
|
|
76
|
+
> **No settings reset.** `0.6.25` is a patch — the `shortVersion` stays `0.6`,
|
|
73
77
|
> so your `~/.gina/0.6/settings.json` is untouched. (`0.6.0` was the reset.)
|
|
74
78
|
|
|
75
|
-
**
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
- **
|
|
80
|
-
- **
|
|
81
|
-
- **
|
|
79
|
+
**The financial-messaging foundations release** — five additive building blocks
|
|
80
|
+
for ISO 20022-class and payments-grade applications, plus one hardening fix and
|
|
81
|
+
two bug fixes. Full detail in [CHANGELOG.md](./CHANGELOG.md).
|
|
82
|
+
|
|
83
|
+
- **Added — verbatim XML request bodies (#FIN1).** A POST, PUT or PATCH whose `Content-Type` is `application/xml`, `text/xml` or any `application/*+xml` type reaches your action verbatim: `req.body` is the exact document as a string, and you parse it with the library of your choice — gina never parses XML itself. Previously such a body was silently destroyed by the form-encoded decode path.
|
|
84
|
+
- **Added — `self.renderXML(xmlContent, contentType)` (#FIN2).** First-class XML responses: send a pre-serialised document and the delegate owns the wire concerns — `application/xml` by default with your bundle's charset (RFC 7303), an optional `+xml`-suffix content type (`application/soap+xml`, `atom+xml`, vendor trees), HEAD suppression with byte-accurate `content-length`, the HTTP/2 pseudo-header status, opt-in trailers.
|
|
85
|
+
- **Added — message-schema validation seam (#FIN3).** Declare `"messageValidator": "<name>"` in a route's `param` block and ship a factory at `message-validators/<name>.js` — boot-compiled (a broken module refuses the boot instead of silently skipping validation), sync or async, fed the verbatim body string. Refusals are fail-closed: 422 with your `errors` array, 400 for an unparseable document, 503 + `Retry-After` when your checker is down. Gina ships no schema engine — the validator is yours; the hook, the ordering and the refusal shape are the framework's.
|
|
86
|
+
- **Added — `isIban` / `isBic` FormValidator rules (#FIN4).** IBAN per ISO 13616 — shape, official per-country length for 87 registered countries, and the ISO 7064 MOD 97-10 checksum — with a tolerant read (case and separators normalized for validation only; the stored value is never mutated), plus BIC per ISO 9362. Client + server, like every built-in rule.
|
|
87
|
+
- **Added — exact-money primitive (#FIN5).** `lib.money` server-side and `gina.money` in the browser bundle: ISO 4217 minor-unit integer arithmetic on BigInt, strict wire-string `parse()` that rejects float inputs, `add`/`subtract`/`multiply`/`compare` with same-currency guards, canonical `format()`. Display formatting stays with `Intl.NumberFormat`.
|
|
88
|
+
- **Added — idempotency keys (#FIN6).** Opt-in `Idempotency-Key` request deduplication at the router band, per the IETF draft: the recorded first response replays with `Idempotency-Replayed: true`, a duplicate in flight gets 409 + `Retry-After`, key reuse with a different payload gets 422. Principal-scoped, over a kv namespace you declare; dormant unless enabled.
|
|
89
|
+
- **Security — Inspector inline-script data can no longer be read as template source.** The shared inline-script helper now escapes `{` and `}` inside JSON string literals as well as `<`, so a stored value like `{{ 7*7 }}` renders literally instead of executing with the page's locals in scope. Values parse back identical; only pages emitting the Inspector block were reachable.
|
|
90
|
+
- **Fixed — the `query()` basic-auth option is honoured on HTTP/2 and can no longer leak (#B465).** `options.auth` is minted into `Authorization: Basic` before dispatch on BOTH transports and the option is deleted pre-dispatch. Previously node consumed it on HTTP/1.x only, while the HTTP/2 path forwarded it as a literal `auth:` header with authentication silently unperformed. A caller-supplied authorization header always wins.
|
|
91
|
+
- **Fixed — the client-side routing helper no longer swallows its own diagnostic (#B462).** A route missing from the running table now surfaces as a `console.warn` on the first sighting (the `gina.notFound` registry still dedups repeats), and the alternate-route arm records its registry entry so repeat counts accumulate.
|
|
82
92
|
|
|
83
93
|
## Documentation
|
|
84
94
|
|
package/ROADMAP.md
CHANGED
|
@@ -75,10 +75,11 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
75
75
|
| **Q4 2026** | `0.6.21` ✅ | **Fixed**: an outbound `route.request()` now settles its callback on every outcome — the request object was discarded, so nothing could attach an `error` listener, and a dial failure either never invoked the callback at all (a permanent stall for anything serialized, with nothing logged) or reached `uncaughtException` and terminated the bundle; a response stream dying mid-body waited on an `end` event it would never emit. `options.timeout` was accepted but inert — Node only emits a `timeout` event and never destroys the socket — and is now honoured, so a value set in the belief that it capped the call will begin aborting requests at that budget. **Fixed**: `merge()` no longer throws `TypeError: Cannot read properties of null` on an id-keyed array carrying a `null` element, on either operand at any index — the read-side counterpart of the write-side fix that shipped in `0.6.20`. **Fixed**: on Safari, modifier chords (paste, select-all, copy, cut, undo) work again in live-checked fields carrying `autocomplete="off"` — the form-level keydown proxy cancelled the native keydown before the typing interception could decide anything, and `preventDefault` on a native keydown suppresses the browser's editing command itself, so no `paste` event was dispatched anywhere; Chromium-family browsers were never affected. Restart **and** rebuild your bundles (the browser bundle changed — all three fixes ship in `gina.min.js`). |
|
|
76
76
|
| **Q4 2026** | `0.6.22` ✅ | **Security**: prototype pollution on the request path — client-supplied bracket-notation field names (`__proto__[x]`, `constructor[prototype][x]`, and their percent-encoded forms) reached an unguarded property assignment in the data helper's key-path nesting and wrote to `Object.prototype` silently (the parsed body came back empty, so nothing in the request looked wrong), and `merge()` copied an **own** `__proto__` key — the shape `JSON.parse` produces — through its `for...in` loops. Reachable from query strings, urlencoded and JSON request bodies, `request.query.inheritedData` and multipart text-field names; a polluted prototype could then influence code reading a property it expects to be absent — outbound request options (host, port, auth, the TLS certificate check) and the safe-method and exemption checks. Both sources now reject the same three key names — rejecting the key name is what closes this, since an own `__proto__` (the shape `JSON.parse` produces) satisfies an own-property check. **Fixed**: a form submit that fails at the TRANSPORT layer (network down, connection refused, server restarting) settled with no HTTP status and dispatched neither `error.<formId>` nor `error.<formId>.hform`, so a handler declared with `data-gina-form-event-on-submit-error` never ran while the form released its submit trigger and reported nothing to the visitor; both events now fire with `status: 408` and `transportError: true`, the latter distinguishing it from a genuine request timeout, and handlers matching on `status >= 400` keep working unchanged. Restart **and** rebuild your bundles (the browser bundle changed — both fixes ship in `gina.min.js`). |
|
|
77
77
|
| **Q4 2026** | `0.6.23` ✅ | **Security**: hardened inline-script escaping — the previous guard matched only the literal `</script>` and `<!--`, but the HTML5 script-data end tag also accepts a tab, newline, form feed, space or `/` after the tag name, so `</script >` closed the block and the remainder of a stored value parsed as HTML; serialised values now neutralise `<` itself at every site, with U+2028/U+2029 escaped too, and escaped output parses back to an identical value. **Added**: the framework itself now emits seven security headers by default on both engines (`server.securityHeaders`; four more opt-in — `xFrameOptions` / `coop` / `corp` / `hsts`), first-writer-wins so mounted plugins, `env.json` headers and proxies keep winning, with `/_gina/*` exempt from the cross-origin-isolating pair; `server.hidePoweredBy` now defaults to `true`. **Added**: `server.maxBodySize` (default 64MB, 413 + stream destroyed) bounds non-multipart request bodies, with warn-only `server.maxBodySizeWarn` (2MB) and a configurable `server.timeout` that stays `0` on purpose (SSE/WebSocket). **Added**: opt-in Subresource Integrity — `templates.json > "sriEnabled": true` adds `integrity` + `crossorigin` to same-origin script and stylesheet tags that resolve on disk; fail-open, hashes stat-validated per render. **Fixed**: a JSON body whose nested object shadows `constructor` with a primitive, null, array or plain object no longer crashes the merge on the PUT path. Restart **and** rebuild your bundles (the browser bundle changed — the merge fix ships in `gina.min.js`). |
|
|
78
|
+
| **Q4 2026** | `0.6.25` ✅ | **Added**: the financial-messaging foundations — verbatim XML request bodies on POST/PUT/PATCH (`req.body` keeps the exact document the client sent; the form-encoded decode path previously destroyed it silently) with `self.renderXML()` as the outbound counterpart (`application/xml` by default per RFC 7303, an optional `+xml`-suffix content type, HEAD suppression with byte-accurate `content-length`, HTTP/2 pseudo-header status, opt-in trailers — gina parses no XML and builds none); a pluggable message-schema validation seam (declare `param.messageValidator: "<name>"` on a route and ship a factory at `message-validators/<name>.js` — boot-compiled, fail-closed refusals: 422 with your `errors` array, 400 unparseable, 503 + `Retry-After` when the checker is down — ordered after auth/rate-limit/idempotency and before DTO field validation); `isIban` / `isBic` FormValidator rules (ISO 13616 shape + official per-country length for 87 countries + ISO 7064 MOD 97-10, and ISO 9362 — tolerant read, the stored value is never mutated; client + server like every built-in rule); an exact-money primitive (`lib.money` server-side and `gina.money` in the browser bundle — ISO 4217 minor-unit integer arithmetic on BigInt with strict wire-string `parse()`, same-currency guards and canonical `format()`; display stays with `Intl.NumberFormat`); and opt-in `Idempotency-Key` request deduplication at the router band per the IETF draft (the recorded first response replays with `Idempotency-Replayed: true`; 409 + `Retry-After` while the original is in flight; 422 on key reuse with a different payload; principal-scoped over a declared kv namespace). **Security**: server data serialised into the Inspector's inline script blocks can no longer be read as template source — the shared inline-script helper now escapes `{` and `}` inside JSON string literals as well as `<`, so a stored `{{ 7*7 }}` renders literally instead of executing with the page's locals in scope (values parse back identical; only pages emitting the Inspector block were reachable). **Fixed**: the query() basic-auth option is honoured on HTTP/2 and can no longer leak — `options.auth` is minted into `Authorization: Basic` before dispatch on BOTH transports and the option is deleted pre-dispatch (previously node consumed it on HTTP/1.x only, while the HTTP/2 path forwarded it as a literal `auth:` header with authentication silently unperformed; a caller-supplied authorization header always wins); and the client-side routing helper no longer swallows its "route not found inside your view" diagnostic — `console.warn` on the first sighting of each missing route, with repeats counted on `gina.notFound`. Restart **and** rebuild your bundles — the browser bundle changed (the money primitive, the IBAN/BIC rules and the routing-helper diagnostic ride `gina.min.js`). |
|
|
78
79
|
| **Q4 2026** | `0.6.24` ✅ | **Fixed**: Couchbase `bulkInsert` no longer returns `undefined` when its own prologue throws — the outer `try` wraps the method body, so a synchronous failure (an unresolvable connection, or either `rec` validation) was caught, logged and swallowed, and the method fell off the end: the `await` form resolved with `undefined`, so a caller treating "did not throw" as success recorded an insert that never happened, and `.onComplete(cb)` threw a `TypeError` at the call site. The promise, its one-shot resolver and the `.onComplete` shim are now built before the `try`, so the outer catch settles the call. A fire-and-forget call now surfaces an `unhandledRejection` where it previously failed silently, and the fix moves what `bulkInsert` RETURNS, not what its promise RESOLVES WITH — a rows-less success still resolves `null`. **Fixed**: a Couchbase entity that fails to register now names itself, its source file, the method being attached and the underlying cause, instead of emitting a bare stack that left a partially-built entity and a missing method surfacing arbitrarily far from the cause; registration stays non-fatal. **Fixed**: the reconnect classifier no longer throws under every supported SDK — `err instanceof couchbase.Error` raised a `TypeError` because no supported couchnode exports a bare `Error` class, and since that operand is evaluated first the message arm was unreachable too, so the classifier could not classify by any route; each `instanceof` is now guarded on the class existing (deliberately a guard, not an activation — on the default `isaac` engine the listener is never dispatched at all). Restart your bundles — the browser bundle is unchanged, so no rebuild is needed. |
|
|
79
80
|
| **Q1 2027** | `0.6.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
|
|
80
81
|
| **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`) |
|
|
81
|
-
| **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
|
|
82
|
+
| **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 |
|
|
82
83
|
| **2027** | `0.9.0` | Financial-integration heavyweights — entity-layer datastore transaction seam · message-queue connector family (AMQP / Kafka / IBM MQ) |
|
|
83
84
|
| **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
|
|
84
85
|
|
|
@@ -324,15 +325,15 @@ Plumbing for financial-messaging (ISO 20022-class XML flows) and ledger-grade ap
|
|
|
324
325
|
|
|
325
326
|
| Status | Feature | Version | Target |
|
|
326
327
|
| --- | --- | --- | --- |
|
|
327
|
-
|
|
|
328
|
-
|
|
|
329
|
-
|
|
|
330
|
-
|
|
|
331
|
-
|
|
|
332
|
-
|
|
|
333
|
-
|
|
|
328
|
+
| ✅ | **XML request handling** — `application/xml`, `text/xml` and the `application/*+xml` suffix family (SOAP, Atom, RSS, vendor trees) reach the application verbatim on POST, PUT and PATCH — alongside `req.rawBody` — instead of being run through the form-encoded decode path, which previously split the document on `&` and `=` and kept only the first pair, silently collapsing it to a single bogus key. The framework never parses XML itself, so it takes on no XML-parser surface; the application parses with the library of its choice. The matched set follows the convention ASP.NET Core, Spring and type-is share, with the `+xml` wildcard scoped to `application/` — so `image/svg+xml` is not matched, and the RFC 7303 types that are not XML documents are excluded. urlencoded, JSON and multipart bodies are unaffected. | `0.6.x` | 2026-09-03 |
|
|
329
|
+
| ✅ | **`renderXML` delegate** — first-class XML responses: `self.renderXML(doc)` sends a pre-serialised document with `application/xml` and the bundle charset, and an optional second argument covers the suffix family (`application/soap+xml`, `application/atom+xml`, a vendor tree). The status comes from the response, not the payload; HEAD, HTTP/2 pseudo-header status, upstream header folding and opt-in trailers all behave as they do for `renderJSON`, and an idempotency-keyed route records its envelope here too. The application serialises with the library of its choice — the framework builds no XML. | `0.6.x` | 2026-09-03 |
|
|
330
|
+
| ✅ | **Pluggable message-schema validation** — routes opt in with `param.messageValidator`, naming a factory module the bundle ships (`message-validators/<name>.js`): the factory runs once at boot (compile schemas or open a sidecar pool there — a broken module refuses the boot rather than silently skipping validation) and the returned `validate(document, req)` function — sync or async — receives the verbatim request body ahead of the controller action, after authorization, rate limiting and idempotency and before DTO field validation. Refusals are fail-closed: 422 by default with the validator's `errors` array on the response body, 400 for a document that does not parse, 503 + `Retry-After` when the checker itself is unavailable, and 500 on a thrown error — a request never proceeds unvalidated. The framework ships no schema engine (no native-addon XSD dependency, no new parser surface): the validator is the application's. | `0.6.x` | 2026-09-03 |
|
|
331
|
+
| ✅ | **IBAN / BIC validation rules** — `isIban` and `isBic` built-in FormValidator rules, client and server: `isIban` validates the ISO 13616 shape, the official per-country length (87 registered countries — unknown country codes pass on shape + checksum) and the ISO 7064 MOD 97-10 checksum, with a tolerant read (case and space/hyphen separators are normalized for validation only; the stored value is never mutated); `isBic` validates the 8/11-character ISO 9362 shape case-insensitively. | `0.6.x` | 2026-09-03 |
|
|
332
|
+
| ✅ | **Money & minor-unit utilities** — Exact-money primitive: `lib.money` server-side and `gina.money` in the browser bundle, with an ISO 4217 minor-unit exponent table (JPY 0, BHD 3, …) and the documented pattern — amounts as strings on the wire, integer minor units (BigInt) internally, so monetary values never ride IEEE-754 float arithmetic. Strict parse rejects floats and excess precision (rounding stays the application's); same-currency arithmetic throws on mismatch; display formatting stays with `Intl.NumberFormat`. | `0.6.x` | 2026-09-03 |
|
|
333
|
+
| ✅ | **Idempotency keys** — `Idempotency-Key` request deduplication at the router band, per the IETF draft: a route opts in via routing.json (`idempotency: true` / `{ "required": true }`), the first request reserves the operation over the kv primitive and executes, and a retried mutation returns the RECORDED first response (`Idempotency-Replayed: true`) instead of executing twice — 409 + Retry-After while the original is in flight, 422 when the key is reused with a different payload, principal-scoped so a stored response never crosses callers; anonymous requests are skipped. | `0.6.x` | 2026-09-03 |
|
|
334
|
+
| ⏸ | **Sequence primitive** — monotonic (optionally gapless) reference-number allocation. **Deferred — sequenced after the entity-layer transaction seam.** Monotonic counters already ship: the key-value primitive's `incr` is atomic and durable (TTL-on-create counters over the redis and SQLite backends), with `setnx` to seed a starting value. The gapless variant is deliberately not a standalone feature: gapless means *every allocated value lands on a committed record*, which requires the increment to commit atomically **with** the caller's own write — an allocator in a separate failure domain burns a number whenever the caller's write fails, and no return path closes that honestly. That capability belongs to the transaction seam and will be designed with it. *Interim:* use `gina.kv('<namespace>').incr(key)` for durable monotonic references; for gapless numbering, allocate at issuance time inside your own store's transaction (draft records stay unnumbered; stamp the reference and advance the counter in one atomic unit) — the documented per-connector transaction escape hatches carry this today. | — | on demand |
|
|
334
335
|
| 📋 | **Datastore transaction seam** — a uniform entity-layer transaction surface with per-connector capability flags; until it ships, the documented per-connector native escape hatches remain the supported answer. | `0.9.x` | 2027 |
|
|
335
|
-
|
|
|
336
|
+
| ⏸ | **OAuth2 client-credentials egress** — token acquisition and refresh for outbound `self.query()` calls. **Deferred — built on request.** Measured at deferral time: no consumer integration currently exercises OAuth2 client-credentials on the request path, no consumer needs signed-JWT client assertions, and the one real-world token lifecycle measured is protocol-specific rather than OAuth2 — so the shape that gets built, when a consumer integration needs it, is a protocol-agnostic bearer-token helper (named token profiles, cached in a key-value namespace with single-flight acquisition, reactive refresh on 401) with OAuth2 client-credentials as a preset. *Interim:* attach the header yourself via `options.headers.authorization` (honoured on both HTTP/1.x and HTTP/2 — the framework adds its own headers but never overwrites yours), own token acquisition in application code, and cache tokens with `gina.kv('<namespace>').getOrSet(...)` for TTL + per-process single-flight. | — | on demand |
|
|
336
337
|
| 📋 | **Message-queue connector family** — first-class messaging connectors (AMQP / Kafka / IBM MQ) in the `connectors.json` model, for integration with message-based platforms. | `0.9.x` | 2027 |
|
|
337
338
|
|
|
338
339
|
---
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.6.25
|