gina 0.6.0 → 0.6.1
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 +16 -0
- package/README.md +24 -31
- package/ROADMAP.md +2 -1
- package/context7.json +43 -0
- package/framework/v0.6.1/VERSION +1 -0
- package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/js/gina.js +200 -30
- package/framework/v0.6.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js +603 -0
- package/framework/v0.6.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/index.js +15 -0
- package/framework/v0.6.1/core/connectors/duckdb/index.js +478 -0
- package/framework/v0.6.1/core/connectors/duckdb/lib/connector.js +125 -0
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/mongodb/index.js +9 -1
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/mysql/index.js +9 -1
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/postgresql/index.js +9 -1
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/scylladb/index.js +9 -1
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/sqlite/index.js +9 -1
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/sqlite/lib/connector.js +4 -6
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/sqlite/lib/job-store.js +5 -7
- package/framework/{v0.6.0 → v0.6.1}/core/connectors/sqlite/lib/session-store.js +5 -7
- package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.render-json.js +17 -1
- package/framework/{v0.6.0 → v0.6.1}/core/model/entity.js +8 -3
- package/framework/{v0.6.0 → v0.6.1}/core/model/template/index.js +1 -1
- package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/validator/src/form-validator.js +71 -4
- package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/validator/src/main.js +129 -26
- package/framework/{v0.6.0 → v0.6.1}/core/server.isaac.js +47 -1
- package/framework/{v0.6.0 → v0.6.1}/core/server.js +10 -2
- package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/add.js +1 -1
- package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/help.txt +1 -0
- package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/migrate.js +1 -1
- package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/remove.js +1 -1
- package/framework/{v0.6.0 → v0.6.1}/lib/connector-registry/src/main.js +6 -1
- package/framework/{v0.6.0 → v0.6.1}/lib/model.js +2 -2
- package/framework/v0.6.1/lib/sqlite-driver.js +217 -0
- package/framework/{v0.6.0 → v0.6.1}/lib/state.js +5 -4
- package/framework/{v0.6.0 → v0.6.1}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +15 -4
- package/package.json +5 -5
- package/schema/connectors.json +9 -4
- package/script/smoke_in_container.js +401 -8
- package/types/index.d.ts +1 -1
- package/framework/v0.6.0/VERSION +0 -1
- package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -601
- package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/AUTHORS +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/LICENSE +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/config.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/content.encoding +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/dev/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/gna.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/locales/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/locales/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/mime.types +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/model/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/router.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/server.express.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/status.codes +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/console.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/context.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/path.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/task.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/helpers/text.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/async/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/config.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/job/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/job-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/math/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/proc.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/session-store.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/shell.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/url/README.md +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/url/index.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/validator.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.0 → v0.6.1}/lib/ws-session/src/main.js +0 -0
|
@@ -230,7 +230,15 @@ function Postgresql(conn, infos) {
|
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
if (!entities[entityName]) return;
|
|
233
|
-
if (typeof entities[entityName].prototype[name] !== 'undefined')
|
|
233
|
+
if (typeof entities[entityName].prototype[name] !== 'undefined') {
|
|
234
|
+
// Own property = user code in the entity .js wins (designed intent).
|
|
235
|
+
// Inherited name = the file is silently shadowed (e.g. gina's
|
|
236
|
+
// Object.prototype count()) — warn so the skip is diagnosable (#B173).
|
|
237
|
+
if ( !Object.prototype.hasOwnProperty.call(entities[entityName].prototype, name) ) {
|
|
238
|
+
console.warn('[postgresql] skipping query method \'' + name + '\' (' + source + '): the name is inherited on the ' + entityName + ' prototype chain (EventEmitter, entity base API, or gina\'s Object.prototype helpers like count()) — calls would run the inherited member instead. Rename the file, e.g. \'' + name + 'Rows.sql\'.');
|
|
239
|
+
}
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
234
242
|
|
|
235
243
|
// ── Parse the SQL file ────────────────────────────────────────────────
|
|
236
244
|
var rawSource = fs.readFileSync(source).toString();
|
|
@@ -157,7 +157,15 @@ function Scylladb(conn, infos) {
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
if (!entities[entityName]) return;
|
|
160
|
-
if (typeof entities[entityName].prototype[name] !== 'undefined')
|
|
160
|
+
if (typeof entities[entityName].prototype[name] !== 'undefined') {
|
|
161
|
+
// Own property = user code in the entity .js wins (designed intent).
|
|
162
|
+
// Inherited name = the file is silently shadowed (e.g. gina's
|
|
163
|
+
// Object.prototype count()) — warn so the skip is diagnosable (#B173).
|
|
164
|
+
if ( !Object.prototype.hasOwnProperty.call(entities[entityName].prototype, name) ) {
|
|
165
|
+
console.warn('[scylladb] skipping query method \'' + name + '\' (' + source + '): the name is inherited on the ' + entityName + ' prototype chain (EventEmitter, entity base API, or gina\'s Object.prototype helpers like count()) — calls would run the inherited member instead. Rename the file, e.g. \'' + name + 'Rows.sql\'.');
|
|
166
|
+
}
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
161
169
|
|
|
162
170
|
var rawSource = fs.readFileSync(source).toString();
|
|
163
171
|
|
|
@@ -248,7 +248,15 @@ function Sqlite(conn, infos) {
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
if (!entities[entityName]) return; // entity not loaded — skip
|
|
251
|
-
if (typeof entities[entityName].prototype[name] !== 'undefined')
|
|
251
|
+
if (typeof entities[entityName].prototype[name] !== 'undefined') {
|
|
252
|
+
// Own property = user code in the entity .js wins (designed intent).
|
|
253
|
+
// Inherited name = the file is silently shadowed (e.g. gina's
|
|
254
|
+
// Object.prototype count()) — warn so the skip is diagnosable (#B173).
|
|
255
|
+
if ( !Object.prototype.hasOwnProperty.call(entities[entityName].prototype, name) ) {
|
|
256
|
+
console.warn('[sqlite] skipping query method \'' + name + '\' (' + source + '): the name is inherited on the ' + entityName + ' prototype chain (EventEmitter, entity base API, or gina\'s Object.prototype helpers like count()) — calls would run the inherited member instead. Rename the file, e.g. \'' + name + 'Rows.sql\'.');
|
|
257
|
+
}
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
252
260
|
|
|
253
261
|
// ── Parse the SQL file ────────────────────────────────────────────────
|
|
254
262
|
var rawSource = fs.readFileSync(source).toString();
|
|
@@ -43,15 +43,13 @@ function SqliteConnector(conf) {
|
|
|
43
43
|
var _err = null;
|
|
44
44
|
|
|
45
45
|
var init = function(conf) {
|
|
46
|
+
// Resolve the SQLite driver through the shared seam — node:sqlite on
|
|
47
|
+
// Node (>= 22.5.0), bun:sqlite behind an adapter on Bun. See lib/sqlite-driver.js.
|
|
46
48
|
var DatabaseSync;
|
|
47
49
|
try {
|
|
48
|
-
DatabaseSync = require('
|
|
50
|
+
DatabaseSync = require('./../../../../lib/sqlite-driver').getDatabaseSync();
|
|
49
51
|
} catch (e) {
|
|
50
|
-
_err = new Error(
|
|
51
|
-
'[SqliteConnector] node:sqlite requires Node.js >= 22.5.0. '
|
|
52
|
-
+ 'Current: ' + process.version + '\n'
|
|
53
|
-
+ e.message
|
|
54
|
-
);
|
|
52
|
+
_err = new Error('[SqliteConnector] ' + e.message);
|
|
55
53
|
return;
|
|
56
54
|
}
|
|
57
55
|
|
|
@@ -81,16 +81,14 @@ function noop() {}
|
|
|
81
81
|
module.exports = function SqliteJobStore(connConf, bundle) {
|
|
82
82
|
connConf = connConf || {};
|
|
83
83
|
|
|
84
|
-
//
|
|
84
|
+
// Resolve the SQLite driver through the shared seam — node:sqlite on
|
|
85
|
+
// Node (built-in since 22.5.0, zero npm deps), bun:sqlite behind an
|
|
86
|
+
// adapter on Bun. See lib/sqlite-driver.js.
|
|
85
87
|
var DatabaseSync;
|
|
86
88
|
try {
|
|
87
|
-
DatabaseSync = require('
|
|
89
|
+
DatabaseSync = require('./../../../../lib/sqlite-driver').getDatabaseSync();
|
|
88
90
|
} catch (e) {
|
|
89
|
-
throw new Error(
|
|
90
|
-
'[SqliteJobStore] node:sqlite requires Node.js >= 22.5.0. '
|
|
91
|
-
+ 'Current: ' + process.version + '\n'
|
|
92
|
-
+ e.message
|
|
93
|
-
);
|
|
91
|
+
throw new Error('[SqliteJobStore] ' + e.message);
|
|
94
92
|
}
|
|
95
93
|
|
|
96
94
|
// Resolve DB path: connectors.json `file` > default per-bundle file. The
|
|
@@ -91,16 +91,14 @@ module.exports = function(session, bundle) {
|
|
|
91
91
|
var defaultDbPath = _(getPath('gina').home + '/sessions-' + bundle + '.db', true);
|
|
92
92
|
var dbPath = options.database || connConf.database || defaultDbPath;
|
|
93
93
|
|
|
94
|
-
//
|
|
94
|
+
// Resolve the SQLite driver through the shared seam — node:sqlite on
|
|
95
|
+
// Node (built-in since 22.5.0, zero npm deps), bun:sqlite behind an
|
|
96
|
+
// adapter on Bun. See lib/sqlite-driver.js.
|
|
95
97
|
var DatabaseSync;
|
|
96
98
|
try {
|
|
97
|
-
DatabaseSync = require('
|
|
99
|
+
DatabaseSync = require('./../../../../lib/sqlite-driver').getDatabaseSync();
|
|
98
100
|
} catch(e) {
|
|
99
|
-
throw new Error(
|
|
100
|
-
'[SqliteStore] node:sqlite requires Node.js >= 22.5.0. '
|
|
101
|
-
+ 'Current: ' + process.version + '\n'
|
|
102
|
-
+ e.message
|
|
103
|
-
);
|
|
101
|
+
throw new Error('[SqliteStore] ' + e.message);
|
|
104
102
|
}
|
|
105
103
|
|
|
106
104
|
this.db = new DatabaseSync(dbPath);
|
|
@@ -197,8 +197,17 @@ module.exports = function renderJSON(jsonObj, deps) {
|
|
|
197
197
|
|
|
198
198
|
|
|
199
199
|
//catching errors
|
|
200
|
+
// #B172 rider — the errno half carries the same statusCodes[...] guard as
|
|
201
|
+
// its render-swig/render-v1 siblings: an errno-only payload (no usable
|
|
202
|
+
// `status`) used to enter the branch and assign statusCode = undefined,
|
|
203
|
+
// which the HTTP/1.1 response.end() below rejects (the empty catch then
|
|
204
|
+
// swallows it — the response was never sent) and the HTTP/2 statusCode
|
|
205
|
+
// setter throws on. Guarded, such a payload is served as a normal 200
|
|
206
|
+
// with the payload in the body — measured wire-identical to dropping
|
|
207
|
+
// the errno clause on every input.
|
|
200
208
|
if (
|
|
201
209
|
typeof(jsonObj.errno) != 'undefined' && response.statusCode == 200
|
|
210
|
+
&& typeof(local.options.conf.server.coreConfiguration.statusCodes[jsonObj.status]) != 'undefined'
|
|
202
211
|
||
|
|
203
212
|
typeof(jsonObj.status) != 'undefined' && jsonObj.status != 200
|
|
204
213
|
&& typeof(local.options.conf.server.coreConfiguration.statusCodes[jsonObj.status]) != 'undefined'
|
|
@@ -519,7 +528,14 @@ module.exports = function renderJSON(jsonObj, deps) {
|
|
|
519
528
|
if (!stream.headersSent) {
|
|
520
529
|
var _streamHeaders = {
|
|
521
530
|
'content-type': local.options.conf.server.coreConfiguration.mime['json'] + '; charset='+ local.options.conf.encoding,
|
|
522
|
-
|
|
531
|
+
// #B172 — honour the status resolved above (jsonObj.status →
|
|
532
|
+
// response.statusCode). This frame is built for the raw
|
|
533
|
+
// stream.respond(), which bypasses the compat layer, and the
|
|
534
|
+
// pending-header merge below cannot supply `:status`
|
|
535
|
+
// (setHeader(':status', …) throws ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED)
|
|
536
|
+
// — so a literal here silently served every JSON error as 200.
|
|
537
|
+
// Matches the HEAD branch above and the swig/nunjucks delegates.
|
|
538
|
+
':status': response.statusCode || 200
|
|
523
539
|
};
|
|
524
540
|
if (_cc) _streamHeaders['cache-control'] = _cc;
|
|
525
541
|
// Merge response headers pre-set earlier in the pipeline (e.g. CORS headers
|
|
@@ -451,9 +451,14 @@ function EntitySuper(conn, caller, injected) {
|
|
|
451
451
|
}
|
|
452
452
|
|
|
453
453
|
var setListener = function() {
|
|
454
|
-
arguments
|
|
455
|
-
|
|
456
|
-
|
|
454
|
+
// Bun/JSC rejects assigning to `arguments` outright ("Invalid assignment
|
|
455
|
+
// target"), where V8 permits it in sloppy mode. `_args` carries what the
|
|
456
|
+
// reassignment used to put in `arguments` — but ONLY this scope's own reads
|
|
457
|
+
// are rewritten: the `arguments` inside the nested `.on(evt, function(){...})`
|
|
458
|
+
// callbacks below refer to each CALLBACK's own arguments and must stay as-is.
|
|
459
|
+
var _args = arguments[0];
|
|
460
|
+
|
|
461
|
+
var args = Array.prototype.slice.call(_args);
|
|
457
462
|
var trigger = args.splice(0, 1)[0];
|
|
458
463
|
|
|
459
464
|
if ( !/\#/.test(trigger) ) {
|
|
@@ -75,7 +75,7 @@ Model = function(namespace){
|
|
|
75
75
|
//console.log("CONF READY ", model, conf.path/** conf*/);
|
|
76
76
|
//TODO - More tries & catches...
|
|
77
77
|
//Getting Entities Manager.
|
|
78
|
-
var entitiesManager =
|
|
78
|
+
var entitiesManager = require(conf.path)();
|
|
79
79
|
//var Entities = entitiesManager[model];
|
|
80
80
|
|
|
81
81
|
//For now, I just need the F..ing entity name.
|
|
@@ -166,6 +166,42 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
166
166
|
* @type {Object.<string, boolean>}
|
|
167
167
|
*/
|
|
168
168
|
var _labelWarnings = {};
|
|
169
|
+
/**
|
|
170
|
+
* #B178 — errors-key / label-key alias fill for app-supplied labels.
|
|
171
|
+
*
|
|
172
|
+
* Four rule families consult a SPECIFIC label key while writing the error
|
|
173
|
+
* under a GENERIC one (the NaN branch of the float coercion, and the
|
|
174
|
+
* min/max variants of the three Length families), so the key an app can
|
|
175
|
+
* OBSERVE in a field's `errors` object is not the key the catalog is
|
|
176
|
+
* consulted under — translating the observable key was a silent no-op.
|
|
177
|
+
* This copies each app-supplied generic onto the specifics the app did
|
|
178
|
+
* not supply itself. English defaults are never touched here; an
|
|
179
|
+
* app-supplied specific key always wins over its generic.
|
|
180
|
+
* @inner
|
|
181
|
+
* @param {object} labels - app-supplied label map (extended in place)
|
|
182
|
+
* @returns {object} the same map, alias keys filled
|
|
183
|
+
*/
|
|
184
|
+
var _labelAliasFill = function(labels) {
|
|
185
|
+
// consulted (specific) key <- supplied (observable/generic) key
|
|
186
|
+
var aliasMap = {
|
|
187
|
+
'toFloatNAN' : 'toFloat',
|
|
188
|
+
'isNumberMinLength' : 'isNumberLength',
|
|
189
|
+
'isNumberMaxLength' : 'isNumberLength',
|
|
190
|
+
'isIntegerMinLength' : 'isIntegerLength',
|
|
191
|
+
'isIntegerMaxLength' : 'isIntegerLength',
|
|
192
|
+
'isStringMinLength' : 'isStringLength',
|
|
193
|
+
'isStringMaxLength' : 'isStringLength'
|
|
194
|
+
};
|
|
195
|
+
for (var specific in aliasMap) {
|
|
196
|
+
if (
|
|
197
|
+
typeof(labels[specific]) == 'undefined'
|
|
198
|
+
&& typeof(labels[aliasMap[specific]]) != 'undefined'
|
|
199
|
+
) {
|
|
200
|
+
labels[specific] = labels[aliasMap[specific]];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return labels;
|
|
204
|
+
};
|
|
169
205
|
local.errorLabels = _defaultErrorLabels;
|
|
170
206
|
// #i18n (server) — resolve built-in rule labels from the bundle catalog's
|
|
171
207
|
// `_validator.<rule>` namespace for the negotiated `culture`. Mirrors the client
|
|
@@ -184,7 +220,11 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
184
220
|
if (_vFound && typeof(_vFound) === 'object') { _vNode = _vFound; break; }
|
|
185
221
|
}
|
|
186
222
|
}
|
|
187
|
-
if (_vNode) {
|
|
223
|
+
if (_vNode) {
|
|
224
|
+
// #B178 — fill consulted-key aliases from the app's observable keys first
|
|
225
|
+
_vNode = _labelAliasFill(JSON.clone(_vNode));
|
|
226
|
+
local.errorLabels = merge(JSON.clone(_vNode), _defaultErrorLabels);
|
|
227
|
+
}
|
|
188
228
|
}
|
|
189
229
|
}
|
|
190
230
|
// #i18n (client) — overlay built-in rule labels for the negotiated culture.
|
|
@@ -217,9 +257,12 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
217
257
|
}
|
|
218
258
|
// apply lowest-precedence layer first, then let each higher layer win per key
|
|
219
259
|
if (_catalogLabels) {
|
|
260
|
+
// #B178 — alias fill on a copy, so the whispered config object is never mutated
|
|
261
|
+
_catalogLabels = _labelAliasFill(JSON.clone(_catalogLabels));
|
|
220
262
|
local.errorLabels = merge(JSON.clone(_catalogLabels), local.errorLabels);
|
|
221
263
|
}
|
|
222
264
|
if (_cultureLabels) {
|
|
265
|
+
_cultureLabels = _labelAliasFill(JSON.clone(_cultureLabels));
|
|
223
266
|
local.errorLabels = merge(JSON.clone(_cultureLabels), local.errorLabels);
|
|
224
267
|
}
|
|
225
268
|
}
|
|
@@ -1265,7 +1308,9 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
1265
1308
|
}
|
|
1266
1309
|
|
|
1267
1310
|
if (!isValid) {
|
|
1268
|
-
|
|
1311
|
+
// #B178 — numbered aliases (is1, is2, ...) have no per-alias default
|
|
1312
|
+
// label: fall back to the shared base label instead of an empty message
|
|
1313
|
+
errors[alias] = replace(this.error || errorMessage || local.errorLabels[alias] || local.errorLabels['is'], this, alias);
|
|
1269
1314
|
if ( typeof(errorStack) != 'undefined' )
|
|
1270
1315
|
errors['stack'] = errorStack;
|
|
1271
1316
|
}
|
|
@@ -2182,8 +2227,13 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
2182
2227
|
try {
|
|
2183
2228
|
for (let v in gina.forms.validators) {
|
|
2184
2229
|
filename = '/validators/'+ v + '/main.js';
|
|
2185
|
-
// setting default local error
|
|
2186
|
-
|
|
2230
|
+
// setting default local error — #B178: only when the app has not
|
|
2231
|
+
// already supplied one (catalog or setErrorLabels); the former
|
|
2232
|
+
// unconditional assignment clobbered app translations for every
|
|
2233
|
+
// user-validator key
|
|
2234
|
+
if ( typeof(local.errorLabels[v]) == 'undefined' ) {
|
|
2235
|
+
local.errorLabels[v] = 'Condition not satisfied';
|
|
2236
|
+
}
|
|
2187
2237
|
// converting Buffer to string
|
|
2188
2238
|
if ( isGFFCtx ) {
|
|
2189
2239
|
//userValidatorError = String.fromCharCode.apply(null, new Uint16Array(gina.forms.validators[v].data));
|
|
@@ -2404,8 +2454,25 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
2404
2454
|
return target
|
|
2405
2455
|
}
|
|
2406
2456
|
|
|
2457
|
+
/**
|
|
2458
|
+
* Override error labels per rule key — an app-supplied key wins over the
|
|
2459
|
+
* culture catalog and the English defaults for this validator instance.
|
|
2460
|
+
*
|
|
2461
|
+
* #B178 — the supplied map is alias-filled first, so translating an
|
|
2462
|
+
* OBSERVABLE errors key (e.g. the float coercion's key, or a Length
|
|
2463
|
+
* family's generic key) also covers the specific label keys the engine
|
|
2464
|
+
* actually consults (its NaN variant, the min/max variants). A supplied
|
|
2465
|
+
* specific key still wins over its generic. Note the passed object is
|
|
2466
|
+
* extended in place (it already was, via the merge).
|
|
2467
|
+
*
|
|
2468
|
+
* @param {Object.<string, string>} errorLabels - rule key to label text
|
|
2469
|
+
* @returns {void}
|
|
2470
|
+
* @example
|
|
2471
|
+
* validator.setErrorLabels({ toFloat: 'Doit etre un nombre valide' });
|
|
2472
|
+
*/
|
|
2407
2473
|
self['setErrorLabels'] = function (errorLabels) {
|
|
2408
2474
|
if ( typeof(errorLabels) != 'undefined') {
|
|
2475
|
+
_labelAliasFill(errorLabels);
|
|
2409
2476
|
local.errorLabels = merge(errorLabels, local.errorLabels)
|
|
2410
2477
|
}
|
|
2411
2478
|
}
|
|
@@ -163,7 +163,10 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
163
163
|
/**
|
|
164
164
|
* XML Request - isGFFCtx only
|
|
165
165
|
* */
|
|
166
|
-
|
|
166
|
+
// #B175: no module-scope XHR anymore — send() creates a fresh LOCAL XHR
|
|
167
|
+
// per submit (see send()). The shared instance was the stale-handler
|
|
168
|
+
// replay vector: re-open()ing it fired the previous submit's handler.
|
|
169
|
+
// was: var xhr = null;
|
|
167
170
|
var xhrOptions = {
|
|
168
171
|
'url' : '',
|
|
169
172
|
'method' : 'GET',
|
|
@@ -621,6 +624,29 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
621
624
|
return _live;
|
|
622
625
|
};
|
|
623
626
|
|
|
627
|
+
/**
|
|
628
|
+
* #B178 — announcement text for a field's error container.
|
|
629
|
+
* The container renders one `<p>` per rule message; visually they stack as
|
|
630
|
+
* blocks, but `textContent` concatenates them with NO separator, so an
|
|
631
|
+
* aria-live announcement read multiple messages as one run-on string.
|
|
632
|
+
* Joins the per-message texts with '. ' instead; falls back to the raw
|
|
633
|
+
* `textContent` when the container has no `<p>` children.
|
|
634
|
+
* @inner
|
|
635
|
+
* @param {object} $err - the error-message container element
|
|
636
|
+
* @returns {string} announcement text
|
|
637
|
+
*/
|
|
638
|
+
var getA11yAnnounceText = function($err) {
|
|
639
|
+
var $msgs = $err.getElementsByTagName('p');
|
|
640
|
+
if ( !$msgs.length ) {
|
|
641
|
+
return $err.textContent;
|
|
642
|
+
}
|
|
643
|
+
var parts = [];
|
|
644
|
+
for (var m = 0, mLen = $msgs.length; m < mLen; ++m) {
|
|
645
|
+
parts.push($msgs[m].textContent);
|
|
646
|
+
}
|
|
647
|
+
return parts.join('. ');
|
|
648
|
+
};
|
|
649
|
+
|
|
624
650
|
/**
|
|
625
651
|
* handleErrorsDisplay
|
|
626
652
|
* Attention: if you are going to handle errors display by hand, set data to `null` to prevent Toolbar refresh with empty data
|
|
@@ -798,9 +824,14 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
798
824
|
}
|
|
799
825
|
|
|
800
826
|
// injecting error messages
|
|
827
|
+
// #B178 — two rules can carry byte-identical message text (e.g. a
|
|
828
|
+
// coercion paired with its validator); render each distinct text once.
|
|
829
|
+
// Dev bookkeeping below still records every key.
|
|
830
|
+
var _renderedMsgs = {};
|
|
801
831
|
for (var e in errors[name]) {
|
|
802
832
|
|
|
803
|
-
if (e != 'stack') { // ignore stack for display
|
|
833
|
+
if (e != 'stack' && typeof(_renderedMsgs[ errors[name][e] ]) == 'undefined') { // ignore stack for display
|
|
834
|
+
_renderedMsgs[ errors[name][e] ] = true;
|
|
804
835
|
$msg = document.createElement('p');
|
|
805
836
|
$msg.appendChild( document.createTextNode(errors[name][e]) );
|
|
806
837
|
$err.appendChild($msg);
|
|
@@ -838,7 +869,7 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
838
869
|
&& $err
|
|
839
870
|
&& $el !== document.activeElement
|
|
840
871
|
) {
|
|
841
|
-
announceA11yError($form, $err
|
|
872
|
+
announceA11yError($form, getA11yAnnounceText($err));
|
|
842
873
|
}
|
|
843
874
|
|
|
844
875
|
} else if (
|
|
@@ -931,8 +962,11 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
931
962
|
// rule: errorMsg
|
|
932
963
|
// }
|
|
933
964
|
// }
|
|
965
|
+
// #B178 — distinct-text dedup, parity with the first-error branch
|
|
966
|
+
var _renderedMsgs = {};
|
|
934
967
|
for (var e in errors[name]) {
|
|
935
|
-
if (e != 'stack') { // ignore stack for display (parity with the first-error branch, #B89)
|
|
968
|
+
if (e != 'stack' && typeof(_renderedMsgs[ errors[name][e] ]) == 'undefined') { // ignore stack for display (parity with the first-error branch, #B89)
|
|
969
|
+
_renderedMsgs[ errors[name][e] ] = true;
|
|
936
970
|
$msg = document.createElement('p');
|
|
937
971
|
$msg.appendChild( document.createTextNode(errors[name][e]) );
|
|
938
972
|
$err.appendChild($msg);
|
|
@@ -973,7 +1007,7 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
973
1007
|
&& $err
|
|
974
1008
|
&& $el !== document.activeElement
|
|
975
1009
|
) {
|
|
976
|
-
announceA11yError($form, $err
|
|
1010
|
+
announceA11yError($form, getA11yAnnounceText($err));
|
|
977
1011
|
}
|
|
978
1012
|
}
|
|
979
1013
|
|
|
@@ -1330,9 +1364,22 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
1330
1364
|
options.method = method;
|
|
1331
1365
|
options.url = url;
|
|
1332
1366
|
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1367
|
+
// #B175: one XHR per send. The module-scope XHR (created once at
|
|
1368
|
+
// validator init) was reused for every submit, and re-open()ing a
|
|
1369
|
+
// completed XHR synchronously replays the PREVIOUS submit's
|
|
1370
|
+
// still-assigned `onreadystatechange` handler (readyState 4 → 1):
|
|
1371
|
+
// that stale closure re-disabled the PREVIOUS form's submit trigger
|
|
1372
|
+
// and re-stamped its `data-gina-form-loading`, with no release path
|
|
1373
|
+
// (its readyState-4 release never comes — the handler is replaced
|
|
1374
|
+
// right below). A fresh LOCAL XHR per send makes handler, state and
|
|
1375
|
+
// lifecycle per-submit; nested handlers close over this local, never
|
|
1376
|
+
// the module var (the file-removal path already does exactly this
|
|
1377
|
+
// with `let xhr = setupXhr(...)`).
|
|
1378
|
+
// was:
|
|
1379
|
+
// if (!xhr) {
|
|
1380
|
+
// xhr = setupXhr(options);
|
|
1381
|
+
// }
|
|
1382
|
+
var xhr = setupXhr();
|
|
1336
1383
|
|
|
1337
1384
|
// to upload, use `multipart/form-data` for `enctype`
|
|
1338
1385
|
var enctype = $target.getAttribute('enctype') || options.headers['Content-Type'];
|
|
@@ -1395,6 +1442,26 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
1395
1442
|
}
|
|
1396
1443
|
|
|
1397
1444
|
if (xhr) {
|
|
1445
|
+
// #B175 fail-safe release: `loadend` fires on success, error,
|
|
1446
|
+
// timeout and abort alike — the lock armed below (submit trigger
|
|
1447
|
+
// disabled + `data-gina-form-loading`) must never outlive its
|
|
1448
|
+
// request. Idempotent with the readyState-4 release; one listener
|
|
1449
|
+
// per XHR (fresh per send), so nothing accumulates.
|
|
1450
|
+
if ( typeof(xhr.addEventListener) == 'function' ) {
|
|
1451
|
+
xhr.addEventListener('loadend', function onSendSettled() {
|
|
1452
|
+
$form.isSending = false;
|
|
1453
|
+
$form.sent = false;
|
|
1454
|
+
if ($submitTrigger) {
|
|
1455
|
+
// For A tag: aria-disabled=true
|
|
1456
|
+
if ( /^A$/i.test($submitTrigger.tagName) ) {
|
|
1457
|
+
$submitTrigger.removeAttribute('aria-disabled');
|
|
1458
|
+
} else {
|
|
1459
|
+
$submitTrigger.removeAttribute('disabled');
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
$form.target.removeAttribute('data-gina-form-loading');
|
|
1463
|
+
});
|
|
1464
|
+
}
|
|
1398
1465
|
// catching ready state cb
|
|
1399
1466
|
// Data loading ...
|
|
1400
1467
|
if ( /^(1|3)$/.test(xhr.readyState) ) {
|
|
@@ -1411,7 +1478,13 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
1411
1478
|
//handleXhrResponse(xhr, $target, id, $form, hFormIsRequired);
|
|
1412
1479
|
xhr.onreadystatechange = function onValidationCallback(event) {
|
|
1413
1480
|
$form.isSubmitting = false;
|
|
1414
|
-
|
|
1481
|
+
// #B175: `isSending` is no longer cleared here — this handler
|
|
1482
|
+
// first fires at readyState 1 (synchronously at open()), so an
|
|
1483
|
+
// early clear made the flag false for almost the whole request
|
|
1484
|
+
// while its name promises "a request is in flight". It now
|
|
1485
|
+
// spans send() → settled: cleared in the readyState-4 release
|
|
1486
|
+
// below and in the `loadend` fail-safe above.
|
|
1487
|
+
// was: $form.isSending = false;
|
|
1415
1488
|
|
|
1416
1489
|
// limit send trigger to 1 sec to prevent from double clicks
|
|
1417
1490
|
// setTimeout( function onSent() {
|
|
@@ -1445,6 +1518,7 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
1445
1518
|
if (xhr.readyState == 4) {
|
|
1446
1519
|
|
|
1447
1520
|
$form.sent = false;
|
|
1521
|
+
$form.isSending = false; // #B175 — see the note at the handler top
|
|
1448
1522
|
if ($submitTrigger) {
|
|
1449
1523
|
// For A tag: aria-disabled=true
|
|
1450
1524
|
if ( /^A$/i.test($submitTrigger.tagName) ) {
|
|
@@ -2048,7 +2122,11 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
2048
2122
|
|
|
2049
2123
|
$form.eventData.ontimeout = result;
|
|
2050
2124
|
|
|
2051
|
-
|
|
2125
|
+
// #B175: remove the attribute — `setAttribute(..., false)`
|
|
2126
|
+
// wrote the string "false", which is attribute-PRESENT and
|
|
2127
|
+
// truthy for any presence or non-empty-string check.
|
|
2128
|
+
// was: $form.target.setAttribute('data-gina-form-loading', false);
|
|
2129
|
+
$form.target.removeAttribute('data-gina-form-loading');
|
|
2052
2130
|
|
|
2053
2131
|
// intercept upload
|
|
2054
2132
|
if ( /^gina\-upload/i.test(id) ) {
|
|
@@ -3624,19 +3702,24 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
3624
3702
|
}
|
|
3625
3703
|
|
|
3626
3704
|
|
|
3627
|
-
//
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3705
|
+
// #B175: no init-time XHR — send() creates a fresh local XHR
|
|
3706
|
+
// per submit (setupXhr() carries the same browser fallbacks).
|
|
3707
|
+
// This block was the source of the shared instance every
|
|
3708
|
+
// submit then reused.
|
|
3709
|
+
// was:
|
|
3710
|
+
// // setting up AJAX
|
|
3711
|
+
// if (window.XMLHttpRequest) { // Mozilla, Safari, ...
|
|
3712
|
+
// xhr = new XMLHttpRequest();
|
|
3713
|
+
// } else if (window.ActiveXObject) { // IE
|
|
3714
|
+
// try {
|
|
3715
|
+
// xhr = new ActiveXObject("Msxml2.XMLHTTP");
|
|
3716
|
+
// } catch (e) {
|
|
3717
|
+
// try {
|
|
3718
|
+
// xhr = new ActiveXObject("Microsoft.XMLHTTP");
|
|
3719
|
+
// }
|
|
3720
|
+
// catch (e) {}
|
|
3721
|
+
// }
|
|
3722
|
+
// }
|
|
3640
3723
|
|
|
3641
3724
|
|
|
3642
3725
|
|
|
@@ -6168,8 +6251,19 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
6168
6251
|
var updateSelect = function($el, $form) {
|
|
6169
6252
|
$el.setAttribute('data-value', $el.value);
|
|
6170
6253
|
// If Live check enabled, proceed to silent validation
|
|
6254
|
+
// #B176: the `&&` used to sit INSIDE test() — an explicit
|
|
6255
|
+
// `data-gina-form-live-check-enabled="false"` (a truthy string)
|
|
6256
|
+
// short-circuited to the rules-count boolean, which stringifies
|
|
6257
|
+
// to "true" and matched, so THIS gate ignored the opt-out.
|
|
6258
|
+
// Scope (measured at the fix's parent): only this gate and the
|
|
6259
|
+
// bindForm silent-validation gate were defective. The three
|
|
6260
|
+
// registerForLiveChecking sites already tested the attribute
|
|
6261
|
+
// alone, so an opted-out form never got text as-you-type — the
|
|
6262
|
+
// pre-fix behaviour was an incoherent middle, not a wholesale
|
|
6263
|
+
// ignore. Do not restate this as "the opt-out did nothing".
|
|
6264
|
+
// was: /^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled && $form.rules.count() > 0)
|
|
6171
6265
|
if (
|
|
6172
|
-
/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled && $form.rules.count() > 0
|
|
6266
|
+
/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) && $form.rules.count() > 0
|
|
6173
6267
|
// && typeof($form.isBeingReseted) == 'undefined'
|
|
6174
6268
|
) {
|
|
6175
6269
|
var localField = {}, $localField = {}, $localForm = null;
|
|
@@ -7471,7 +7565,16 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
7471
7565
|
|
|
7472
7566
|
instance.$forms[_id]['binded'] = true;
|
|
7473
7567
|
// If Live check enabled, proceed to silent validation
|
|
7474
|
-
|
|
7568
|
+
// #B176: same inside-test() `&&` defect as the change-handler gate —
|
|
7569
|
+
// an explicit "false" opt-out still ran THIS bind-time silent
|
|
7570
|
+
// validation pass (it did NOT enable text as-you-type; the three
|
|
7571
|
+
// registerForLiveChecking sites were already strict). Note this gate
|
|
7572
|
+
// also swallowed the `else if` below, which exists precisely to serve
|
|
7573
|
+
// the opted-out case: the trigger still ended enabled either way,
|
|
7574
|
+
// because updateSubmitTriggerState forces its show branch when
|
|
7575
|
+
// live-check is off. See the scope note at the sibling site.
|
|
7576
|
+
// was: if ( /^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled && $form.rules.count() > 0) ) {
|
|
7577
|
+
if ( /^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) && $form.rules.count() > 0 ) {
|
|
7475
7578
|
console.debug('silent validation mode on');
|
|
7476
7579
|
var validationInfo = getFormValidationInfos($form.target, $form.rules);
|
|
7477
7580
|
var fields = validationInfo.fields;
|
|
@@ -7504,7 +7607,7 @@ function ValidatorPlugin(rules, data, formId, culture) {
|
|
|
7504
7607
|
|
|
7505
7608
|
var updateSubmitTriggerState = function($formInstanceOrTarget, isFormValid) {
|
|
7506
7609
|
//console.debug('submitTrigger[isFormValid='+ isFormValid +']: ', $formInstance.submitTrigger)
|
|
7507
|
-
$formInstance = null;
|
|
7610
|
+
var $formInstance = null; // #B176: was an implicit global (undeclared assignment)
|
|
7508
7611
|
if ( $formInstanceOrTarget instanceof HTMLFormElement ) { // is target DOMobject
|
|
7509
7612
|
var id = $formInstanceOrTarget.getAttribute('id');
|
|
7510
7613
|
$formInstance = instance.$forms[id];
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
const fs = require('fs');
|
|
6
6
|
const crypto = require('crypto');
|
|
7
|
+
const nodePath = require('path'); // #B179: used for path-traversal boundary enforcement
|
|
7
8
|
const { execSync, exec } = require('child_process');
|
|
8
9
|
const {EventEmitter} = require('events');
|
|
9
10
|
// #B10 fix: engine.io is only needed when options.ioServer is configured (WebSocket support).
|
|
@@ -163,6 +164,43 @@ function _readInstrumentBody(req, cb) {
|
|
|
163
164
|
req.on('error', function(e) { _finish(e); });
|
|
164
165
|
}
|
|
165
166
|
|
|
167
|
+
/**
|
|
168
|
+
* Confines a resolved filename to its intended base directory, rejecting
|
|
169
|
+
* path-traversal escapes (`../`) that would otherwise canonicalise outside it.
|
|
170
|
+
* Both paths are normalised with `path.resolve`, then a separator-aware
|
|
171
|
+
* containment check is applied so a base of `/srv/app/lib` cannot be bypassed
|
|
172
|
+
* by a sibling such as `/srv/app/lib-secrets`. Purely lexical (no symlink
|
|
173
|
+
* following).
|
|
174
|
+
*
|
|
175
|
+
* Engine-local mirror of the canonical `confineToBase` in `core/server.js`
|
|
176
|
+
* (declared inside `Server()`, so it is not reachable from this module). Keep
|
|
177
|
+
* the two behaviourally identical — `test/core/server-static-traversal.test.js`
|
|
178
|
+
* extracts the server.js copy by its declaration string and drives it directly,
|
|
179
|
+
* and `test/core/inspector-traversal.test.js` does the same for this one.
|
|
180
|
+
*
|
|
181
|
+
* @inner
|
|
182
|
+
* @private
|
|
183
|
+
* @memberof module:gina/core/server.isaac
|
|
184
|
+
* @param {string} filename - The concatenated candidate filesystem path
|
|
185
|
+
* @param {string} base - The intended base directory
|
|
186
|
+
* @returns {string|null} The canonical in-base path, or `null` when it escapes `base`
|
|
187
|
+
* @example
|
|
188
|
+
* confineToBase('/srv/app/js/lib/../../../config/secret.json', '/srv/app/js/lib'); // → null
|
|
189
|
+
* confineToBase('/srv/app/js/lib/app.js', '/srv/app/js/lib'); // → '/srv/app/js/lib/app.js'
|
|
190
|
+
*/
|
|
191
|
+
var confineToBase = function(filename, base) {
|
|
192
|
+
if ( typeof(filename) != 'string' || typeof(base) != 'string' || base.length === 0 ) {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
var _resolvedBase = nodePath.resolve(base);
|
|
196
|
+
var _resolvedFile = nodePath.resolve(filename);
|
|
197
|
+
// separator-aware containment: identical to base, or a proper child of it
|
|
198
|
+
if ( _resolvedFile === _resolvedBase || _resolvedFile.indexOf(_resolvedBase + nodePath.sep) === 0 ) {
|
|
199
|
+
return _resolvedFile;
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
|
|
166
204
|
/**
|
|
167
205
|
* Reloads all core and lib modules from disk by replacing their require.cache
|
|
168
206
|
* entries with fresh exports. Excludes gna.js itself. Also refreshes the
|
|
@@ -1624,7 +1662,15 @@ function ServerEngineClass(options) {
|
|
|
1624
1662
|
var _inspExt = _inspPath.split('.').pop();
|
|
1625
1663
|
var _inspFile = _(_inspBase + '/' + _inspPath, true);
|
|
1626
1664
|
|
|
1627
|
-
|
|
1665
|
+
// #B179 — reject any path that canonicalises outside the Inspector
|
|
1666
|
+
// asset root, BEFORE any fs access. `_inspPath` is taken straight
|
|
1667
|
+
// off `request.url` with no `..` handling, and `_()` NORMALISES
|
|
1668
|
+
// traversal (helpers/path.js:87) rather than rejecting it — so a
|
|
1669
|
+
// request-target carrying a literal `..` otherwise resolves to any
|
|
1670
|
+
// absolute path the bundle process can read. Falls through to the
|
|
1671
|
+
// same 404 as a missing file — no distinct signal. Mirrors the #B64
|
|
1672
|
+
// static-resolver guard in server.js.
|
|
1673
|
+
if (confineToBase(_inspFile, _inspBase) !== null && fs.existsSync(_inspFile)) {
|
|
1628
1674
|
var _inspBinary = /^(woff2?|png|ico|gif|jpe?g)$/.test(_inspExt);
|
|
1629
1675
|
var _inspHeaders = _setPoweredByHeader({
|
|
1630
1676
|
'content-type': _inspMime[_inspExt] || 'application/octet-stream',
|