gina 0.6.6 → 0.6.7
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 +26 -0
- package/README.md +26 -23
- package/ROADMAP.md +2 -0
- package/bin/cli +1 -0
- package/framework/v0.6.7/VERSION +1 -0
- package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/css/gina.min.css +1 -0
- package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +27 -0
- package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +93 -8
- package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.js +443 -28
- package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/js/gina.min.js +647 -0
- package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.7/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.6 → v0.6.7}/core/config.js +22 -0
- package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/index.js +16 -4
- package/framework/{v0.6.6 → v0.6.7}/core/connectors/duckdb/index.js +5 -2
- package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/index.js +8 -3
- package/framework/{v0.6.6 → v0.6.7}/core/connectors/mysql/index.js +5 -2
- package/framework/v0.6.7/core/connectors/param-redact.js +177 -0
- package/framework/{v0.6.6 → v0.6.7}/core/connectors/postgresql/index.js +5 -2
- package/framework/{v0.6.6 → v0.6.7}/core/connectors/scylladb/index.js +5 -2
- package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/index.js +5 -2
- package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.js +190 -23
- package/framework/{v0.6.6 → v0.6.7}/core/gna.js +186 -0
- package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/src/form-validator.js +91 -7
- package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/src/main.js +352 -21
- package/framework/{v0.6.6 → v0.6.7}/core/server.js +190 -1
- package/framework/{v0.6.6 → v0.6.7}/core/template/conf/settings.json +7 -8
- package/framework/v0.6.7/lib/cmd/storage/arguments.json +6 -0
- package/framework/v0.6.7/lib/cmd/storage/gc.js +418 -0
- package/framework/v0.6.7/lib/cmd/storage/help.txt +63 -0
- package/framework/v0.6.7/lib/cmd/storage/stats.js +396 -0
- package/framework/v0.6.7/lib/cmd/storage/verify.js +413 -0
- package/framework/{v0.6.6 → v0.6.7}/lib/index.js +14 -0
- package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/main.js +13 -6
- package/framework/v0.6.7/lib/storage/package.json +7 -0
- package/framework/v0.6.7/lib/storage/src/local-cas.js +1186 -0
- package/framework/v0.6.7/lib/storage/src/local.js +599 -0
- package/framework/v0.6.7/lib/storage/src/main.js +890 -0
- package/framework/v0.6.7/lib/storage/src/meta-store.js +506 -0
- package/framework/v0.6.7/lib/storage/src/util.js +336 -0
- package/framework/v0.6.7/lib/storage-store.js +110 -0
- package/framework/{v0.6.6 → v0.6.7}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +10 -9
- package/package.json +3 -3
- package/schema/settings.json +142 -2
- package/types/index.d.ts +7 -0
- package/framework/v0.6.6/VERSION +0 -1
- package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -1
- package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -643
- package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/AUTHORS +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/LICENSE +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/content.encoding +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/dev/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/locales/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/locales/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/mime.types +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/model/entity.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/model/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/router.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/server.express.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/status.codes +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/console.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/context.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/path.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/task.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/helpers/text.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/async/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/config.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/job/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/job-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/math/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/model.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/proc.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/session-store.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/shell.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/state.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/url/README.md +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/url/index.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/validator.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.6 → v0.6.7}/lib/ws-session/src/main.js +0 -0
|
@@ -3406,12 +3406,24 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
3406
3406
|
* Files are published atomically (temp sibling + rename — #B223), so a
|
|
3407
3407
|
* reader never observes a partially-written file under the final name.
|
|
3408
3408
|
*
|
|
3409
|
-
*
|
|
3409
|
+
* #STO1 (slice 1) — a file whose upload group carries a `driver` key
|
|
3410
|
+
* (`settings.json > upload.groups.<name>.driver`) is published through the
|
|
3411
|
+
* named `settings.storage` driver instead of moving to `target`; its result
|
|
3412
|
+
* entry then carries an OPAQUE `key` (+ `group`, `driver`, and the layer's
|
|
3413
|
+
* on-disk `size`) and NO `filename` — read it back via
|
|
3414
|
+
* `gina.storage(driver)`. Files in groups without a `driver` keep the
|
|
3415
|
+
* historical move path byte-for-byte, and one call may mix both kinds
|
|
3416
|
+
* (result slots stay 1:1 with the input array). `target` may be `null`
|
|
3417
|
+
* ONLY when every file routes to a driver.
|
|
3418
|
+
*
|
|
3419
|
+
* @param {?string} target is the upload dir destination (required when any
|
|
3420
|
+
* file is NOT driver-routed)
|
|
3410
3421
|
* @param {array} [files]
|
|
3411
3422
|
*
|
|
3412
3423
|
* @callback [cb]
|
|
3413
|
-
* @param {Error|boolean} error - `false` on success; the real move
|
|
3414
|
-
* on failure (`No file to upload` only when there was nothing to
|
|
3424
|
+
* @param {Error|boolean} error - `false` on success; the real move/publish
|
|
3425
|
+
* `Error` on failure (`No file to upload` only when there was nothing to
|
|
3426
|
+
* store)
|
|
3415
3427
|
* @param {array} files
|
|
3416
3428
|
*
|
|
3417
3429
|
* @event
|
|
@@ -3427,9 +3439,106 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
3427
3439
|
* }
|
|
3428
3440
|
* self.renderJSON({ files: files });
|
|
3429
3441
|
* });
|
|
3442
|
+
*
|
|
3443
|
+
* @example
|
|
3444
|
+
* // a driver-routed group's entries carry a storage key, not a path
|
|
3445
|
+
* self.store(uploadDir, req.files, function onStored(err, files) {
|
|
3446
|
+
* if (err) { return self.throwError(500, err); }
|
|
3447
|
+
* // files[i] = { file, filename, size, type, encoding } (moved)
|
|
3448
|
+
* // files[i] = { file, group, driver, key, size, type, encoding } (driver-routed)
|
|
3449
|
+
* self.renderJSON({ files: files });
|
|
3450
|
+
* });
|
|
3430
3451
|
* */
|
|
3431
3452
|
this.store = async function(target, files, cb) {
|
|
3432
3453
|
|
|
3454
|
+
// #STO1 — per-group storage-driver routing (slice 1). Group config is
|
|
3455
|
+
// read DIRECTLY off the request's resolved bundle conf (a getConfig()
|
|
3456
|
+
// call would clone the whole settings block per store() call); only the
|
|
3457
|
+
// literal `driver` string is consumed here — every placeholder-bearing
|
|
3458
|
+
// upload key stays boot-side territory.
|
|
3459
|
+
var _uploadGroups = ( local.options
|
|
3460
|
+
&& local.options.conf
|
|
3461
|
+
&& local.options.conf.content
|
|
3462
|
+
&& local.options.conf.content.settings
|
|
3463
|
+
&& local.options.conf.content.settings.upload
|
|
3464
|
+
&& local.options.conf.content.settings.upload.groups
|
|
3465
|
+
) ? local.options.conf.content.settings.upload.groups : null;
|
|
3466
|
+
|
|
3467
|
+
/**
|
|
3468
|
+
* Resolve a file record's upload group to its configured storage driver
|
|
3469
|
+
* name, or `null` when the group is not driver-routed.
|
|
3470
|
+
*
|
|
3471
|
+
* A record with no `group` routes as `untagged` — the same default the
|
|
3472
|
+
* multipart gate applies — which also covers caller-synthesized file
|
|
3473
|
+
* lists that never went through the parser.
|
|
3474
|
+
*
|
|
3475
|
+
* @inner
|
|
3476
|
+
* @param {object} fileRecord - A `req.files`-shaped record.
|
|
3477
|
+
* @returns {?string} The driver name, or `null` (historical move path).
|
|
3478
|
+
*/
|
|
3479
|
+
var getFileDriverName = function(fileRecord) {
|
|
3480
|
+
var g = ( fileRecord && fileRecord.group ) ? fileRecord.group : 'untagged';
|
|
3481
|
+
if ( _uploadGroups
|
|
3482
|
+
&& _uploadGroups[g]
|
|
3483
|
+
&& typeof(_uploadGroups[g].driver) == 'string'
|
|
3484
|
+
&& _uploadGroups[g].driver.length > 0
|
|
3485
|
+
) {
|
|
3486
|
+
return _uploadGroups[g].driver;
|
|
3487
|
+
}
|
|
3488
|
+
return null;
|
|
3489
|
+
};
|
|
3490
|
+
|
|
3491
|
+
/**
|
|
3492
|
+
* Publish driver-routed entries through `lib/storage`, sequentially —
|
|
3493
|
+
* mirroring `movefiles`: abort on the FIRST failure, keep
|
|
3494
|
+
* already-published objects, and tolerate a source consumed by the
|
|
3495
|
+
* upload tmp-cleanup timer AFTER a successful publish (ENOENT).
|
|
3496
|
+
*
|
|
3497
|
+
* Each entry's pre-filled result slot receives the layer's opaque `key`
|
|
3498
|
+
* and its on-disk `size` on publish.
|
|
3499
|
+
*
|
|
3500
|
+
* @inner
|
|
3501
|
+
* @param {object[]} entries - `{ record, fileName, driverName, slot }` tuples.
|
|
3502
|
+
* @param {function} done - `done(err)` — `false` once every entry published.
|
|
3503
|
+
* @returns {void}
|
|
3504
|
+
*/
|
|
3505
|
+
var putfiles = function(entries, done) {
|
|
3506
|
+
var e = 0;
|
|
3507
|
+
var next = function() {
|
|
3508
|
+
if ( e >= entries.length ) {
|
|
3509
|
+
return done(false);
|
|
3510
|
+
}
|
|
3511
|
+
var entry = entries[e];
|
|
3512
|
+
var driver = null;
|
|
3513
|
+
try {
|
|
3514
|
+
driver = lib.storage.get(entry.driverName);
|
|
3515
|
+
} catch (resolveErr) {
|
|
3516
|
+
return done(resolveErr);
|
|
3517
|
+
}
|
|
3518
|
+
driver.put(fs.createReadStream(entry.record.path), {
|
|
3519
|
+
originalName : entry.fileName,
|
|
3520
|
+
contentType : entry.record.type
|
|
3521
|
+
}, function (putErr, putRes) {
|
|
3522
|
+
if (putErr) {
|
|
3523
|
+
return done(putErr);
|
|
3524
|
+
}
|
|
3525
|
+
try {
|
|
3526
|
+
fs.unlinkSync(entry.record.path);
|
|
3527
|
+
} catch (unlinkErr) {
|
|
3528
|
+
// the source vanishing AFTER a successful publish is not
|
|
3529
|
+
// a failure (e.g. the upload tmp-cleanup timer took it)
|
|
3530
|
+
if (unlinkErr.code != 'ENOENT') {
|
|
3531
|
+
return done(unlinkErr);
|
|
3532
|
+
}
|
|
3533
|
+
}
|
|
3534
|
+
entry.slot.key = putRes.key;
|
|
3535
|
+
entry.slot.size = putRes.size;
|
|
3536
|
+
++e;
|
|
3537
|
+
next();
|
|
3538
|
+
});
|
|
3539
|
+
};
|
|
3540
|
+
next();
|
|
3541
|
+
};
|
|
3433
3542
|
|
|
3434
3543
|
var start = function(target, files, cb) {
|
|
3435
3544
|
|
|
@@ -3463,10 +3572,57 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
3463
3572
|
}
|
|
3464
3573
|
} else {
|
|
3465
3574
|
// saving files
|
|
3466
|
-
var uploadDir =
|
|
3575
|
+
var uploadDir = null
|
|
3467
3576
|
, list = []
|
|
3468
3577
|
, i = 0
|
|
3469
|
-
, folder =
|
|
3578
|
+
, folder = null;
|
|
3579
|
+
|
|
3580
|
+
// #STO1 — partition FIRST: a driver-routed file never touches
|
|
3581
|
+
// `target`, so the target dir is only required — and only
|
|
3582
|
+
// created — when at least one file stays on the historical
|
|
3583
|
+
// move path.
|
|
3584
|
+
var fileName = null
|
|
3585
|
+
, routed = []
|
|
3586
|
+
, unrouted = [];
|
|
3587
|
+
for (var len = files.length; i < len; ++i ){
|
|
3588
|
+
|
|
3589
|
+
fileName = files[i].filename || files[i].originalFilename
|
|
3590
|
+
|
|
3591
|
+
var _driverName = getFileDriverName(files[i]);
|
|
3592
|
+
if ( _driverName ) {
|
|
3593
|
+
// slot filled now so the result keeps 1:1 index parity
|
|
3594
|
+
// with `files`; `key`/`size` land on publish
|
|
3595
|
+
uploadedFiles[i] = {
|
|
3596
|
+
file : fileName,
|
|
3597
|
+
group : ( files[i].group ) ? files[i].group : 'untagged',
|
|
3598
|
+
driver : _driverName,
|
|
3599
|
+
key : null,
|
|
3600
|
+
size : files[i].size,
|
|
3601
|
+
type : files[i].type,
|
|
3602
|
+
encoding : files[i].encoding
|
|
3603
|
+
};
|
|
3604
|
+
routed.push({ record: files[i], fileName: fileName, driverName: _driverName, slot: uploadedFiles[i] });
|
|
3605
|
+
continue;
|
|
3606
|
+
}
|
|
3607
|
+
unrouted.push({ record: files[i], fileName: fileName, slotIndex: i });
|
|
3608
|
+
}
|
|
3609
|
+
|
|
3610
|
+
if ( unrouted.length && (target == null || target === '') ) {
|
|
3611
|
+
// #STO1 — an all-routed call may omit the target; a call
|
|
3612
|
+
// with files on the move path cannot
|
|
3613
|
+
var _targetErr = new Error('Controller::store — a target directory is required: `'+ unrouted[0].fileName +'` (group `'+ (( unrouted[0].record.group ) ? unrouted[0].record.group : 'untagged') +'`) is not routed to a storage driver');
|
|
3614
|
+
if (cb) {
|
|
3615
|
+
cb(_targetErr)
|
|
3616
|
+
} else {
|
|
3617
|
+
self.emit('uploaded', _targetErr)
|
|
3618
|
+
}
|
|
3619
|
+
return;
|
|
3620
|
+
}
|
|
3621
|
+
|
|
3622
|
+
if ( unrouted.length ) {
|
|
3623
|
+
uploadDir = new _(target);
|
|
3624
|
+
folder = uploadDir.mkdirSync();
|
|
3625
|
+
}
|
|
3470
3626
|
|
|
3471
3627
|
if (folder instanceof Error) {
|
|
3472
3628
|
if (cb) {
|
|
@@ -3476,22 +3632,19 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
3476
3632
|
}
|
|
3477
3633
|
} else {
|
|
3478
3634
|
// files list
|
|
3479
|
-
var
|
|
3480
|
-
for (var len = files.length; i < len; ++i ){
|
|
3481
|
-
|
|
3482
|
-
fileName = files[i].filename || files[i].originalFilename
|
|
3635
|
+
for (var u = 0, uLen = unrouted.length; u < uLen; ++u ){
|
|
3483
3636
|
|
|
3484
|
-
list[
|
|
3485
|
-
source:
|
|
3486
|
-
target: _(uploadDir.toString() + '/' + fileName)
|
|
3637
|
+
list[u] = {
|
|
3638
|
+
source: unrouted[u].record.path,
|
|
3639
|
+
target: _(uploadDir.toString() + '/' + unrouted[u].fileName)
|
|
3487
3640
|
};
|
|
3488
3641
|
|
|
3489
|
-
uploadedFiles[
|
|
3490
|
-
file : fileName,
|
|
3491
|
-
filename : list[
|
|
3492
|
-
size :
|
|
3493
|
-
type :
|
|
3494
|
-
encoding :
|
|
3642
|
+
uploadedFiles[unrouted[u].slotIndex] = {
|
|
3643
|
+
file : unrouted[u].fileName,
|
|
3644
|
+
filename : list[u].target,
|
|
3645
|
+
size : unrouted[u].record.size,
|
|
3646
|
+
type : unrouted[u].record.type,
|
|
3647
|
+
encoding : unrouted[u].record.encoding
|
|
3495
3648
|
};
|
|
3496
3649
|
|
|
3497
3650
|
}
|
|
@@ -3509,11 +3662,25 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
3509
3662
|
self.emit('uploaded', _moveErr)
|
|
3510
3663
|
}
|
|
3511
3664
|
} else {
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
|
|
3515
|
-
|
|
3516
|
-
|
|
3665
|
+
// #STO1 — then the driver-routed files; abort on the
|
|
3666
|
+
// first failure, keep already-published objects (the
|
|
3667
|
+
// mover's partial-success semantics — no rollback)
|
|
3668
|
+
putfiles(routed, function (putErr) {
|
|
3669
|
+
if (putErr) {
|
|
3670
|
+
var _putErr = ( putErr instanceof Error ) ? putErr : new Error(String(putErr));
|
|
3671
|
+
if (cb) {
|
|
3672
|
+
cb(_putErr)
|
|
3673
|
+
} else {
|
|
3674
|
+
self.emit('uploaded', _putErr)
|
|
3675
|
+
}
|
|
3676
|
+
} else {
|
|
3677
|
+
if (cb) {
|
|
3678
|
+
cb(false, uploadedFiles)
|
|
3679
|
+
} else {
|
|
3680
|
+
self.emit('uploaded', false, uploadedFiles)
|
|
3681
|
+
}
|
|
3682
|
+
}
|
|
3683
|
+
})
|
|
3517
3684
|
}
|
|
3518
3685
|
})
|
|
3519
3686
|
}
|
|
@@ -1406,6 +1406,29 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1406
1406
|
process.gina._inspectorEventTopics = [];
|
|
1407
1407
|
}
|
|
1408
1408
|
|
|
1409
|
+
// #B350 — opt-in from settings.json `inspector.queries.captureValues`
|
|
1410
|
+
// (default false). Query statements + timing/shape metadata are always
|
|
1411
|
+
// captured under the dev/window gate; bound parameter VALUES — and
|
|
1412
|
+
// value-bearing statement bodies (a document database's resolved body,
|
|
1413
|
+
// a bulk-insert's inlined records) — reach the console lines and the
|
|
1414
|
+
// Inspector query log only when this is true. A positional bind array
|
|
1415
|
+
// has no key names, so the key-based redact library structurally cannot
|
|
1416
|
+
// cover it; the gate + opt-in are the protection (same contract as the
|
|
1417
|
+
// AI captureText and events captureArgs opt-ins above). Stored on
|
|
1418
|
+
// process.gina so connectors read a cheap slot. Fail-closed.
|
|
1419
|
+
try {
|
|
1420
|
+
var _qInspSettings = (typeof gna.getConfig === 'function') ? gna.getConfig('settings') : null;
|
|
1421
|
+
var _qInspConf = (_qInspSettings && _qInspSettings.inspector && _qInspSettings.inspector.queries && typeof _qInspSettings.inspector.queries === 'object')
|
|
1422
|
+
? _qInspSettings.inspector.queries
|
|
1423
|
+
: {};
|
|
1424
|
+
if (!process.gina) process.gina = {};
|
|
1425
|
+
process.gina._inspectorQueryCaptureValues = (_qInspConf.captureValues === true);
|
|
1426
|
+
} catch (qInspErr) {
|
|
1427
|
+
console.warn('[inspector-queries] init skipped: ' + (qInspErr.message || qInspErr));
|
|
1428
|
+
if (!process.gina) process.gina = {};
|
|
1429
|
+
process.gina._inspectorQueryCaptureValues = false;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1409
1432
|
// #INS8 — dev-only auto-start of the standalone Inspector
|
|
1410
1433
|
// bundle (inspector@gina). Best-effort + fail-closed.
|
|
1411
1434
|
// Gated on:
|
|
@@ -1564,6 +1587,142 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1564
1587
|
console.warn('[render-cache] config validation skipped: ' + (rcErr.message || rcErr));
|
|
1565
1588
|
}
|
|
1566
1589
|
|
|
1590
|
+
// #STO1 — pluggable object storage. Validate the bundle's
|
|
1591
|
+
// `storage` block, build any connector-backed metadata
|
|
1592
|
+
// stores, then install the drivers before the first
|
|
1593
|
+
// request. FATAL (#B57 shape) on an unbuildable config:
|
|
1594
|
+
// unlike a cache, a storage layer has no safe degraded
|
|
1595
|
+
// mode — a driver that cannot build would leave put()
|
|
1596
|
+
// writing nowhere, and a root inside a web-served tree
|
|
1597
|
+
// would publish every stored object, and the metadata
|
|
1598
|
+
// database beside them, to anonymous callers.
|
|
1599
|
+
//
|
|
1600
|
+
// NOTE this band runs inside server.on('started'), i.e.
|
|
1601
|
+
// AFTER listen() — so a refusal here exits on an
|
|
1602
|
+
// already-bound port, exactly as the #AI6 and #RC4 blocks
|
|
1603
|
+
// above do. A pre-listen refusal means moving the lint
|
|
1604
|
+
// into core/server.js init() (where the audit trail does
|
|
1605
|
+
// it); kept here for slice 0 so the feature touches one
|
|
1606
|
+
// core file instead of two.
|
|
1607
|
+
try {
|
|
1608
|
+
var _stoAll = config.getInstance();
|
|
1609
|
+
var _stoSettings = null;
|
|
1610
|
+
try {
|
|
1611
|
+
_stoSettings = _stoAll[gna.core.startingApp][env].content.settings.storage;
|
|
1612
|
+
} catch (stoConfErr) { _stoSettings = null; }
|
|
1613
|
+
|
|
1614
|
+
// #STO1 slice 1 — driver-routed upload groups: collect
|
|
1615
|
+
// every bundle's `upload.groups.<g>.driver` bindings as
|
|
1616
|
+
// NEUTRAL tuples (owner/driver/path) so the storage lint
|
|
1617
|
+
// can refuse a dangling reference. The driver set is
|
|
1618
|
+
// process-global (built from the starting app's `storage`
|
|
1619
|
+
// block), so EVERY bundle's groups validate against that
|
|
1620
|
+
// one set. Built BEFORE the `_stoSettings` gate: a
|
|
1621
|
+
// binding with NO storage block at all must fatal, not
|
|
1622
|
+
// silently no-op.
|
|
1623
|
+
var _stoBindings = [];
|
|
1624
|
+
try {
|
|
1625
|
+
for (var _stoBb in _stoAll) {
|
|
1626
|
+
var _stoBup = ( _stoAll[_stoBb] && _stoAll[_stoBb][env]
|
|
1627
|
+
&& _stoAll[_stoBb][env].content
|
|
1628
|
+
&& _stoAll[_stoBb][env].content.settings
|
|
1629
|
+
&& _stoAll[_stoBb][env].content.settings.upload
|
|
1630
|
+
) ? _stoAll[_stoBb][env].content.settings.upload : null;
|
|
1631
|
+
if ( !_stoBup || !_stoBup.groups || typeof(_stoBup.groups) != 'object' ) { continue; }
|
|
1632
|
+
for (var _stoBg in _stoBup.groups) {
|
|
1633
|
+
var _stoBgrp = _stoBup.groups[_stoBg];
|
|
1634
|
+
if ( _stoBgrp && typeof(_stoBgrp.driver) == 'string' && _stoBgrp.driver.length > 0 ) {
|
|
1635
|
+
_stoBindings.push({
|
|
1636
|
+
owner : _stoBb + '/upload.groups/' + _stoBg,
|
|
1637
|
+
driver : _stoBgrp.driver,
|
|
1638
|
+
path : ( typeof(_stoBgrp.path) == 'string' ) ? _stoBgrp.path : null
|
|
1639
|
+
});
|
|
1640
|
+
}
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
} catch (stoBindErr) {
|
|
1644
|
+
console.warn('[storage] could not enumerate upload-group driver bindings — the binding lint is degraded for this boot: ' + (stoBindErr.message || stoBindErr));
|
|
1645
|
+
}
|
|
1646
|
+
|
|
1647
|
+
if ( _stoSettings || _stoBindings.length ) {
|
|
1648
|
+
// Web-served roots, INJECTED into the validator so
|
|
1649
|
+
// lib/storage stays free of gina core (its
|
|
1650
|
+
// import-boundary test enforces that). BOTH
|
|
1651
|
+
// surfaces count: a bundle's publicPath, and any
|
|
1652
|
+
// content.statics target — a statics mapping can
|
|
1653
|
+
// point anywhere on disk, so checking publicPath
|
|
1654
|
+
// alone would leave a hole.
|
|
1655
|
+
var _stoServed = [];
|
|
1656
|
+
try {
|
|
1657
|
+
for (var _stoB in _stoAll) {
|
|
1658
|
+
var _stoBc = _stoAll[_stoB] && _stoAll[_stoB][env];
|
|
1659
|
+
if ( !_stoBc ) { continue; }
|
|
1660
|
+
if ( typeof(_stoBc.publicPath) == 'string' && _stoBc.publicPath && !/\$\{/.test(_stoBc.publicPath) ) {
|
|
1661
|
+
_stoServed.push(_stoBc.publicPath);
|
|
1662
|
+
}
|
|
1663
|
+
var _stoStatics = _stoBc.content && _stoBc.content.statics;
|
|
1664
|
+
for (var _stoU in _stoStatics) {
|
|
1665
|
+
if ( typeof(_stoStatics[_stoU]) == 'string' && _stoStatics[_stoU] && !/\$\{/.test(_stoStatics[_stoU]) ) {
|
|
1666
|
+
_stoServed.push(_stoStatics[_stoU]);
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
} catch (stoServedErr) {
|
|
1671
|
+
console.warn('[storage] could not enumerate every web-served root — the served-root check is degraded for this boot: ' + (stoServedErr.message || stoServedErr));
|
|
1672
|
+
}
|
|
1673
|
+
|
|
1674
|
+
var _stoCheck = lib.storage.validateConfig(_stoSettings, { servedRoots: _stoServed, groupBindings: _stoBindings });
|
|
1675
|
+
for (var _stoW = 0; _stoW < _stoCheck.warnings.length; _stoW++) {
|
|
1676
|
+
console.warn('[storage] ' + _stoCheck.warnings[_stoW]);
|
|
1677
|
+
}
|
|
1678
|
+
if (_stoCheck.fatal) {
|
|
1679
|
+
var _stoFatalMsg = '[storage] invalid storage configuration — aborting boot: ' + _stoCheck.fatal;
|
|
1680
|
+
console.emerg(_stoFatalMsg);
|
|
1681
|
+
// boot-exit-flush: process.exit() truncates async stdio on a pipe.
|
|
1682
|
+
try { fs.writeSync(2, _stoFatalMsg + '\n'); } catch (_e) {}
|
|
1683
|
+
process.exit(1);
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
if (_stoCheck.driverCount > 0) {
|
|
1687
|
+
var _stoDrivers = _stoSettings.drivers;
|
|
1688
|
+
var _stoStores = {};
|
|
1689
|
+
for (var _stoN in _stoDrivers) {
|
|
1690
|
+
if ( typeof(_stoDrivers[_stoN].store) == 'string' && _stoDrivers[_stoN].store.length > 0 ) {
|
|
1691
|
+
try {
|
|
1692
|
+
_stoStores[_stoN] = lib.StorageStore(_stoDrivers[_stoN].store);
|
|
1693
|
+
} catch (stoStoreErr) {
|
|
1694
|
+
var _stoStoreMsg = '[storage] driver `' + _stoN + '` names store `' + _stoDrivers[_stoN].store + '`, which could not be built — aborting boot: ' + (stoStoreErr.message || stoStoreErr);
|
|
1695
|
+
console.emerg(_stoStoreMsg + '\n' + (stoStoreErr.stack || ''));
|
|
1696
|
+
try { fs.writeSync(2, _stoStoreMsg + '\n'); } catch (_e) {}
|
|
1697
|
+
process.exit(1);
|
|
1698
|
+
}
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
try {
|
|
1702
|
+
// `warn` surfaces the per-root strategy-stamp checks
|
|
1703
|
+
// (§4 — a strategy flip on populated storage warns
|
|
1704
|
+
// every boot; a hash change warns once). Same sink as
|
|
1705
|
+
// the validateConfig warnings above.
|
|
1706
|
+
if ( lib.storage.start({ drivers: _stoDrivers, default: _stoSettings.default, stores: _stoStores, warn: function(stoWarnMsg) { console.warn('[storage] ' + stoWarnMsg); } }) ) {
|
|
1707
|
+
// console.info, NOT debug — the shipped
|
|
1708
|
+
// default log level filters debug, and an
|
|
1709
|
+
// operator needs to see which roots went live.
|
|
1710
|
+
console.info('[storage] ' + _stoCheck.driverCount + ' driver(s) ready' + ( _stoSettings.default ? ' (default: ' + _stoSettings.default + ')' : '' ));
|
|
1711
|
+
} else {
|
|
1712
|
+
console.warn('[storage] drivers were already installed — this boot wiring was ignored');
|
|
1713
|
+
}
|
|
1714
|
+
} catch (stoStartErr) {
|
|
1715
|
+
var _stoStartMsg = '[storage] drivers could not be built — aborting boot: ' + (stoStartErr.message || stoStartErr);
|
|
1716
|
+
console.emerg(_stoStartMsg + '\n' + (stoStartErr.stack || ''));
|
|
1717
|
+
try { fs.writeSync(2, _stoStartMsg + '\n'); } catch (_e) {}
|
|
1718
|
+
process.exit(1);
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
} catch (stoErr) {
|
|
1723
|
+
console.warn('[storage] config validation skipped: ' + (stoErr.message || stoErr));
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1567
1726
|
// #CE1 — `server.transientErrors` boot-time shape check
|
|
1568
1727
|
// (warn-only, NEVER fatal: the opt-in governs how a
|
|
1569
1728
|
// transient datastore error RENDERS — a bad value must
|
|
@@ -2273,6 +2432,33 @@ gna.getModelEntity = getModelEntity;
|
|
|
2273
2432
|
*/
|
|
2274
2433
|
gna.registerBusyProbe = lib.releaseWatch.registerBusyProbe;
|
|
2275
2434
|
|
|
2435
|
+
/**
|
|
2436
|
+
* #STO1 — get a configured object-storage driver.
|
|
2437
|
+
*
|
|
2438
|
+
* The producer surface for server-GENERATED files (rendered PDFs, exports,
|
|
2439
|
+
* archives): anything that is not an inbound upload. The upload path keeps its
|
|
2440
|
+
* own `self.store()` route for now.
|
|
2441
|
+
*
|
|
2442
|
+
* Assigned UNCONDITIONALLY, so a bundle with no `storage` block gets a named
|
|
2443
|
+
* error naming the fix instead of `gna.storage is not a function` — and so the
|
|
2444
|
+
* declaration is a plain function rather than one the caller must narrow.
|
|
2445
|
+
*
|
|
2446
|
+
* @param {string} [name] - Driver name; omitted returns the `storage.default` driver.
|
|
2447
|
+
* @returns {object} The driver (`put` / `get` / `stat` / `release` / `resolve` / `capabilities`).
|
|
2448
|
+
* @throws {Error} When storage is not configured, when no default is declared and `name`
|
|
2449
|
+
* was omitted, or when `name` is not a configured driver.
|
|
2450
|
+
* @example
|
|
2451
|
+
* gna.storage().put(pdfStream, { originalName: 'invoice.pdf' }, function (err, res) {
|
|
2452
|
+
* if (err) { return next(err); }
|
|
2453
|
+
* invoice.storageKey = res.key; // opaque — store it, never parse it
|
|
2454
|
+
* });
|
|
2455
|
+
* @example
|
|
2456
|
+
* gina.storage('archives'); // a named driver
|
|
2457
|
+
*/
|
|
2458
|
+
gna.storage = function(name) {
|
|
2459
|
+
return lib.storage.get(name);
|
|
2460
|
+
};
|
|
2461
|
+
|
|
2276
2462
|
// ── JSON helper (framework/v*/helpers/json/src/main.js) ──────────────────
|
|
2277
2463
|
|
|
2278
2464
|
/**
|
|
@@ -417,7 +417,22 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
417
417
|
// - previous error detected
|
|
418
418
|
if ( !self.isValid() ) {
|
|
419
419
|
console.debug('stopping on errors ...');
|
|
420
|
-
|
|
420
|
+
// #B338 — release ASYNCHRONOUSLY. A synchronous trigger fires the
|
|
421
|
+
// completion waiter MID-FIELD-LOOP (inside this very field's rule
|
|
422
|
+
// application), so the pass composed its payload before LATER
|
|
423
|
+
// fields were adjudicated — a field declared after the query field
|
|
424
|
+
// vanished from the submit verdict, its rendered error was then
|
|
425
|
+
// CLEARED by the render pass, and the outcome depended on field
|
|
426
|
+
// ORDER. A microtask runs once the call stack empties — after the
|
|
427
|
+
// whole field loop and its terminal block — which is exactly the
|
|
428
|
+
// shape a real XHR settle already has: one completion timing for
|
|
429
|
+
// every release path. (`_skipTarget`/`_skipField` are snapshotted:
|
|
430
|
+
// `this` is not the field object inside the deferred call.)
|
|
431
|
+
// was: triggerEvent(gina, this.target, 'asyncCompleted.' + id, self[this['name']]);
|
|
432
|
+
var _skipTarget = this.target, _skipFieldName = this['name'];
|
|
433
|
+
queueMicrotask(function deferredKnownInvalidRelease() {
|
|
434
|
+
triggerEvent(gina, _skipTarget, 'asyncCompleted.' + id, self[_skipFieldName]);
|
|
435
|
+
});
|
|
421
436
|
//return self[this.name];
|
|
422
437
|
return;
|
|
423
438
|
}
|
|
@@ -452,6 +467,20 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
452
467
|
|
|
453
468
|
}
|
|
454
469
|
} else if (testedValue === this.value) {
|
|
470
|
+
// #B332 — while an XHR for this very (field, value) is still IN FLIGHT the
|
|
471
|
+
// cache below has no verdict yet, and the immediate release at the end of
|
|
472
|
+
// this branch woke every armed waiter with a verdict-less field object —
|
|
473
|
+
// the submit pass then completed on its sync-only rules and sent while the
|
|
474
|
+
// authoritative answer was still on the wire. Do nothing here: the pending
|
|
475
|
+
// request's settle (processQueryResult / releaseQueryWaiter — both clear
|
|
476
|
+
// the marker first) triggers `asyncCompleted.<id>` and wakes every waiter
|
|
477
|
+
// with the real verdict. Marker is set right before xhr.send() below.
|
|
478
|
+
if (
|
|
479
|
+
this.target && this.target.dataset
|
|
480
|
+
&& this.target.dataset.ginaFormValidatorQueryPending === this.value
|
|
481
|
+
) {
|
|
482
|
+
return self[this.name];
|
|
483
|
+
}
|
|
455
484
|
// not resending to backend, but in case of cached errors, re display same error message
|
|
456
485
|
var hasCachedErrors = false;
|
|
457
486
|
if (
|
|
@@ -472,7 +501,18 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
472
501
|
}
|
|
473
502
|
// Do not remove this test
|
|
474
503
|
if ( typeof( gina.events[_evt]) != 'undefined' ) {
|
|
475
|
-
|
|
504
|
+
// #B338 — same deferral as the known-invalid release above: a
|
|
505
|
+
// cached-verdict re-check fires synchronously mid-field-loop,
|
|
506
|
+
// and the waiter it wakes must not compose the pass verdict
|
|
507
|
+
// before the remaining fields are adjudicated (measured: the
|
|
508
|
+
// second click on an unchanged registered value delivered a
|
|
509
|
+
// payload missing every field declared after the query field,
|
|
510
|
+
// clearing their rendered errors).
|
|
511
|
+
// was: triggerEvent(gina, this.target, _evt, self[this['name']]);
|
|
512
|
+
var _cacheTarget = this.target, _cacheFieldName = this['name'];
|
|
513
|
+
queueMicrotask(function deferredCachedVerdictRelease() {
|
|
514
|
+
triggerEvent(gina, _cacheTarget, _evt, self[_cacheFieldName]);
|
|
515
|
+
});
|
|
476
516
|
}
|
|
477
517
|
|
|
478
518
|
return self[this.name];
|
|
@@ -607,6 +647,17 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
607
647
|
|
|
608
648
|
var processQueryResult = function(result) {
|
|
609
649
|
|
|
650
|
+
// #B332 — this request has settled: release the in-flight marker BEFORE any
|
|
651
|
+
// processing (a throw below routes to releaseQueryWaiter, which also clears).
|
|
652
|
+
// Value-guarded so a newer request's marker — a keystroke re-fired the query
|
|
653
|
+
// while this one was on the wire — is never cleared by a stale settle.
|
|
654
|
+
if (
|
|
655
|
+
_this.target && _this.target.dataset
|
|
656
|
+
&& _this.target.dataset.ginaFormValidatorQueryPending === String(_this.value)
|
|
657
|
+
) {
|
|
658
|
+
delete _this.target.dataset.ginaFormValidatorQueryPending;
|
|
659
|
+
}
|
|
660
|
+
|
|
610
661
|
// #B87: a boolean checkbox routed through a `query` rule carries a real
|
|
611
662
|
// boolean — `.toLowerCase()` only applies to string values
|
|
612
663
|
_this.value = local['data'][_this.name] = (_this.value && typeof(_this.value) == 'string') ? _this.value.toLowerCase() : _this.value;
|
|
@@ -737,6 +788,17 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
737
788
|
*/
|
|
738
789
|
var releaseQueryWaiter = function(err) {
|
|
739
790
|
console.warn('[ FormValidator ] `query` result handling failed for field `'+ (_this && _this.name) +'`: '+ ( err && err.message || err ));
|
|
791
|
+
// #B332 — the failed settle still ends this request: clear the in-flight
|
|
792
|
+
// marker (value-guarded, same as processQueryResult) or the same-value
|
|
793
|
+
// fast path would treat the field as pending forever.
|
|
794
|
+
try {
|
|
795
|
+
if (
|
|
796
|
+
_this.target && _this.target.dataset
|
|
797
|
+
&& _this.target.dataset.ginaFormValidatorQueryPending === String(_this.value)
|
|
798
|
+
) {
|
|
799
|
+
delete _this.target.dataset.ginaFormValidatorQueryPending;
|
|
800
|
+
}
|
|
801
|
+
} catch (ignorePendingClear) {}
|
|
740
802
|
try {
|
|
741
803
|
var _releaseId = _this.target && (_this.target.id || _this.target.getAttribute('id'));
|
|
742
804
|
if (_releaseId) {
|
|
@@ -876,6 +938,13 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
876
938
|
}
|
|
877
939
|
}// xhr.onload = function () {
|
|
878
940
|
|
|
941
|
+
// #B332 — mark the (field, value) as in flight BEFORE the wire call: the
|
|
942
|
+
// same-value fast path above must not immediate-release a verdict-less
|
|
943
|
+
// field while this request is pending. Cleared at both settle chokepoints
|
|
944
|
+
// (processQueryResult / releaseQueryWaiter), value-guarded.
|
|
945
|
+
if ( _this.target && _this.target.dataset ) {
|
|
946
|
+
_this.target.dataset.ginaFormValidatorQueryPending = _this.value;
|
|
947
|
+
}
|
|
879
948
|
if (data) {
|
|
880
949
|
xhr.send( queryData ); // stringyfied
|
|
881
950
|
} else {
|
|
@@ -1212,15 +1281,14 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
1212
1281
|
}
|
|
1213
1282
|
|
|
1214
1283
|
try {
|
|
1215
|
-
// security checks
|
|
1216
|
-
compiledCondition = compiledCondition.replace(/(\(|\)|return)/g, '');
|
|
1217
1284
|
// #SCS1e (2026-04-24) — replaced the two `eval(...)` calls below with
|
|
1218
|
-
// auditable equivalents. After `$var` substitution (lines 910-920)
|
|
1219
|
-
//
|
|
1285
|
+
// auditable equivalents. After `$var` substitution (lines 910-920),
|
|
1286
|
+
// `compiledCondition` is either:
|
|
1220
1287
|
// (a) a regex literal `/<body>/<flags>` (when `/^\//` matches), or
|
|
1221
1288
|
// (b) a binary comparison `<operand><op><operand>` where operand ∈
|
|
1222
1289
|
// {number, "string", true, false, null, undefined} and op ∈
|
|
1223
|
-
// {===, !==, ==, !=, <, >, <=, >=}
|
|
1290
|
+
// {===, !==, ==, !=, <, >, <=, >=} — paren/`return`-stripped
|
|
1291
|
+
// inside its branch, before the grammar match.
|
|
1224
1292
|
// Old eval executed arbitrary JS; any value reaching `$var` substitution
|
|
1225
1293
|
// that contained a quote (e.g. user input `bar"; process.exit();//`)
|
|
1226
1294
|
// could escape the `"..."` wrapper at line 916 and reach eval as
|
|
@@ -1231,6 +1299,18 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
1231
1299
|
// } else {
|
|
1232
1300
|
// isValid = eval(compiledCondition)
|
|
1233
1301
|
// }
|
|
1302
|
+
// #B345 — the paren/`return` strip used to run HERE, before the branch
|
|
1303
|
+
// decision, so it also mangled every parenthesized regex literal:
|
|
1304
|
+
// groups were destroyed (`^(a|b)$` compiled as `^a|b$`, rebinding the
|
|
1305
|
+
// anchors and turning middle alternatives substring-permissive),
|
|
1306
|
+
// quantified groups were requantified (`(#TAG)?` became `#TA` plus an
|
|
1307
|
+
// optional `G`), and a literal `return` inside a pattern was deleted —
|
|
1308
|
+
// all silently, because the stripped text still compiled as a valid
|
|
1309
|
+
// regex. The strip protects the BINARY-COMPARISON shape only, so it
|
|
1310
|
+
// now lives inside that branch; the regex branch never evaluates the
|
|
1311
|
+
// condition as JS (`new RegExp(body, flags).test(value)` — no eval),
|
|
1312
|
+
// so parentheses there are legitimate syntax and a regex literal is
|
|
1313
|
+
// compiled exactly as authored.
|
|
1234
1314
|
if ( /^\//.test(compiledCondition) ) {
|
|
1235
1315
|
var _scsRegexMatch = compiledCondition.match(/^\/(.+)\/([a-z]*)$/);
|
|
1236
1316
|
if (!_scsRegexMatch) {
|
|
@@ -1238,6 +1318,10 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
1238
1318
|
}
|
|
1239
1319
|
isValid = new RegExp(_scsRegexMatch[1], _scsRegexMatch[2]).test(this.value);
|
|
1240
1320
|
} else {
|
|
1321
|
+
// security checks (#SCS1e) — strip parens/`return` before the
|
|
1322
|
+
// grammar-locked match; authored parens in a comparison stay
|
|
1323
|
+
// tolerated (`("a") === ("a")` strips to `"a" === "a"`).
|
|
1324
|
+
compiledCondition = compiledCondition.replace(/(\(|\)|return)/g, '');
|
|
1241
1325
|
var _SCS_BINARY_RE = /^\s*(null|undefined|true|false|"[^"]*"|-?\d+(?:\.\d+)?)\s*(===|!==|<=|>=|==|!=|<|>)\s*(null|undefined|true|false|"[^"]*"|-?\d+(?:\.\d+)?)\s*$/;
|
|
1242
1326
|
var _scsBinMatch = (typeof(compiledCondition) == 'string') ? compiledCondition.match(_SCS_BINARY_RE) : null;
|
|
1243
1327
|
if (!_scsBinMatch) {
|