gina 0.5.19 → 0.5.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 +10 -0
- package/CONTRIBUTING.md +36 -8
- package/README.md +6 -10
- package/ROADMAP.md +2 -0
- package/framework/v0.5.20/VERSION +1 -0
- package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/js/gina.js +68 -21
- package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +335 -336
- package/framework/v0.5.20/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.5.20/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.js +31 -7
- package/framework/{v0.5.19 → v0.5.20}/core/locales/README.md +25 -0
- package/framework/{v0.5.19 → v0.5.20}/core/locales/dist/region/en.json +0 -42
- package/framework/v0.5.20/core/locales/dist/region/fr.json +5685 -0
- package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/validator/src/form-validator.js +11 -3
- package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/validator/src/main.js +57 -18
- package/framework/{v0.5.19 → v0.5.20}/core/server.js +29 -4
- package/framework/{v0.5.19 → v0.5.20}/core/template/conf/settings.json +1 -1
- package/framework/{v0.5.19 → v0.5.20}/package.json +2 -1
- package/gna.js +4 -4
- package/llms.txt +9 -6
- package/package.json +4 -3
- package/framework/v0.5.19/VERSION +0 -1
- package/framework/v0.5.19/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.5.19/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.5.19/core/deps/busboy-1.6.0/LICENSE +0 -19
- package/framework/v0.5.19/core/deps/busboy-1.6.0/README.md +0 -191
- package/framework/v0.5.19/core/deps/busboy-1.6.0/lib/index.js +0 -57
- package/framework/v0.5.19/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -681
- package/framework/v0.5.19/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -350
- package/framework/v0.5.19/core/deps/busboy-1.6.0/lib/utils.js +0 -596
- package/framework/v0.5.19/core/deps/busboy-1.6.0/package.json +0 -22
- package/framework/v0.5.19/core/deps/streamsearch-1.1.0/LICENSE +0 -19
- package/framework/v0.5.19/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -267
- package/framework/v0.5.19/core/deps/streamsearch-1.1.0/package.json +0 -34
- package/framework/v0.5.19/core/locales/dist/region/fr.json +0 -11452
- /package/framework/{v0.5.19 → v0.5.20}/AUTHORS +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/LICENSE +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/html/static.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/config.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/content.encoding +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/dev/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/gna.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/locales/currency.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/locales/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/mime.types +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/model/entity.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/model/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/model/template/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/router.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/server.express.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/server.isaac.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/status.codes +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/_gitignore +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/conf/env.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/conf/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/console.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/context.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/data/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/data/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/json/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/json/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/path.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/prototypes.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/task.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/helpers/text.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/admin/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/archiver/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/archiver/build.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/archiver/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/async/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/async/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/audit/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/audit-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cache/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cache/build.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cache/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/collection/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/collection/build.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/collection/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/config.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cron/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cron/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/domain/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/domain/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/dto/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/generator/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/i18n/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/image-build/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inherits/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inherits/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/instrument/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/job/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/job/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/job-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/math/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/merge/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/merge/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/metrics/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/model.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/proc.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/routing/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/routing/build.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/routing/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/secrets/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/session-store.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/shell.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/state.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/url/README.md +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/url/index.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/url/routing.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/uuid/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/validator.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/watcher/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.5.19 → v0.5.20}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ 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.5.20 - 2026-07-19
|
|
10
|
+
### Changed
|
|
11
|
+
* Multipart parsing now uses `@rhinostone/busboy` installed from npm instead of a patched copy vendored inside the framework. The fork is a strict superset of upstream busboy 1.6.0 whose only addition exposes each part's parsed Content-Disposition parameters, which is what lets the upload layer read the `group="..."` tag — previously a local patch that had to be re-applied by hand on every upstream upgrade. Upload behaviour and the multipart wire format are unchanged: files still arrive with their group, an unconfigured group is still rejected, and a file with no group still falls back to `untagged`. Pickup is the version plus a bundle restart; no client rebuild is needed.
|
|
12
|
+
### Fixed
|
|
13
|
+
* Fixed the region locale generator so each requested language emits a standalone file — a `--region=en,fr` build used to append the second language's rows to the first's output, so every `isoShort` was duplicated and `isoShort` lookups always matched the English copy. Non-en builds now localize `countryName` from a per-language short-names resource (`region.names.<lang>.json`, French ships with the framework), rows without an ISO 3166 alpha-2 code are dropped, and `dist/region/en.json` / `fr.json` are regenerated clean — a bundle resolving a `fr` culture now gets `Allemagne` / `États-Unis` / `Royaume-Uni` through the existing `getLocales().getCountries()` path with zero consumer changes.
|
|
14
|
+
* Fixed `getLocales().getCountries(code)` — the documented projection argument was computed and never applied. A valid `code` (e.g. `capital`, `continent`, `tld`) now adds that field to every returned row while the 4 historical fields stay untouched, and an empty or missing locale set degrades to an empty list instead of throwing.
|
|
15
|
+
* FormValidator: numbered `is` aliases (`is0`, `is1`, ...) now install and enforce. The lazy alias installer sat below a typecheck that skipped exactly the state the installer required, so any `is<N>` rule key was silently ignored on both the client and the server; the installer regex is now anchored (`is0abc` no longer matches), numbered aliases keep distinct per-alias error keys on both sides (server-side they previously collapsed to a shared `is` key, letting a later passing alias erase an earlier failing one), and server-side validation of rules carrying `$` cross-field references no longer crashes. Behavior change to plan for: previously-skipped `is<N>` rules START ENFORCING at pickup — forms that submitted clean may begin erroring or returning 422; sweep your rule JSONs for `is<N>` keys before upgrading.
|
|
16
|
+
* FormValidator: a form injected after init (e.g. loaded inside a popin) carrying `data-gina-form-rule` now binds its declared rule — live-check and submit-trigger gating work instead of being silently disabled. `validateFormById` resolved the rule name from the form id only and consulted the attribute in an unreachable branch, so the lookup missed, the form bound zero rules, and the form was stamped `data-gina-form-live-check-enabled="false"` while the submit pass resolved the same attribute fine. Attribute-less forms whose id names the rule resolve as before.
|
|
17
|
+
* Fixed FormValidator `_case_` condition matching in live-check / single-element mode: the cross-field case scan coerced the wrong variable — the field being validated instead of the case value — so a boolean `case` declaration (e.g. `case: false`) never matched the case field's raw "false"/"true" DOM string, and a validated field whose own value was "true"/"false" silently broke string case matching for its pass. The case value itself is now coerced, aligning the scan with the direct-case site's semantics; note that `case` values declared as the strings "true"/"false" now coerce to booleans at this site too, consistent with full-form validation.
|
|
18
|
+
|
|
9
19
|
## 0.5.19 - 2026-07-17
|
|
10
20
|
### Added
|
|
11
21
|
* The checkbox migration warning now also covers the un-tick direction: markup carrying the `checked` attribute plus a `value` (or `data-value`) reading false or empty — which used to render unticked and now stays ticked — is flagged once per field, with the same legacy opt-in pointer as the existing warning
|
package/CONTRIBUTING.md
CHANGED
|
@@ -27,7 +27,7 @@ Gina follows a BDFL governance model — see [GOVERNANCE.md](./GOVERNANCE.md) fo
|
|
|
27
27
|
| Requirement | Version |
|
|
28
28
|
| --- | --- |
|
|
29
29
|
| OS | macOS or Linux (Windows: Docker only) |
|
|
30
|
-
| Node.js | >=
|
|
30
|
+
| Node.js | >= 22 < 27 |
|
|
31
31
|
| npm | >= 8 |
|
|
32
32
|
| Changie | >= 1.24 |
|
|
33
33
|
|
|
@@ -35,22 +35,31 @@ Gina follows a BDFL governance model — see [GOVERNANCE.md](./GOVERNANCE.md) fo
|
|
|
35
35
|
|
|
36
36
|
## Getting started locally
|
|
37
37
|
|
|
38
|
-
Gina must be
|
|
38
|
+
Gina must be reachable from the npm global prefix — the CLI and framework bootstrapper expect to run from `${prefix}/lib/node_modules/gina`. **Do not clone directly into that path**: npm owns it, and any `npm install -g gina` run on the machine replaces whatever sits there — a direct clone would be destroyed, git history, uncommitted work and all — with the published tarball. Clone to a normal workspace directory and **symlink** it into the prefix instead: npm can then only ever replace the symlink, never your repository.
|
|
39
39
|
|
|
40
|
-
#### 1.
|
|
40
|
+
#### 1. Clone to your workspace
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
git clone https://github.com/gina-io/gina.git
|
|
44
|
+
cd gina && git checkout develop
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### 2. Link the clone into the npm global prefix
|
|
41
48
|
|
|
42
49
|
```bash
|
|
43
50
|
npm config get prefix --quiet
|
|
44
51
|
```
|
|
45
52
|
|
|
46
|
-
The default is `/usr/local` (system) or `~/.npm-global` (user).
|
|
53
|
+
The default is `/usr/local` (system) or `~/.npm-global` (user).
|
|
47
54
|
|
|
48
|
-
|
|
55
|
+
```bash
|
|
56
|
+
ln -s "$PWD" "$(npm config get prefix)/lib/node_modules/gina"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Optional hardening (macOS): make the link immutable, so even a global install fails loudly instead of silently replacing it. Undo with `chflags -h nouchg` before an intentional change.
|
|
49
60
|
|
|
50
61
|
```bash
|
|
51
|
-
|
|
52
|
-
git clone https://github.com/gina-io/gina.git gina
|
|
53
|
-
cd gina && git checkout develop
|
|
62
|
+
chflags -h uchg "$(npm config get prefix)/lib/node_modules/gina"
|
|
54
63
|
```
|
|
55
64
|
|
|
56
65
|
#### 3. Run the install scripts
|
|
@@ -66,6 +75,14 @@ node ./script/post_install.js
|
|
|
66
75
|
gina version
|
|
67
76
|
```
|
|
68
77
|
|
|
78
|
+
If the `gina` command is not found, link the CLIs into the prefix bin once:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
cd "$(npm config get prefix)/bin" && ln -s ../lib/node_modules/gina/bin/gina* .
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> ⚠️ On a machine set up this way, never run `npm install -g gina` — it replaces the symlink with the published tarball and your clone stops being served (with a direct clone at that path, it would have been deleted outright). Update with `git pull` instead; to switch to the published package deliberately, remove the symlink first.
|
|
85
|
+
|
|
69
86
|
---
|
|
70
87
|
|
|
71
88
|
## Running the tests
|
|
@@ -80,6 +97,17 @@ node --test test/**/*.test.js framework/v*/test/unit/*.test.js
|
|
|
80
97
|
node --test test/core/controller.test.js
|
|
81
98
|
```
|
|
82
99
|
|
|
100
|
+
Some tests resolve the framework the way a consuming project does — via
|
|
101
|
+
`require('gina')`. For that to resolve from inside the clone, the repository
|
|
102
|
+
must be reachable as its own `gina` module. Create a one-time self-symlink (it
|
|
103
|
+
lives inside the gitignored `node_modules/`, so it never shows in `git status`):
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
mkdir -p node_modules && ln -sfn "$PWD" node_modules/gina
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Without it, a handful of suite members fail with `Cannot find module 'gina'`.
|
|
110
|
+
|
|
83
111
|
---
|
|
84
112
|
|
|
85
113
|
## Development environment
|
package/README.md
CHANGED
|
@@ -42,16 +42,12 @@ open https://localhost:3100
|
|
|
42
42
|
|
|
43
43
|
> **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.)
|
|
44
44
|
|
|
45
|
-
## What's in 0.5.
|
|
46
|
-
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
49
|
-
- **
|
|
50
|
-
- **Changed —
|
|
51
|
-
- **Fixed — metrics no longer double-count under the isaac engine.** With `app.json metrics.enabled` on, the request-lifecycle hook ran at both dispatch layers for any request reaching the router, so Prometheus counters were double-incremented and the duration histogram double-observed. The hook now records exactly once on either engine, durations are measured from engine entry, and the dev Inspector Flow timeline keeps its accurate request-start time. Metrics-enabled deployments will see counter rates roughly halve at pickup — that is the double-count disappearing, not traffic dropping. (#OBS1)
|
|
52
|
-
- **Fixed — redirect resolution.** The relative-path `self.redirect('/path')` form resolves its target server-side again (the route matcher is async and the historical un-awaited call could never match; `redirect()` is now async — prefer `return self.redirect(...)` from actions), a redirect to an unresolvable target gets a clean 404 instead of crashing the process, and `getRoute()` no longer throws a 500 when composing a URL for a GET route that declares no `requirements` block and receives extra params (they now land as query parameters). (#B120 / #B121)
|
|
53
|
-
- **Fixed — `image:build` for projects that depend on gina.** Images built for a project that lists gina among its own dependencies no longer fail at `gina-init` with `EACCES`, and the pinned framework now actually wins `require('gina')` inside the image — the `node_modules/gina` link supersedes the project-extracted copy. Dependency-free projects were unaffected. (#B118 / #B119)
|
|
54
|
-
- **Fixed — two smaller corrections.** `gina.emit('error', ...)` on the module object no longer throws (`emit` is an inert stub; application events go through the controller's `self.emitEvent()`), and the checkbox migration warning added in 0.5.18 now also covers the un-tick direction — markup carrying `checked` plus a false / empty `value` that used to render unticked and now stays ticked is flagged once per field. (#B109 / #49)
|
|
45
|
+
## What's in 0.5.20
|
|
46
|
+
|
|
47
|
+
- **Fixed — region locale data: one file per language, with localized country names.** The region-locale generator used to append each requested language's rows to the previous language's output, so `dist/region/fr.json` carried every country twice (the English copy first) and `getLocales().getCountries()` always resolved the English row. Each language now ships as a standalone file, and non-English builds localize `countryName` — a bundle resolving a `fr` culture now renders `Allemagne`, `États-Unis`, `Royaume-Uni` where it previously showed `Germany`, `US`, `UK`, through the same `getLocales().getCountries()` path with no application changes. Rows with no ISO 3166 alpha-2 code are dropped (they could only ever render blank). The region files are read once at boot, so restart your bundles after upgrading to pick up the regenerated data. (#50)
|
|
48
|
+
- **Fixed — `getCountries(code)` honors its projection argument.** The optional `code` argument (e.g. `capital`, `continent`, `tld`) was computed and never applied; it now adds that field to every returned row while the four historical fields (`isoShort`, `isoLong`, `countryName`, `officialStateName`) stay untouched, so calls without an argument return exactly what they did before. An unknown or non-string field logs a warning and is ignored, and a bundle with no locale set gets an empty list instead of throwing. (#50)
|
|
49
|
+
- **Fixed — FormValidator: numbered `is` rules now enforce, injected forms activate live checking, and boolean `_case_` conditions match live.** Numbered `is` aliases (`is1`, `is2`, …) were silently skipped and now install and run on both the client and the server — **a form that submitted clean because its `is2` condition was ignored may begin failing validation (or returning 422), so sweep your rule files for numbered `is` keys before upgrading.** Each alias now records its error under its own key on both sides, and server-side validation of rules carrying `$` cross-field references no longer crashes. Separately, dynamically injected (popin) forms now resolve `data-gina-form-rule` so live checking activates, and `_case_` conditions written as the strings `"true"` / `"false"` now match during live checking. These are browser-bundled changes — rebuild your bundles after upgrading. (#B127/#B128/#B129)
|
|
50
|
+
- **Changed — busboy is now an npm dependency, not a vendored copy.** Multipart form parsing uses [`@rhinostone/busboy`](https://github.com/gina-io/busboy) — a strict superset of upstream busboy 1.6.0 whose only addition exposes each part's parsed Content-Disposition parameters, which is what lets the upload layer read the `group="…"` tag — installed from npm instead of a patched copy carried inside the framework tree. Upload behaviour and the multipart wire format are unchanged: files still arrive with their group, an unconfigured group is still rejected, and a file with no group still falls back to `untagged`. No application changes and no client rebuild — pickup is the version plus a bundle restart.
|
|
55
51
|
|
|
56
52
|
See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
|
|
57
53
|
|
package/ROADMAP.md
CHANGED
|
@@ -44,6 +44,7 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
44
44
|
| **Q3 2026** | `0.5.17` ✅ | **Fixed**: `npm install -g gina` no longer fails with `EALLOWSCRIPTS` under the npm 12 `--allow-scripts=gina` remedy — the nested framework-dependency install drops the inherited allowance, making `0.5.17` the first version installable on npm 12 (#B106) · stale project cleanup is reliable — `project:rm @<project> --force` (the alias) removes the entry, and `project:remove` / `:rm --force` no longer `ENOENT`-crashes on an uncreatable stale path, going straight to registry-only removal (#B104/#B105) · `bundle:start` honours a bundle's configured default scope (a typo had returned an undefined property) |
|
|
45
45
|
| **Q3 2026** | `0.5.18` ✅ | **Added**: a redis-backed L2 render cache — rendered output is cached in a shared store, so several replicas serve the same rendered page and a freshly-started replica serves what a peer already rendered (cross-replica cold-start), degrading to per-replica caching if redis is down · pluggable cache backends (`server.cache.type`: `memory` / `fs` / `redis`) with bundle-wide `sliding` / `maxAge` fallbacks a route inherits · type-safe DTOs and a default-on validation pipe (`gina.dto` — one shape projected to runtime validation, response shaping, JSON Schema and TypeScript; `param.dto` validates the payload before the action with a localised 422, `param.responseDto` shapes the wire, `gina bundle:types` emits declarations, and `bundle:openapi` / `bundle:mcp` emit real request/response schemas) · `releaseWatch` — an opt-in stale built-release watch for local production rehearsals (source-tree fingerprint against the manifest release stamp, `GET /_gina/release/status` + an SSE stream, idle-gated rebuild-and-restart honouring in-flight requests and busy probes, a live shadow-DOM banner, and `restartMode: supervisor` for daemonless container launches) · `POST /_gina/cache/clear` + a `gina cache:clear` CLI (flush the rendered-output cache, or evict by event across bundles) · two-tier cache observability (an RFC 9211 `Cache-Status` `detail` naming the serving tier, plus an `l2` redis-health block on `/_gina/cache/stats`) · **Changed**: render-cache keys are release-namespaced, so an upgrade auto-invalidates (`GINA_CACHE_NAMESPACE`, else the framework version) · the `Cache-Status` miss form is now the RFC 9211 `gina-cache; fwd=uri-miss`, and Express bundles get their first cache-miss signal · **Fixed**: event-driven cache invalidation works — `self.cache.invalidateByEvent()` now exists, and a key carrying a querystring no longer throws a 500 that discarded an already-rendered page · the `fs` cache survives a restart (disk read-back via a `.meta` sidecar, original absolute expiry preserved, no TTL extension) · a checkbox's `value` attribute no longer decides its `checked` state (#49) · the published TypeScript declarations describe the runtime · errors surface instead of crashing, masking, or coming back as `0` (detached-context `throwError`, partial-boot `getLib()` / `getConfig()`, a bitwise-or at nine sites, and `$` in log messages) |
|
|
46
46
|
| **Q3 2026** | `0.5.19` ✅ | **Added**: route authorization — a `routing.json` rule gates access before the action runs via `param.requireAuth` (a 401 for XHR, a non-cacheable login redirect for a browser navigation, the original request snapshotted for `resumeRequest()`), `param.roles` (ANY-of, implies `requireAuth`), and `param.policy` (a per-bundle function for the ownership/record checks roles can't express, AND-composed after roles); denials stay generic — required roles and the policy name never reach the wire — author mistakes refuse to boot, and `self.hasRole()` authorizes mid-logic · an audit trail — opt-in `self.audit(action, data)` writes a user-attributed append-only JSONL record (its own store, never the logger sinks; an actor snapshot, `X-Forwarded-For` never trusted), route-authorization denials recorded automatically, and an always-on request id correlating audit records to JSON logs · an OCI image/container CLI on the `image:build` host — `image:list` / `image:rm` / `image:run` (podman; publishes the EXPOSEd port, `--env-var` / `--env-file` keep secrets out of argv) and a `container:` group (`container:ps` / `container:stop`, reporting the rung a container came down on) · **Changed**: `redirect()` carries request data through the session by default (a one-shot flash, gone on refresh), the clear-text `?inheritedData=` URL form and its 2000-char cap now session-less-only — removing a plaintext-secret-in-URL disclosure when a session-ful bundle halts a credential-bearing POST · **Fixed**: Prometheus metrics no longer double-count under the isaac engine (#OBS1) · the relative `self.redirect('/path')` form resolves again and an unresolvable target 404s instead of crashing (`redirect()` is now async), and `getRoute()` no longer 500s on a requirements-less GET route with extra params (#B120/#B121) · `image:build` for gina-dependent projects no longer fails at gina-init and the pinned framework wins `require('gina')` (#B118/#B119) · `gina.emit` is an inert stub (#B109) and the checkbox migration warning now covers the un-tick direction (#49) |
|
|
47
|
+
| **Q3 2026** | `0.5.20` ✅ | **Fixed**: region locale data — the generator now emits one standalone file per language with localized country names (a `fr` culture renders `Allemagne` / `États-Unis` / `Royaume-Uni` through the same `getLocales().getCountries()` path, no app changes; rows without an ISO 3166 alpha-2 code are dropped; read once at boot, so restart to pick up), and `getCountries(code)` honors its projection argument — adding the requested field while the four historical fields stay untouched, an empty locale set degrading to an empty list instead of throwing (#50) · **Fixed**: FormValidator — numbered `is` rules (`is1`, `is2`, …) now install and enforce on client and server (previously silently skipped; **sweep rule JSONs before upgrading — forms may begin 422ing**), each alias keying its error distinctly and server-side `$`-cross-field rules no longer crashing; injected/popin forms resolve `data-gina-form-rule` so live checking activates; boolean `_case_` conditions match live (#B127/#B128/#B129) · **Changed**: multipart parsing uses `@rhinostone/busboy` installed from npm instead of a patched vendored copy — a strict superset of upstream busboy 1.6.0, upload behaviour and the wire format unchanged, pickup is the version plus a bundle restart |
|
|
47
48
|
| **Q4 2026** | `0.6.0` | Security & compliance controls (technical safeguards mapping to PCI-DSS / SOC2 / HIPAA) |
|
|
48
49
|
| **Q1 2027** | `0.5.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
|
|
49
50
|
| **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
|
|
@@ -281,6 +282,7 @@ New database connectors follow the same interface as the existing Couchbase conn
|
|
|
281
282
|
| ✅ | **`connector:infer` — one-off AI inference CLI** | `0.5.6-alpha.3` | Q2 2026 | Runs a single inference against a configured `ai` connector **outside a request** — the runtime sibling of the config-only `connector:list`/`add`/`rm`/`migrate` tooling. Resolves the project's shared (or shared+bundle merged) `connectors.json`, resolves `${secret:KEY}` credentials from the CLI's own environment (the resolved value is never echoed), instantiates the connector directly (no bundle boot, no framework socket), and prints the normalised result. `gina connector:infer <connector> [<bundle>] @<project> --message="..."`, with `--system` / `--model` / `--max-tokens` / `--temperature` per-call overrides; `--message` takes precedence over a messages JSON array piped on stdin. `--format=json` (matched strictly — `jsonl`/`json5` fall back to the text output) emits `{ content, model, usage }`, with `--raw` adding the full provider response as a `raw` field (omitted by default for CLI use); text mode writes the content to stdout and a model/usage footer to stderr. `--stream` streams the inference as newline-delimited JSON (NDJSON) — one frame per line on stdout: a `start` frame, a `delta` frame per token, then a terminal `done` (content, model, usage, latency; plus the provider `raw` object under `--raw` — `null` for OpenAI-family streams) or `error` frame; token counters are passed through verbatim and are `null` (never fabricated) when a provider does not report them. Errors cleanly on a non-`ai` connector, and surfaces missing-SDK / credential / transport failures with a non-zero exit and the reason on stderr. Useful for smoke-testing connectivity + credentials from CI/automation, or scripting a one-off inference from a shell; offline providers such as `ollama://` work with no paid-API key. Implemented 2026-06-30 (`connector:infer` + the `--stream` NDJSON mode; a later output-hardening pass added `--raw`, pipe-safe synchronous writes, and `--message`-over-stdin precedence). |
|
|
282
283
|
| ✅ | **`connector:test` — connector readiness probe CLI** | `0.5.6-alpha.3` | Q2 2026 | Probes a project's configured connectors for readiness **outside a request** — the CI-friendly sibling of `connector:list` (driver-install status only) and `secrets:check` (env presence only), answering "is this connector ready to use?". Default is validate-only and offline: per connector it checks the `connector` type / `ai` protocol is recognised, the npm driver is installed at `<project>/node_modules`, and every `${secret:KEY}` placeholder resolves from the environment — no network, no connector instantiated — exiting non-zero when any connector fails so it can gate a deploy. `gina connector:test [<connector> [<bundle>]] @<project>` tests one connector or every connector in a project (bare → every registered project), mirroring `connector:infer`'s positional grammar and `secrets:check`'s all-mode; `--format=json` emits a machine-readable readiness report. The `--connect` opt-in adds a live connectivity probe: for `ai` connectors it calls the provider's `models.list` (a credentialed request that authenticates with **zero generation tokens**; `ollama://` confirms the local server is up), resolving `${secret:KEY}` the way `connector:infer` does (the value is never printed). For DB/cache connectors the live `--connect` probe is reported as **skipped** for now (config / driver / secrets are still validated) — the live DB/cache probe is a follow-up, since those connector classes load `core/gna` (which exits the process outside a booted bundle) and cannot be instantiated the way the AI connector is. Implemented 2026-06-30. |
|
|
283
284
|
| ✅ | **`connector:models` — list an AI connector's provider models** | `0.5.8` | Q2 2026 | Lists the model catalogue a configured `ai` connector's provider can serve — the read sibling of `connector:test --connect` (which makes the same `models.list()` call but keeps only the count). `gina connector:models <connector> @<project> [<bundle>]` prints one model id per line (a count footer on stderr), or `--format=json` emits `{ project, connector, provider, count, models }` with each entry passed through verbatim from the provider (only `id` is guaranteed across providers — Anthropic and OpenAI-family return different fields). Reuses the direct-`AIConnector` bootstrap of `connector:infer` / `connector:test` (no bundle boot, no framework socket); resolves config only and never prints credentials; offline providers such as `ollama://` work with no internet. `isAIConnector`-gated (a non-AI connector is rejected cleanly), and a provider client without `models.list` reports `supported:false` with a non-zero exit rather than a fabricated empty list. Implemented 2026-07-03. |
|
|
285
|
+
| 📋 | **DuckDB** | `0.5.x` | Q3 2026 | ORM / entity connector for DuckDB — an embedded **analytical** (columnar, OLAP) store: the analytics-side sibling of the SQLite connector's embedded OLTP role. Planned shape follows the MySQL / PostgreSQL architecture: entity wiring, `sql/` layout, positional placeholders (DuckDB accepts `?` and `$name`), `@param`/`@return` annotations, native Promise + `.onComplete()`, driver loaded from the project's `node_modules` as an optional peer dependency. Client: `@duckdb/node-api` (DuckDB's current-generation Node client). Use cases: in-process analytics and reporting bundles over app data, querying Parquet / CSV / JSON files directly without an ETL hop, larger-than-memory local aggregation; both `:memory:` and file-backed databases. Session store is a non-goal — DuckDB is a single-writer analytics engine (Redis / SQLite cover session storage). |
|
|
284
286
|
|
|
285
287
|
---
|
|
286
288
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.5.20
|
|
@@ -3892,9 +3892,17 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
3892
3892
|
* */
|
|
3893
3893
|
self[el]['is'] = function(condition, errorMessage, errorStack) {
|
|
3894
3894
|
var isValid = false;
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3895
|
+
// #B127 — alias root: window in the browser, the Node global on the
|
|
3896
|
+
// server, so numbered `is<N>` aliases keep DISTINCT error keys on both
|
|
3897
|
+
// sides. The installer's setAlias IIFE already writes the alias to the
|
|
3898
|
+
// Node global (sloppy-mode `this`); the old window-only read collapsed
|
|
3899
|
+
// every server alias to the shared key `is`, which let a later PASSING
|
|
3900
|
+
// alias delete an earlier FAILING alias's error (see the !isValid /
|
|
3901
|
+
// delete bookkeeping below) — the field then validated clean.
|
|
3902
|
+
var _aliasRoot = ( typeof(window) != 'undefined' ) ? window : ( ( typeof(global) != 'undefined' ) ? global : null );
|
|
3903
|
+
var alias = ( _aliasRoot && typeof(_aliasRoot._currentValidatorAlias) != 'undefined' ) ? _aliasRoot._currentValidatorAlias : 'is';
|
|
3904
|
+
if ( _aliasRoot && _aliasRoot._currentValidatorAlias )
|
|
3905
|
+
delete _aliasRoot._currentValidatorAlias;
|
|
3898
3906
|
|
|
3899
3907
|
var errors = self[this['name']]['errors'] || {};
|
|
3900
3908
|
local.data[this.name] = self[this.name].value;
|
|
@@ -10427,18 +10435,27 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
10427
10435
|
|
|
10428
10436
|
var rule = null;
|
|
10429
10437
|
if ( typeof(customRule) == 'undefined') {
|
|
10430
|
-
|
|
10438
|
+
// #B128 — attribute-first: an injected form carrying `data-gina-form-rule`
|
|
10439
|
+
// (the popin bind path calls validateFormById with no customRule) must
|
|
10440
|
+
// resolve by the attribute's dotted name — the id-derived name stays the
|
|
10441
|
+
// fallback for attribute-less forms whose id names the rule. The old shape
|
|
10442
|
+
// read the attribute only when `rules` was undefined — unreachable on a
|
|
10443
|
+
// rules-bearing page (and its inner `rules` recheck was false by
|
|
10444
|
+
// construction, so that branch could only ever throw): the id-derived
|
|
10445
|
+
// lookup missed, bindForm re-resolved by id, `$form.rules` bound `{}`,
|
|
10446
|
+
// and the live-check gate stamped the form
|
|
10447
|
+
// `data-gina-form-live-check-enabled="false"` while the submit handler
|
|
10448
|
+
// independently re-read the attribute and succeeded.
|
|
10449
|
+
// was: rule = _id.replace(/\-/g, '.'); then the attribute behind an
|
|
10450
|
+
// unreachable `else if` ending in a dead throw.
|
|
10451
|
+
if ( typeof($form.target) != 'undefined' && $form.target !== null && $form.target.getAttribute('data-gina-form-rule') ) {
|
|
10452
|
+
rule = $form.target.getAttribute('data-gina-form-rule').replace(/\-|\//g, '.');
|
|
10453
|
+
} else {
|
|
10454
|
+
rule = _id.replace(/\-/g, '.');
|
|
10455
|
+
}
|
|
10431
10456
|
|
|
10432
10457
|
if ( typeof(rules) != 'undefined' ) {
|
|
10433
10458
|
$form['rule'] = customRule = getRuleObjByName(rule)
|
|
10434
|
-
} else if ( typeof($form.target) != 'undefined' && $form.target !== null && $form.target.getAttribute('data-gina-form-rule') ) {
|
|
10435
|
-
rule = $form.target.getAttribute('data-gina-form-rule').replace(/\-|\//g, '.');
|
|
10436
|
-
|
|
10437
|
-
if ( typeof(rules) != 'undefined' ) {
|
|
10438
|
-
$form['rule'] = getRuleObjByName(rule)
|
|
10439
|
-
} else {
|
|
10440
|
-
throw new Error('[ FormValidator::validateFormById(formId) ] using `data-gina-form-rule` on form `'+$form.target+'`: no matching rule found')
|
|
10441
|
-
}
|
|
10442
10459
|
} // no else to allow form without any rule
|
|
10443
10460
|
} else {
|
|
10444
10461
|
rule = customRule.replace(/\-|\//g, '.');
|
|
@@ -17187,8 +17204,14 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
17187
17204
|
var stringifiedRules = JSON.stringify(rules);
|
|
17188
17205
|
fields = formatFields(stringifiedRules, fields);
|
|
17189
17206
|
if ( /\$(.*)/.test(stringifiedRules) ) {
|
|
17207
|
+
// #B127 — `$fields` is null on the server paths (backendInit passes
|
|
17208
|
+
// validate($form, fields, null, rules, …)), so the unguarded
|
|
17209
|
+
// `$fields.count()` crashed the server pass for ANY `$`-bearing rule
|
|
17210
|
+
// set (plain `is` included) before the rules ever ran. A server pass
|
|
17211
|
+
// is a full-form pass by definition — never a single-element live-check.
|
|
17190
17212
|
var isLiveCheckingOnASingleElement = (
|
|
17191
|
-
|
|
17213
|
+
$fields
|
|
17214
|
+
&& !/^form$/i.test($formOrElement.tagName)
|
|
17192
17215
|
&& $fields.count() == 1
|
|
17193
17216
|
&& /true/i.test($formOrElement.form.dataset.ginaFormLiveCheckEnabled)
|
|
17194
17217
|
) ? true : false;
|
|
@@ -17256,18 +17279,26 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
17256
17279
|
|
|
17257
17280
|
// check each field against rule
|
|
17258
17281
|
for (var rule in rules[field]) {
|
|
17259
|
-
//
|
|
17260
|
-
|
|
17261
|
-
|
|
17262
|
-
|
|
17263
|
-
|
|
17264
|
-
|
|
17282
|
+
// #B127 — numbered `is` aliases (`is0`, `is1`, …) must be installed
|
|
17283
|
+
// BEFORE the function typecheck below: the installer requires the
|
|
17284
|
+
// `undefined` state the typecheck `continue`s on, so with the old
|
|
17285
|
+
// order (typecheck first) the installer was unreachable and every
|
|
17286
|
+
// `is<N>` rule key was silently skipped — client AND server. The
|
|
17287
|
+
// regex is anchored: the old unanchored alternative also matched
|
|
17288
|
+
// names like `is0abc`, which would inherit from a nonexistent base.
|
|
17289
|
+
// was (below the typecheck — unreachable):
|
|
17290
|
+
// if ( /^((is)\d+|is$)/.test(rule) && typeof(d[field][rule]) == 'undefined' ) { // is aliases
|
|
17291
|
+
if ( /^is\d+$/.test(rule) && typeof(d[field][rule]) == 'undefined' ) { // is aliases
|
|
17265
17292
|
d[field][rule] = function(){};
|
|
17266
17293
|
d[field][rule] = inherits(d[field][rule], d[field][ rule.replace(/\d+/, '') ]);
|
|
17267
17294
|
d[field][rule].setAlias = (function(alias) {
|
|
17268
17295
|
this._currentValidatorAlias = alias
|
|
17269
17296
|
}(rule));
|
|
17270
17297
|
}
|
|
17298
|
+
// skip when not processing rule function
|
|
17299
|
+
if ( typeof(d[field][rule]) != 'function' ) {
|
|
17300
|
+
continue;
|
|
17301
|
+
}
|
|
17271
17302
|
// check for rule params
|
|
17272
17303
|
try {
|
|
17273
17304
|
if (Array.isArray(rules[field][rule])) { // has args
|
|
@@ -17733,10 +17764,26 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
17733
17764
|
} // EO caseEvent
|
|
17734
17765
|
*/
|
|
17735
17766
|
caseValue = allFields[caseName];
|
|
17767
|
+
// #B129 — coerce the CASE value itself (the direct-case
|
|
17768
|
+
// site's semantics: unconditional string "true"/"false"
|
|
17769
|
+
// -> boolean, isGFFCtx gate kept). The old shape tested
|
|
17770
|
+
// `fields[field]` — the OUTER field being validated — so
|
|
17771
|
+
// a boolean `case` never coerced unless the outer field's
|
|
17772
|
+
// own value happened to be "true"/"false", which instead
|
|
17773
|
+
// CLOBBERED the case value for that field's pass. Masked
|
|
17774
|
+
// in full-form passes by the direct-case site below;
|
|
17775
|
+
// unmasked in single-element/live-check mode.
|
|
17776
|
+
// was:
|
|
17777
|
+
// if (isGFFCtx) {
|
|
17778
|
+
// if (fields[field] == "true")
|
|
17779
|
+
// caseValue = true;
|
|
17780
|
+
// else if (fields[field] == "false")
|
|
17781
|
+
// caseValue = false;
|
|
17782
|
+
// }
|
|
17736
17783
|
if (isGFFCtx) {
|
|
17737
|
-
if (
|
|
17784
|
+
if (caseValue == "true")
|
|
17738
17785
|
caseValue = true;
|
|
17739
|
-
else if (
|
|
17786
|
+
else if (caseValue == "false")
|
|
17740
17787
|
caseValue = false;
|
|
17741
17788
|
}
|
|
17742
17789
|
|