gina 0.4.5-alpha.1 → 0.4.5
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 +10 -0
- package/README.md +5 -3
- package/ROADMAP.md +1 -1
- package/framework/v0.4.5/VERSION +1 -0
- package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -2
- package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/index.js +83 -11
- package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/index.js +76 -0
- package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/lib/connector.js +6 -0
- package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/server.js +59 -0
- package/framework/v0.4.5/lib/logger/README.md +44 -0
- package/framework/v0.4.5/lib/logger/src/containers/default/index.js +97 -0
- package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/main.js +44 -1
- package/framework/{v0.4.5-alpha.1 → v0.4.5}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +8 -0
- package/package.json +2 -2
- package/framework/v0.4.5-alpha.1/VERSION +0 -1
- package/framework/v0.4.5-alpha.1/lib/logger/README.md +0 -7
- package/framework/v0.4.5-alpha.1/lib/logger/src/containers/default/index.js +0 -75
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/AUTHORS +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/LICENSE +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/html/static.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/config.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/content.encoding +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/gna.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/currency.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/mime.types +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/entity.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/template/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/router.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/server.express.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/server.isaac.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/status.codes +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/_gitignore +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/env.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/console.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/context.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/path.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/prototypes.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/task.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/text.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/build.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/async/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/async/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/build.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/build.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/config.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cron/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cron/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/generator/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/i18n/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/instrument/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/job/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/job/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/math/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/merge/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/merge/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/metrics/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/model.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/proc.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/build.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/secrets/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/session-store.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/shell.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/state.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/url/README.md +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/url/index.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/url/routing.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/uuid/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/validator.js +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/watcher/package.json +0 -0
- /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/watcher/src/main.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,16 @@ 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.4.5 - 2026-06-06
|
|
10
|
+
|
|
11
|
+
_Additive release — opt-in structured (JSON) logging with per-request `requestId` / `durationMs` correlation, plus public SDK-handle accessors (`getCluster()` on Couchbase, `getClient()` on MongoDB) for driver-level features such as multi-document transactions. No breaking changes, no settings reset._
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
* Opt-in structured (JSON) log output. Set `GINA_LOG_FORMAT=json` to emit one machine-parseable JSON object per log line (`{ts, level, bundle, message}`, with `group`/`msg` kept as back-compat aliases) for log collectors such as Loki, Datadog, Fluentd or CloudWatch. The default stays the coloured, human-readable format, so interactive `docker logs` output is unchanged. The existing `GINA_LOG_STDOUT` container flag continues to enable JSON output.
|
|
15
|
+
* Added a public `getCluster()` accessor on Couchbase entities that returns the underlying SDK Cluster handle, so applications can use SDK-level features the entity layer does not wrap — notably multi-document transactions via `cluster.transactions().run(...)` — without reaching into private connection internals. Transaction support depends on the Couchbase driver your project installs (SDK 3.2+ / 4.x).
|
|
16
|
+
* Added a public `getClient()` accessor on MongoDB entities that returns the underlying driver `MongoClient`, so applications can reach driver-level features the entity layer does not wrap — notably multi-document transactions via `client.startSession()` / `session.withTransaction(...)` — without reaching into private connection internals. Multi-document transactions additionally require a replica-set or sharded deployment and depend on the `mongodb` driver your project installs.
|
|
17
|
+
* Opt-in per-request `requestId` and `durationMs` fields in structured (JSON) logs. When `GINA_LOG_FORMAT=json` is active, every log line emitted during a request is tagged with a request id (an inbound `X-Request-Id` is honoured when well-formed, otherwise one is generated) and the elapsed milliseconds since the request began, so lines from a single request can be correlated in a collector such as Loki, Datadog, Fluentd or CloudWatch. Default text logging is unchanged and pays no overhead.
|
|
18
|
+
|
|
9
19
|
## 0.4.4 - 2026-06-05
|
|
10
20
|
|
|
11
21
|
_Additive release — `templates.json` gains comma-separated section keys (share one stylesheet/script block across several routes at once) and an optional `_common.config` block for page-level defaults. No breaking changes, no settings reset._
|
package/README.md
CHANGED
|
@@ -39,10 +39,12 @@ gina bundle:start api @myproject
|
|
|
39
39
|
open https://localhost:3100
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
## What's in 0.4.
|
|
42
|
+
## What's in 0.4.5
|
|
43
43
|
|
|
44
|
-
-
|
|
45
|
-
-
|
|
44
|
+
- **Opt-in structured (JSON) logging.** Set `GINA_LOG_FORMAT=json` to emit one machine-parseable JSON object per log line (`{ts, level, bundle, message}`) for collectors such as Loki, Datadog, Fluentd or CloudWatch. The default stays the coloured, human-readable format, so interactive `docker logs` output is unchanged unless you opt in.
|
|
45
|
+
- **Per-request `requestId` / `durationMs` in JSON logs.** When JSON logging is on, every log line emitted during a request carries a request id (an inbound `X-Request-Id` is honoured when well-formed, otherwise one is generated) and the elapsed milliseconds since the request began, so a single request's lines can be correlated in your collector. Default text logging is unchanged and pays no overhead.
|
|
46
|
+
- **Public SDK Cluster accessor on Couchbase entities.** `getCluster()` returns the underlying SDK `Cluster` handle, so you can use SDK-level features the entity layer does not wrap — notably multi-document transactions via `cluster.transactions().run(...)` — without reaching into private connection internals.
|
|
47
|
+
- **Public MongoClient accessor on MongoDB entities.** `getClient()` returns the underlying driver `MongoClient`, so you can reach driver-level features the entity layer does not wrap — notably multi-document transactions via `client.startSession()` / `session.withTransaction(...)` (which additionally require a replica-set or sharded deployment).
|
|
46
48
|
|
|
47
49
|
See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
|
|
48
50
|
|
package/ROADMAP.md
CHANGED
|
@@ -119,7 +119,7 @@ Stub commands confirmed in source — handler files exist but are empty or comme
|
|
|
119
119
|
| --- | --- | --- | --- |
|
|
120
120
|
| 📋 | **ESM compatibility layer** — Dual CJS/ESM entry points via `"exports"` in `package.json`. Framework internals stay CJS; public API gets ESM re-exports. | `0.5.0` | Q1 2027 |
|
|
121
121
|
| 🚧 | **Pluggable template engine** — **Partially shipped in `0.3.7`**: opt-in `render.engine = "nunjucks"` dispatch per bundle. The project installs `nunjucks` itself (no framework dep); Gina loads it via `lib/nunjucks-resolver` and routes through `controller.render-nunjucks.js`. Swig remains the default, runs unchanged. Inspector dev payload, HTTP/2 `stream.respond()` direct path, and error-page template routing all shipped in `0.3.7-alpha.2`. **Closing the parity gap on the `0.3.7` ASAP track** (see Nunjucks Parity below): filter registry port, `setResources` / `<gina>` layout placeholders, static HTML cache parity, Early Hints 103 auto-send. **Remaining `0.5.0` scope**: within-Inspector sub-items (`statusbar.html` include + flow/queries pipelines); per-template-extension dispatch so a single bundle can mix engines (`.swig` / `.njk`); optional auto-detect on `.njk` presence. Breaking syntax differences (`{% parent %}` → `{{ super() }}`, filter renames, `autoescape` default, `date` format strings, no `{% spaceless %}`) are nunjucks's own — Gina doesn't paper over them. | `0.5.0` | Q1 2027 |
|
|
122
|
-
|
|
|
122
|
+
| 🚧 | **Structured logging** — **Opt-in JSON output shipped**: set `GINA_LOG_FORMAT=json` for one machine-parseable object per log line (`{ ts, level, bundle, message }`); the coloured, human-readable format stays the default, so `docker logs` is unchanged. Additive — existing consumers are unaffected. Enables log aggregation (Loki, Datadog, CloudWatch). Per-request fields (`requestId`, `durationMs`) pending request-context research. | `0.5.0` | Q1 2027 |
|
|
123
123
|
| 📋 | **Research `AsyncLocalStorage` for request context** — Evaluate `node:async_hooks` `AsyncLocalStorage` as a replacement for the `local` closure pattern, giving true async isolation across `setTimeout`, Promises, and `async/await` chains without any closure threading. Output: decision doc + proof-of-concept branch. | `0.5.0` | Q1 2027 |
|
|
124
124
|
|
|
125
125
|
### Nunjucks Parity (`0.3.7` ASAP track)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.4.5
|
|
@@ -93,6 +93,40 @@ function Couchbase(conn, infos) {
|
|
|
93
93
|
*/
|
|
94
94
|
var _explainCache = new Map();
|
|
95
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Resolve the underlying Couchbase SDK Cluster handle from a connection
|
|
98
|
+
* object, tolerating both shapes the connector produces:
|
|
99
|
+
* - entity query path: the cluster sits directly at `conn._cluster`
|
|
100
|
+
* - bulk-insert / scope-collection path: `conn` is scope-shaped and the
|
|
101
|
+
* cluster is nested at `conn._scope._bucket._cluster`
|
|
102
|
+
*
|
|
103
|
+
* Single source of truth for cluster resolution — `explainForIndexes`,
|
|
104
|
+
* `bulkInsert` and the public `getCluster()` accessor all consume it, so the
|
|
105
|
+
* dual-shape lookup lives in exactly one place.
|
|
106
|
+
*
|
|
107
|
+
* @param {object} conn - A Couchbase connection object (bucket- or scope-shaped).
|
|
108
|
+
* @returns {object} The SDK Cluster (guaranteed to expose a `query()` method).
|
|
109
|
+
* @throws {Error} `GINA_COUCHBASE_CLUSTER_UNRESOLVED` when neither shape yields a usable cluster.
|
|
110
|
+
* @private
|
|
111
|
+
*/
|
|
112
|
+
var resolveCluster = function(conn) {
|
|
113
|
+
var cluster = (conn && conn._cluster)
|
|
114
|
+
? conn._cluster
|
|
115
|
+
: (conn && conn._scope && conn._scope._bucket && conn._scope._bucket._cluster)
|
|
116
|
+
? conn._scope._bucket._cluster
|
|
117
|
+
: null;
|
|
118
|
+
|
|
119
|
+
if (!cluster || typeof(cluster.query) !== 'function') {
|
|
120
|
+
var _err = new Error('[ CONNECTOR ][ couchbase ] Unable to resolve the SDK Cluster from the connection — '
|
|
121
|
+
+ 'neither `conn._cluster` nor `conn._scope._bucket._cluster` exposes a query() method. '
|
|
122
|
+
+ 'The connection shape may have changed across an SDK or framework upgrade.');
|
|
123
|
+
_err.code = 'GINA_COUCHBASE_CLUSTER_UNRESOLVED';
|
|
124
|
+
throw _err;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return cluster;
|
|
128
|
+
};
|
|
129
|
+
|
|
96
130
|
/**
|
|
97
131
|
* Runs EXPLAIN on a N1QL statement asynchronously and caches the
|
|
98
132
|
* extracted indexes. Patches `queryEntry.indexes` in-place once
|
|
@@ -106,16 +140,13 @@ function Couchbase(conn, infos) {
|
|
|
106
140
|
* @private
|
|
107
141
|
*/
|
|
108
142
|
var explainForIndexes = function(conn, statement, queryEntry, queryOptions) {
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
//
|
|
112
|
-
var cluster
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
: null;
|
|
117
|
-
|
|
118
|
-
if (!cluster || typeof(cluster.query) !== 'function') {
|
|
143
|
+
// #QI is fire-and-forget instrumentation — resolve the cluster via the
|
|
144
|
+
// shared helper but keep this path non-fatal (warn + skip) so a
|
|
145
|
+
// resolution failure never breaks the actual query.
|
|
146
|
+
var cluster;
|
|
147
|
+
try {
|
|
148
|
+
cluster = resolveCluster(conn);
|
|
149
|
+
} catch (_clusterErr) {
|
|
119
150
|
console.warn('[explainForIndexes] Cannot resolve cluster from conn — skipping EXPLAIN for: ' + statement.substring(0, 80));
|
|
120
151
|
return;
|
|
121
152
|
}
|
|
@@ -210,6 +241,10 @@ function Couchbase(conn, infos) {
|
|
|
210
241
|
|
|
211
242
|
// extra CRUD methods
|
|
212
243
|
Entity.prototype.bulkInsert = bulkInsert;
|
|
244
|
+
// public SDK Cluster accessor — supported entry point for
|
|
245
|
+
// SDK-level features (e.g. transactions) the entity layer
|
|
246
|
+
// does not wrap; see resolveCluster()/getCluster().
|
|
247
|
+
Entity.prototype.getCluster = getCluster;
|
|
213
248
|
|
|
214
249
|
|
|
215
250
|
entities[className] = Entity
|
|
@@ -441,6 +476,9 @@ function Couchbase(conn, infos) {
|
|
|
441
476
|
entities[entityName].prototype._collection = entityName;
|
|
442
477
|
entities[entityName].prototype._scope = infos.scope || process.env.NODE_SCOPE;
|
|
443
478
|
entities[entityName].prototype._filename = _( __dirname + '/lib/n1ql.js', true );
|
|
479
|
+
// public SDK Cluster accessor — parity with model entities so a
|
|
480
|
+
// consumer never hits an asymmetric `undefined` (see getCluster()).
|
|
481
|
+
entities[entityName].prototype.getCluster = getCluster;
|
|
444
482
|
}
|
|
445
483
|
|
|
446
484
|
|
|
@@ -1208,7 +1246,9 @@ function Couchbase(conn, infos) {
|
|
|
1208
1246
|
var self = this;
|
|
1209
1247
|
|
|
1210
1248
|
var err = false;
|
|
1211
|
-
|
|
1249
|
+
// cluster resolved via the shared dual-shape helper (was a bare
|
|
1250
|
+
// conn._scope._bucket._cluster deref).
|
|
1251
|
+
resolveCluster(conn).query(query, queryOptions)
|
|
1212
1252
|
.catch( function onError(err) {
|
|
1213
1253
|
try {
|
|
1214
1254
|
// #QI — finalize bulkInsert query entry on error
|
|
@@ -1321,6 +1361,38 @@ function Couchbase(conn, infos) {
|
|
|
1321
1361
|
}
|
|
1322
1362
|
}
|
|
1323
1363
|
|
|
1364
|
+
/**
|
|
1365
|
+
* getCluster
|
|
1366
|
+
*
|
|
1367
|
+
* Returns the underlying Couchbase SDK Cluster handle backing this entity's
|
|
1368
|
+
* connection, resolved across the connection shapes the connector produces
|
|
1369
|
+
* (see `resolveCluster`). This is the supported, non-underscore way to reach
|
|
1370
|
+
* SDK-level features the entity layer does not wrap — most notably
|
|
1371
|
+
* multi-document ACID transactions via `cluster.transactions().run(...)`.
|
|
1372
|
+
*
|
|
1373
|
+
* Note: gina does not bundle or pin the `couchbase` driver — it is resolved
|
|
1374
|
+
* from your project's `node_modules`. Transaction support (`.transactions()`)
|
|
1375
|
+
* therefore depends on the Couchbase SDK version your project installs
|
|
1376
|
+
* (3.2+ / 4.x). gina guarantees only that this returns the resolved Cluster
|
|
1377
|
+
* handle; it makes no promise about which SDK-level capabilities that handle
|
|
1378
|
+
* exposes.
|
|
1379
|
+
*
|
|
1380
|
+
* @returns {object} The Couchbase SDK Cluster.
|
|
1381
|
+
* @throws {Error} `GINA_COUCHBASE_CLUSTER_UNRESOLVED` when the cluster cannot be resolved.
|
|
1382
|
+
*
|
|
1383
|
+
* @example
|
|
1384
|
+
* // Inside a controller action holding an entity instance:
|
|
1385
|
+
* var cluster = myEntity.getCluster();
|
|
1386
|
+
* await cluster.transactions().run(async function (ctx) {
|
|
1387
|
+
* var doc = await ctx.get(collection, 'doc-id');
|
|
1388
|
+
* await ctx.replace(doc, Object.assign({}, doc.content, { balance: 0 }));
|
|
1389
|
+
* });
|
|
1390
|
+
*/
|
|
1391
|
+
var getCluster = function() {
|
|
1392
|
+
return resolveCluster(this.getConnection());
|
|
1393
|
+
};
|
|
1394
|
+
|
|
1395
|
+
|
|
1324
1396
|
return init(conn, infos)
|
|
1325
1397
|
}
|
|
1326
1398
|
|
|
@@ -88,6 +88,36 @@ function Mongodb(conn, infos) {
|
|
|
88
88
|
ObjectId = null;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Resolve the underlying MongoDB driver `MongoClient` from a connection
|
|
93
|
+
* object. The entity layer is handed the `Db` instance (what
|
|
94
|
+
* `getConnection()` returns); the connector decorates that Db with a
|
|
95
|
+
* `_client` back-reference to the owning `MongoClient` one level up (see
|
|
96
|
+
* `MongodbConnector.onReady`), because session and multi-document
|
|
97
|
+
* transaction APIs live on the `MongoClient`, not the `Db`.
|
|
98
|
+
*
|
|
99
|
+
* Single source of truth for client resolution, so the lookup — and its
|
|
100
|
+
* coded failure mode — live in exactly one place.
|
|
101
|
+
*
|
|
102
|
+
* @param {object} conn - A MongoDB connection object (the `Db` from getConnection()).
|
|
103
|
+
* @returns {object} The MongoDB driver MongoClient (guaranteed to expose a `startSession()` method).
|
|
104
|
+
* @throws {Error} `GINA_MONGODB_CLIENT_UNRESOLVED` when the client cannot be resolved.
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
var resolveClient = function(conn) {
|
|
108
|
+
var client = (conn && conn._client) ? conn._client : null;
|
|
109
|
+
|
|
110
|
+
if (!client || typeof(client.startSession) !== 'function') {
|
|
111
|
+
var _err = new Error('[ CONNECTOR ][ mongodb ] Unable to resolve the MongoClient from the connection — '
|
|
112
|
+
+ '`conn._client` does not expose a startSession() method. '
|
|
113
|
+
+ 'The connection shape may have changed across a driver or framework upgrade.');
|
|
114
|
+
_err.code = 'GINA_MONGODB_CLIENT_UNRESOLVED';
|
|
115
|
+
throw _err;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return client;
|
|
119
|
+
};
|
|
120
|
+
|
|
91
121
|
var init = function(conn, infos) {
|
|
92
122
|
var EntitySuperClass = null;
|
|
93
123
|
var entitiesPath = getPath('bundle') + '/models/' + infos.database + '/entities';
|
|
@@ -131,6 +161,10 @@ function Mongodb(conn, infos) {
|
|
|
131
161
|
Entity.prototype._collection = entityName;
|
|
132
162
|
Entity.prototype._scope = infos.scope || process.env.NODE_SCOPE;
|
|
133
163
|
Entity.prototype._filename = _(entitiesPath + '/' + files[f], true);
|
|
164
|
+
// public MongoClient accessor — supported entry point for driver-level
|
|
165
|
+
// features (sessions, multi-document transactions, change streams) the
|
|
166
|
+
// entity layer does not wrap; see resolveClient()/getClient().
|
|
167
|
+
Entity.prototype.getClient = getClient;
|
|
134
168
|
|
|
135
169
|
entities[className] = Entity;
|
|
136
170
|
}
|
|
@@ -458,6 +492,48 @@ function Mongodb(conn, infos) {
|
|
|
458
492
|
};
|
|
459
493
|
|
|
460
494
|
|
|
495
|
+
/**
|
|
496
|
+
* getClient
|
|
497
|
+
*
|
|
498
|
+
* Returns the underlying MongoDB driver `MongoClient` backing this entity's
|
|
499
|
+
* connection. The entity layer is handed the `Db` (what `getConnection()`
|
|
500
|
+
* returns); the `MongoClient` lives one level up and is where session and
|
|
501
|
+
* multi-document transaction APIs are exposed — so this is the supported,
|
|
502
|
+
* non-underscore way to reach driver-level features the entity layer does
|
|
503
|
+
* not wrap, chiefly ACID transactions via
|
|
504
|
+
* `client.startSession()` → `session.withTransaction(...)`, plus change
|
|
505
|
+
* streams and `bulkWrite`.
|
|
506
|
+
*
|
|
507
|
+
* Note: gina does not bundle or pin the `mongodb` driver — it is resolved
|
|
508
|
+
* from your project's `node_modules`. Session/transaction support therefore
|
|
509
|
+
* depends on the driver your project installs, and multi-document
|
|
510
|
+
* transactions additionally require a replica-set or sharded deployment
|
|
511
|
+
* (not a standalone mongod). gina guarantees only that this returns the
|
|
512
|
+
* resolved client handle; it makes no promise about which driver-level
|
|
513
|
+
* capabilities that handle exposes.
|
|
514
|
+
*
|
|
515
|
+
* @returns {object} The MongoDB driver MongoClient.
|
|
516
|
+
* @throws {Error} `GINA_MONGODB_CLIENT_UNRESOLVED` when the client cannot be resolved.
|
|
517
|
+
*
|
|
518
|
+
* @example
|
|
519
|
+
* // Inside a controller action holding an entity instance:
|
|
520
|
+
* var client = myEntity.getClient();
|
|
521
|
+
* var session = client.startSession();
|
|
522
|
+
* try {
|
|
523
|
+
* await session.withTransaction(async function () {
|
|
524
|
+
* var db = client.db();
|
|
525
|
+
* await db.collection('accounts').updateOne({ _id: from }, { $inc: { balance: -100 } }, { session: session });
|
|
526
|
+
* await db.collection('accounts').updateOne({ _id: to }, { $inc: { balance: 100 } }, { session: session });
|
|
527
|
+
* });
|
|
528
|
+
* } finally {
|
|
529
|
+
* await session.endSession();
|
|
530
|
+
* }
|
|
531
|
+
*/
|
|
532
|
+
var getClient = function() {
|
|
533
|
+
return resolveClient(this.getConnection());
|
|
534
|
+
};
|
|
535
|
+
|
|
536
|
+
|
|
461
537
|
return init(conn, infos);
|
|
462
538
|
}
|
|
463
539
|
|
|
@@ -136,6 +136,11 @@ function MongodbConnector(conf) {
|
|
|
136
136
|
* Register a one-time ready callback. Async — calls `client.connect()`
|
|
137
137
|
* which establishes the TCP connection and verifies authentication.
|
|
138
138
|
*
|
|
139
|
+
* The yielded `Db` is decorated with `_name` (db name) and `_client` (a
|
|
140
|
+
* back-reference to the owning `MongoClient`), so entities — which are
|
|
141
|
+
* handed the `Db` — can reach client-level APIs (sessions, transactions)
|
|
142
|
+
* through the public `getClient()` accessor.
|
|
143
|
+
*
|
|
139
144
|
* @param {function} fn - `fn(err, conn)` where `conn` is the mongodb Db instance.
|
|
140
145
|
*/
|
|
141
146
|
this.onReady = function(fn) {
|
|
@@ -144,6 +149,7 @@ function MongodbConnector(conf) {
|
|
|
144
149
|
_client.connect().then(function() {
|
|
145
150
|
_db = _client.db(_dbName);
|
|
146
151
|
_db._name = _dbName;
|
|
152
|
+
_db._client = _client; // back-reference to the MongoClient (one level up from the Db) so entities can reach sessions/transactions via getClient()
|
|
147
153
|
console.debug('[MongodbConnector] connected to: ' + _dbName);
|
|
148
154
|
fn(null, _db);
|
|
149
155
|
}).catch(function(err) {
|
|
@@ -44,6 +44,31 @@ const crypto = require('crypto');
|
|
|
44
44
|
var https = require('https');
|
|
45
45
|
// ssl-checker dependency removed in 0.3.1 — replaced by inline verifyCertificate().
|
|
46
46
|
|
|
47
|
+
// #M12b — per-request log context (requestId / durationMs in JSON logs).
|
|
48
|
+
// Active ONLY when JSON logging is on: the text formatter ('[%d] [%s][%a] %m')
|
|
49
|
+
// renders no id field, so running the AsyncLocalStorage in text mode would be pure
|
|
50
|
+
// overhead with no reader. Mirrors lib/logger's opt.format precedence
|
|
51
|
+
// (GINA_LOG_FORMAT > GINA_LOG_STDOUT), resolved once — the format is fixed for the
|
|
52
|
+
// process lifetime.
|
|
53
|
+
var _reqCtxLogging = (function() {
|
|
54
|
+
if ( /^json$/i.test(process.env.GINA_LOG_FORMAT) ) { return true; }
|
|
55
|
+
if ( /^text$/i.test(process.env.GINA_LOG_FORMAT) ) { return false; }
|
|
56
|
+
return /^true$/i.test(process.env.GINA_LOG_STDOUT);
|
|
57
|
+
})();
|
|
58
|
+
|
|
59
|
+
// #M12b — resolve the request id: honour a sanitised inbound `X-Request-Id` (so logs
|
|
60
|
+
// correlate across an upstream proxy / sibling services), else generate a UUID. The
|
|
61
|
+
// inbound value is client-supplied and untrusted — cap length and restrict the
|
|
62
|
+
// charset to neutralise log-forging / injection; on any violation fall back to a
|
|
63
|
+
// fresh UUID.
|
|
64
|
+
var _resolveRequestId = function(request) {
|
|
65
|
+
var _inbound = request && request.headers && request.headers['x-request-id'];
|
|
66
|
+
if ( _inbound && /^[\w.\-]{1,128}$/.test(_inbound) ) {
|
|
67
|
+
return _inbound;
|
|
68
|
+
}
|
|
69
|
+
return crypto.randomUUID();
|
|
70
|
+
};
|
|
71
|
+
|
|
47
72
|
|
|
48
73
|
// Lightweight debug logger — gated on LOG_LEVEL so zero cost in production.
|
|
49
74
|
// Format mirrors lib/logger template: [date] [debug ][gina:server] message
|
|
@@ -2640,6 +2665,16 @@ function Server(options) {
|
|
|
2640
2665
|
// catch all (request urls)
|
|
2641
2666
|
self.instance.all('*', function onInstance(request, response, next) {
|
|
2642
2667
|
|
|
2668
|
+
// #M12b — stamp request-entry time + id so the logger can attribute every
|
|
2669
|
+
// line emitted during this request to it (requestId / durationMs in JSON
|
|
2670
|
+
// logs). Active only in JSON mode; the per-request .run() happens at handle()
|
|
2671
|
+
// (the request.on('end') boundary between here and handle() loses async
|
|
2672
|
+
// context, so the store must be established where the dispatch runs).
|
|
2673
|
+
if ( _reqCtxLogging ) {
|
|
2674
|
+
request._ginaReqStartMs = Date.now();
|
|
2675
|
+
request._ginaReqId = _resolveRequestId(request);
|
|
2676
|
+
}
|
|
2677
|
+
|
|
2643
2678
|
// #FI — dev-mode request timeline for Inspector Flow tab
|
|
2644
2679
|
// Only initialized when the Inspector has been opened (process.gina._inspectorActive)
|
|
2645
2680
|
// #INS10 — or during a prod instrumentation window (process.gina._inspectorWindowUntil).
|
|
@@ -4221,7 +4256,31 @@ function Server(options) {
|
|
|
4221
4256
|
return request
|
|
4222
4257
|
}
|
|
4223
4258
|
|
|
4259
|
+
// #M12b — wrap the async dispatch in the per-request log context so requestId /
|
|
4260
|
+
// durationMs propagate through the WHOLE await chain (router, controller, render,
|
|
4261
|
+
// connectors). Established here — not at onInstance — because the request.on('end')
|
|
4262
|
+
// boundary between them loses the async context, whereas handle()'s awaits preserve
|
|
4263
|
+
// it. The store carries {requestId, startMs} stamped at onInstance entry. Gated on
|
|
4264
|
+
// JSON logging; in text mode handle === the dispatch with zero ALS overhead.
|
|
4224
4265
|
var handle = async function(req, res, next, bundle, pathname, config) {
|
|
4266
|
+
if ( _reqCtxLogging ) {
|
|
4267
|
+
if ( !process.gina ) { process.gina = {}; }
|
|
4268
|
+
if ( !process.gina._reqALS ) {
|
|
4269
|
+
var { AsyncLocalStorage } = require('async_hooks');
|
|
4270
|
+
process.gina._reqALS = new AsyncLocalStorage();
|
|
4271
|
+
}
|
|
4272
|
+
var _reqStore = {
|
|
4273
|
+
requestId : req._ginaReqId || _resolveRequestId(req),
|
|
4274
|
+
startMs : (typeof req._ginaReqStartMs === 'number') ? req._ginaReqStartMs : Date.now()
|
|
4275
|
+
};
|
|
4276
|
+
return process.gina._reqALS.run(_reqStore, function() {
|
|
4277
|
+
return _handleDispatch(req, res, next, bundle, pathname, config);
|
|
4278
|
+
});
|
|
4279
|
+
}
|
|
4280
|
+
return _handleDispatch(req, res, next, bundle, pathname, config);
|
|
4281
|
+
};
|
|
4282
|
+
|
|
4283
|
+
var _handleDispatch = async function(req, res, next, bundle, pathname, config) {
|
|
4225
4284
|
|
|
4226
4285
|
// #FI — request setup time (header parsing, CORS, Inspector endpoint checks)
|
|
4227
4286
|
if (req._devTimeline) {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Logger
|
|
2
|
+
|
|
3
|
+
Gina's multi-stream, multi-group structured logger (RFC 5424 severity levels). Bundle
|
|
4
|
+
code binds it to `console` (`var console = require('gina').lib.logger`) and calls
|
|
5
|
+
`console.info(...)`, `console.err(...)`, etc.; the logger filters by level and fans
|
|
6
|
+
each line out to its transport "containers" — `default` → `process.stdout`,
|
|
7
|
+
`mq` → port 8125 (`gina tail`), and an opt-in `file` container.
|
|
8
|
+
|
|
9
|
+
## Output modes
|
|
10
|
+
|
|
11
|
+
The `default` container has two render modes, resolved once at logger init. Select the
|
|
12
|
+
mode with an environment variable on the bundle process (precedence
|
|
13
|
+
`GINA_LOG_FORMAT` → `GINA_LOG_STDOUT` → `text`):
|
|
14
|
+
|
|
15
|
+
- **text** (default) — a coloured, human-readable line (`[%d] [%s][%a] %m`), ideal for
|
|
16
|
+
a terminal or `docker logs`.
|
|
17
|
+
- **json** — one machine-parseable JSON object per line, for log aggregation:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{"ts":"…","level":"info","bundle":"frontend@myproject","message":"…","group":"frontend@myproject","msg":"…"}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
`bundle`/`message` are canonical; `group`/`msg` are back-compat aliases.
|
|
24
|
+
|
|
25
|
+
Two env vars select JSON:
|
|
26
|
+
|
|
27
|
+
- `GINA_LOG_FORMAT=json` — emit JSON instead of the coloured text, in any environment.
|
|
28
|
+
- `GINA_LOG_STDOUT=true` — container preset: implies JSON **and** skips the MQ
|
|
29
|
+
transport (no MQ listener runs inside a container).
|
|
30
|
+
|
|
31
|
+
Both the level methods (`console.info`, `console.debug`, …) and plain `console.log`
|
|
32
|
+
honour the mode, so the stream stays uniformly parseable.
|
|
33
|
+
|
|
34
|
+
Full reference: the [Logging guide](https://gina.io/docs/guides/logging) and the
|
|
35
|
+
[Logger API reference](https://gina.io/docs/api/logger).
|
|
36
|
+
|
|
37
|
+
## Tests
|
|
38
|
+
|
|
39
|
+
From the repository root:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
node --test test/lib/logger-render.test.js
|
|
43
|
+
node --test test/integration/logger-log-integrity.test.js
|
|
44
|
+
```
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// Imports
|
|
3
|
+
|
|
4
|
+
function DefaultContainer(opt, loggers) {
|
|
5
|
+
var self = {
|
|
6
|
+
// flow or container name/id
|
|
7
|
+
name: 'default'
|
|
8
|
+
};
|
|
9
|
+
var loggerHelper = require(__dirname +'/../../helper.js')(opt, loggers);
|
|
10
|
+
var format = loggerHelper.format;
|
|
11
|
+
|
|
12
|
+
function init() {
|
|
13
|
+
|
|
14
|
+
// process.on('gina#bundle-started', function onBundleStarted(mqPort, hostV4, group) {
|
|
15
|
+
// onPayload(true);
|
|
16
|
+
// });
|
|
17
|
+
// process.on('gina#container-writting', function onBundleStarted(mqPort, hostV4, group) {
|
|
18
|
+
// console.debug('[MQDefault] resuming ...');
|
|
19
|
+
// if (group) {
|
|
20
|
+
// console.info('[MQTail] Group `'+group+'` connected `'+ hostV4 +'` on port `'+ mqPort +'` :)');
|
|
21
|
+
// }
|
|
22
|
+
// onPayload(true);
|
|
23
|
+
// });
|
|
24
|
+
|
|
25
|
+
onPayload();
|
|
26
|
+
// ----------------------------Debug---------------------------------------
|
|
27
|
+
var level = 'debug';
|
|
28
|
+
// Init debugging - Logs not in hierarchy will just be ignored
|
|
29
|
+
if (opt.hierarchies[opt.hierarchy].indexOf( opt.levels[level].code) > -1) {
|
|
30
|
+
process.emit('logger#'+self.name, JSON.stringify({
|
|
31
|
+
group : opt.name,
|
|
32
|
+
level : level,
|
|
33
|
+
// Raw content !
|
|
34
|
+
content : '`'+ self.name +'` logger container loaded !'
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
level = null;
|
|
38
|
+
// ------------------------------------------------------------------------
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function onPayload() {
|
|
42
|
+
|
|
43
|
+
// #M12 — structured (JSON) logging. The render format is resolved once at logger
|
|
44
|
+
// init (main.js -> opt.format) and cloned into this container's `opt`. We read
|
|
45
|
+
// opt.format here; if it is absent (a logger init path that predates #M12) we fall
|
|
46
|
+
// back to the #K8s3 GINA_LOG_STDOUT env flag, so behaviour is unchanged either way.
|
|
47
|
+
// JSON mode -> one machine-parseable object per line (kubectl logs / Fluentd /
|
|
48
|
+
// Datadog / Loki).
|
|
49
|
+
// text mode -> the coloured, human-readable format() output (the default).
|
|
50
|
+
var isJsonMode = (opt && opt.format)
|
|
51
|
+
? (opt.format === 'json')
|
|
52
|
+
: /^true$/i.test(process.env.GINA_LOG_STDOUT);
|
|
53
|
+
|
|
54
|
+
process.on('logger#'+self.name, function onPayload(payload) {
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
var payloadObj = JSON.parse(payload);
|
|
58
|
+
|
|
59
|
+
if (isJsonMode) {
|
|
60
|
+
// #M12 — `bundle` and `message` are the canonical keys; `group` and `msg`
|
|
61
|
+
// are retained as back-compat aliases for pre-#M12 JSON consumers (the
|
|
62
|
+
// shipped #K8s3 shape was {ts, level, group, msg}). Additive, non-breaking.
|
|
63
|
+
var _jsonLine = {
|
|
64
|
+
ts : new Date().toISOString(),
|
|
65
|
+
level : payloadObj.level,
|
|
66
|
+
bundle : payloadObj.group,
|
|
67
|
+
message: payloadObj.content,
|
|
68
|
+
group : payloadObj.group,
|
|
69
|
+
msg : payloadObj.content
|
|
70
|
+
};
|
|
71
|
+
// #M12b — stamp the per-request id + elapsed-ms when a request context
|
|
72
|
+
// is active (process.gina._reqALS, created by server.js in JSON mode).
|
|
73
|
+
// Absent for CLI / boot / off-request logs — the fields are then omitted.
|
|
74
|
+
if (process.gina && process.gina._reqALS) {
|
|
75
|
+
var _reqStore = process.gina._reqALS.getStore();
|
|
76
|
+
if (_reqStore) {
|
|
77
|
+
_jsonLine.requestId = _reqStore.requestId;
|
|
78
|
+
_jsonLine.durationMs = Date.now() - _reqStore.startMs;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
process.stdout.write(JSON.stringify(_jsonLine) + '\n');
|
|
82
|
+
} else {
|
|
83
|
+
process.stdout.write( format(payloadObj.group, payloadObj.level, payloadObj.content, payloadObj.skipFormating) );
|
|
84
|
+
}
|
|
85
|
+
} catch (e) {
|
|
86
|
+
process.stdout.write( format('', '', payload, true) );
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
payloadObj = null;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
init();
|
|
96
|
+
}
|
|
97
|
+
module.exports = DefaultContainer;
|
|
@@ -364,6 +364,24 @@ function Logger() {
|
|
|
364
364
|
if (mqIdx > -1) opt.flows.splice(mqIdx, 1);
|
|
365
365
|
}
|
|
366
366
|
|
|
367
|
+
// #M12 — structured (JSON) logging opt-in. The active render format is resolved
|
|
368
|
+
// ONCE here, before loadContainers() clones `opt` into each container, so a
|
|
369
|
+
// container reads `opt.format` instead of re-testing the environment. Precedence:
|
|
370
|
+
// 1. GINA_LOG_FORMAT = json|text (explicit; works outside container mode)
|
|
371
|
+
// 2. GINA_LOG_STDOUT truthy => json (back-compat alias for the #K8s3 flag)
|
|
372
|
+
// 3. default 'text' — the coloured, human-readable output (unchanged).
|
|
373
|
+
// Keeping the default at 'text' means interactive consumers (docker / OrbStack
|
|
374
|
+
// `docker logs`, a dev terminal) see exactly the same output as before.
|
|
375
|
+
if ( /^json$/i.test(process.env.GINA_LOG_FORMAT) ) {
|
|
376
|
+
opt.format = 'json';
|
|
377
|
+
} else if ( /^text$/i.test(process.env.GINA_LOG_FORMAT) ) {
|
|
378
|
+
opt.format = 'text';
|
|
379
|
+
} else if ( /^true$/i.test(process.env.GINA_LOG_STDOUT) ) {
|
|
380
|
+
opt.format = 'json';
|
|
381
|
+
} else {
|
|
382
|
+
opt.format = 'text';
|
|
383
|
+
}
|
|
384
|
+
|
|
367
385
|
// if ( new _(optionsPath).existsSync() ) {
|
|
368
386
|
// if (userOptions.flows.indexOf('mq') < 0) {
|
|
369
387
|
// userOptions.flows.splice(0, 0, 'mq')
|
|
@@ -811,7 +829,32 @@ function Logger() {
|
|
|
811
829
|
// }
|
|
812
830
|
// }
|
|
813
831
|
|
|
814
|
-
|
|
832
|
+
// #M12 — honour the structured (JSON) render mode for the raw console.log
|
|
833
|
+
// path, which writes straight to stdout and bypasses the container dispatch.
|
|
834
|
+
// Without this, JSON mode would emit a mix of JSON lines (levelled output) and
|
|
835
|
+
// plain lines (console.log), breaking a log collector. Text mode is unchanged.
|
|
836
|
+
if ( opt.format === 'json' ) {
|
|
837
|
+
var _jsonLine = {
|
|
838
|
+
ts : new Date().toISOString(),
|
|
839
|
+
level : 'info',
|
|
840
|
+
bundle : opt.name,
|
|
841
|
+
message: content,
|
|
842
|
+
group : opt.name,
|
|
843
|
+
msg : content
|
|
844
|
+
};
|
|
845
|
+
// #M12b — stamp the per-request id + elapsed-ms when a request context is
|
|
846
|
+
// active (process.gina._reqALS). Absent for CLI / boot / off-request logs.
|
|
847
|
+
if (process.gina && process.gina._reqALS) {
|
|
848
|
+
var _reqStore = process.gina._reqALS.getStore();
|
|
849
|
+
if (_reqStore) {
|
|
850
|
+
_jsonLine.requestId = _reqStore.requestId;
|
|
851
|
+
_jsonLine.durationMs = Date.now() - _reqStore.startMs;
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
process.stdout.write(JSON.stringify(_jsonLine) + '\n');
|
|
855
|
+
} else {
|
|
856
|
+
process.stdout.write(content + '\n');
|
|
857
|
+
}
|
|
815
858
|
}
|
|
816
859
|
|
|
817
860
|
};
|
package/gna.js
CHANGED
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
'use strict';
|
|
16
16
|
|
|
17
17
|
// Framework core — the main gna module (lifecycle hooks, lib, etc.)
|
|
18
|
-
var _gna = require('./framework/v0.4.5
|
|
18
|
+
var _gna = require('./framework/v0.4.5/core/gna');
|
|
19
19
|
|
|
20
20
|
// SuperController and EntitySuper — loaded from their source modules
|
|
21
|
-
var SuperController = require('./framework/v0.4.5
|
|
22
|
-
var EntitySuper = require('./framework/v0.4.5
|
|
21
|
+
var SuperController = require('./framework/v0.4.5/core/controller');
|
|
22
|
+
var EntitySuper = require('./framework/v0.4.5/core/model/entity');
|
|
23
23
|
|
|
24
24
|
// uuid — from the lib registry
|
|
25
|
-
var uuid = require('./framework/v0.4.5
|
|
25
|
+
var uuid = require('./framework/v0.4.5/lib/uuid');
|
|
26
26
|
|
|
27
27
|
module.exports = {
|
|
28
28
|
|