gina 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +6 -4
- package/ROADMAP.md +4 -4
- package/framework/v0.4.3/VERSION +1 -0
- package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +133 -0
- package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.js +142 -39
- package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +498 -496
- package/framework/v0.4.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.4.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.4.2 → v0.4.3}/core/gna.js +54 -0
- package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/src/main.js +129 -10
- package/framework/{v0.4.2 → v0.4.3}/core/server.isaac.js +3 -0
- package/framework/{v0.4.2 → v0.4.3}/core/server.js +151 -0
- package/framework/{v0.4.2 → v0.4.3}/core/template/conf/settings.json +5 -1
- package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/help.txt +14 -0
- package/framework/v0.4.3/lib/cmd/service/start.js +219 -0
- package/framework/v0.4.3/package.json +10 -0
- package/gna.js +4 -4
- package/llms.txt +9 -1
- package/package.json +6 -5
- package/framework/v0.4.2/VERSION +0 -1
- package/framework/v0.4.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.4.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.4.2/package.json +0 -9
- /package/framework/{v0.4.2 → v0.4.3}/AUTHORS +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/html/static.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/config.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/content.encoding +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/currency.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/locales/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/mime.types +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/entity.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/model/template/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/router.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/server.express.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/status.codes +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/_gitignore +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/env.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/console.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/context.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/path.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/prototypes.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/task.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/helpers/text.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/async/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/async/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/config.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cron/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cron/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/generator/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/i18n/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/instrument/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/job/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/job/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/math/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/merge/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/merge/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/metrics/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/model.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/proc.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/build.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/session-store.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/shell.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/state.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/url/README.md +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/url/index.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/url/routing.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/uuid/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/validator.js +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/watcher/package.json +0 -0
- /package/framework/{v0.4.2 → v0.4.3}/lib/watcher/src/main.js +0 -0
|
@@ -1197,11 +1197,15 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1197
1197
|
if (!process.gina) process.gina = {};
|
|
1198
1198
|
process.gina._inspectorAgentEnabled = (_inspAgent.enabled === true);
|
|
1199
1199
|
process.gina._inspectorAgentKey = (typeof _inspAgent.key === 'string' && _inspAgent.key) ? _inspAgent.key : null;
|
|
1200
|
+
// #INS8 — Origin allowlist for the WebSocket /_gina/agent upgrade
|
|
1201
|
+
// (empty ⇒ allow any origin; enforced only when non-empty).
|
|
1202
|
+
process.gina._inspectorAgentAllowedOrigins = Array.isArray(_inspAgent.allowedOrigins) ? _inspAgent.allowedOrigins : [];
|
|
1200
1203
|
} catch (inspAgentErr) {
|
|
1201
1204
|
console.warn('[inspector-agent] init skipped: ' + (inspAgentErr.message || inspAgentErr));
|
|
1202
1205
|
if (!process.gina) process.gina = {};
|
|
1203
1206
|
process.gina._inspectorAgentEnabled = false;
|
|
1204
1207
|
process.gina._inspectorAgentKey = null;
|
|
1208
|
+
process.gina._inspectorAgentAllowedOrigins = [];
|
|
1205
1209
|
}
|
|
1206
1210
|
|
|
1207
1211
|
// #INS10 — capture the instrumentation-window opt-in + key + window
|
|
@@ -1237,6 +1241,56 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1237
1241
|
process.gina._inspectorWindowUntil = 0;
|
|
1238
1242
|
}
|
|
1239
1243
|
|
|
1244
|
+
// #INS8 — dev-only auto-start of the standalone Inspector
|
|
1245
|
+
// bundle (inspector@gina). Best-effort + fail-closed.
|
|
1246
|
+
// Gated on:
|
|
1247
|
+
// - isDev: never fires outside the project's dev env.
|
|
1248
|
+
// - projectName !== 'gina': a @gina service (inspector /
|
|
1249
|
+
// proxy) must never trigger this — otherwise the
|
|
1250
|
+
// Inspector would re-spawn itself when it boots. This is
|
|
1251
|
+
// the timing-proof guard; the not-running check below is
|
|
1252
|
+
// a second line of defense.
|
|
1253
|
+
// - srcExists: the @gina project is registered AND
|
|
1254
|
+
// services/src/inspector is on disk. services/ is
|
|
1255
|
+
// gitignored + npmignored, so it is absent in any
|
|
1256
|
+
// `npm install gina` — the auto-start no-ops for everyone
|
|
1257
|
+
// but a maintainer who scaffolded the services/ project.
|
|
1258
|
+
// - not-running: a live inspector@gina pidfile skips the
|
|
1259
|
+
// spawn (no duplicate Inspector).
|
|
1260
|
+
// Launches via the daemon-free bin/gina-container, so no
|
|
1261
|
+
// `gina start` socket server is required. Keep the spawn
|
|
1262
|
+
// shape in sync with lib/cmd/service/start.js.
|
|
1263
|
+
if (isDev && projectName !== 'gina') {
|
|
1264
|
+
try {
|
|
1265
|
+
var _inspProj = projects['gina'];
|
|
1266
|
+
// 'src/inspector' mirrors @gina manifest.bundles.inspector.src
|
|
1267
|
+
var _inspSrc = _inspProj ? _(_inspProj.path + '/src/inspector') : null;
|
|
1268
|
+
if (_inspProj && _inspSrc && require('fs').existsSync(_inspSrc)) {
|
|
1269
|
+
var _inspRun = lib.cmdStatusFormat.readPidfile(getEnvVar('GINA_HOMEDIR') + '/run', 'inspector', 'gina');
|
|
1270
|
+
if (!_inspRun.running) {
|
|
1271
|
+
var _inspContainer = getEnvVar('GINA_DIR') + '/bin/gina-container';
|
|
1272
|
+
if (require('fs').existsSync(_inspContainer)) {
|
|
1273
|
+
var _inspEnv = Object.assign({}, process.env);
|
|
1274
|
+
delete _inspEnv.NODE_ENV;
|
|
1275
|
+
delete _inspEnv.NODE_SCOPE;
|
|
1276
|
+
delete _inspEnv.NODE_PORT;
|
|
1277
|
+
delete _inspEnv.NODE_BUNDLE;
|
|
1278
|
+
delete _inspEnv.NODE_PROJECT;
|
|
1279
|
+
var _inspChild = require('child_process').spawn(
|
|
1280
|
+
process.execPath,
|
|
1281
|
+
[_inspContainer, 'inspector', '@gina'],
|
|
1282
|
+
{ detached: true, stdio: 'ignore', env: _inspEnv }
|
|
1283
|
+
);
|
|
1284
|
+
_inspChild.unref();
|
|
1285
|
+
console.debug('[inspector-autostart] started inspector@gina (pid ' + ((_inspChild && _inspChild.pid) || '?') + ')');
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
}
|
|
1289
|
+
} catch (inspAutoErr) {
|
|
1290
|
+
console.warn('[inspector-autostart] skipped: ' + (inspAutoErr.message || inspAutoErr));
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1240
1294
|
// #AI6 — initialise the async-job primitive. Always-on (unlike
|
|
1241
1295
|
// metrics): self.startJob() / lib.job.create() must work out of the
|
|
1242
1296
|
// box, so this is NOT gated on an `enabled` flag. The app.json `jobs`
|
|
@@ -573,9 +573,43 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
573
573
|
}
|
|
574
574
|
}
|
|
575
575
|
|
|
576
|
+
/**
|
|
577
|
+
* #A11Y1 (slice 4) — lazily create one visually-hidden aria-live="polite" status region per
|
|
578
|
+
* form and announce a blur-time committed error through it. A CSS :user-invalid display toggle
|
|
579
|
+
* is not reliably announced by screen readers, and on blur the field has lost focus so its own
|
|
580
|
+
* aria-invalid / aria-errormessage are not re-read; the polite region decouples the announcement
|
|
581
|
+
* from visual display. Submit-time errors use focus (see onValidate), not this region.
|
|
582
|
+
* @param {object} $form - the HTMLFormElement the region belongs to
|
|
583
|
+
* @param {string} text - the error text to announce
|
|
584
|
+
* @returns {object|null} the live-region element, or null when nothing was announced
|
|
585
|
+
*/
|
|
586
|
+
var announceA11yError = function($form, text) {
|
|
587
|
+
if ( !$form || !text ) return null;
|
|
588
|
+
var _fid = ( typeof($form.id) != 'undefined' && $form.id ) ? $form.id : ( $form.getAttribute('id') || 'form' );
|
|
589
|
+
var _liveId = 'gina-aria-live-' + _fid;
|
|
590
|
+
var _live = document.getElementById(_liveId);
|
|
591
|
+
if ( !_live ) {
|
|
592
|
+
_live = document.createElement('div');
|
|
593
|
+
_live.id = _liveId;
|
|
594
|
+
_live.setAttribute('role', 'status');
|
|
595
|
+
_live.setAttribute('aria-live', 'polite');
|
|
596
|
+
_live.setAttribute('aria-atomic', 'true');
|
|
597
|
+
_live.className = 'gina-visually-hidden';
|
|
598
|
+
_live.style.cssText = 'position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;';
|
|
599
|
+
$form.appendChild(_live);
|
|
600
|
+
}
|
|
601
|
+
_live.textContent = text;
|
|
602
|
+
return _live;
|
|
603
|
+
};
|
|
604
|
+
|
|
576
605
|
/**
|
|
577
606
|
* handleErrorsDisplay
|
|
578
607
|
* Attention: if you are going to handle errors display by hand, set data to `null` to prevent Toolbar refresh with empty data
|
|
608
|
+
*
|
|
609
|
+
* #A11Y1 — besides toggling `form-item-error` / `form-item-warning` and the error-message div,
|
|
610
|
+
* this reflects each managed field's committed validity into `aria-invalid` ("true" on a
|
|
611
|
+
* committed error, "false" when valid — mirroring the native ValidityState where the field has
|
|
612
|
+
* native HTML constraints so it agrees with `:user-invalid`). Soft live-check warnings are not asserted.
|
|
579
613
|
* @param {object} $form - Target (HTMLFormElement)
|
|
580
614
|
* @param {object} errors
|
|
581
615
|
* @param {object|null} data
|
|
@@ -706,6 +740,14 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
706
740
|
|
|
707
741
|
if (!name) continue;
|
|
708
742
|
|
|
743
|
+
// #A11Y1 (slice 2) — detect a consumer-provided aria-errormessage association. When
|
|
744
|
+
// present, the field already references its own error element, so we must NOT inject a
|
|
745
|
+
// competing form-item-error-message div (aria-invalid alone exposes it). Any wire we add
|
|
746
|
+
// ourselves is marked (data-gina-aria-errormessage) so it is not mistaken for a consumer's.
|
|
747
|
+
var _ariaErrId = $el.getAttribute('aria-errormessage');
|
|
748
|
+
var _ginaOwnsErrMsg = ( typeof($el.dataset) != 'undefined' && typeof($el.dataset.ginaAriaErrormessage) != 'undefined' ) ? true : false;
|
|
749
|
+
var _hasConsumerErrMsg = ( _ariaErrId && !_ginaOwnsErrMsg ) ? true : false;
|
|
750
|
+
|
|
709
751
|
if (
|
|
710
752
|
errors
|
|
711
753
|
&& typeof(errors[name]) != 'undefined'
|
|
@@ -728,6 +770,14 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
728
770
|
$err.className = 'form-item-error-message';
|
|
729
771
|
}
|
|
730
772
|
|
|
773
|
+
// #A11Y1 — reflect a committed invalid state into aria-invalid so any
|
|
774
|
+
// aria-errormessage association on the field is exposed to assistive tech.
|
|
775
|
+
// Soft (live-check) warnings while the field is still being edited are not
|
|
776
|
+
// asserted — only committed errors (blur/submit) are.
|
|
777
|
+
if ( !isWarning && $el.type != 'hidden' ) {
|
|
778
|
+
$el.setAttribute('aria-invalid', 'true');
|
|
779
|
+
}
|
|
780
|
+
|
|
731
781
|
// injecting error messages
|
|
732
782
|
for (var e in errors[name]) {
|
|
733
783
|
|
|
@@ -746,10 +796,31 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
746
796
|
}
|
|
747
797
|
}
|
|
748
798
|
|
|
749
|
-
|
|
799
|
+
// #A11Y1 (slice 2) — skip the injected message div when the field already references
|
|
800
|
+
// a consumer-provided error element; otherwise inject it and wire aria-errormessage
|
|
801
|
+
// to it so assistive tech can resolve the message text.
|
|
802
|
+
if ($target.type != 'hidden' && !_hasConsumerErrMsg) {
|
|
803
|
+
if ( !$el.getAttribute('aria-errormessage') || _ginaOwnsErrMsg ) {
|
|
804
|
+
$err.id = ('gina-errormessage-' + (id || 'form') + '-' + (name || 'field')).replace(/[^a-zA-Z0-9_-]+/g, '-');
|
|
805
|
+
$el.setAttribute('aria-errormessage', $err.id);
|
|
806
|
+
if ( typeof($el.dataset) != 'undefined' ) {
|
|
807
|
+
$el.dataset.ginaAriaErrormessage = 'true';
|
|
808
|
+
}
|
|
809
|
+
}
|
|
750
810
|
insertAfter($target, $err);
|
|
811
|
+
}
|
|
751
812
|
|
|
752
|
-
|
|
813
|
+
// #A11Y1 (slice 4) — announce a blur-time committed error through the form's polite
|
|
814
|
+
// live region (submit-time errors use focus instead). Only on the per-field/blur path
|
|
815
|
+
// (fieldName set) and only once focus has left the field; soft warnings are skipped.
|
|
816
|
+
if (
|
|
817
|
+
!isWarning
|
|
818
|
+
&& typeof(fieldName) != 'undefined'
|
|
819
|
+
&& $err
|
|
820
|
+
&& $el !== document.activeElement
|
|
821
|
+
) {
|
|
822
|
+
announceA11yError($form, $err.textContent);
|
|
823
|
+
}
|
|
753
824
|
|
|
754
825
|
} else if (
|
|
755
826
|
errors
|
|
@@ -782,6 +853,21 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
782
853
|
|
|
783
854
|
$parent.className = $parent.className.replace(/(\s+form\-item\-error|form\-item\-error|\s+form\-item\-warning|form\-item\-warning)/, '');
|
|
784
855
|
|
|
856
|
+
// #A11Y1 — field is valid per Gina; mirror the native ValidityState (where the
|
|
857
|
+
// field has native HTML constraints) so aria-invalid never disagrees with the
|
|
858
|
+
// :user-invalid styling already shown. Explicit "false" is a touched-and-valid signal.
|
|
859
|
+
if ( $el.type != 'hidden' ) {
|
|
860
|
+
var _a11yNativeInvalid = ( $el.willValidate && $el.validity && !$el.validity.valid ) ? true : false;
|
|
861
|
+
$el.setAttribute('aria-invalid', _a11yNativeInvalid ? 'true' : 'false');
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// #A11Y1 (slice 2) — the referenced div was just removed; drop the aria-errormessage
|
|
865
|
+
// wire we own (a consumer-provided association, lacking our marker, is left intact).
|
|
866
|
+
if ( typeof($el.dataset) != 'undefined' && typeof($el.dataset.ginaAriaErrormessage) != 'undefined' ) {
|
|
867
|
+
$el.removeAttribute('aria-errormessage');
|
|
868
|
+
delete $el.dataset.ginaAriaErrormessage;
|
|
869
|
+
}
|
|
870
|
+
|
|
785
871
|
} else if (
|
|
786
872
|
errors.count() > 0
|
|
787
873
|
&& typeof(errors[name]) != 'undefined'
|
|
@@ -802,6 +888,11 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
802
888
|
$err = document.createElement('div');
|
|
803
889
|
$err.setAttribute('class', 'form-item-error-message');
|
|
804
890
|
|
|
891
|
+
// #A11Y1 (slice 2) — preserve the aria-errormessage wire we own across refresh.
|
|
892
|
+
if ( _ginaOwnsErrMsg && _ariaErrId ) {
|
|
893
|
+
$err.id = _ariaErrId;
|
|
894
|
+
}
|
|
895
|
+
|
|
805
896
|
// Fixed on 2025-03-09: className cleanup
|
|
806
897
|
if (
|
|
807
898
|
!isWarning
|
|
@@ -834,9 +925,14 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
834
925
|
}
|
|
835
926
|
}
|
|
836
927
|
|
|
837
|
-
if ($err && $target.type != 'hidden') {
|
|
928
|
+
if ($err && $target.type != 'hidden' && !_hasConsumerErrMsg) {
|
|
838
929
|
insertAfter($target, $err);
|
|
839
930
|
}
|
|
931
|
+
|
|
932
|
+
// #A11Y1 — the committed error persists on refresh; keep aria-invalid asserted.
|
|
933
|
+
if ( !isWarning && $el.type != 'hidden' ) {
|
|
934
|
+
$el.setAttribute('aria-invalid', 'true');
|
|
935
|
+
}
|
|
840
936
|
}
|
|
841
937
|
|
|
842
938
|
if (
|
|
@@ -6001,6 +6097,28 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
6001
6097
|
} else if ($form) { // just in case the form is being destroyed
|
|
6002
6098
|
$form.send(result['data']);
|
|
6003
6099
|
}
|
|
6100
|
+
} else {
|
|
6101
|
+
// #A11Y1 (slice 3) — failed submit: move focus to the first invalid field so
|
|
6102
|
+
// assistive tech announces it (accessible name + aria-invalid + the
|
|
6103
|
+
// aria-errormessage text). DOM order; hidden / unfocusable fields are skipped.
|
|
6104
|
+
var _a11yErrs = result['fields'] || result['error'];
|
|
6105
|
+
if ( _a11yErrs ) {
|
|
6106
|
+
var $a11yForm = event['target'];
|
|
6107
|
+
for (var _ai = 0, _aLen = $a11yForm.length; _ai < _aLen; ++_ai) {
|
|
6108
|
+
var _aField = $a11yForm[_ai];
|
|
6109
|
+
var _aName = _aField.getAttribute('name');
|
|
6110
|
+
if (
|
|
6111
|
+
_aName
|
|
6112
|
+
&& typeof(_a11yErrs[_aName]) != 'undefined'
|
|
6113
|
+
&& ( typeof(_a11yErrs[_aName].count) != 'function' || _a11yErrs[_aName].count() > 0 )
|
|
6114
|
+
&& _aField.type != 'hidden'
|
|
6115
|
+
&& typeof(_aField.focus) == 'function'
|
|
6116
|
+
) {
|
|
6117
|
+
_aField.focus();
|
|
6118
|
+
break;
|
|
6119
|
+
}
|
|
6120
|
+
}
|
|
6121
|
+
}
|
|
6004
6122
|
}
|
|
6005
6123
|
})
|
|
6006
6124
|
}
|
|
@@ -6168,14 +6286,15 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
6168
6286
|
isSubmitType = $submit.getAttribute('data-gina-form-submit');
|
|
6169
6287
|
|
|
6170
6288
|
if ( !onclickAttribute && !isSubmitType) {
|
|
6171
|
-
|
|
6172
|
-
|
|
6173
|
-
|
|
6174
|
-
|
|
6175
|
-
|
|
6176
|
-
|
|
6177
|
-
}
|
|
6289
|
+
// [CSP] Suppress the default action via a click listener instead of an inline
|
|
6290
|
+
// onclick="return false;" attribute (tripped CSP script-src-attr under nonce
|
|
6291
|
+
// policies). A preventDefault-only listener sets event.defaultPrevented exactly
|
|
6292
|
+
// as the inline handler did, so the form-level clickProxyHandler's
|
|
6293
|
+
// `if (event.defaultPrevented) return` guard still short-circuits identically.
|
|
6294
|
+
addListener(gina, $submit, 'click', function(e) { e.preventDefault(); });
|
|
6178
6295
|
}
|
|
6296
|
+
// (an existing onclick is left untouched, as before; the dead else-if append
|
|
6297
|
+
// branch — it only mutated a local, never written back — was removed.)
|
|
6179
6298
|
}
|
|
6180
6299
|
|
|
6181
6300
|
if (!$submit['id']) {
|
|
@@ -1900,6 +1900,9 @@ function ServerEngineClass(options) {
|
|
|
1900
1900
|
});
|
|
1901
1901
|
|
|
1902
1902
|
server.on('upgrade', function(req, socket, head){
|
|
1903
|
+
// #INS8 — defer /_gina/agent upgrades to the WebSocket agent handler
|
|
1904
|
+
// attached in server.js; engine.io owns only its own upgrade path.
|
|
1905
|
+
if (/\/_gina\/agent(?:\?|$)/.test(req.url || '')) { return; }
|
|
1903
1906
|
console.debug('[IO SERVER ] upgrading socket #'+ this.id);
|
|
1904
1907
|
ioServer.handleUpgrade(req, socket, head);
|
|
1905
1908
|
});
|
|
@@ -146,6 +146,152 @@ function _instrumentKeyValid(req) {
|
|
|
146
146
|
try { return crypto.timingSafeEqual(a, b); } catch (e) { return false; }
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
+
/**
|
|
150
|
+
* #INS8 — Attach the authenticated WebSocket transport for `/_gina/agent` to
|
|
151
|
+
* the raw HTTP server. The standalone Inspector (services/src/inspector on
|
|
152
|
+
* :4101) can connect over a WebSocket as an alternative to the SSE channel —
|
|
153
|
+
* same data + log frames, same #INS9b auth — but over a single bidirectional
|
|
154
|
+
* socket, the substrate for future bidirectional commands (#INS11 multi-bundle
|
|
155
|
+
* dashboard, #INS12 browser extension).
|
|
156
|
+
*
|
|
157
|
+
* Engine-agnostic by design: `rawServer` is the value returned by
|
|
158
|
+
* `self.instance.listen()`, and server.js owns the single `listen()` call for
|
|
159
|
+
* BOTH engines (the isaac instance IS the raw server; express's `app.listen()`
|
|
160
|
+
* returns it), so one `upgrade` listener here covers both. There is deliberately
|
|
161
|
+
* NO isaac-specific mirror — the isaac engine.io upgrade handler defers to this
|
|
162
|
+
* one via a `/_gina/agent` skip-guard (see server.isaac.js).
|
|
163
|
+
*
|
|
164
|
+
* Auth parity with the SSE endpoint: dev stays open + keyless; outside dev the
|
|
165
|
+
* upgrade requires a valid key (`x-gina-inspector-key` header or `?key=` query
|
|
166
|
+
* param) via the shared {@link _agentKeyValid}, fail-closed. When an Origin
|
|
167
|
+
* allowlist is configured (`process.gina._inspectorAgentAllowedOrigins`), the
|
|
168
|
+
* upgrade `Origin` must be in it; unconfigured ⇒ allow (parity with the SSE
|
|
169
|
+
* endpoint's `access-control-allow-origin: *`; cross-origin is the norm here,
|
|
170
|
+
* Inspector on :4101 → target on another port). Denials are written as a raw
|
|
171
|
+
* HTTP status line on the upgrade socket (no `ServerResponse` exists yet), then
|
|
172
|
+
* the socket is destroyed.
|
|
173
|
+
*
|
|
174
|
+
* Snapshot replay + capture egress mirror the SSE handler: the last snapshot is
|
|
175
|
+
* only sent in dev OR during an active instrumentation window (#INS10), never a
|
|
176
|
+
* post-window snapshot to a late authenticated client.
|
|
177
|
+
*
|
|
178
|
+
* Fail-graceful: if the `ws` module cannot be loaded the attach is skipped with
|
|
179
|
+
* a warning and SSE remains the transport — the WebSocket is an enhancement,
|
|
180
|
+
* not a hard dependency of the inspector channel.
|
|
181
|
+
*
|
|
182
|
+
* @inner
|
|
183
|
+
* @param {http.Server|https.Server|http2.Http2Server} rawServer - the raw server returned by listen()
|
|
184
|
+
* @param {object} ctx - the Server instance (provides `ctx.instance._lastGinaData`, `ctx.appName`, `ctx.env`)
|
|
185
|
+
* @returns {void}
|
|
186
|
+
* @example
|
|
187
|
+
* // Browser (standalone Inspector), non-dev target with a configured key:
|
|
188
|
+
* // new WebSocket('ws://host:port/_gina/agent?key=' + encodeURIComponent(key))
|
|
189
|
+
* // Frames: {"event":"data","data":{...}} and {"event":"log","data":{t,l,b,s,src}}
|
|
190
|
+
*/
|
|
191
|
+
function attachInspectorAgentWs(rawServer, ctx) {
|
|
192
|
+
if (!rawServer || typeof rawServer.on !== 'function') { return; }
|
|
193
|
+
var WebSocketServer;
|
|
194
|
+
try {
|
|
195
|
+
var _wsMod = require('ws');
|
|
196
|
+
WebSocketServer = _wsMod.WebSocketServer || _wsMod.Server;
|
|
197
|
+
} catch (wsErr) {
|
|
198
|
+
console.warn('[inspector-agent] WebSocket transport disabled — ws module unavailable: ' + (wsErr.message || wsErr));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (typeof WebSocketServer !== 'function') { return; }
|
|
202
|
+
|
|
203
|
+
var _wss = new WebSocketServer({ noServer: true });
|
|
204
|
+
var _agAnsiRe = /\x1B\[\d+m/g;
|
|
205
|
+
|
|
206
|
+
rawServer.on('upgrade', function(req, socket, head) {
|
|
207
|
+
// Only handle the agent WS path; leave every other upgrade (e.g.
|
|
208
|
+
// engine.io in ioServer-attach mode) for its own listener.
|
|
209
|
+
if (!/\/_gina\/agent(?:\?|$)/.test(req.url || '')) { return; }
|
|
210
|
+
|
|
211
|
+
var _agIsDev = (process.env.NODE_ENV_IS_DEV && process.env.NODE_ENV_IS_DEV.toLowerCase() === 'true');
|
|
212
|
+
|
|
213
|
+
// Gate: dev OR explicitly enabled outside dev — otherwise the endpoint
|
|
214
|
+
// does not exist (404), matching the SSE handler's opt-in invisibility.
|
|
215
|
+
if (!_agIsDev && !(process.gina && process.gina._inspectorAgentEnabled)) {
|
|
216
|
+
try { socket.write('HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n'); } catch (e) {}
|
|
217
|
+
try { socket.destroy(); } catch (e) {}
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// #INS9b auth — outside dev a valid key is required (header or ?key=).
|
|
222
|
+
if (!_agIsDev && !_agentKeyValid(req)) {
|
|
223
|
+
try { socket.write('HTTP/1.1 401 Unauthorized\r\nConnection: close\r\n\r\n'); } catch (e) {}
|
|
224
|
+
try { socket.destroy(); } catch (e) {}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Optional Origin allowlist — enforced only when configured (parity with
|
|
229
|
+
// the SSE endpoint, open by default). The operator lists the Inspector
|
|
230
|
+
// origin(s) for production use.
|
|
231
|
+
var _allowed = (process.gina && Array.isArray(process.gina._inspectorAgentAllowedOrigins))
|
|
232
|
+
? process.gina._inspectorAgentAllowedOrigins : [];
|
|
233
|
+
if (_allowed.length > 0) {
|
|
234
|
+
var _origin = (req.headers && req.headers.origin) || '';
|
|
235
|
+
if (_allowed.indexOf(_origin) < 0) {
|
|
236
|
+
try { socket.write('HTTP/1.1 403 Forbidden\r\nConnection: close\r\n\r\n'); } catch (e) {}
|
|
237
|
+
try { socket.destroy(); } catch (e) {}
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
_wss.handleUpgrade(req, socket, head, function(ws) {
|
|
243
|
+
if (!process.gina._inspectorActive) { process.gina._inspectorActive = true; }
|
|
244
|
+
|
|
245
|
+
// Initial snapshot — dev OR an active instrumentation window only,
|
|
246
|
+
// never a post-window snapshot to a late authenticated client (#INS10).
|
|
247
|
+
try {
|
|
248
|
+
if ((_agIsDev || (lib.instrument && lib.instrument.isActive())) && ctx.instance && ctx.instance._lastGinaData) {
|
|
249
|
+
ws.send(JSON.stringify({ event: 'data', data: ctx.instance._lastGinaData }));
|
|
250
|
+
} else {
|
|
251
|
+
var _initEnv = { bundle: ctx.appName || '', env: ctx.env || '' };
|
|
252
|
+
ws.send(JSON.stringify({ event: 'data', data: { gina: { environment: _initEnv }, user: { environment: _initEnv } } }));
|
|
253
|
+
}
|
|
254
|
+
} catch (e) {}
|
|
255
|
+
|
|
256
|
+
// Data updates — emitted by the render delegates on every render.
|
|
257
|
+
var _wsDataListener = function(payload) {
|
|
258
|
+
try { ws.send(JSON.stringify({ event: 'data', data: payload })); } catch (e) {}
|
|
259
|
+
};
|
|
260
|
+
// Log entries — same source + frame shape as the SSE endpoint.
|
|
261
|
+
var _wsLogListener = function(payload) {
|
|
262
|
+
try {
|
|
263
|
+
var entry = JSON.parse(payload);
|
|
264
|
+
var level = entry.level === 'catch' ? 'log' : (entry.level || 'log');
|
|
265
|
+
var msg = (entry.content || '').replace(_agAnsiRe, '').replace(/\n$/, '');
|
|
266
|
+
if (!msg) { return; }
|
|
267
|
+
ws.send(JSON.stringify({ event: 'log', data: { t: Date.now(), l: level, b: entry.group || '', s: msg, src: 'server' } }));
|
|
268
|
+
} catch (e) {}
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
process.on('inspector#data', _wsDataListener);
|
|
272
|
+
process.on('logger#default', _wsLogListener);
|
|
273
|
+
|
|
274
|
+
var _cleanup = function() {
|
|
275
|
+
process.removeListener('inspector#data', _wsDataListener);
|
|
276
|
+
process.removeListener('logger#default', _wsLogListener);
|
|
277
|
+
};
|
|
278
|
+
ws.on('close', _cleanup);
|
|
279
|
+
ws.on('error', _cleanup);
|
|
280
|
+
|
|
281
|
+
// Inbound frames are reserved for future bidirectional commands
|
|
282
|
+
// (#INS11/#INS12). For now, answer only a lightweight heartbeat.
|
|
283
|
+
ws.on('message', function(raw) {
|
|
284
|
+
try {
|
|
285
|
+
var m = JSON.parse(raw.toString());
|
|
286
|
+
if (m && m.type === 'ping') { ws.send(JSON.stringify({ event: 'pong', data: Date.now() })); }
|
|
287
|
+
} catch (e) {}
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
try { console.info((req.method || 'GET') + ' [101] ' + req.url + ' (WS agent)'); } catch (e) {}
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
|
|
149
295
|
/**
|
|
150
296
|
* Read a small JSON request body for the POST /_gina/instrument control
|
|
151
297
|
* endpoint (#INS10). Bounded at 4 KB — the control body is tiny
|
|
@@ -3378,6 +3524,11 @@ function Server(options) {
|
|
|
3378
3524
|
var _rawServer = self.instance.listen(self.conf[self.appName][self.env].server.port);
|
|
3379
3525
|
process.server = (_rawServer && typeof _rawServer.close === 'function') ? _rawServer : self.instance;
|
|
3380
3526
|
|
|
3527
|
+
// #INS8 — attach the authenticated WebSocket transport for /_gina/agent
|
|
3528
|
+
// to the raw server. Covers both the isaac and express engines (server.js
|
|
3529
|
+
// owns the single listen() call), so no engine-specific mirror is needed.
|
|
3530
|
+
attachInspectorAgentWs(process.server, self);
|
|
3531
|
+
|
|
3381
3532
|
self.emit('started', self.conf[self.appName][self.env], true);
|
|
3382
3533
|
}
|
|
3383
3534
|
|
|
@@ -145,10 +145,14 @@
|
|
|
145
145
|
// process.env at config-load time). Example:
|
|
146
146
|
// "key": "${secret:INSPECTOR_AGENT_KEY}". When enabled is true
|
|
147
147
|
// but key is empty, the endpoint stays closed (fail-closed).
|
|
148
|
+
// allowedOrigins — #INS8: when non-empty, a WebSocket /_gina/agent upgrade
|
|
149
|
+
// is accepted only if its Origin header is in this list. Empty ⇒
|
|
150
|
+
// allow any origin (the SSE channel is open by CORS * regardless).
|
|
148
151
|
"inspector": {
|
|
149
152
|
"agent": {
|
|
150
153
|
"enabled": false,
|
|
151
|
-
"key": ""
|
|
154
|
+
"key": "",
|
|
155
|
+
"allowedOrigins": []
|
|
152
156
|
},
|
|
153
157
|
// #INS10 — time-boxed instrumentation window. Lets the Inspector's query +
|
|
154
158
|
// flow capture run OUTSIDE dev mode for a bounded period, without enabling
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
Actions:
|
|
5
5
|
|
|
6
|
+
start <service> [@gina] Start a framework-internal service (a bundle of
|
|
7
|
+
the @gina project, e.g. `inspector`) via the
|
|
8
|
+
daemon-free gina-container launcher. No-op when
|
|
9
|
+
the service is already running.
|
|
6
10
|
list [@gina] List framework-internal services registered
|
|
7
11
|
under @gina, with ports and running state.
|
|
8
12
|
help Show this message.
|
|
@@ -11,6 +15,8 @@
|
|
|
11
15
|
|
|
12
16
|
--format=json Emit machine-readable JSON instead of the
|
|
13
17
|
human-readable text table.
|
|
18
|
+
--dry-run (service:start) Print the launch command that
|
|
19
|
+
would run, without spawning anything.
|
|
14
20
|
|
|
15
21
|
Notes:
|
|
16
22
|
|
|
@@ -22,8 +28,16 @@
|
|
|
22
28
|
with `process.kill(pid, 0)` — a stale pidfile (process gone) reports
|
|
23
29
|
the service as stopped.
|
|
24
30
|
|
|
31
|
+
`service:start` spawns the service detached via bin/gina-container, so it
|
|
32
|
+
does not need the `gina start` socket daemon. The service runs in @gina's
|
|
33
|
+
own dev/local defaults; use `bundle:start` for explicit env/scope control.
|
|
34
|
+
Stop a service with `bundle:stop <service> @gina`.
|
|
35
|
+
|
|
25
36
|
Examples:
|
|
26
37
|
|
|
38
|
+
gina service:start inspector Start the Inspector standalone bundle (dev)
|
|
39
|
+
gina service:start inspector --dry-run
|
|
40
|
+
Show the launch command without spawning
|
|
27
41
|
gina service:list List all services with ports + running state
|
|
28
42
|
gina service:list @gina Same (explicit @gina)
|
|
29
43
|
gina service:list --format=json
|