gina 0.3.7-alpha.4 → 0.3.7-alpha.6
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/.github/scripts/scan-vendored-cves.js +188 -0
- package/.github/workflows/vendored-cve.yml +36 -0
- package/CHANGELOG.md +8 -0
- package/ROADMAP.md +10 -0
- package/framework/v0.3.7-alpha.6/VERSION +1 -0
- package/framework/v0.3.7-alpha.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css +1 -0
- package/framework/v0.3.7-alpha.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- package/framework/v0.3.7-alpha.6/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/js/gina.js +180 -7
- package/framework/v0.3.7-alpha.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js +543 -0
- package/framework/v0.3.7-alpha.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.7-alpha.6/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/validator/src/form-validator.js +86 -3
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/validator/src/main.js +20 -1
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/add.js +23 -52
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/help.txt +4 -4
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/list.js +12 -47
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/collection/src/main.js +74 -3
- package/framework/v0.3.7-alpha.6/lib/connector-registry/package.json +17 -0
- package/framework/v0.3.7-alpha.6/lib/connector-registry/src/main.js +167 -0
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/index.js +5 -0
- package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +7 -1
- package/package.json +2 -38
- package/schema/connectors.json +1 -1
- package/framework/v0.3.7-alpha.4/VERSION +0 -1
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -1
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/html/toolbar.html +0 -249
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/html/toolbar.html.br +0 -0
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/html/toolbar.html.gz +0 -0
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -539
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.7-alpha.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/AUTHORS +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/LICENSE +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/html/static.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/config.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/content.encoding +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/controller.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/controller/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/dev/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/gna.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/locales/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/locales/currency.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/locales/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/mime.types +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/model/entity.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/model/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/model/template/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/file/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/intl/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/router.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/server.express.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/server.isaac.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/server.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/status.codes +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/_gitignore +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/conf/env.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/conf/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/console.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/context.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/data/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/data/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/json/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/json/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/path.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/prototypes.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/task.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/helpers/text.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/archiver/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/archiver/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/archiver/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/async/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/async/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cache/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cache/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cache/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/collection/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/collection/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/collection/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/config.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cron/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cron/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/domain/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/domain/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/generator/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/inherits/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/inherits/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/math/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/merge/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/merge/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/model.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/proc.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/routing/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/routing/build.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/routing/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/session-store.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/shell.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/state.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/url/README.md +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/url/index.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/url/routing.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/uuid/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/validator.js +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/watcher/package.json +0 -0
- /package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/lib/watcher/src/main.js +0 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*
|
|
3
|
+
* This file is part of the gina package.
|
|
4
|
+
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
5
|
+
*
|
|
6
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7
|
+
* file that was distributed with this source code.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* OSV-based CVE scan for vendored deps.
|
|
12
|
+
*
|
|
13
|
+
* Walks every `package.json` under `framework/v*\/core/deps/`, extracts
|
|
14
|
+
* `(name, version)` pairs, queries `api.osv.dev`, and exits non-zero if
|
|
15
|
+
* any vulnerability is matched.
|
|
16
|
+
*
|
|
17
|
+
* Pinning convention (see .claude/architecture/vendored-deps.md): the
|
|
18
|
+
* vendored `package.json` stays byte-identical to upstream until
|
|
19
|
+
* patched; on patch, `version` is bumped to `<upstream>-rhinostone.N`
|
|
20
|
+
* (e.g. `1.6.0-rhinostone.1`). This script strips the
|
|
21
|
+
* `-rhinostone.N` suffix before querying so OSV still matches the base
|
|
22
|
+
* upstream version.
|
|
23
|
+
*
|
|
24
|
+
* Exit codes:
|
|
25
|
+
* 0 — clean, no CVEs matched
|
|
26
|
+
* 1 — at least one vulnerability matched (build fails)
|
|
27
|
+
* 2 — scan error (malformed package.json, network failure)
|
|
28
|
+
*
|
|
29
|
+
* @module .github/scripts/scan-vendored-cves
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
'use strict';
|
|
33
|
+
|
|
34
|
+
var fs = require('fs');
|
|
35
|
+
var path = require('path');
|
|
36
|
+
var https = require('https');
|
|
37
|
+
|
|
38
|
+
var ROOT = path.resolve(__dirname, '..', '..');
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Walk every `framework/v*\/core/deps/<dep>/package.json` and return the
|
|
42
|
+
* list of absolute paths.
|
|
43
|
+
*
|
|
44
|
+
* @returns {string[]}
|
|
45
|
+
*/
|
|
46
|
+
function walkDepsPackageJsons() {
|
|
47
|
+
var frameworkDir = path.join(ROOT, 'framework');
|
|
48
|
+
if (!fs.existsSync(frameworkDir)) return [];
|
|
49
|
+
var results = [];
|
|
50
|
+
var fws = fs.readdirSync(frameworkDir);
|
|
51
|
+
for (var i = 0; i < fws.length; i++) {
|
|
52
|
+
var depsDir = path.join(frameworkDir, fws[i], 'core', 'deps');
|
|
53
|
+
if (!fs.existsSync(depsDir)) continue;
|
|
54
|
+
if (!fs.statSync(depsDir).isDirectory()) continue;
|
|
55
|
+
var deps = fs.readdirSync(depsDir);
|
|
56
|
+
for (var j = 0; j < deps.length; j++) {
|
|
57
|
+
var pkgPath = path.join(depsDir, deps[j], 'package.json');
|
|
58
|
+
if (fs.existsSync(pkgPath)) results.push(pkgPath);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return results;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Strip the local-patch suffix (`-rhinostone.N`) so OSV sees the base
|
|
66
|
+
* upstream version. If the version has no such suffix, returned as-is.
|
|
67
|
+
*
|
|
68
|
+
* @param {string} v
|
|
69
|
+
* @returns {string}
|
|
70
|
+
*/
|
|
71
|
+
function normalizeVersion(v) {
|
|
72
|
+
return String(v).replace(/-rhinostone\.\d+$/, '');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* POST a single `(name, version)` query to api.osv.dev/v1/query.
|
|
77
|
+
* Resolves with the parsed JSON response (which may carry `{vulns: [...]}`
|
|
78
|
+
* or be empty `{}` on a clean match).
|
|
79
|
+
*
|
|
80
|
+
* @param {string} name
|
|
81
|
+
* @param {string} version
|
|
82
|
+
* @returns {Promise<object>}
|
|
83
|
+
*/
|
|
84
|
+
function queryOSV(name, version) {
|
|
85
|
+
return new Promise(function (resolve, reject) {
|
|
86
|
+
var body = JSON.stringify({
|
|
87
|
+
package: { name: name, ecosystem: 'npm' },
|
|
88
|
+
version: version
|
|
89
|
+
});
|
|
90
|
+
var req = https.request({
|
|
91
|
+
method: 'POST',
|
|
92
|
+
hostname: 'api.osv.dev',
|
|
93
|
+
path: '/v1/query',
|
|
94
|
+
headers: {
|
|
95
|
+
'Content-Type': 'application/json',
|
|
96
|
+
'Content-Length': Buffer.byteLength(body)
|
|
97
|
+
}
|
|
98
|
+
}, function (res) {
|
|
99
|
+
var data = '';
|
|
100
|
+
res.on('data', function (chunk) { data += chunk; });
|
|
101
|
+
res.on('end', function () {
|
|
102
|
+
if (res.statusCode !== 200) {
|
|
103
|
+
return reject(new Error('OSV HTTP ' + res.statusCode + ': ' + data));
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
resolve(JSON.parse(data));
|
|
107
|
+
} catch (e) {
|
|
108
|
+
reject(e);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
req.on('error', reject);
|
|
113
|
+
req.write(body);
|
|
114
|
+
req.end();
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Scan driver. Walks the target package.jsons, queries OSV for each,
|
|
120
|
+
* prints a one-line status per dep, exits with the appropriate code.
|
|
121
|
+
*
|
|
122
|
+
* @returns {Promise<number>} exit code
|
|
123
|
+
*/
|
|
124
|
+
async function main() {
|
|
125
|
+
var pkgs = walkDepsPackageJsons();
|
|
126
|
+
if (pkgs.length === 0) {
|
|
127
|
+
console.log('[osv] no vendored package.json files found under framework/v*/core/deps/');
|
|
128
|
+
return 0;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
var failures = 0;
|
|
132
|
+
var scanned = 0;
|
|
133
|
+
for (var i = 0; i < pkgs.length; i++) {
|
|
134
|
+
var pkgPath = pkgs[i];
|
|
135
|
+
var rel = path.relative(ROOT, pkgPath);
|
|
136
|
+
var pkg;
|
|
137
|
+
try {
|
|
138
|
+
pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
139
|
+
} catch (e) {
|
|
140
|
+
console.error('[osv] ' + rel + ': cannot parse (' + e.message + ')');
|
|
141
|
+
return 2;
|
|
142
|
+
}
|
|
143
|
+
if (!pkg.name || !pkg.version) {
|
|
144
|
+
console.log('[osv] SKIP ' + rel + ': missing name or version');
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
var baseVersion = normalizeVersion(pkg.version);
|
|
149
|
+
var suffix = (pkg.version !== baseVersion) ? ' (patched: ' + pkg.version + ')' : '';
|
|
150
|
+
var result;
|
|
151
|
+
try {
|
|
152
|
+
result = await queryOSV(pkg.name, baseVersion);
|
|
153
|
+
} catch (e) {
|
|
154
|
+
console.error('[osv] ' + rel + ': query failed — ' + e.message);
|
|
155
|
+
return 2;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
scanned++;
|
|
159
|
+
var vulns = result.vulns || [];
|
|
160
|
+
if (vulns.length > 0) {
|
|
161
|
+
failures++;
|
|
162
|
+
console.error('[osv] VULNERABLE ' + pkg.name + '@' + baseVersion + suffix + ' (' + rel + ')');
|
|
163
|
+
for (var v = 0; v < vulns.length; v++) {
|
|
164
|
+
var entry = vulns[v];
|
|
165
|
+
var aliases = (entry.aliases || []).join(', ');
|
|
166
|
+
var summary = (entry.summary || entry.details || '').replace(/\s+/g, ' ').slice(0, 140);
|
|
167
|
+
console.error(' ' + entry.id + (aliases ? ' (' + aliases + ')' : '') + ' — ' + summary);
|
|
168
|
+
}
|
|
169
|
+
} else {
|
|
170
|
+
console.log('[osv] OK ' + pkg.name + '@' + baseVersion + suffix + ' (' + rel + ')');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
console.log('');
|
|
175
|
+
if (failures > 0) {
|
|
176
|
+
console.error('[osv] ' + failures + ' vendored dep(s) with matching CVEs — failing the build.');
|
|
177
|
+
return 1;
|
|
178
|
+
}
|
|
179
|
+
console.log('[osv] clean — no CVEs matched across ' + scanned + ' vendored dep(s).');
|
|
180
|
+
return 0;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
main().then(function (code) {
|
|
184
|
+
process.exit(code);
|
|
185
|
+
}).catch(function (err) {
|
|
186
|
+
console.error('[osv] uncaught:', err);
|
|
187
|
+
process.exit(2);
|
|
188
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Vendored CVE Scan
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [develop, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [develop, master]
|
|
8
|
+
schedule:
|
|
9
|
+
# Weekly, Sunday 00:00 UTC — catches CVEs disclosed after the last push.
|
|
10
|
+
- cron: '0 0 * * 0'
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
# Cancel any in-flight scan for the same ref when a newer one kicks off.
|
|
14
|
+
concurrency:
|
|
15
|
+
group: vendored-cve-${{ github.ref }}
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
scan:
|
|
23
|
+
name: OSV scan on vendored deps
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
timeout-minutes: 5
|
|
26
|
+
steps:
|
|
27
|
+
- name: Checkout
|
|
28
|
+
uses: actions/checkout@v4
|
|
29
|
+
|
|
30
|
+
- name: Set up Node.js
|
|
31
|
+
uses: actions/setup-node@v4
|
|
32
|
+
with:
|
|
33
|
+
node-version: '22'
|
|
34
|
+
|
|
35
|
+
- name: Scan vendored package.jsons via api.osv.dev
|
|
36
|
+
run: node .github/scripts/scan-vendored-cves.js
|
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,14 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|
|
6
6
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## 0.3.7-alpha.5 - 2026-04-23 (npm only — no git tag)
|
|
10
|
+
### Changed
|
|
11
|
+
* Extracted `DRIVER_MAP` + `AI_DRIVER_MAP` into a new `lib/connector-registry/` module — single source of truth for the connector driver → npm package + semver range mapping. Previously duplicated inline in `lib/cmd/connector/add.js` and `lib/cmd/connector/list.js` and kept in sync by hand; the two copies had already drifted (list.js knew about `mongodb` and `scylladb`, add.js did not). Both cmd handlers now read from `lib.connectorRegistry.getDriver(type)` / `.getAIDriver(scheme)` / `.getDriverTypes()` / `.getAISchemes()`, so adding a new connector upstream means editing one table instead of three (root `package.json` `peerDependencies` was the third, removed in the previous commit). Public CLI behaviour is unchanged — the registry exposes the same tables, the install hint and `--install` resolution use the same ranges. 28 new source-inspection + behavioural tests in `test/lib/connector-registry.test.js`; the inline-map tests in `test/lib/connector-add.test.js` and `test/lib/connector-list.test.js` now assert registry consumption instead.
|
|
12
|
+
### Security
|
|
13
|
+
* Replaced the two eval-based sites in `lib/collection/src/main.js` with a safe expression parser and a dot-path walker (#SCS1d). The `tryEval` function — called from four internal sites (lines 310, 314, 406, 411) when a filter contains `<`, `>`, or `=` — used to `eval(_content + filter)`. The line-411 variant had no quote-wrapping, so a filter value like `{'rating.score': '> 0; throw new Error()'}` reached eval unsanitised and executed. The body is now a regex-based evaluator over the closed grammar `<operand><op><operand>` where operand is a number literal, a `"string literal"`, or a `new Date("...")` expression, and op is one of `=== !== == != < > <= >=`. Anything else throws `Could not evaluate condition`. The sibling `eval('_content.' + f)` inside `searchThroughProp` used to eval a user-controlled property path (the filter-object key), which accepted arbitrary JS — a key like `constructor.constructor('return ...')()` would fire on lookup. It is now a dot-path walker that rejects any non-identifier character. The `skipEval: true` bypass path is untouched (it was already eval-free). No public API change; the 15 pre-existing Collection tests pass unmodified; 7 new tests lock the guarantee (source-inspection, date-compare coverage fill, injection rejection). The browser bundle picks the fix up on next `core/asset/plugin/build` rebuild because `core/asset/plugin/src/vendor/gina/build.json:21` aliases `lib/collection` to the same server-side source.
|
|
14
|
+
* Removed optional connector drivers from the root `package.json` `peerDependencies` block (couchbase, mongodb, mysql2, pg, ioredis, `@scylladb/scylla-driver`, openai, `@anthropic-ai/sdk`). These were declared with `peerDependenciesMeta.optional = true` but supply-chain analyzers (Socket.dev, npm audit, Dependabot) were still aggregating them into gina's dependency graph — surfacing 7 extra packages as gina's supply-chain surface even though gina never loads any of them by default. The version ranges are still authoritative in the `DRIVER_MAP` / `AI_DRIVER_MAP` tables in `lib/cmd/connector/add.js` and `lib/cmd/connector/list.js`, which is where `connector:add --install` has been reading them all along. No runtime behaviour change — when a bundle requires an uninstalled driver, `require('<driver>')` throws the same `MODULE_NOT_FOUND` it always did. Users who want a given connector install the driver in their own project via `gina connector:add <name> @<project> --install` or by hand.
|
|
15
|
+
* Stripped `dependencies`, `devDependencies`, and `scripts` from the vendored `core/deps/busboy-1.6.0/package.json` (and `devDependencies` + `scripts` from `core/deps/streamsearch-1.1.0/package.json`). busboy is vendored and finds streamsearch via a relative path (`require('../../../streamsearch-1.1.0')`), so the declared `"streamsearch": "^1.1.0"` dependency was cosmetic and never consumed at runtime — but supply-chain analyzers walk sub-`package.json` files inside the published tarball and were surfacing streamsearch as a top-level gina dep. The `devDependencies` and `scripts` blocks are dead in a vendored context (no `npm install` runs against them; no `npm test` either). No runtime impact — both modules still load via the same relative paths they did before.
|
|
16
|
+
|
|
9
17
|
## 0.3.7-alpha.4 - 2026-04-23 (npm only — no git tag)
|
|
10
18
|
### Added
|
|
11
19
|
* Static HTML cache writes on the nunjucks render path (#NJ3) — bundles running `render.engine: "nunjucks"` now get the same `memory`/`fs` cache behaviour swig has shipped for years. A route declaring `"cache": { "type": "memory", "ttl": 300 }` (or the `"fs"` variant) is served from the shared server store on subsequent hits without re-entering the controller; the same `static:<bundle>:<url>` key-space + visibility/sliding-window/invalidateOnEvents controls apply. Cache writes run after asset + Inspector injection so the bytes on disk/in memory match what the client sees; the miss-path `Cache-Control: private, max-age=N` header is committed on the same response. Opt-in via your routing rule — there is no new setting to toggle.
|
package/ROADMAP.md
CHANGED
|
@@ -123,6 +123,16 @@ Four focused follow-up sessions to close the deferred gap left by the `0.3.7-alp
|
|
|
123
123
|
| 📋 | **Static HTML cache parity** — Port the swig disk-write/serve cache path so `cache:` keys in `routing.json` actually produce cached HTML for nunjucks routes. | `0.3.7` | Q4 2026 |
|
|
124
124
|
| 📋 | **Early Hints 103 auto-send for CSS/JS preloads** — Move the 103 path in `controller.js this.render()` to be engine-agnostic. Pure perf optimisation; manual `self.setEarlyHints(linkHeader)` already works. | `0.3.7` | Q4 2026 |
|
|
125
125
|
|
|
126
|
+
### Eval safety
|
|
127
|
+
|
|
128
|
+
Complete the removal of `eval` / `new Function` call sites from the published tarball. Four tranches shipped across `0.3.7-alpha.4` / `0.3.7-alpha.5` cleared 13 of 24 catalogued sites; 2 more were removed by deleting orphaned source during the toolbar cleanup (15 of 24 addressed). Three clusters remain, each needing a focused session.
|
|
129
|
+
|
|
130
|
+
| Status | Feature | Version | Target |
|
|
131
|
+
| --- | --- | --- | --- |
|
|
132
|
+
| 📋 | **Validator structural refactor** — Refactor `makeObjectFromArgs` in the validator plugin to replace the string-accumulator path-build-then-`eval('root=value')` pattern with a segments-array threaded through recursion and a safe setter. Clears 3 eval sites. Test coverage for the validator plugin was bootstrapped in the prior tranche, so the refactor has a safety net. | `0.3.8` | Q1 2027 |
|
|
133
|
+
| 📋 | **Feature-intrinsic eval design pass** — 6 sites eval user-supplied JS by design (user-defined form validators, HTML event callbacks on form data attributes). Decision pass: safe-eval sandbox via `vm.Script`, pre-parse to a restricted AST, or formalise "accept and document" with an explicit trust assumption. Outcome may include dropping unused placeholder features. | `0.3.8` | Q1 2027 |
|
|
134
|
+
| 📋 | **Logger circular-require refactor** — 3 load-bearing `eval(fs.readFileSync(...))` fallbacks in the logger work around a circular `merge → helpers → logger` require chain. Restructure the chain so the fallback is no longer needed. Clears the final 3 sites of the campaign. Regression risk touches every logger-consuming test. | `0.3.8` | Q1 2027 |
|
|
135
|
+
|
|
126
136
|
---
|
|
127
137
|
|
|
128
138
|
## Connectors
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.3.7-alpha.6
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:"have_heart_oneregular";src:url(fonts/have_heart_one-webfont.woff2) format("woff2"),url(fonts/have_heart_one-webfont.woff) format("woff");font-weight:400;font-style:normal}.gina-popin-container{background:#fff}.gina-popins-overlay,div.gina-popin-container{visibility:hidden;opacity:0;z-index:1;transition:opacity .3s,visibility 0 .3s}.gina-popins-overlay.gina-popin-is-active,div.gina-popin-container.gina-popin-is-active{opacity:1;visibility:visible;transition-delay:0}dialog.gina-popin-container{padding:0;border:none;z-index:1}.gina-popins-overlay{position:fixed;left:0;top:0;display:grid;place-items:center;width:100%;height:100%;transition:opacity .3s,visibility .3s;overflow:auto;background:rgba(0,0,0,.75)}.gina-popins-overlay.gina-popin-is-active{backdrop-filter:blur(6px)}dialog::backdrop{background-color:rgba(0,0,0,.75);backdrop-filter:blur(6px)}
|
|
Binary file
|
|
Binary file
|
package/framework/{v0.3.7-alpha.4 → v0.3.7-alpha.6}/core/asset/plugin/dist/vendor/gina/js/gina.js
RENAMED
|
@@ -3000,7 +3000,41 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
|
|
|
3000
3000
|
.trim();
|
|
3001
3001
|
|
|
3002
3002
|
try {
|
|
3003
|
-
|
|
3003
|
+
// #SCS1e (2026-04-24) — replaced `eval('data.' + localValue)` with a safe
|
|
3004
|
+
// dot+bracket path walker. `localValue` is derived from `{{...}}` placeholders
|
|
3005
|
+
// in error messages; the transforms at lines 152-158 produce
|
|
3006
|
+
// `ident (. ident | ["quoted"])*`. The old eval executed anything that parsed
|
|
3007
|
+
// as JS; a crafted placeholder like `{{constructor.constructor('return
|
|
3008
|
+
// process.exit()')()}}` would reach eval unsanitised (the `[` → `["` / `]` →
|
|
3009
|
+
// `"]` transforms don't neutralise dotted method access). The walker rejects
|
|
3010
|
+
// any segment that isn't a bare identifier or a double-quoted bracket key.
|
|
3011
|
+
// localValue = eval('data.'+ localValue).replace(/^\"|\"$/g, '');
|
|
3012
|
+
let _scsRest = localValue;
|
|
3013
|
+
let _scsSegments = [];
|
|
3014
|
+
let _scsM = _scsRest.match(/^([A-Za-z_$][\w$]*)/);
|
|
3015
|
+
if (!_scsM) { throw new Error('Invalid property path: `' + localValue + '`'); }
|
|
3016
|
+
_scsSegments.push(_scsM[1]);
|
|
3017
|
+
_scsRest = _scsRest.slice(_scsM[0].length);
|
|
3018
|
+
while (_scsRest.length > 0) {
|
|
3019
|
+
_scsM = _scsRest.match(/^\.([A-Za-z_$][\w$]*)/);
|
|
3020
|
+
if (_scsM) {
|
|
3021
|
+
_scsSegments.push(_scsM[1]);
|
|
3022
|
+
_scsRest = _scsRest.slice(_scsM[0].length);
|
|
3023
|
+
continue;
|
|
3024
|
+
}
|
|
3025
|
+
_scsM = _scsRest.match(/^\["([^"\]]*)"\]/);
|
|
3026
|
+
if (_scsM) {
|
|
3027
|
+
_scsSegments.push(_scsM[1]);
|
|
3028
|
+
_scsRest = _scsRest.slice(_scsM[0].length);
|
|
3029
|
+
continue;
|
|
3030
|
+
}
|
|
3031
|
+
throw new Error('Invalid property path: `' + localValue + '`');
|
|
3032
|
+
}
|
|
3033
|
+
let _scsCur = data;
|
|
3034
|
+
for (let _scsI = 0; _scsCur != null && _scsI < _scsSegments.length; _scsI++) {
|
|
3035
|
+
_scsCur = _scsCur[_scsSegments[_scsI]];
|
|
3036
|
+
}
|
|
3037
|
+
localValue = _scsCur.replace(/^\"|\"$/g, '');
|
|
3004
3038
|
error = error.replace( new RegExp( varArr[v].replace(/\{|\[|\]|\}/g, '\\$&') , 'g'), localValue);
|
|
3005
3039
|
} catch(e) {}
|
|
3006
3040
|
}
|
|
@@ -3731,10 +3765,59 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
|
|
|
3731
3765
|
try {
|
|
3732
3766
|
// security checks
|
|
3733
3767
|
compiledCondition = compiledCondition.replace(/(\(|\)|return)/g, '');
|
|
3768
|
+
// #SCS1e (2026-04-24) — replaced the two `eval(...)` calls below with
|
|
3769
|
+
// auditable equivalents. After `$var` substitution (lines 910-920) and
|
|
3770
|
+
// paren/return strip above, `compiledCondition` is either:
|
|
3771
|
+
// (a) a regex literal `/<body>/<flags>` (when `/^\//` matches), or
|
|
3772
|
+
// (b) a binary comparison `<operand><op><operand>` where operand ∈
|
|
3773
|
+
// {number, "string", true, false, null, undefined} and op ∈
|
|
3774
|
+
// {===, !==, ==, !=, <, >, <=, >=}.
|
|
3775
|
+
// Old eval executed arbitrary JS; any value reaching `$var` substitution
|
|
3776
|
+
// that contained a quote (e.g. user input `bar"; process.exit();//`)
|
|
3777
|
+
// could escape the `"..."` wrapper at line 916 and reach eval as
|
|
3778
|
+
// arbitrary code. Grammar-locked replacements reject any input that
|
|
3779
|
+
// doesn't fit the two documented shapes.
|
|
3780
|
+
// if ( /^\//.test(compiledCondition) ) {
|
|
3781
|
+
// isValid = eval(compiledCondition + '.test("' + this.value + '")')
|
|
3782
|
+
// } else {
|
|
3783
|
+
// isValid = eval(compiledCondition)
|
|
3784
|
+
// }
|
|
3734
3785
|
if ( /^\//.test(compiledCondition) ) {
|
|
3735
|
-
|
|
3786
|
+
var _scsRegexMatch = compiledCondition.match(/^\/(.+)\/([a-z]*)$/);
|
|
3787
|
+
if (!_scsRegexMatch) {
|
|
3788
|
+
throw new Error('Invalid regex literal: `' + compiledCondition + '`');
|
|
3789
|
+
}
|
|
3790
|
+
isValid = new RegExp(_scsRegexMatch[1], _scsRegexMatch[2]).test(this.value);
|
|
3736
3791
|
} else {
|
|
3737
|
-
|
|
3792
|
+
var _SCS_BINARY_RE = /^\s*(null|undefined|true|false|"[^"]*"|-?\d+(?:\.\d+)?)\s*(===|!==|<=|>=|==|!=|<|>)\s*(null|undefined|true|false|"[^"]*"|-?\d+(?:\.\d+)?)\s*$/;
|
|
3793
|
+
var _scsBinMatch = (typeof(compiledCondition) == 'string') ? compiledCondition.match(_SCS_BINARY_RE) : null;
|
|
3794
|
+
if (!_scsBinMatch) {
|
|
3795
|
+
throw new Error('Could not evaluate condition `' + compiledCondition + '`.\n(grammar: <operand><op><operand>; operand ∈ number | "string" | true | false | null | undefined; op ∈ === !== == != < > <= >=)');
|
|
3796
|
+
}
|
|
3797
|
+
var _scsParseOperand = function(s) {
|
|
3798
|
+
var _t = s.replace(/^\s+|\s+$/g, '');
|
|
3799
|
+
if (_t === 'null') return null;
|
|
3800
|
+
if (_t === 'undefined') return undefined;
|
|
3801
|
+
if (_t === 'true') return true;
|
|
3802
|
+
if (_t === 'false') return false;
|
|
3803
|
+
if (/^"[^"]*"$/.test(_t)) return _t.slice(1, -1);
|
|
3804
|
+
var _n = Number(_t);
|
|
3805
|
+
if (!isNaN(_n) && _t !== '') return _n;
|
|
3806
|
+
throw new Error('Invalid operand: `' + s + '`');
|
|
3807
|
+
};
|
|
3808
|
+
var _scsLeft = _scsParseOperand(_scsBinMatch[1]);
|
|
3809
|
+
var _scsOp = _scsBinMatch[2];
|
|
3810
|
+
var _scsRight = _scsParseOperand(_scsBinMatch[3]);
|
|
3811
|
+
switch (_scsOp) {
|
|
3812
|
+
case '===': isValid = _scsLeft === _scsRight; break;
|
|
3813
|
+
case '!==': isValid = _scsLeft !== _scsRight; break;
|
|
3814
|
+
case '==': isValid = _scsLeft == _scsRight; break;
|
|
3815
|
+
case '!=': isValid = _scsLeft != _scsRight; break;
|
|
3816
|
+
case '<': isValid = _scsLeft < _scsRight; break;
|
|
3817
|
+
case '>': isValid = _scsLeft > _scsRight; break;
|
|
3818
|
+
case '<=': isValid = _scsLeft <= _scsRight; break;
|
|
3819
|
+
case '>=': isValid = _scsLeft >= _scsRight; break;
|
|
3820
|
+
}
|
|
3738
3821
|
}
|
|
3739
3822
|
|
|
3740
3823
|
} catch (err) {
|
|
@@ -11931,8 +12014,27 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
11931
12014
|
if (customRule) {
|
|
11932
12015
|
customRule = customRule.replace(/\-|\//g, '.');
|
|
11933
12016
|
if ( typeof(rules) != 'undefined' ) {
|
|
11934
|
-
|
|
12017
|
+
// #SCS1e (2026-04-24) — replaced `eval('gina.forms.rules.' + customRule)`
|
|
12018
|
+
// with a safe dot-path walker. `customRule` is user-controlled (read
|
|
12019
|
+
// from the `data-gina-form-rule` HTML attribute); after the replace at
|
|
12020
|
+
// line 2601 it is a pure dot-path like `account.signin_scope`. The old
|
|
12021
|
+
// eval executed anything that parsed as JS — a crafted rule name such
|
|
12022
|
+
// as `constructor.constructor("return process.exit()")()` would fire on
|
|
12023
|
+
// lookup. The walker rejects any non-identifier character and returns
|
|
12024
|
+
// undefined on missing path (the `typeof(local.rules[customRule]) ==
|
|
12025
|
+
// 'undefined'` check at line 2606 then produces the usual user-facing
|
|
12026
|
+
// "no rule found" error).
|
|
12027
|
+
// instance.$forms[id].rules[customRule] = instance.rules[customRule] = local.rules[customRule] = merge(JSON.clone( eval('gina.forms.rules.'+ customRule)), instance.rules[customRule]);
|
|
11935
12028
|
// instance.$forms[id].rules[customRule] = instance.rules[customRule] = local.rules[customRule] = merge(eval('gina.forms.rules.'+ customRule), instance.rules[customRule]);
|
|
12029
|
+
if (!/^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*)*$/.test(customRule)) {
|
|
12030
|
+
throw new Error('Invalid form rule path: `' + customRule + '`');
|
|
12031
|
+
}
|
|
12032
|
+
var _scsSegments = customRule.split('.');
|
|
12033
|
+
var _scsCur = gina.forms.rules;
|
|
12034
|
+
for (var _scsI = 0; _scsCur != null && _scsI < _scsSegments.length; _scsI++) {
|
|
12035
|
+
_scsCur = _scsCur[_scsSegments[_scsI]];
|
|
12036
|
+
}
|
|
12037
|
+
instance.$forms[id].rules[customRule] = instance.rules[customRule] = local.rules[customRule] = merge(JSON.clone(_scsCur), instance.rules[customRule]);
|
|
11936
12038
|
}
|
|
11937
12039
|
if ( typeof(local.rules[customRule]) == 'undefined' ) {
|
|
11938
12040
|
throw new Error('['+id+'] no rule found with key: `'+customRule+'`. Please check if json is not malformed @ /forms/rules/' + customRule.replace(/\./g, '/') +'.json');
|
|
@@ -19292,9 +19394,57 @@ function Collection(content, options) {
|
|
|
19292
19394
|
options = (typeof(options) == 'object') ? merge(options, defaultOptions) : defaultOptions;
|
|
19293
19395
|
|
|
19294
19396
|
var keywords = ['not null']; // TODO - null, exists (`true` if property is defined)
|
|
19397
|
+
// #SCS1d (2026-04-23) — replaced `eval(condition)` with a safe binary-compare evaluator.
|
|
19398
|
+
// The conditions tryEval() receives are all constructed internally as `<left><op><right>`
|
|
19399
|
+
// where left/right ∈ {number literal, "string literal", new Date("...")} and op ∈
|
|
19400
|
+
// {===, !==, ==, !=, <, >, <=, >=}. User-controlled filter strings flowed into eval via
|
|
19401
|
+
// `_content + filter` concat (line 293) and the datetime-wrapped variant (line 310) —
|
|
19402
|
+
// any filter containing `<`|`>`|`=` reached eval unsanitised (RCE vector). Preserves
|
|
19403
|
+
// error behaviour: throws on any unparseable input (callers at 310/314/406/411 do not
|
|
19404
|
+
// catch — it bubbles).
|
|
19405
|
+
// var tryEval = function(condition) {
|
|
19406
|
+
// try {
|
|
19407
|
+
// return eval(condition);
|
|
19408
|
+
// } catch(err) {
|
|
19409
|
+
// throw new Error('Could not evaluate condition `'+ condition +'`.\n' + err.stack );
|
|
19410
|
+
// }
|
|
19411
|
+
// }
|
|
19412
|
+
var CONDITION_RE = /^\s*(new\s+Date\("[^"]*"\)|"[^"]*"|-?\d+(?:\.\d+)?)\s*(===|!==|<=|>=|==|!=|<|>)\s*(new\s+Date\("[^"]*"\)|"[^"]*"|-?\d+(?:\.\d+)?)\s*$/;
|
|
19413
|
+
var parseOperand = function(s) {
|
|
19414
|
+
var m = s.match(/^\s*new\s+Date\("([^"]*)"\)\s*$/);
|
|
19415
|
+
if (m) return new Date(m[1]);
|
|
19416
|
+
var t = s.replace(/^\s+|\s+$/g, '');
|
|
19417
|
+
if (/^"[^"]*"$/.test(t)) return t.slice(1, -1);
|
|
19418
|
+
var n = Number(t);
|
|
19419
|
+
if (!isNaN(n) && t !== '') return n;
|
|
19420
|
+
throw new Error('Invalid operand: `'+ s +'`');
|
|
19421
|
+
};
|
|
19295
19422
|
var tryEval = function(condition) {
|
|
19423
|
+
var m = (typeof(condition) == 'string') ? condition.match(CONDITION_RE) : null;
|
|
19424
|
+
if (!m) {
|
|
19425
|
+
throw new Error('Could not evaluate condition `'+ condition +'`.\n(grammar: <operand><op><operand>; operand ∈ number | "string" | new Date("..."); op ∈ === !== == != < > <= >=)');
|
|
19426
|
+
}
|
|
19296
19427
|
try {
|
|
19297
|
-
|
|
19428
|
+
var left = parseOperand(m[1]);
|
|
19429
|
+
var op = m[2];
|
|
19430
|
+
var right = parseOperand(m[3]);
|
|
19431
|
+
// Match eval's Date semantics: only arithmetic ops coerce Date to valueOf()
|
|
19432
|
+
// (timestamp); `==`/`!=`/`===`/`!==` between two Date objects are reference
|
|
19433
|
+
// compares and always false (two fresh `new Date(x)` are different objects).
|
|
19434
|
+
if ( op === '<' || op === '>' || op === '<=' || op === '>=' ) {
|
|
19435
|
+
if (left instanceof Date) left = left.getTime();
|
|
19436
|
+
if (right instanceof Date) right = right.getTime();
|
|
19437
|
+
}
|
|
19438
|
+
switch (op) {
|
|
19439
|
+
case '===': return left === right;
|
|
19440
|
+
case '!==': return left !== right;
|
|
19441
|
+
case '==': return left == right;
|
|
19442
|
+
case '!=': return left != right;
|
|
19443
|
+
case '<': return left < right;
|
|
19444
|
+
case '>': return left > right;
|
|
19445
|
+
case '<=': return left <= right;
|
|
19446
|
+
case '>=': return left >= right;
|
|
19447
|
+
}
|
|
19298
19448
|
} catch(err) {
|
|
19299
19449
|
throw new Error('Could not evaluate condition `'+ condition +'`.\n' + err.stack );
|
|
19300
19450
|
}
|
|
@@ -19585,9 +19735,32 @@ function Collection(content, options) {
|
|
|
19585
19735
|
|
|
19586
19736
|
var value = null;
|
|
19587
19737
|
|
|
19738
|
+
// #SCS1d (2026-04-23) — replaced `eval('_content.' + f)` with a safe dot-path
|
|
19739
|
+
// walker. `f` arrives here as a dot-separated path like `"ratings.Cleanliness"`
|
|
19740
|
+
// (the `[*]` bracket-star variant is already stripped by searchWithin before
|
|
19741
|
+
// this function is called — see split at line 438). User-controlled filter
|
|
19742
|
+
// keys flowed through this without sanitisation; the old eval executed
|
|
19743
|
+
// anything that parsed as JS, e.g. a key like
|
|
19744
|
+
// `"constructor.constructor('return process.exit()')()"` would fire on lookup.
|
|
19745
|
+
// try {
|
|
19746
|
+
// if ( _content )
|
|
19747
|
+
// value = eval('_content.'+f);
|
|
19748
|
+
// } catch (err) {
|
|
19749
|
+
// // Nothing to do
|
|
19750
|
+
// // means that the field is not available in the collection
|
|
19751
|
+
// }
|
|
19588
19752
|
try {
|
|
19589
|
-
if ( _content )
|
|
19590
|
-
|
|
19753
|
+
if ( _content ) {
|
|
19754
|
+
if (!/^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*)*$/.test(f)) {
|
|
19755
|
+
throw new Error('Invalid property path: `'+ f +'`');
|
|
19756
|
+
}
|
|
19757
|
+
var _segments = f.split('.');
|
|
19758
|
+
var _cur = _content;
|
|
19759
|
+
for (var _si = 0; _cur != null && _si < _segments.length; _si++) {
|
|
19760
|
+
_cur = _cur[_segments[_si]];
|
|
19761
|
+
}
|
|
19762
|
+
value = _cur;
|
|
19763
|
+
}
|
|
19591
19764
|
} catch (err) {
|
|
19592
19765
|
// Nothing to do
|
|
19593
19766
|
// means that the field is not available in the collection
|