gina 0.4.2 → 0.4.3
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 +17 -0
- package/README.md +6 -4
- package/ROADMAP.md +4 -4
- package/framework/v0.4.3/VERSION +1 -0
- package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +133 -0
- package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.js +142 -39
- package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +498 -496
- package/framework/v0.4.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.4.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.4.2 → v0.4.3}/core/gna.js +54 -0
- package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/src/main.js +129 -10
- package/framework/{v0.4.2 → v0.4.3}/core/server.isaac.js +3 -0
- package/framework/{v0.4.2 → v0.4.3}/core/server.js +151 -0
- package/framework/{v0.4.2 → v0.4.3}/core/template/conf/settings.json +5 -1
- package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/help.txt +14 -0
- package/framework/v0.4.3/lib/cmd/service/start.js +219 -0
- package/framework/v0.4.3/package.json +10 -0
- package/gna.js +4 -4
- package/llms.txt +9 -1
- package/package.json +6 -5
- package/framework/v0.4.2/VERSION +0 -1
- package/framework/v0.4.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.4.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.4.2/package.json +0 -9
- /package/framework/{v0.4.2 → v0.4.3}/AUTHORS +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/html/static.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/config.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/content.encoding +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/currency.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/mime.types +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/entity.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/template/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/router.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/server.express.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/status.codes +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/_gitignore +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/env.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/console.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/context.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/path.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/prototypes.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/task.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/text.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/async/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/async/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/config.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cron/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cron/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/generator/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/i18n/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/instrument/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/job/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/job/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/math/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/merge/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/merge/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/metrics/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/model.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/proc.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/shell.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/state.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/url/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/url/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/url/routing.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/uuid/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/validator.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/watcher/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/watcher/src/main.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,23 @@ 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.4.3 - 2026-06-04
|
|
10
|
+
|
|
11
|
+
_Additive release — the standalone Inspector connects over an authenticated WebSocket (with `gina service:start` and dev auto-start), `FormValidator` reflects validity into `aria-invalid` (#A11Y1), the popin / link / validator plugins drop inline `onclick` for strict-CSP compatibility, and the `@rhinostone/swig` floor moves to `^2.6.0`. No breaking changes, no settings reset._
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
* Added an authenticated WebSocket transport for the Inspector agent endpoint (/_gina/agent), alongside the existing SSE channel. The standalone Inspector can stream a bundle data + log feed over a single WebSocket. Outside dev mode the upgrade requires the configured inspector.agent.key (presented via ?key= or the x-gina-inspector-key header) and honours an optional inspector.agent.allowedOrigins Origin allowlist.
|
|
15
|
+
* The standalone Inspector SPA can stream a bundle data + log feed over the WebSocket transport by opening with ?transport=ws (SSE stays the default and the automatic fallback if the socket cannot open). The optional ?key= is threaded on the WebSocket URL for an auth-gated endpoint.
|
|
16
|
+
* Added a `gina service:start <service>` command to start a framework-internal @gina service (such as the standalone Inspector) via the daemon-free gina-container launcher, with double-start protection, `--dry-run` and `--format=json`. In dev mode the Inspector now auto-starts when a bundle boots (a no-op unless the framework services project is scaffolded locally).
|
|
17
|
+
* FormValidator now reflects each managed field's validity into `aria-invalid` (#A11Y1): `true` on a committed error and `false` when valid — mirroring the native `ValidityState` where the field has native HTML constraints, so it agrees with the `:user-invalid` styling already shown. This exposes any `aria-errormessage` association on the field to assistive technology, which is otherwise inert without `aria-invalid`. When the field already references an error element via `aria-errormessage`, the redundant `form-item-error-message` div is suppressed; legacy forms with no association keep the injected div and gain an `aria-errormessage` wire to it. On a failed submit, focus moves to the first invalid field so assistive technology announces it; blur-time errors are announced through a per-form visually-hidden `aria-live="polite"` region. No public API change; existing error classes and attributes (`form-item-error`, `form-item-error-message`, `data-gina-form-errors`, submit-button state) are unchanged.
|
|
18
|
+
### Changed
|
|
19
|
+
* The standalone Inspector now connects to the /_gina/agent endpoint over a WebSocket by default, falling back to SSE automatically if the socket cannot open. Open the Inspector with ?transport=sse to force the SSE transport. Authentication and the production toggle are unchanged (the WebSocket reuses the same inspector.agent key).
|
|
20
|
+
* Bumped the @rhinostone/swig dependency floor from ^2.5.1 to ^2.5.3 in both the root package.json and framework/v*/package.json. swig 2.5.2 fixes dynamic {% extends %} resolution on the async-loader render path in the Twig and Jinja2 frontends; 2.5.3 turns a dynamic {% extends %} on the synchronous render path into a clear error pointing to the async render path instead of a generic failure. The native @rhinostone/swig package stays drop-in compatible with the API gina depends on (swig.compile, swig.setFilter, swig.setTag, swig.renderFile). swigResolver DEFAULT_MIN stays at 2.0.0 — the framework does not depend on any new 2.5.x-only API.
|
|
21
|
+
* Bumped the @rhinostone/swig floor to ^2.6.0 in both the root and framework manifests. 2.6.0 makes the native json / json_encode filters HTML-escape their output and marks them (and url_encode) safe, so {{ data|json }} is safe to embed directly inside a <script> block (url_decode is unchanged). swigResolver DEFAULT_MIN stays at 2.0.0 — the framework depends on no new 2.6.0-only API.
|
|
22
|
+
### Fixed
|
|
23
|
+
* Popin close elements no longer get an inline onclick="return false;" attribute injected at bind time, so popins work under a strict nonce-based Content-Security-Policy (the inline handler tripped the script-src-attr directive). Default-action suppression is unchanged — it was already handled by the registered close listener.
|
|
24
|
+
* The Link plugin and the form-validator anchor submit-triggers no longer inject an inline onclick="return false;" attribute at bind time, so they work under a strict nonce-based Content-Security-Policy (the inline handler tripped the script-src-attr directive). Default-action suppression is preserved via an addEventListener-based preventDefault listener, so behaviour is unchanged.
|
|
25
|
+
|
|
9
26
|
## 0.4.2 - 2026-06-02
|
|
10
27
|
|
|
11
28
|
_Additive release — opt-in HTTP/3 advertisement (`Alt-Svc`) plus two render-path fixes (`gina-container` HTML 500, layoutless `page.data` restore). No breaking changes, no settings reset._
|
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ Node.js MVC framework with built-in HTTP/2, multi-bundle architecture, and scope
|
|
|
22
22
|
| ORM / entities | EventEmitter-based entity system; SQL files auto-wired to entity methods |
|
|
23
23
|
| Connectors | Couchbase, MongoDB, ScyllaDB / Cassandra, MySQL, PostgreSQL, Redis, SQLite, AI (LLM) — loaded from project `node_modules` |
|
|
24
24
|
| AI connector | Any LLM provider via named protocol (`anthropic://`, `openai://`, `ollama://`, …) |
|
|
25
|
-
| Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.
|
|
25
|
+
| Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.6.0 — maintained fork with CVE-2023-25345 patched; streaming SSE/chunked via `renderStream()`. Nunjucks supported as opt-in via `render.engine = "nunjucks"` |
|
|
26
26
|
| Internationalisation | Per-bundle JSON catalogs, `t()` helper, swig + nunjucks `t` filter, CLDR plurals, ICU MessageFormat opt-in via `t.icu()` |
|
|
27
27
|
| Observability | Built-in `/_gina/metrics` Prometheus endpoint (opt-in, IP-allowlisted) — Node.js process metrics + HTTP counter / duration histogram with cardinality-safe route labels |
|
|
28
28
|
| Hot reload | WatcherService evicts `require.cache` only on file change — zero per-request overhead in dev |
|
|
@@ -39,10 +39,12 @@ gina bundle:start api @myproject
|
|
|
39
39
|
open https://localhost:3100
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
## What's in 0.4.
|
|
42
|
+
## What's in 0.4.3
|
|
43
43
|
|
|
44
|
-
- **
|
|
45
|
-
- **
|
|
44
|
+
- **Inspector over WebSocket.** The standalone Inspector now connects to a bundle's `/_gina/agent` endpoint over an authenticated WebSocket by default — streaming the data + log feed on one socket — and falls back to SSE automatically if the socket can't open (open with `?transport=sse` to force SSE). Outside dev mode the upgrade requires the configured `inspector.agent.key` (via `?key=` or the `x-gina-inspector-key` header) and honours an optional `inspector.agent.allowedOrigins` allowlist. A new **`gina service:start <service>`** command starts framework-internal `@gina` services (such as the standalone Inspector) via the daemon-free `gina-container` launcher, and in dev mode the Inspector auto-starts when a bundle boots.
|
|
45
|
+
- **Accessible form validation (`aria-invalid`, #A11Y1).** `FormValidator` now keeps each managed field's `aria-invalid` in sync with its validity (`true` on a committed error, `false` once valid), so a field's `aria-errormessage` association is actually exposed to assistive technology. A failed submit moves focus to the first invalid field; blur-time errors are announced through a per-form `aria-live` region. Automatic — no public API change.
|
|
46
|
+
- **Strict-CSP client plugins.** The popin, link, and form-validator plugins no longer inject an inline `onclick="return false;"` attribute at bind time, so they work under a strict nonce-based Content-Security-Policy (the inline handler tripped `script-src-attr`). Default-action suppression is unchanged.
|
|
47
|
+
- **`@rhinostone/swig` → `^2.6.0`.** The template-engine floor moves to 2.6.0; the native `json` / `json_encode` filters now HTML-escape their output and are marked safe, so `{{ data|json }}` is safe to embed directly inside a `<script>` block.
|
|
46
48
|
|
|
47
49
|
See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
|
|
48
50
|
|
package/ROADMAP.md
CHANGED
|
@@ -188,7 +188,7 @@ Client-side form-validation accessibility — keeping `FormValidator`'s ARIA sta
|
|
|
188
188
|
|
|
189
189
|
| Status | Feature | Version | Target |
|
|
190
190
|
| --- | --- | --- | --- |
|
|
191
|
-
|
|
|
191
|
+
| ✅ | **`aria-invalid` validity reflection (#A11Y1)** — `FormValidator` keeps `aria-invalid` in sync with each managed field's effective validity, so a field's `aria-errormessage` (and error `aria-describedby`) association is actually exposed to assistive technology. Per WAI-ARIA those associations are inert unless the field also carries `aria-invalid="true"`, so today screen-reader users are never told which field is invalid or what the error says even when the markup wires `aria-errormessage`. On every blur and submit pass — plus on `input` once a field has errored at least once — the validator sets `aria-invalid="true"` when invalid and `aria-invalid="false"` when valid; a pristine, never-validated field carries no attribute (three-state: absent / `false` / `true`, where `false` is a DOM-observable touched-and-valid signal the post-error `input` revalidation reads off the element). Where the field has native HTML constraints the native `ValidityState` (`element.validity.valid`) is the source of truth, so the attribute never disagrees with the `:user-invalid` styling that already drives the visible error. When the field already references an error element via `aria-errormessage`, the validator does NOT inject its `form-item-error-message` div (no duplicate message) — setting `aria-invalid` is enough to expose the existing element; legacy forms with no association keep the injected div and additionally gain an `aria-errormessage` wire to it. On a failed submit, focus moves to the first invalid field; blur-time errors (focus already gone) are announced through a dedicated visually-hidden `aria-live="polite"` status region rather than the static message, since a CSS `:user-invalid` display toggle is not reliably announced — suppressed for any field that simultaneously receives focus to avoid double-speaking. No new public API; existing `form-item-error` / `form-item-warning` / `form-item-error-message` / `error-message` / `data-gina-form-errors` classes and the submit-button `aria-disabled` / `disabled` toggling are unchanged. Acceptance: VoiceOver + NVDA announce the invalid field and its `aria-errormessage` text on a failed blur and submit, and stop once corrected; no visual regression on forms already using `form-item-error` / `error-message`. Blur/`input`-time passes apply to forms that opt into `data-gina-form-live-check-enabled`; the always-on submit pass covers `aria-invalid` + first-invalid focus regardless. | `0.4.3-alpha.2` | 2026-06-03 |
|
|
192
192
|
|
|
193
193
|
---
|
|
194
194
|
|
|
@@ -369,10 +369,10 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
|
|
|
369
369
|
|
|
370
370
|
| Status | Feature | Version | Target |
|
|
371
371
|
| --- | --- | --- | --- |
|
|
372
|
-
|
|
|
372
|
+
| ✅ | **`services/src/inspector/` standalone bundle** — ~~Rename `services/src/toolbar/` to `services/src/inspector/`~~ (done). **Authenticated WebSocket transport shipped** (`0.4.3-alpha`): the standalone Inspector connects to a bundle's `/_gina/agent` over a WebSocket (`?transport=ws`) as well as SSE — key-authenticated outside dev mode, with an optional `inspector.agent.allowedOrigins` Origin allowlist; it falls back to SSE automatically if the socket can't open. The embedded SPA at `/_gina/inspector/` remains for quick dev-mode access. **Dev auto-start shipped** (`0.4.3-alpha`): a `gina service:start` command plus a dev-only `gna.js server.on('started')` hook auto-start the standalone Inspector via the daemon-free `gina-container` launcher (gated on dev mode + not-already-running; local-only — no-ops in a fresh install since `services/` ships in neither git nor npm). | `0.5.0` | 2026-06-02 |
|
|
373
373
|
| ✅ | **Agent endpoint — dev-mode SSE (`/_gina/agent`)** — Combined data + log SSE stream. CORS, server.js + server.isaac.js (HTTP/2), Inspector SPA `tryAgent()` with `?target=` param. Named events (`event: data`, `event: log`). Manual connect form on "No source" overlay. | `0.3.0` | 2026-04-05 |
|
|
374
|
-
|
|
|
375
|
-
|
|
|
374
|
+
| ✅ | **Agent endpoint — production auth** — **Authenticated `/_gina/agent` + production-safe toggle shipped via the existing SSE transport** (opt-in `inspector.agent.enabled` + key in `settings.json`, constant-time compare, `${secret:KEY}`-capable; key via the `x-gina-inspector-key` header or a `?key=` query param; dev stays open + keyless). Authenticates remote server-log streaming outside dev mode. **WebSocket transport completed** (`0.4.3-alpha`): the standalone Inspector now connects over the #INS8 WebSocket by default (`?transport=sse` forces SSE) with automatic SSE fallback; auth + prod-toggle contract unchanged. | `0.5.0` | 2026-06-02 |
|
|
375
|
+
| ✅ | **Toggleable instrumentation** — Runtime toggle for query + flow instrumentation independent of `NODE_ENV_IS_DEV`: a time-boxed, key-authenticated window (`POST /_gina/instrument`) runs capture in production over the authenticated `/_gina/agent` channel, without full dev mode. Opt-in via `inspector.instrumentation`; 3600s hard cap with auto-revert. **v1 shipped 2026-05-26** (JSON/XHR + cross-bundle egress); the server-rendered HTML-page-render egress follow-up also shipped 2026-05-26 (a separate HTML-free emit path wired per render delegate). | `0.5.0` | 2026-05-26 |
|
|
376
376
|
| 📋 | **Multi-bundle dashboard** — Discover all running bundles via `ports.json`, connect to each agent. Full-stack request tracing across bundle boundaries. | post-1.0.0 | — |
|
|
377
377
|
| 📋 | **Browser extension companion** — Chrome/Firefox DevTools panel. Thin UI shell connecting to the standalone Inspector via WebSocket. Optional — not a replacement. | post-1.0.0 | — |
|
|
378
378
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.4.3
|
package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js
RENAMED
|
@@ -3751,6 +3751,8 @@
|
|
|
3751
3751
|
* @returns {boolean} `true` if a `target` param was found and connection initiated
|
|
3752
3752
|
*/
|
|
3753
3753
|
function tryAgent() {
|
|
3754
|
+
// #INS8 — if the WebSocket transport already claimed the channel, no-op.
|
|
3755
|
+
if (source === 'agent') return true;
|
|
3754
3756
|
if (typeof EventSource === 'undefined') return false;
|
|
3755
3757
|
|
|
3756
3758
|
var params = new URLSearchParams(window.location.search);
|
|
@@ -3844,6 +3846,127 @@
|
|
|
3844
3846
|
return true;
|
|
3845
3847
|
}
|
|
3846
3848
|
|
|
3849
|
+
|
|
3850
|
+
// ── WebSocket /_gina/agent transport (#INS8) ─────────────────────────
|
|
3851
|
+
|
|
3852
|
+
/**
|
|
3853
|
+
* #INS8/#INS9b — WebSocket variant of {@link tryAgent}, the DEFAULT agent
|
|
3854
|
+
* transport (since #INS9b). Runs whenever the Inspector is opened with a
|
|
3855
|
+
* `?target=<bundle_url>` unless `?transport=sse` forces SSE.
|
|
3856
|
+
* Connects to `{target}/_gina/agent` over a WebSocket, parsing the same
|
|
3857
|
+
* `{event, data}` envelopes the SSE channel emits. Threads the optional
|
|
3858
|
+
* `?key=` on the WS URL (browsers cannot set WebSocket handshake headers,
|
|
3859
|
+
* same constraint as EventSource). Falls back to SSE ({@link tryAgent}) once
|
|
3860
|
+
* if the socket never opens (e.g. an HTTP/2-only target that cannot upgrade).
|
|
3861
|
+
*
|
|
3862
|
+
* @inner
|
|
3863
|
+
* @returns {boolean} `true` if a `target` param was found and a socket was opened
|
|
3864
|
+
*/
|
|
3865
|
+
function tryAgentWS() {
|
|
3866
|
+
if (typeof WebSocket === 'undefined') return false;
|
|
3867
|
+
|
|
3868
|
+
var params = new URLSearchParams(window.location.search);
|
|
3869
|
+
var target = params.get('target');
|
|
3870
|
+
if (!target) return false;
|
|
3871
|
+
|
|
3872
|
+
// Normalise: strip trailing slash, switch scheme to ws/wss.
|
|
3873
|
+
target = target.replace(/\/+$/, '');
|
|
3874
|
+
var wsUrl = target.replace(/^http/i, 'ws') + '/_gina/agent';
|
|
3875
|
+
|
|
3876
|
+
var agentKey = params.get('key');
|
|
3877
|
+
if (agentKey) {
|
|
3878
|
+
wsUrl += '?key=' + encodeURIComponent(agentKey);
|
|
3879
|
+
}
|
|
3880
|
+
|
|
3881
|
+
qs('#bm-dot').className = 'bm-dot warn';
|
|
3882
|
+
qs('#bm-label').textContent = 'Connecting…';
|
|
3883
|
+
|
|
3884
|
+
var _opened = false, _fellBack = false;
|
|
3885
|
+
|
|
3886
|
+
try {
|
|
3887
|
+
var ws = new WebSocket(wsUrl);
|
|
3888
|
+
// Claim the channel only after the socket is constructed, so a
|
|
3889
|
+
// constructor throw leaves source unset and tryAgent() opens SSE.
|
|
3890
|
+
source = 'agent';
|
|
3891
|
+
|
|
3892
|
+
ws.onopen = function () {
|
|
3893
|
+
_opened = true;
|
|
3894
|
+
qs('#bm-dot').className = 'bm-dot ok';
|
|
3895
|
+
};
|
|
3896
|
+
|
|
3897
|
+
ws.onmessage = function (ev) {
|
|
3898
|
+
try {
|
|
3899
|
+
var frame = JSON.parse(ev.data);
|
|
3900
|
+
if (!frame || !frame.event) return;
|
|
3901
|
+
if (frame.event === 'data') {
|
|
3902
|
+
var gd = frame.data;
|
|
3903
|
+
if (!gd) return;
|
|
3904
|
+
var str = JSON.stringify(gd);
|
|
3905
|
+
if (str === lastGdStr) return;
|
|
3906
|
+
showLoader();
|
|
3907
|
+
lastGdStr = str;
|
|
3908
|
+
ginaData = gd;
|
|
3909
|
+
var env = (gd.user && gd.user.environment) || {};
|
|
3910
|
+
qs('#bm-label').textContent = (env.bundle || '?') + '@' + (env.env || '?');
|
|
3911
|
+
qs('#bm-dot').className = 'bm-dot ok';
|
|
3912
|
+
document.title = 'Inspector — ' + (env.bundle || '?') + '@' + (env.env || '?');
|
|
3913
|
+
qs('#bm-no-source').classList.add('hidden');
|
|
3914
|
+
renderEnvironmentInfo();
|
|
3915
|
+
updateRevealVisibility();
|
|
3916
|
+
var tab = activeTab();
|
|
3917
|
+
if (tab !== 'logs') renderTab(tab);
|
|
3918
|
+
if (tab !== 'query') {
|
|
3919
|
+
var _u = gd.user || {};
|
|
3920
|
+
var _hasXhr = typeof _u['data-xhr'] !== 'undefined';
|
|
3921
|
+
var _qd = _hasXhr && _u['data-xhr'] && _u['data-xhr'].queries
|
|
3922
|
+
? _u['data-xhr'].queries : _u.queries;
|
|
3923
|
+
updateQueryToolbar(_qd || null);
|
|
3924
|
+
}
|
|
3925
|
+
if (tab !== 'view') {
|
|
3926
|
+
var _u2 = gd.user || {};
|
|
3927
|
+
var _isXhr2 = typeof _u2['view-xhr'] !== 'undefined';
|
|
3928
|
+
var _vm = getPageMetrics(_isXhr2);
|
|
3929
|
+
var _dxhr = typeof _u2['data-xhr'] !== 'undefined';
|
|
3930
|
+
var _vq = _dxhr && _u2['data-xhr'] && _u2['data-xhr'].queries
|
|
3931
|
+
? _u2['data-xhr'].queries : _u2.queries;
|
|
3932
|
+
updateViewDot(checkPerfAnomalies(_vm, _vq || []));
|
|
3933
|
+
}
|
|
3934
|
+
hideLoader();
|
|
3935
|
+
} else if (frame.event === 'log') {
|
|
3936
|
+
if (paused) return;
|
|
3937
|
+
var entry = frame.data;
|
|
3938
|
+
if (!entry) return;
|
|
3939
|
+
entry._id = ++_logIdCounter;
|
|
3940
|
+
logs.push(entry);
|
|
3941
|
+
if (logs.length > MAX_LOG_ENTRIES) logs.shift();
|
|
3942
|
+
updateLogDot([entry]);
|
|
3943
|
+
scheduleRender();
|
|
3944
|
+
}
|
|
3945
|
+
} catch (e) {}
|
|
3946
|
+
};
|
|
3947
|
+
|
|
3948
|
+
ws.onerror = function () {
|
|
3949
|
+
qs('#bm-dot').className = 'bm-dot warn';
|
|
3950
|
+
};
|
|
3951
|
+
|
|
3952
|
+
ws.onclose = function () {
|
|
3953
|
+
qs('#bm-dot').className = 'bm-dot warn';
|
|
3954
|
+
// If the socket never opened, fall back to SSE once so the
|
|
3955
|
+
// Inspector still connects (e.g. an HTTP/2-only target whose
|
|
3956
|
+
// server cannot upgrade a WebSocket).
|
|
3957
|
+
if (!_opened && !_fellBack && source === 'agent') {
|
|
3958
|
+
_fellBack = true;
|
|
3959
|
+
source = null;
|
|
3960
|
+
tryAgent();
|
|
3961
|
+
}
|
|
3962
|
+
};
|
|
3963
|
+
} catch (e) {
|
|
3964
|
+
return false;
|
|
3965
|
+
}
|
|
3966
|
+
|
|
3967
|
+
return true;
|
|
3968
|
+
}
|
|
3969
|
+
|
|
3847
3970
|
// ── Passive /_gina/agent subscription (opener mode) ──────────────────
|
|
3848
3971
|
|
|
3849
3972
|
/**
|
|
@@ -4898,6 +5021,16 @@
|
|
|
4898
5021
|
// Agent mode (?target= param) is the highest-priority source — it
|
|
4899
5022
|
// provides both data and logs via a single SSE stream. When active,
|
|
4900
5023
|
// opener/localStorage polling and tryServerLogs() are unnecessary.
|
|
5024
|
+
// #INS9b — WebSocket is the DEFAULT agent transport; SSE is the automatic
|
|
5025
|
+
// fallback (tryAgentWS() falls back to tryAgent() on a failed open, and
|
|
5026
|
+
// only acts when a ?target= is present). ?transport=sse forces SSE. On a
|
|
5027
|
+
// successful handshake tryAgentWS() claims source='agent', so the
|
|
5028
|
+
// tryAgent() call below short-circuits to a no-op.
|
|
5029
|
+
var _agentTransport = (typeof URLSearchParams !== 'undefined')
|
|
5030
|
+
? new URLSearchParams(window.location.search).get('transport') : null;
|
|
5031
|
+
if (_agentTransport !== 'sse') {
|
|
5032
|
+
tryAgentWS();
|
|
5033
|
+
}
|
|
4901
5034
|
var isAgent = tryAgent();
|
|
4902
5035
|
|
|
4903
5036
|
if (!isAgent) {
|
|
@@ -9017,7 +9017,6 @@ define('gina/link', [ 'require', 'lib/domain', 'lib/merge', 'lib/uuid', 'utils/e
|
|
|
9017
9017
|
, url = null
|
|
9018
9018
|
, elId = null
|
|
9019
9019
|
, onEvent = null
|
|
9020
|
-
, onclickAttribute = null
|
|
9021
9020
|
// a
|
|
9022
9021
|
, $a = $target.getElementsByTagName('a')
|
|
9023
9022
|
// buttons
|
|
@@ -9062,20 +9061,12 @@ define('gina/link', [ 'require', 'lib/domain', 'lib/merge', 'lib/uuid', 'utils/e
|
|
|
9062
9061
|
evt = elId;
|
|
9063
9062
|
$el.setAttribute('id', evt);
|
|
9064
9063
|
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
|
|
9068
|
-
|
|
9069
|
-
|
|
9070
|
-
|
|
9071
|
-
} else if ( typeof(onclickAttribute) != 'undefined' && !/return false/.test(onclickAttribute) ) {
|
|
9072
|
-
if ( /\;$/.test(onclickAttribute) ) {
|
|
9073
|
-
onclickAttribute += 'return false;'
|
|
9074
|
-
} else {
|
|
9075
|
-
onclickAttribute += '; return false;'
|
|
9076
|
-
}
|
|
9077
|
-
$el.setAttribute('onclick', onclickAttribute);
|
|
9078
|
-
}
|
|
9064
|
+
// [CSP] Suppress the link's default action via a click listener instead of an
|
|
9065
|
+
// inline onclick="return false;" attribute — the inline handler tripped CSP
|
|
9066
|
+
// script-src-attr under nonce-based policies. preventDefault (NOT cancelEvent —
|
|
9067
|
+
// its stopPropagation would block the document-level delegation that fires the
|
|
9068
|
+
// AJAX request) covers direct AND child clicks while leaving the delegation intact.
|
|
9069
|
+
addListener(gina, $el, 'click', function(e) { e.preventDefault(); });
|
|
9079
9070
|
|
|
9080
9071
|
$newLink = null;
|
|
9081
9072
|
|
|
@@ -10149,9 +10140,43 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
10149
10140
|
}
|
|
10150
10141
|
}
|
|
10151
10142
|
|
|
10143
|
+
/**
|
|
10144
|
+
* #A11Y1 (slice 4) — lazily create one visually-hidden aria-live="polite" status region per
|
|
10145
|
+
* form and announce a blur-time committed error through it. A CSS :user-invalid display toggle
|
|
10146
|
+
* is not reliably announced by screen readers, and on blur the field has lost focus so its own
|
|
10147
|
+
* aria-invalid / aria-errormessage are not re-read; the polite region decouples the announcement
|
|
10148
|
+
* from visual display. Submit-time errors use focus (see onValidate), not this region.
|
|
10149
|
+
* @param {object} $form - the HTMLFormElement the region belongs to
|
|
10150
|
+
* @param {string} text - the error text to announce
|
|
10151
|
+
* @returns {object|null} the live-region element, or null when nothing was announced
|
|
10152
|
+
*/
|
|
10153
|
+
var announceA11yError = function($form, text) {
|
|
10154
|
+
if ( !$form || !text ) return null;
|
|
10155
|
+
var _fid = ( typeof($form.id) != 'undefined' && $form.id ) ? $form.id : ( $form.getAttribute('id') || 'form' );
|
|
10156
|
+
var _liveId = 'gina-aria-live-' + _fid;
|
|
10157
|
+
var _live = document.getElementById(_liveId);
|
|
10158
|
+
if ( !_live ) {
|
|
10159
|
+
_live = document.createElement('div');
|
|
10160
|
+
_live.id = _liveId;
|
|
10161
|
+
_live.setAttribute('role', 'status');
|
|
10162
|
+
_live.setAttribute('aria-live', 'polite');
|
|
10163
|
+
_live.setAttribute('aria-atomic', 'true');
|
|
10164
|
+
_live.className = 'gina-visually-hidden';
|
|
10165
|
+
_live.style.cssText = 'position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;';
|
|
10166
|
+
$form.appendChild(_live);
|
|
10167
|
+
}
|
|
10168
|
+
_live.textContent = text;
|
|
10169
|
+
return _live;
|
|
10170
|
+
};
|
|
10171
|
+
|
|
10152
10172
|
/**
|
|
10153
10173
|
* handleErrorsDisplay
|
|
10154
10174
|
* Attention: if you are going to handle errors display by hand, set data to `null` to prevent Toolbar refresh with empty data
|
|
10175
|
+
*
|
|
10176
|
+
* #A11Y1 — besides toggling `form-item-error` / `form-item-warning` and the error-message div,
|
|
10177
|
+
* this reflects each managed field's committed validity into `aria-invalid` ("true" on a
|
|
10178
|
+
* committed error, "false" when valid — mirroring the native ValidityState where the field has
|
|
10179
|
+
* native HTML constraints so it agrees with `:user-invalid`). Soft live-check warnings are not asserted.
|
|
10155
10180
|
* @param {object} $form - Target (HTMLFormElement)
|
|
10156
10181
|
* @param {object} errors
|
|
10157
10182
|
* @param {object|null} data
|
|
@@ -10282,6 +10307,14 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
10282
10307
|
|
|
10283
10308
|
if (!name) continue;
|
|
10284
10309
|
|
|
10310
|
+
// #A11Y1 (slice 2) — detect a consumer-provided aria-errormessage association. When
|
|
10311
|
+
// present, the field already references its own error element, so we must NOT inject a
|
|
10312
|
+
// competing form-item-error-message div (aria-invalid alone exposes it). Any wire we add
|
|
10313
|
+
// ourselves is marked (data-gina-aria-errormessage) so it is not mistaken for a consumer's.
|
|
10314
|
+
var _ariaErrId = $el.getAttribute('aria-errormessage');
|
|
10315
|
+
var _ginaOwnsErrMsg = ( typeof($el.dataset) != 'undefined' && typeof($el.dataset.ginaAriaErrormessage) != 'undefined' ) ? true : false;
|
|
10316
|
+
var _hasConsumerErrMsg = ( _ariaErrId && !_ginaOwnsErrMsg ) ? true : false;
|
|
10317
|
+
|
|
10285
10318
|
if (
|
|
10286
10319
|
errors
|
|
10287
10320
|
&& typeof(errors[name]) != 'undefined'
|
|
@@ -10304,6 +10337,14 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
10304
10337
|
$err.className = 'form-item-error-message';
|
|
10305
10338
|
}
|
|
10306
10339
|
|
|
10340
|
+
// #A11Y1 — reflect a committed invalid state into aria-invalid so any
|
|
10341
|
+
// aria-errormessage association on the field is exposed to assistive tech.
|
|
10342
|
+
// Soft (live-check) warnings while the field is still being edited are not
|
|
10343
|
+
// asserted — only committed errors (blur/submit) are.
|
|
10344
|
+
if ( !isWarning && $el.type != 'hidden' ) {
|
|
10345
|
+
$el.setAttribute('aria-invalid', 'true');
|
|
10346
|
+
}
|
|
10347
|
+
|
|
10307
10348
|
// injecting error messages
|
|
10308
10349
|
for (var e in errors[name]) {
|
|
10309
10350
|
|
|
@@ -10322,10 +10363,31 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
10322
10363
|
}
|
|
10323
10364
|
}
|
|
10324
10365
|
|
|
10325
|
-
|
|
10366
|
+
// #A11Y1 (slice 2) — skip the injected message div when the field already references
|
|
10367
|
+
// a consumer-provided error element; otherwise inject it and wire aria-errormessage
|
|
10368
|
+
// to it so assistive tech can resolve the message text.
|
|
10369
|
+
if ($target.type != 'hidden' && !_hasConsumerErrMsg) {
|
|
10370
|
+
if ( !$el.getAttribute('aria-errormessage') || _ginaOwnsErrMsg ) {
|
|
10371
|
+
$err.id = ('gina-errormessage-' + (id || 'form') + '-' + (name || 'field')).replace(/[^a-zA-Z0-9_-]+/g, '-');
|
|
10372
|
+
$el.setAttribute('aria-errormessage', $err.id);
|
|
10373
|
+
if ( typeof($el.dataset) != 'undefined' ) {
|
|
10374
|
+
$el.dataset.ginaAriaErrormessage = 'true';
|
|
10375
|
+
}
|
|
10376
|
+
}
|
|
10326
10377
|
insertAfter($target, $err);
|
|
10378
|
+
}
|
|
10327
10379
|
|
|
10328
|
-
|
|
10380
|
+
// #A11Y1 (slice 4) — announce a blur-time committed error through the form's polite
|
|
10381
|
+
// live region (submit-time errors use focus instead). Only on the per-field/blur path
|
|
10382
|
+
// (fieldName set) and only once focus has left the field; soft warnings are skipped.
|
|
10383
|
+
if (
|
|
10384
|
+
!isWarning
|
|
10385
|
+
&& typeof(fieldName) != 'undefined'
|
|
10386
|
+
&& $err
|
|
10387
|
+
&& $el !== document.activeElement
|
|
10388
|
+
) {
|
|
10389
|
+
announceA11yError($form, $err.textContent);
|
|
10390
|
+
}
|
|
10329
10391
|
|
|
10330
10392
|
} else if (
|
|
10331
10393
|
errors
|
|
@@ -10358,6 +10420,21 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
10358
10420
|
|
|
10359
10421
|
$parent.className = $parent.className.replace(/(\s+form\-item\-error|form\-item\-error|\s+form\-item\-warning|form\-item\-warning)/, '');
|
|
10360
10422
|
|
|
10423
|
+
// #A11Y1 — field is valid per Gina; mirror the native ValidityState (where the
|
|
10424
|
+
// field has native HTML constraints) so aria-invalid never disagrees with the
|
|
10425
|
+
// :user-invalid styling already shown. Explicit "false" is a touched-and-valid signal.
|
|
10426
|
+
if ( $el.type != 'hidden' ) {
|
|
10427
|
+
var _a11yNativeInvalid = ( $el.willValidate && $el.validity && !$el.validity.valid ) ? true : false;
|
|
10428
|
+
$el.setAttribute('aria-invalid', _a11yNativeInvalid ? 'true' : 'false');
|
|
10429
|
+
}
|
|
10430
|
+
|
|
10431
|
+
// #A11Y1 (slice 2) — the referenced div was just removed; drop the aria-errormessage
|
|
10432
|
+
// wire we own (a consumer-provided association, lacking our marker, is left intact).
|
|
10433
|
+
if ( typeof($el.dataset) != 'undefined' && typeof($el.dataset.ginaAriaErrormessage) != 'undefined' ) {
|
|
10434
|
+
$el.removeAttribute('aria-errormessage');
|
|
10435
|
+
delete $el.dataset.ginaAriaErrormessage;
|
|
10436
|
+
}
|
|
10437
|
+
|
|
10361
10438
|
} else if (
|
|
10362
10439
|
errors.count() > 0
|
|
10363
10440
|
&& typeof(errors[name]) != 'undefined'
|
|
@@ -10378,6 +10455,11 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
10378
10455
|
$err = document.createElement('div');
|
|
10379
10456
|
$err.setAttribute('class', 'form-item-error-message');
|
|
10380
10457
|
|
|
10458
|
+
// #A11Y1 (slice 2) — preserve the aria-errormessage wire we own across refresh.
|
|
10459
|
+
if ( _ginaOwnsErrMsg && _ariaErrId ) {
|
|
10460
|
+
$err.id = _ariaErrId;
|
|
10461
|
+
}
|
|
10462
|
+
|
|
10381
10463
|
// Fixed on 2025-03-09: className cleanup
|
|
10382
10464
|
if (
|
|
10383
10465
|
!isWarning
|
|
@@ -10410,9 +10492,14 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
10410
10492
|
}
|
|
10411
10493
|
}
|
|
10412
10494
|
|
|
10413
|
-
if ($err && $target.type != 'hidden') {
|
|
10495
|
+
if ($err && $target.type != 'hidden' && !_hasConsumerErrMsg) {
|
|
10414
10496
|
insertAfter($target, $err);
|
|
10415
10497
|
}
|
|
10498
|
+
|
|
10499
|
+
// #A11Y1 — the committed error persists on refresh; keep aria-invalid asserted.
|
|
10500
|
+
if ( !isWarning && $el.type != 'hidden' ) {
|
|
10501
|
+
$el.setAttribute('aria-invalid', 'true');
|
|
10502
|
+
}
|
|
10416
10503
|
}
|
|
10417
10504
|
|
|
10418
10505
|
if (
|
|
@@ -15577,6 +15664,28 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
15577
15664
|
} else if ($form) { // just in case the form is being destroyed
|
|
15578
15665
|
$form.send(result['data']);
|
|
15579
15666
|
}
|
|
15667
|
+
} else {
|
|
15668
|
+
// #A11Y1 (slice 3) — failed submit: move focus to the first invalid field so
|
|
15669
|
+
// assistive tech announces it (accessible name + aria-invalid + the
|
|
15670
|
+
// aria-errormessage text). DOM order; hidden / unfocusable fields are skipped.
|
|
15671
|
+
var _a11yErrs = result['fields'] || result['error'];
|
|
15672
|
+
if ( _a11yErrs ) {
|
|
15673
|
+
var $a11yForm = event['target'];
|
|
15674
|
+
for (var _ai = 0, _aLen = $a11yForm.length; _ai < _aLen; ++_ai) {
|
|
15675
|
+
var _aField = $a11yForm[_ai];
|
|
15676
|
+
var _aName = _aField.getAttribute('name');
|
|
15677
|
+
if (
|
|
15678
|
+
_aName
|
|
15679
|
+
&& typeof(_a11yErrs[_aName]) != 'undefined'
|
|
15680
|
+
&& ( typeof(_a11yErrs[_aName].count) != 'function' || _a11yErrs[_aName].count() > 0 )
|
|
15681
|
+
&& _aField.type != 'hidden'
|
|
15682
|
+
&& typeof(_aField.focus) == 'function'
|
|
15683
|
+
) {
|
|
15684
|
+
_aField.focus();
|
|
15685
|
+
break;
|
|
15686
|
+
}
|
|
15687
|
+
}
|
|
15688
|
+
}
|
|
15580
15689
|
}
|
|
15581
15690
|
})
|
|
15582
15691
|
}
|
|
@@ -15744,14 +15853,15 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
15744
15853
|
isSubmitType = $submit.getAttribute('data-gina-form-submit');
|
|
15745
15854
|
|
|
15746
15855
|
if ( !onclickAttribute && !isSubmitType) {
|
|
15747
|
-
|
|
15748
|
-
|
|
15749
|
-
|
|
15750
|
-
|
|
15751
|
-
|
|
15752
|
-
|
|
15753
|
-
}
|
|
15856
|
+
// [CSP] Suppress the default action via a click listener instead of an inline
|
|
15857
|
+
// onclick="return false;" attribute (tripped CSP script-src-attr under nonce
|
|
15858
|
+
// policies). A preventDefault-only listener sets event.defaultPrevented exactly
|
|
15859
|
+
// as the inline handler did, so the form-level clickProxyHandler's
|
|
15860
|
+
// `if (event.defaultPrevented) return` guard still short-circuits identically.
|
|
15861
|
+
addListener(gina, $submit, 'click', function(e) { e.preventDefault(); });
|
|
15754
15862
|
}
|
|
15863
|
+
// (an existing onclick is left untouched, as before; the dead else-if append
|
|
15864
|
+
// branch — it only mutated a local, never written back — was removed.)
|
|
15755
15865
|
}
|
|
15756
15866
|
|
|
15757
15867
|
if (!$submit['id']) {
|
|
@@ -17762,23 +17872,16 @@ define('gina/popin', [ 'require', 'lib/domain', 'lib/merge', 'utils/events' ], f
|
|
|
17762
17872
|
}
|
|
17763
17873
|
}
|
|
17764
17874
|
|
|
17765
|
-
var
|
|
17875
|
+
var evt = null;
|
|
17766
17876
|
// close events
|
|
17877
|
+
// NB.: the close element's default action (e.g. an `<a href="#">` navigation) is already
|
|
17878
|
+
// suppressed by register('close', …) below — the click listener it attaches calls
|
|
17879
|
+
// cancelEvent() (preventDefault/stopPropagation) on every click. The previous inline
|
|
17880
|
+
// onclick="return false;" injection here was redundant with that listener AND tripped
|
|
17881
|
+
// CSP script-src-attr under nonce-based policies (a nonce in script-src disables
|
|
17882
|
+
// 'unsafe-inline' for inline event-handler attributes), so it has been removed.
|
|
17767
17883
|
b = 0; len = $close.length;
|
|
17768
17884
|
for (; b < len; ++b) {
|
|
17769
|
-
if ($close[b].tagName == 'A') {
|
|
17770
|
-
onclickAttribute = $close[b].getAttribute('onclick');
|
|
17771
|
-
}
|
|
17772
|
-
|
|
17773
|
-
if ( !onclickAttribute ) {
|
|
17774
|
-
$close[b].setAttribute('onclick', 'return false;')
|
|
17775
|
-
} else if ( typeof(onclickAttribute) != 'undefined' && !/return false/.test(onclickAttribute) ) {
|
|
17776
|
-
if ( /\;$/.test(onclickAttribute) ) {
|
|
17777
|
-
onclickAttribute += 'return false;'
|
|
17778
|
-
} else {
|
|
17779
|
-
onclickAttribute += '; return false;'
|
|
17780
|
-
}
|
|
17781
|
-
}
|
|
17782
17885
|
|
|
17783
17886
|
if (!$close[b]['id']) {
|
|
17784
17887
|
|