gina 0.5.3 → 0.5.4
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 +24 -0
- package/README.md +11 -9
- package/ROADMAP.md +1 -0
- package/framework/v0.5.4/VERSION +1 -0
- package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +40 -1
- package/framework/v0.5.4/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- package/framework/v0.5.4/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +180 -100
- package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/js/gina.js +91 -15
- package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +216 -215
- package/framework/v0.5.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.5.4/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.js +26 -0
- package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.render-swig.js +15 -7
- package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/validator/src/form-validator.js +73 -13
- package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/validator/src/main.js +6 -1
- package/framework/{v0.5.3 → v0.5.4}/core/router.js +15 -2
- package/framework/{v0.5.3 → v0.5.4}/core/server.isaac.js +2 -38
- package/framework/{v0.5.3 → v0.5.4}/core/server.js +195 -30
- package/framework/{v0.5.3 → v0.5.4}/core/template/conf/settings.json +1 -1
- package/framework/v0.5.4/lib/admin/package.json +17 -0
- package/framework/v0.5.4/lib/admin/src/main.js +93 -0
- package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/add.js +38 -2
- package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/arguments.json +1 -0
- package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/help.txt +15 -1
- package/framework/{v0.5.3 → v0.5.4}/lib/index.js +27 -5
- package/framework/{v0.5.3 → v0.5.4}/lib/routing/src/main.js +12 -1
- package/framework/{v0.5.3 → v0.5.4}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +27 -1
- package/package.json +4 -4
- package/framework/v0.5.3/VERSION +0 -1
- package/framework/v0.5.3/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- package/framework/v0.5.3/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- package/framework/v0.5.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.5.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/AUTHORS +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/LICENSE +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/html/static.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/config.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/content.encoding +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/dev/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/gna.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/locales/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/locales/currency.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/locales/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/mime.types +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/model/entity.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/model/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/model/template/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/server.express.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/status.codes +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/_gitignore +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/conf/env.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/conf/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/console.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/context.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/data/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/data/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/json/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/json/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/path.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/prototypes.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/task.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/helpers/text.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/archiver/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/archiver/build.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/archiver/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/async/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/async/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cache/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cache/build.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cache/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/collection/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/collection/build.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/collection/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/config.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cron/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cron/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/domain/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/domain/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/generator/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/i18n/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/inherits/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/inherits/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/instrument/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/job/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/job/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/math/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/merge/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/merge/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/metrics/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/model.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/proc.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/routing/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/routing/build.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/routing/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/secrets/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/session-store.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/shell.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/state.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/url/README.md +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/url/index.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/url/routing.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/uuid/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/validator.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/watcher/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.5.3 → v0.5.4}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,30 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|
|
6
6
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## 0.5.4 - 2026-06-19
|
|
10
|
+
### Added
|
|
11
|
+
* Added a `--ignore-ports` flag to `gina bundle:add`: pass a comma-separated list of port numbers (e.g. `--ignore-ports=3000,3001`) to exclude them from the availability scan when creating or importing a bundle, on top of the already-assigned ports and the reserved 4100-4199 range that are skipped automatically. Composable with `--start-port-from`.
|
|
12
|
+
### Changed
|
|
13
|
+
* Widened the supported Node.js version range to include Node 26. The `engine.node` field is now `>= 22 <27`; the full test suite passes on Node 26.3.0 and Node 26 is now part of the CI test matrix.
|
|
14
|
+
### Fixed
|
|
15
|
+
* FormValidator isFloat now accepts string float values (e.g. "1.5") by coercing with Number() before checking finiteness and a fractional part. Previously the strict Number(val) === val gate passed only a real JS number, so server-side validation of form and urlencoded input (always strings) wrongly rejected valid floats. Whole numbers still fail, preserving the rule that an integer is not a float.
|
|
16
|
+
* FormValidator isDate now validates non-ISO date masks (e.g. dd/mm/yyyy). It builds the date from explicit numeric components identified by the mask tokens with a round-trip range check, instead of reformatting a string and handing it to new Date(). Previously a slash mask with a day greater than 12 was parsed as US MM/DD and wrongly rejected; impossible dates such as 2023-02-30 are still rejected.
|
|
17
|
+
* Fixed multipart file uploads ignoring the configured upload directory. The handler read a non-existent `upload.uploadDir` key and always wrote to the OS temp dir, so the documented `upload.tmpPath` and per-group `path` settings had no effect. Uploads now stream to the configured `tmpPath` (or a per-group `path` when the group sets one), falling back to the OS temp dir only when neither is configured; a configured directory that does not exist yet is created automatically.
|
|
18
|
+
* Fixed two multipart upload limits that were declared in settings.json but inert. `upload.maxFields` (default 1000) is now enforced as a global per-request file-count cap — previously it was never read, so a group allowing multiple files accepted an unbounded number. `upload.maxFieldsSize` now honours its unit suffix (B/KB/MB/GB; a bare number is read as MB) instead of dropping it — previously `"512K"` was parsed as 512 and compared as 512 MB. Back-compat note: a `maxFieldsSize` with a non-MB suffix now means what it says (a tighter limit than before); the shipped `"2MB"` default is unchanged.
|
|
19
|
+
* Fixed a dev-mode memory leak: with hot-reload active (NODE_ENV_IS_DEV), the framework evicted and re-required its collection, merge, uuid, cache and archiver libraries on every request, so long-lived code that captured those libraries at startup accumulated dead module references that the per-request prune could not reach — a slow heap climb that ended in an out-of-memory crash under sustained dev traffic (for example a long end-to-end run). These five stable libraries are now loaded once (like the logger, job and state singletons), keeping the dev-mode heap flat. Production was never affected (it does not evict modules per request).
|
|
20
|
+
* Fixed a rare cross-request data mix-up in the dev Inspector and instrumentation-window data feed for Swig-rendered HTML pages: under concurrent requests, one page's captured query log and flow timeline could be attributed to another request. The Swig render path now isolates its per-request state the same way the Nunjucks path already does. This affects Inspector observability only — rendered page output was never affected.
|
|
21
|
+
* Fixed the dev Inspector misrouting its live server-log stream (/_gina/logs) and live database-index lookups (/_gina/indexes) to the wrong bundle in reverse-proxy multi-bundle setups, where several bundles share a host and differ only by a path prefix. Both now resolve the monitored bundle the same way the Data-tab Reveal already did — via the page opener or an explicit ?target= — instead of a bare path strip that hit the proxy default bundle. Single-bundle setups are unaffected. Dev Inspector tooling only.
|
|
22
|
+
* Hardened the dev Inspector SPA against two edge cases: a corrupted or tampered fold-state value in localStorage could throw and break the collapsible tree toggles, and a form-data section label was inserted into the panel without HTML-escaping. Both are now guarded. Dev Inspector tooling only; no impact on application pages.
|
|
23
|
+
* The default (Express) server engine now serves the admin endpoints /_gina/info and /_gina/cache/stats, which previously returned 404 there while the Isaac engine served them. Both engines now expose them with the same always-on, IP-allowlisted behaviour (loopback-only by default; configure via app.json admin.allowFrom), so process/runtime info and cache statistics are available regardless of which server engine a bundle runs.
|
|
24
|
+
* FormValidator's `isDate` rule now returns the field object on its valid path (like every other rule), so it chains — e.g. `field.isDate(mask).isRequired()`; the parsed Date stays available on the field's `value`.
|
|
25
|
+
* Fixed a dev-mode memory retention on the HTTP/2 `self.query()` client path. When an outbound query stream settled at a non-retry outcome — timeout, stream error, premature close, exhausted 502 retries, or normal completion — its event listeners stayed attached, and through them the per-request controller plus the large per-request configuration clone it had captured were retained until the cached HTTP/2 session was eventually torn down. Under sustained bursty inter-service traffic the retained clones accumulated and could push a long-running dev bundle toward its heap limit. The stream is now released at every non-retry terminal (its timeout cancelled, listeners detached, stream closed), which bounds live heap. Production was unaffected — it reuses a single controller class, so retention was already bounded — and the retry paths already destroyed the session.
|
|
26
|
+
* Narrowed the per-request configuration clone in the router so a matched request no longer deep-clones the entire bundle configuration. Only the routing table the request mutates is cloned per request; the large immutable remainder (templates, server configuration, application assets) is shared by reference. Under sustained concurrency this removes a heap high-water-mark proportional to configuration size. No behavior or API change.
|
|
27
|
+
* getRouteByUrl no longer mutates the shared route configuration in place when resolving a parameterised route. It now clones the route param subtree per request and propagates the resolved values onto the returned route, so a :placeholder in a route param field (path, namespace, file or title) no longer leaks the values resolved for one request into later requests for the same route, nor produces stale params across repeat client-side navigations. (#B52-residual)
|
|
28
|
+
* Dev Inspector: the data tabs (Data, View, Forms, Query, Flow) now reliably track the page that opened the Inspector, instead of intermittently showing another browser tab's data. When a bundle's pages set `Cross-Origin-Opener-Policy: same-origin`, the browser severs the Inspector popup's `window.opener`, which previously dropped the Inspector onto bundle-wide channels (the shared `localStorage` snapshot and the worker-wide `/_gina/agent` stream) that any open tab or background XHR could overwrite. The statusbar now opens the Inspector bound to the opener tab via a per-tab BroadcastChannel (`?ch=<tabId>`), so its data follows that one tab's navigation and is immune to other tabs' renders. No change when the Inspector is opened standalone (`?target=`) or directly by URL.
|
|
29
|
+
* Live form validation now shows only the soft warning border while a field is being edited; its error message is revealed once the field is committed (on blur or submit).
|
|
30
|
+
### Security
|
|
31
|
+
* Uploads to an unconfigured upload group are now rejected with HTTP 400 instead of streaming through unchecked, closing a bypass of a group's `allowedExtensions` and `isMultipleAllowed` limits. A file with no group falls back to the default `untagged` group, and `untagged` is no longer exempt from its own configured limits. Back-compat: the shipped `untagged` default now sets `isMultipleAllowed: true`; bundles whose `settings.json` set it to `false`, or that uploaded without configuring `upload.groups`, must add or adjust their upload-group configuration.
|
|
32
|
+
|
|
9
33
|
## 0.5.3 - 2026-06-14
|
|
10
34
|
|
|
11
35
|
_Patch release — no breaking changes. Finishes the released-response crash-family hardening (a late two-/three-argument `throwError()` and the swig / nunjucks render delegates, including their async variants, no longer crash or emit unhandled rejections when invoked on an already-released response) and adds bundle-boot / startup robustness — atomic `~/.gina` state-file writes, framework command-socket hardening, protection of the framework socket port from a bundle's `--port`, and synchronous boot-failure diagnostics under piped output — plus storage `_id` collision hardening, clearer unresolved-`${secret:KEY}` diagnostics, and the new `gina port:set --force`._
|
package/README.md
CHANGED
|
@@ -39,15 +39,17 @@ gina bundle:start api @myproject
|
|
|
39
39
|
open https://localhost:3100
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
## What's in 0.5.
|
|
43
|
-
|
|
44
|
-
- **
|
|
45
|
-
- **
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
48
|
-
- **
|
|
49
|
-
-
|
|
50
|
-
- **
|
|
42
|
+
## What's in 0.5.4
|
|
43
|
+
|
|
44
|
+
- **Node.js 26 support.** The supported range now includes Node 26 — `engine.node` is `>= 22 <27`, the full test suite passes on 26.3.0, and Node 26 is part of the CI matrix.
|
|
45
|
+
- **Form-validation rule fixes (server + client).** `isFloat` now accepts string float values such as `"1.5"`, so server-side validation of form and urlencoded input (always strings) no longer rejects valid floats — whole numbers still fail. `isDate` validates non-ISO masks like `dd/mm/yyyy` (a slash mask with a day past 12 is no longer mis-read as US `MM/DD`) and now returns the field object, so it chains: `field.isDate(mask).isRequired()`.
|
|
46
|
+
- **Quieter live form validation.** While a field is being edited only the soft warning border shows; the error message is revealed once the field is committed (on blur or submit).
|
|
47
|
+
- **File uploads honour their configured directory and limits.** Multipart uploads now write to the configured `upload.tmpPath` (or a per-group `path`), creating the directory if missing, instead of always using the OS temp dir. `upload.maxFields` (a global per-request file-count cap) is now enforced, and `upload.maxFieldsSize` honours its unit suffix (`B`/`KB`/`MB`/`GB`; a bare number is read as MB). **Security:** a file uploaded to an unconfigured group is now rejected with HTTP 400 instead of streaming through unchecked, closing a bypass of a group's `allowedExtensions` / `isMultipleAllowed` limits. **Back-compat:** the `untagged` default now sets `isMultipleAllowed: true`, and a non-MB `maxFieldsSize` suffix now means what it says — see the [migration guide](https://gina.io/docs/migration) if your bundle configures uploads.
|
|
48
|
+
- **Dev-mode heap fixes.** Two retention paths that could push a long-running dev bundle toward an out-of-memory crash under sustained traffic are closed: the hot-reload path no longer accumulates dead module references for five core libraries (now loaded once, like the logger / job / state singletons), and the HTTP/2 `self.query()` client releases a settled stream at every non-retry outcome instead of retaining the per-request controller and its config clone. Production was never affected by either.
|
|
49
|
+
- **Tighter per-request config isolation.** The router now deep-clones only the routing table a matched request mutates, sharing the large immutable remainder by reference — removing a concurrency heap high-water-mark proportional to config size. Relatedly, `getRouteByUrl` no longer mutates the shared route config in place, so a `:placeholder` route can't leak one request's resolved values (path / namespace / file / title) into later requests for the same route.
|
|
50
|
+
- **Dev Inspector reliability.** The data tabs now reliably track the page that opened the Inspector — a per-tab channel survives `Cross-Origin-Opener-Policy: same-origin` severing `window.opener`. The Swig render path isolates per-request query/flow capture (concurrent requests no longer cross data); `/_gina/logs` and `/_gina/indexes` resolve the right bundle in reverse-proxy multi-bundle setups; and the SPA is hardened against a corrupted localStorage fold-state and an unescaped form-data label. Dev tooling only.
|
|
51
|
+
- **Express-engine admin-endpoint parity.** The default (Express) engine now serves `/_gina/info` and `/_gina/cache/stats` with the same always-on, loopback-only, IP-allowlisted behaviour as the Isaac engine (they previously 404'd there).
|
|
52
|
+
- **`gina bundle:add --ignore-ports`.** Exclude specific ports from the availability scan when creating or importing a bundle (e.g. `--ignore-ports=3000,3001`); composable with `--start-port-from`.
|
|
51
53
|
|
|
52
54
|
See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
|
|
53
55
|
|
package/ROADMAP.md
CHANGED
|
@@ -28,6 +28,7 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
28
28
|
| **Q2 2026** | `0.5.1` ✅ | Patch: released-response crash family — late `throwError()` and the HTTP/2 inter-bundle query retry / late-response / redirect-intercept paths no longer kill the bundle · dev-mode hot-reload `module.children` heap leak fixed (OOM under sustained load) · inter-bundle proxy JSON bodies keep their `application/json` label · ROADMAP consistency release gate |
|
|
29
29
|
| **Q2 2026** | `0.5.2` ✅ | Patch: released-response crash family completed across the remaining synchronous controller surface — `renderJSON()` / `redirect()` / `store()` / `push()` / `renderStream()` / request-method + form-rule helpers no longer kill the bundle when called on an already-released response · exhausted HTTP/2 502 retries surface a typed `BAD_GATEWAY` error instead of being consumed as success |
|
|
30
30
|
| **Q2 2026** | `0.5.3` ✅ | Patch: released-response crash family finished — late `throwError(status, error)` (2- and 3-argument forms) and the HTML render delegates (swig / nunjucks + async variants) no longer crash or emit unhandled rejections when invoked on an already-released response · atomic `~/.gina` state-file writes (concurrent multi-bundle / multi-container boot can't read a torn file) · framework command-socket hardened against malformed / fragmented payloads · framework socket port no longer corrupted by a bundle's `--port` · synchronous boot-failure diagnostics under piped stdout/stderr · storage `_id` collision hardening · `gina port:set --force` |
|
|
31
|
+
| **Q2 2026** | `0.5.4` ✅ | Node.js 26 support (engine `>= 22 <27`, CI matrix) · FormValidator fixes (`isFloat` accepts string floats · `isDate` non-ISO masks + rule chaining) · quieter live form validation (error message revealed on blur) · file-upload fixes (honour `tmpPath` / per-group `path` · enforce `maxFields` + `maxFieldsSize` unit suffix · **Security**: reject uploads to an unconfigured group, closing an `allowedExtensions` / `isMultipleAllowed` bypass) · two dev-mode heap fixes (hot-reload lib-eviction leak · HTTP/2 `self.query()` settled-stream retention) · tighter per-request config isolation (narrowed router clone · `getRouteByUrl` shared-config mutation) · dev Inspector reliability (per-tab channel under COOP · Swig render-race isolation · multi-bundle proxy log/index routing · SPA hardening) · Express-engine `/_gina/info` + `/_gina/cache/stats` parity · `bundle:add --ignore-ports` |
|
|
31
32
|
| **Q1 2027** | `0.5.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · CLI Tier 3 (project:move, framework:update, backup/restore, man pages) · Beemaster admin + visual translation editor |
|
|
32
33
|
| **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
|
|
33
34
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.5.4
|
|
@@ -3,6 +3,42 @@
|
|
|
3
3
|
'use strict';
|
|
4
4
|
var d = window.__ginaData;
|
|
5
5
|
if (!d || !d.user) return;
|
|
6
|
+
|
|
7
|
+
// ── Inspector per-tab data channel (#INS) ─────────────────────────────
|
|
8
|
+
// COOP can sever window.opener for the Inspector popup, dropping the
|
|
9
|
+
// Inspector onto bundle-global channels (the shared localStorage slot +
|
|
10
|
+
// the worker-wide /_gina/agent SSE) that ANY tab's render or background
|
|
11
|
+
// XHR clobbers. A per-tab BroadcastChannel — keyed by a sessionStorage id
|
|
12
|
+
// that is stable across THIS tab's navigations — lets the Inspector bind
|
|
13
|
+
// to this tab only. We publish the tab's current __ginaData here (page
|
|
14
|
+
// load) and on every ginaToolbar.update()/restore() (in-tab XHR/pushState
|
|
15
|
+
// renders), so the bound Inspector follows this tab and ignores others.
|
|
16
|
+
var _ginaTabId = null;
|
|
17
|
+
try {
|
|
18
|
+
_ginaTabId = sessionStorage.getItem('__gina_tab_id');
|
|
19
|
+
if (!_ginaTabId) {
|
|
20
|
+
_ginaTabId = 'gt' + Math.random().toString(36).slice(2) + Date.now().toString(36);
|
|
21
|
+
sessionStorage.setItem('__gina_tab_id', _ginaTabId);
|
|
22
|
+
}
|
|
23
|
+
} catch (e) { _ginaTabId = null; }
|
|
24
|
+
var _ginaBC = null;
|
|
25
|
+
try {
|
|
26
|
+
if (_ginaTabId && typeof BroadcastChannel !== 'undefined') {
|
|
27
|
+
_ginaBC = new BroadcastChannel('gina-inspector-' + _ginaTabId);
|
|
28
|
+
}
|
|
29
|
+
} catch (e) { _ginaBC = null; }
|
|
30
|
+
function _ginaPublish() {
|
|
31
|
+
if (!_ginaBC) return;
|
|
32
|
+
try { _ginaBC.postMessage({ type: 'data', payload: window.__ginaData }); } catch (e) {}
|
|
33
|
+
}
|
|
34
|
+
// A freshly-opened Inspector posts {type:'request'} (BroadcastChannel does
|
|
35
|
+
// not replay past messages) — reply with the current payload.
|
|
36
|
+
if (_ginaBC) {
|
|
37
|
+
_ginaBC.onmessage = function (ev) {
|
|
38
|
+
if (ev && ev.data && ev.data.type === 'request') _ginaPublish();
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
6
42
|
var env = d.user.environment || {};
|
|
7
43
|
var data = d.user.data || {};
|
|
8
44
|
var bundle = env.bundle || '?';
|
|
@@ -167,6 +203,7 @@
|
|
|
167
203
|
|
|
168
204
|
// Sync localStorage for the Inspector's fallback channel
|
|
169
205
|
try { localStorage.setItem('__ginaData', JSON.stringify(window.__ginaData)); } catch (e) {}
|
|
206
|
+
_ginaPublish();
|
|
170
207
|
},
|
|
171
208
|
restore: function () {
|
|
172
209
|
if (!window.__ginaData) return;
|
|
@@ -182,6 +219,7 @@
|
|
|
182
219
|
} catch (e) {}
|
|
183
220
|
}
|
|
184
221
|
try { localStorage.setItem('__ginaData', JSON.stringify(window.__ginaData)); } catch (e) {}
|
|
222
|
+
_ginaPublish();
|
|
185
223
|
},
|
|
186
224
|
hasParsedUrls: false
|
|
187
225
|
};
|
|
@@ -213,6 +251,7 @@
|
|
|
213
251
|
|
|
214
252
|
// Publish data for Inspector via localStorage (works regardless of opener)
|
|
215
253
|
try { localStorage.setItem('__ginaData', JSON.stringify(d)); } catch (e) {}
|
|
254
|
+
_ginaPublish();
|
|
216
255
|
var webroot = env.webroot || '/';
|
|
217
256
|
if (webroot.charAt(webroot.length - 1) !== '/') webroot += '/';
|
|
218
257
|
var el = document.createElement('div');
|
|
@@ -264,7 +303,7 @@
|
|
|
264
303
|
}
|
|
265
304
|
} catch (e) {}
|
|
266
305
|
window.open(
|
|
267
|
-
_embeddedUrl,
|
|
306
|
+
_embeddedUrl + (_ginaTabId ? '?ch=' + encodeURIComponent(_ginaTabId) : ''),
|
|
268
307
|
'gina-inspector',
|
|
269
308
|
'width=' + w + ',height=' + h + ',left=' + left + ',top=' + top
|
|
270
309
|
+ ',menubar=no,toolbar=no,location=no,status=no,resizable=yes,scrollbars=yes'
|
|
Binary file
|
|
Binary file
|
package/framework/{v0.5.3 → v0.5.4}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js
RENAMED
|
@@ -146,6 +146,22 @@
|
|
|
146
146
|
// ── State ──────────────────────────────────────────────────────────────
|
|
147
147
|
/** @type {?Window|string} Data source — `Window` (opener), `'localStorage'`, or `null` */
|
|
148
148
|
var source = null;
|
|
149
|
+
/**
|
|
150
|
+
* Bound mode (#INS) — the per-tab BroadcastChannel the Inspector binds to
|
|
151
|
+
* when the statusbar opened it with `?ch=<tabId>`. Scopes data to the ONE
|
|
152
|
+
* tab that opened the Inspector (immune to other tabs'/XHR renders that
|
|
153
|
+
* clobber the bundle-global localStorage + SSE channels COOP forces us onto
|
|
154
|
+
* when it severs window.opener). `null` outside bound mode.
|
|
155
|
+
* @type {?BroadcastChannel}
|
|
156
|
+
*/
|
|
157
|
+
var _boundChannel = null;
|
|
158
|
+
/**
|
|
159
|
+
* Latest payload received over {@link _boundChannel}; read by pollData()
|
|
160
|
+
* (source === 'broadcast'). The channel handler also calls pollData() for an
|
|
161
|
+
* immediate apply, so the poll timer is only a fallback.
|
|
162
|
+
* @type {?Object}
|
|
163
|
+
*/
|
|
164
|
+
var _bcLatest = null;
|
|
149
165
|
/** @type {?Object} Latest parsed `__ginaData` payload */
|
|
150
166
|
var ginaData = null;
|
|
151
167
|
/** @type {LogEntry[]} In-memory log buffer (capped at {@link MAX_LOG_ENTRIES}) */
|
|
@@ -329,7 +345,13 @@
|
|
|
329
345
|
function loadFoldStore() {
|
|
330
346
|
try {
|
|
331
347
|
var raw = localStorage.getItem(FOLD_STORAGE_KEY);
|
|
332
|
-
|
|
348
|
+
var o = raw ? JSON.parse(raw) : {};
|
|
349
|
+
// Shape-guard (mirrors getCustomOrder / getHiddenTabs / tryLocalStorage):
|
|
350
|
+
// a corrupted or tampered key could hold a JSON primitive (42 / true /
|
|
351
|
+
// "x"); returning it would make the un-try/caught toggle handler run
|
|
352
|
+
// `store[tab] = {}` on a primitive → strict-mode TypeError, breaking
|
|
353
|
+
// fold persistence on every <details> toggle.
|
|
354
|
+
return (o && typeof o === 'object' && !Array.isArray(o)) ? o : {};
|
|
333
355
|
} catch (e) { return {}; }
|
|
334
356
|
}
|
|
335
357
|
|
|
@@ -1399,7 +1421,7 @@
|
|
|
1399
1421
|
// Remaining keys (e.g. "validated" — boolean set by gina.js form validator)
|
|
1400
1422
|
for (var k = 0; k < keys.length; k++) {
|
|
1401
1423
|
if (sectionOrder.indexOf(keys[k]) >= 0) continue;
|
|
1402
|
-
h += '<h3 class="bm-sub-section-title">' + keys[k] + '</h3>';
|
|
1424
|
+
h += '<h3 class="bm-sub-section-title">' + escHtml(keys[k]) + '</h3>';
|
|
1403
1425
|
h += renderTree(fd[keys[k]], 0, null, null, ginaFd ? ginaFd[keys[k]] : undefined);
|
|
1404
1426
|
}
|
|
1405
1427
|
return h;
|
|
@@ -1872,6 +1894,40 @@
|
|
|
1872
1894
|
return (bytes / (1024 * 1024)).toFixed(1) + ' MB';
|
|
1873
1895
|
}
|
|
1874
1896
|
|
|
1897
|
+
/**
|
|
1898
|
+
* Resolve the base URL prefix for a per-bundle `/_gina/*` endpoint.
|
|
1899
|
+
*
|
|
1900
|
+
* Three-fallback resolver (the same logic `toggleReveal()` uses): (1) a
|
|
1901
|
+
* `?target=` query param (standalone mode), (2) the opener's pathname
|
|
1902
|
+
* (statusbar-opened mode — routes to the bundle that rendered the current
|
|
1903
|
+
* page), (3) the Inspector's own pathname with `_gina/inspector...` stripped.
|
|
1904
|
+
* Critical in proxy-routed multi-bundle setups where bundles share a host and
|
|
1905
|
+
* differ only by a path prefix: a bare `/_gina/logs` or `/_gina/indexes` would
|
|
1906
|
+
* otherwise hit the proxy's default bundle instead of the monitored one.
|
|
1907
|
+
*
|
|
1908
|
+
* Used by every per-bundle `/_gina/*` consumer: `fetchLiveIndexes()`,
|
|
1909
|
+
* `tryServerLogs()`, `toggleReveal()`, `tryAgentPassive()`, and the
|
|
1910
|
+
* refresh-button re-reveal all resolve their base through this one helper
|
|
1911
|
+
* (pinned by inspector.test.js §54/§55/§56/§79). For `tryAgentPassive()`
|
|
1912
|
+
* the `?target=` branch is inert — it only runs when no `?target=` exists.
|
|
1913
|
+
*
|
|
1914
|
+
* @inner
|
|
1915
|
+
* @returns {string} Base URL prefix (no trailing slash), or '' for host root.
|
|
1916
|
+
*/
|
|
1917
|
+
function resolveBundleBase() {
|
|
1918
|
+
try {
|
|
1919
|
+
var params = new URLSearchParams(window.location.search);
|
|
1920
|
+
var target = (params.get('target') || '').replace(/\/+$/, '');
|
|
1921
|
+
if (target) {
|
|
1922
|
+
return target;
|
|
1923
|
+
}
|
|
1924
|
+
if (window.opener && window.opener.location) {
|
|
1925
|
+
return (window.opener.location.pathname || '').replace(/\/+$/, '');
|
|
1926
|
+
}
|
|
1927
|
+
} catch (e) {}
|
|
1928
|
+
return window.location.pathname.replace(/\/_gina\/inspector.*$/, '').replace(/\/+$/, '');
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1875
1931
|
/**
|
|
1876
1932
|
* #QI2 — Fetch live index data from the /_gina/indexes endpoint.
|
|
1877
1933
|
* Called when the Query tab renders queries with N/A index badges.
|
|
@@ -1882,7 +1938,10 @@
|
|
|
1882
1938
|
function fetchLiveIndexes() {
|
|
1883
1939
|
if (_liveIndexes !== null || _liveIndexesFetching) return;
|
|
1884
1940
|
_liveIndexesFetching = true;
|
|
1885
|
-
|
|
1941
|
+
// Route through the shared 3-fallback resolver so /_gina/indexes reaches
|
|
1942
|
+
// the monitored bundle in proxy-routed multi-bundle setups (was a bare
|
|
1943
|
+
// pathname strip that misrouted to the proxy's default bundle).
|
|
1944
|
+
var base = resolveBundleBase();
|
|
1886
1945
|
var url = base + '/_gina/indexes';
|
|
1887
1946
|
try {
|
|
1888
1947
|
var xhr = new XMLHttpRequest();
|
|
@@ -3062,20 +3121,7 @@
|
|
|
3062
3121
|
// one that produced the snapshot.
|
|
3063
3122
|
// 3. Fallback — strip `_gina/inspector` from the Inspector's own
|
|
3064
3123
|
// pathname (same approach as tryServerLogs).
|
|
3065
|
-
var base =
|
|
3066
|
-
try {
|
|
3067
|
-
var params = new URLSearchParams(window.location.search);
|
|
3068
|
-
var target = (params.get('target') || '').replace(/\/+$/, '');
|
|
3069
|
-
if (target) {
|
|
3070
|
-
base = target;
|
|
3071
|
-
} else if (window.opener && window.opener.location) {
|
|
3072
|
-
base = (window.opener.location.pathname || '').replace(/\/+$/, '');
|
|
3073
|
-
} else {
|
|
3074
|
-
base = window.location.pathname.replace(/\/_gina\/inspector.*$/, '').replace(/\/+$/, '');
|
|
3075
|
-
}
|
|
3076
|
-
} catch (e) {
|
|
3077
|
-
base = window.location.pathname.replace(/\/_gina\/inspector.*$/, '').replace(/\/+$/, '');
|
|
3078
|
-
}
|
|
3124
|
+
var base = resolveBundleBase();
|
|
3079
3125
|
var url = base + '/_gina/reveal';
|
|
3080
3126
|
var xhr = new XMLHttpRequest();
|
|
3081
3127
|
try {
|
|
@@ -3202,6 +3248,41 @@
|
|
|
3202
3248
|
} catch (e) { return false; }
|
|
3203
3249
|
}
|
|
3204
3250
|
|
|
3251
|
+
/**
|
|
3252
|
+
* Bind the Inspector to the opener tab's per-tab BroadcastChannel (#INS).
|
|
3253
|
+
*
|
|
3254
|
+
* Used in "bound mode" — when the statusbar opened the Inspector with a
|
|
3255
|
+
* `?ch=<tabId>` param. The statusbar (running in the opener tab) publishes
|
|
3256
|
+
* that tab's CURRENT `__ginaData` on `gina-inspector-<tabId>` on every page
|
|
3257
|
+
* render and every `ginaToolbar.update()` (in-tab XHR / pushState), so the
|
|
3258
|
+
* data is scoped to exactly that tab and follows its navigation — unaffected
|
|
3259
|
+
* by other tabs' or background-XHR renders that clobber the bundle-global
|
|
3260
|
+
* localStorage / `/_gina/agent` SSE channels COOP forces the Inspector onto
|
|
3261
|
+
* when it severs `window.opener`.
|
|
3262
|
+
*
|
|
3263
|
+
* Sets `source = 'broadcast'` (pollData then reads {@link _bcLatest}). Posts
|
|
3264
|
+
* a `{type:'request'}` on connect so the opener replies with its current
|
|
3265
|
+
* payload (BroadcastChannel does not replay past messages).
|
|
3266
|
+
*
|
|
3267
|
+
* @inner
|
|
3268
|
+
* @param {string} ch The opener tab id from the `?ch=` param.
|
|
3269
|
+
* @returns {boolean} `true` when the channel was established.
|
|
3270
|
+
*/
|
|
3271
|
+
function setupBoundChannel(ch) {
|
|
3272
|
+
if (!ch || typeof BroadcastChannel === 'undefined') return false;
|
|
3273
|
+
try {
|
|
3274
|
+
_boundChannel = new BroadcastChannel('gina-inspector-' + ch);
|
|
3275
|
+
} catch (e) { _boundChannel = null; return false; }
|
|
3276
|
+
source = 'broadcast';
|
|
3277
|
+
_boundChannel.onmessage = function (ev) {
|
|
3278
|
+
if (!ev || !ev.data || ev.data.type !== 'data' || !ev.data.payload) return;
|
|
3279
|
+
_bcLatest = ev.data.payload;
|
|
3280
|
+
pollData(); // immediate apply; the poll timer is the fallback
|
|
3281
|
+
};
|
|
3282
|
+
try { _boundChannel.postMessage({ type: 'request' }); } catch (e) {}
|
|
3283
|
+
return true;
|
|
3284
|
+
}
|
|
3285
|
+
|
|
3205
3286
|
// ── Settings — environment info + memory gauge ────────────────────────
|
|
3206
3287
|
|
|
3207
3288
|
/**
|
|
@@ -3335,6 +3416,14 @@
|
|
|
3335
3416
|
if (tab !== 'logs') renderTab(tab);
|
|
3336
3417
|
}
|
|
3337
3418
|
return;
|
|
3419
|
+
} else if (source === 'broadcast') {
|
|
3420
|
+
// Bound mode (#INS) — data is pushed over the per-tab
|
|
3421
|
+
// BroadcastChannel into _bcLatest (the channel handler calls
|
|
3422
|
+
// pollData() for an immediate apply; this timer re-read is the
|
|
3423
|
+
// fallback). Scoped to the opener tab, so other tabs' renders
|
|
3424
|
+
// never appear here.
|
|
3425
|
+
gd = _bcLatest;
|
|
3426
|
+
if (!gd) return;
|
|
3338
3427
|
} else if (source === 'localStorage') {
|
|
3339
3428
|
var raw = localStorage.getItem('__ginaData');
|
|
3340
3429
|
if (!raw) return;
|
|
@@ -3400,7 +3489,7 @@
|
|
|
3400
3489
|
hideLoader();
|
|
3401
3490
|
} catch (e) {
|
|
3402
3491
|
hideLoader();
|
|
3403
|
-
if (source !== 'localStorage') source = null;
|
|
3492
|
+
if (source !== 'localStorage' && source !== 'broadcast') source = null;
|
|
3404
3493
|
qs('#bm-dot').className = 'bm-dot err';
|
|
3405
3494
|
}
|
|
3406
3495
|
}
|
|
@@ -3768,9 +3857,10 @@
|
|
|
3768
3857
|
function tryServerLogs() {
|
|
3769
3858
|
if (typeof EventSource === 'undefined') return;
|
|
3770
3859
|
|
|
3771
|
-
// Derive the SSE URL
|
|
3772
|
-
//
|
|
3773
|
-
|
|
3860
|
+
// Derive the SSE URL via the shared 3-fallback resolver so /_gina/logs
|
|
3861
|
+
// reaches the monitored bundle in proxy-routed multi-bundle setups (was a
|
|
3862
|
+
// bare pathname strip that misrouted to the proxy's default bundle).
|
|
3863
|
+
var base = resolveBundleBase();
|
|
3774
3864
|
var url = base + '/_gina/logs';
|
|
3775
3865
|
|
|
3776
3866
|
try {
|
|
@@ -4056,20 +4146,11 @@
|
|
|
4056
4146
|
// Agent mode already covers data + logs via the primary tryAgent stream.
|
|
4057
4147
|
if (source === 'agent') return false;
|
|
4058
4148
|
|
|
4059
|
-
//
|
|
4060
|
-
//
|
|
4061
|
-
//
|
|
4062
|
-
//
|
|
4063
|
-
var base =
|
|
4064
|
-
try {
|
|
4065
|
-
if (window.opener && window.opener.location) {
|
|
4066
|
-
base = (window.opener.location.pathname || '').replace(/\/+$/, '');
|
|
4067
|
-
} else {
|
|
4068
|
-
base = window.location.pathname.replace(/\/_gina\/inspector.*$/, '').replace(/\/+$/, '');
|
|
4069
|
-
}
|
|
4070
|
-
} catch (e) {
|
|
4071
|
-
base = window.location.pathname.replace(/\/_gina\/inspector.*$/, '').replace(/\/+$/, '');
|
|
4072
|
-
}
|
|
4149
|
+
// Resolve the bundle base via resolveBundleBase() (the one resolver
|
|
4150
|
+
// every /_gina/* consumer uses). Its ?target= branch is inert here:
|
|
4151
|
+
// tryAgentPassive only runs when source !== 'agent' (i.e. no ?target=),
|
|
4152
|
+
// so this falls through to the opener-pathname fallback as before.
|
|
4153
|
+
var base = resolveBundleBase();
|
|
4073
4154
|
var url = base + '/_gina/agent';
|
|
4074
4155
|
|
|
4075
4156
|
try {
|
|
@@ -5026,20 +5107,7 @@
|
|
|
5026
5107
|
fetchLiveIndexes();
|
|
5027
5108
|
|
|
5028
5109
|
if (_revealActive) {
|
|
5029
|
-
var base =
|
|
5030
|
-
try {
|
|
5031
|
-
var params = new URLSearchParams(window.location.search);
|
|
5032
|
-
var target = (params.get('target') || '').replace(/\/+$/, '');
|
|
5033
|
-
if (target) {
|
|
5034
|
-
base = target;
|
|
5035
|
-
} else if (window.opener && window.opener.location) {
|
|
5036
|
-
base = (window.opener.location.pathname || '').replace(/\/+$/, '');
|
|
5037
|
-
} else {
|
|
5038
|
-
base = window.location.pathname.replace(/\/_gina\/inspector.*$/, '').replace(/\/+$/, '');
|
|
5039
|
-
}
|
|
5040
|
-
} catch (e) {
|
|
5041
|
-
base = window.location.pathname.replace(/\/_gina\/inspector.*$/, '').replace(/\/+$/, '');
|
|
5042
|
-
}
|
|
5110
|
+
var base = resolveBundleBase();
|
|
5043
5111
|
try {
|
|
5044
5112
|
var xhr = new XMLHttpRequest();
|
|
5045
5113
|
xhr.open('GET', base + '/_gina/reveal', true);
|
|
@@ -5096,59 +5164,71 @@
|
|
|
5096
5164
|
var isAgent = tryAgent();
|
|
5097
5165
|
|
|
5098
5166
|
if (!isAgent) {
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
|
|
5167
|
+
// Bound mode (#INS) — the statusbar opened us with ?ch=<tabId>. Bind
|
|
5168
|
+
// to that tab's per-tab BroadcastChannel so the data tabs track THIS
|
|
5169
|
+
// tab only (immune to other tabs'/XHR renders that clobber the
|
|
5170
|
+
// bundle-global localStorage + SSE channels COOP forces us onto when
|
|
5171
|
+
// it severs window.opener). Server logs still arrive via the SSE.
|
|
5172
|
+
var _boundCh = (typeof URLSearchParams !== 'undefined')
|
|
5173
|
+
? new URLSearchParams(window.location.search).get('ch') : null;
|
|
5174
|
+
if (setupBoundChannel(_boundCh)) {
|
|
5175
|
+
qs('#bm-no-source').classList.add('hidden');
|
|
5176
|
+
tryServerLogs(); // server logs only; data via the bound channel
|
|
5177
|
+
} else {
|
|
5178
|
+
var ok = tryOpener() || tryLocalStorage();
|
|
5179
|
+
if (!ok) {
|
|
5180
|
+
hideLoader();
|
|
5181
|
+
qs('#bm-no-source').classList.remove('hidden');
|
|
5182
|
+
qs('#bm-dot').className = 'bm-dot err';
|
|
5183
|
+
qs('#bm-label').textContent = 'No source';
|
|
5184
|
+
}
|
|
5106
5185
|
|
|
5107
|
-
|
|
5108
|
-
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5119
|
-
|
|
5120
|
-
|
|
5121
|
-
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
|
|
5126
|
-
|
|
5127
|
-
|
|
5128
|
-
|
|
5129
|
-
|
|
5130
|
-
|
|
5131
|
-
|
|
5132
|
-
|
|
5133
|
-
|
|
5134
|
-
|
|
5135
|
-
|
|
5136
|
-
|
|
5137
|
-
|
|
5138
|
-
|
|
5139
|
-
|
|
5140
|
-
|
|
5141
|
-
|
|
5142
|
-
|
|
5186
|
+
/**
|
|
5187
|
+
* Manual connect form on the "No source" overlay.
|
|
5188
|
+
*
|
|
5189
|
+
* When the Inspector opens without a `?target=` param and without
|
|
5190
|
+
* `window.opener`, a form is shown allowing the user to type a
|
|
5191
|
+
* bundle URL. On submit the page reloads with `?target=<url>`,
|
|
5192
|
+
* which activates `tryAgent()` and connects via SSE.
|
|
5193
|
+
*
|
|
5194
|
+
* The handler auto-prefixes `http://` when no scheme is provided
|
|
5195
|
+
* and strips trailing slashes before encoding the target.
|
|
5196
|
+
*
|
|
5197
|
+
* @inner
|
|
5198
|
+
*/
|
|
5199
|
+
var connectForm = qs('#bm-connect-form');
|
|
5200
|
+
if (connectForm) {
|
|
5201
|
+
connectForm.addEventListener('submit', function (ev) {
|
|
5202
|
+
ev.preventDefault();
|
|
5203
|
+
var urlInput = qs('#bm-connect-url');
|
|
5204
|
+
var raw = (urlInput.value || '').trim();
|
|
5205
|
+
if (!raw) return;
|
|
5206
|
+
// Normalise: add scheme if missing, strip trailing slash
|
|
5207
|
+
if (!/^https?:\/\//i.test(raw)) raw = 'http://' + raw;
|
|
5208
|
+
raw = raw.replace(/\/+$/, '');
|
|
5209
|
+
// Navigate with ?target= to activate agent mode
|
|
5210
|
+
var loc = window.location.pathname + '?target=' + encodeURIComponent(raw);
|
|
5211
|
+
// #INS9b — append the optional inspector key (?key=) for an
|
|
5212
|
+
// auth-gated agent endpoint. Kept in the URL only (ephemeral);
|
|
5213
|
+
// never persisted to localStorage.
|
|
5214
|
+
var keyInput = qs('#bm-connect-key');
|
|
5215
|
+
var keyRaw = keyInput ? (keyInput.value || '').trim() : '';
|
|
5216
|
+
if (keyRaw) {
|
|
5217
|
+
loc += '&key=' + encodeURIComponent(keyRaw);
|
|
5218
|
+
}
|
|
5219
|
+
window.location.href = loc;
|
|
5220
|
+
});
|
|
5221
|
+
}
|
|
5143
5222
|
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
|
|
5149
|
-
|
|
5150
|
-
|
|
5151
|
-
|
|
5223
|
+
tryEngineIO();
|
|
5224
|
+
// Subscribe to /_gina/agent in parallel with opener polling. Opener
|
|
5225
|
+
// polling alone misses SPA (pushState) and XHR renders because
|
|
5226
|
+
// those paths never rewrite window.__ginaData. The passive agent
|
|
5227
|
+
// stream delivers pushed data + log frames from those renders.
|
|
5228
|
+
// It also supersedes tryServerLogs() (same `event: log` frames).
|
|
5229
|
+
var _passiveAgentActive = tryAgentPassive();
|
|
5230
|
+
if (!_passiveAgentActive) tryServerLogs();
|
|
5231
|
+
}
|
|
5152
5232
|
}
|
|
5153
5233
|
|
|
5154
5234
|
// ── Persist window geometry on resize/move ──────────────────────────
|