gina 0.6.29 → 0.6.30
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 +18 -0
- package/README.md +28 -19
- package/ROADMAP.md +2 -1
- package/bin/gina-container +23 -0
- package/framework/v0.6.30/VERSION +1 -0
- package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/js/gina.js +20 -4
- package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +2 -2
- package/framework/v0.6.30/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.30/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.js +231 -7
- package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-swig.js +44 -2
- package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-v1.js +44 -2
- package/framework/{v0.6.29 → v0.6.30}/core/model/entity.js +70 -10
- package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/validator/src/form-validator.js +10 -2
- package/framework/{v0.6.29 → v0.6.30}/core/router.js +9 -1
- package/framework/{v0.6.29 → v0.6.30}/core/server.js +9 -1
- package/framework/{v0.6.29 → v0.6.30}/helpers/context.js +75 -15
- package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/tail.js +36 -2
- package/framework/v0.6.30/lib/conf-view/package.json +17 -0
- package/framework/v0.6.30/lib/conf-view/src/main.js +380 -0
- package/framework/{v0.6.29 → v0.6.30}/lib/index.js +4 -0
- package/framework/v0.6.30/lib/logger/README.md +76 -0
- package/framework/v0.6.30/lib/logger/src/containers/file/index.js +681 -0
- package/framework/{v0.6.29 → v0.6.30}/lib/logger/src/containers/mq/listener.js +0 -72
- package/framework/{v0.6.29 → v0.6.30}/lib/routing/src/main.js +10 -2
- package/framework/{v0.6.29 → v0.6.30}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +8 -8
- package/package.json +3 -3
- package/resources/home/user/extensions/logger/file/config.json +7 -8
- package/schema/settings.json +21 -0
- package/script/perf/profile-baseline.js +131 -3
- package/types/index.d.ts +13 -0
- package/framework/v0.6.29/VERSION +0 -1
- package/framework/v0.6.29/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.29/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.6.29/lib/logger/README.md +0 -44
- package/framework/v0.6.29/lib/logger/src/containers/file/index.js +0 -387
- package/framework/v0.6.29/lib/logger/src/containers/file/lib/logrotator/README.md +0 -100
- package/framework/v0.6.29/lib/logger/src/containers/file/lib/logrotator/index.js +0 -274
- /package/framework/{v0.6.29 → v0.6.30}/AUTHORS +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/LICENSE +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/config.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/content.encoding +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/controller.render-xml.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/inline-script.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/dev/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/gna.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/locales/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/locales/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/mime.types +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/model/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/server.express.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/status.codes +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/console.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/path.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/task.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/helpers/text.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/async/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/config.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/idempotency/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/idempotency/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/job/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/job-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/math/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/message-validator/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/message-validator/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/model.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/money/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/money/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/multipart/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/multipart/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/proc.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/push/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/security-headers-emitter/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/security-headers-emitter/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/session-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/shell.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/sri/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/sri/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/state.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/url/README.md +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/url/index.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/validator.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.29 → v0.6.30}/lib/ws-session/src/main.js +0 -0
|
@@ -21,6 +21,34 @@ var releaseBanner = require('./release-banner');
|
|
|
21
21
|
// Precompiled regex — avoids per-request RegExp allocation (#P3)
|
|
22
22
|
var blacklistRe = /[<>]/g;
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Lazily construct the process-wide render-context AsyncLocalStorage, parked on
|
|
26
|
+
* `process.gina` so it survives dev-mode `require.cache` eviction of this
|
|
27
|
+
* delegate (mirrors `process.gina._reqALS` / `_queryALS`). This is the SAME
|
|
28
|
+
* store the async delegates enter with `.run()`, and the same one the
|
|
29
|
+
* context-bearing gina filters read in `getRenderCtx()`.
|
|
30
|
+
*
|
|
31
|
+
* #B514 — this DEFAULT delegate is `async` and awaits between the per-request
|
|
32
|
+
* `SwigFilters({...})` call (which stamps the process-wide
|
|
33
|
+
* `SwigFilters.instance._options` singleton) and the `compiledTemplate(data)`
|
|
34
|
+
* invocations that run the context-bearing filters. A concurrent request's
|
|
35
|
+
* stamp lands inside that window, so the resumed render's getUrl / getWebroot /
|
|
36
|
+
* t / tIcu resolve the OTHER request's context. #TPL1 Tier-2 (#B25) closed this
|
|
37
|
+
* for the two `-async` delegates only and left the default path — the one every
|
|
38
|
+
* bundle takes unless it opts into `settings.template.swig.loader` — on the
|
|
39
|
+
* raced singleton.
|
|
40
|
+
*
|
|
41
|
+
* @inner
|
|
42
|
+
* @returns {AsyncLocalStorage} the shared render-context store
|
|
43
|
+
*/
|
|
44
|
+
function getRenderALS() {
|
|
45
|
+
if (!process.gina._renderALS) {
|
|
46
|
+
var AsyncLocalStorage = require('async_hooks').AsyncLocalStorage;
|
|
47
|
+
process.gina._renderALS = new AsyncLocalStorage();
|
|
48
|
+
}
|
|
49
|
+
return process.gina._renderALS;
|
|
50
|
+
}
|
|
51
|
+
|
|
24
52
|
// Inherited from controller.
|
|
25
53
|
// #B61 (completes the #INS10 race fix): ALL per-request deps are captured
|
|
26
54
|
// FUNCTION-scoped inside render() — nothing per-request lives at module scope.
|
|
@@ -905,13 +933,27 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
905
933
|
// interleave window is unchanged: with the copy, an interleaved render
|
|
906
934
|
// overwrote the singleton with ITS copy; by reference it overwrites it
|
|
907
935
|
// with ITS options — same wrongness class, zero new exposure.
|
|
908
|
-
var
|
|
936
|
+
var _renderCtx = {
|
|
909
937
|
options : localOptions,
|
|
910
938
|
isProxyHost : isProxyHost,
|
|
911
939
|
throwError : self.throwError,
|
|
912
940
|
req : req,
|
|
913
941
|
res : res
|
|
914
|
-
}
|
|
942
|
+
};
|
|
943
|
+
var filters = SwigFilters(_renderCtx);
|
|
944
|
+
// #B514 — enter the render-context store for THIS request, so the
|
|
945
|
+
// context-bearing filters resolve it from the ALS instead of the
|
|
946
|
+
// process-wide singleton stamped just above. `enterWith` rather than
|
|
947
|
+
// `.run()`: render() is a single ~1,900-line async body (the try at
|
|
948
|
+
// ~:705 spans to ~:2069) whose every `return` would have to move inside
|
|
949
|
+
// a callback; enterWith propagates the store to every continuation of
|
|
950
|
+
// the current async context, which is exactly the awaited span between
|
|
951
|
+
// here and compiledTemplate(data). getRenderCtx() reads the store FIRST
|
|
952
|
+
// (`_store || SwigFilters.instance._options || self.options`), so the
|
|
953
|
+
// singleton survives only as the fallback for non-request callers — a
|
|
954
|
+
// bundle's own mail/cron renderer calling SwigFilters() outside any
|
|
955
|
+
// render still resolves its own context.
|
|
956
|
+
getRenderALS().enterWith(_renderCtx);
|
|
915
957
|
try {
|
|
916
958
|
|
|
917
959
|
// To extends default filters with user defined filters, go to controllers/setup.js
|
|
@@ -8,6 +8,34 @@ const lib = require('./../../lib') || require.cache[require.resolve('./../../lib
|
|
|
8
8
|
var console = lib.logger;
|
|
9
9
|
// Inherited from controller
|
|
10
10
|
var self, local, SuperController, getData, hasViews, setResources, SwigFilters, headersSent;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Lazily construct the process-wide render-context AsyncLocalStorage, parked on
|
|
14
|
+
* `process.gina` so it survives dev-mode `require.cache` eviction of this
|
|
15
|
+
* delegate (mirrors `process.gina._reqALS` / `_queryALS`). This is the SAME
|
|
16
|
+
* store the async delegates enter with `.run()`, and the same one the
|
|
17
|
+
* context-bearing gina filters read in `getRenderCtx()`.
|
|
18
|
+
*
|
|
19
|
+
* #B514 — this DEFAULT delegate is `async` and awaits between the per-request
|
|
20
|
+
* `SwigFilters({...})` call (which stamps the process-wide
|
|
21
|
+
* `SwigFilters.instance._options` singleton) and the `compiledTemplate(data)`
|
|
22
|
+
* invocations that run the context-bearing filters. A concurrent request's
|
|
23
|
+
* stamp lands inside that window, so the resumed render's getUrl / getWebroot /
|
|
24
|
+
* t / tIcu resolve the OTHER request's context. #TPL1 Tier-2 (#B25) closed this
|
|
25
|
+
* for the two `-async` delegates only and left the default path — the one every
|
|
26
|
+
* bundle takes unless it opts into `settings.template.swig.loader` — on the
|
|
27
|
+
* raced singleton.
|
|
28
|
+
*
|
|
29
|
+
* @inner
|
|
30
|
+
* @returns {AsyncLocalStorage} the shared render-context store
|
|
31
|
+
*/
|
|
32
|
+
function getRenderALS() {
|
|
33
|
+
if (!process.gina._renderALS) {
|
|
34
|
+
var AsyncLocalStorage = require('async_hooks').AsyncLocalStorage;
|
|
35
|
+
process.gina._renderALS = new AsyncLocalStorage();
|
|
36
|
+
}
|
|
37
|
+
return process.gina._renderALS;
|
|
38
|
+
}
|
|
11
39
|
/**
|
|
12
40
|
* Render HTML templates : Swig is the default template engine
|
|
13
41
|
*
|
|
@@ -363,13 +391,27 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
363
391
|
|
|
364
392
|
|
|
365
393
|
// setup swig default filters
|
|
366
|
-
var
|
|
394
|
+
var _renderCtx = {
|
|
367
395
|
options : JSON.clone(localOptions),
|
|
368
396
|
isProxyHost : isProxyHost,
|
|
369
397
|
throwError : self.throwError,
|
|
370
398
|
req : local.req,
|
|
371
399
|
res : local.res
|
|
372
|
-
}
|
|
400
|
+
};
|
|
401
|
+
var filters = SwigFilters(_renderCtx);
|
|
402
|
+
// #B514 — enter the render-context store for THIS request, so the
|
|
403
|
+
// context-bearing filters resolve it from the ALS instead of the
|
|
404
|
+
// process-wide singleton stamped just above. `enterWith` rather than
|
|
405
|
+
// `.run()`: render() is a single ~1,900-line async body (the try at
|
|
406
|
+
// ~:705 spans to ~:2069) whose every `return` would have to move inside
|
|
407
|
+
// a callback; enterWith propagates the store to every continuation of
|
|
408
|
+
// the current async context, which is exactly the awaited span between
|
|
409
|
+
// here and compiledTemplate(data). getRenderCtx() reads the store FIRST
|
|
410
|
+
// (`_store || SwigFilters.instance._options || self.options`), so the
|
|
411
|
+
// singleton survives only as the fallback for non-request callers — a
|
|
412
|
+
// bundle's own mail/cron renderer calling SwigFilters() outside any
|
|
413
|
+
// render still resolves its own context.
|
|
414
|
+
getRenderALS().enterWith(_renderCtx);
|
|
373
415
|
|
|
374
416
|
try {
|
|
375
417
|
|
|
@@ -47,8 +47,9 @@ var _callALS = (function () {
|
|
|
47
47
|
* queue — or, when that call has already settled (bounded wait, Promise path),
|
|
48
48
|
* DROP the late completion: it is never handed to whoever is at the head.
|
|
49
49
|
* - No active store, or a store for another trigger: arrival order (`shift()`), the
|
|
50
|
-
* pre-#B440 pairing
|
|
51
|
-
*
|
|
50
|
+
* pre-#B440 pairing. The `DISPATCH:NO_CONTEXT` debug line that reports this fallback
|
|
51
|
+
* is emitted by the entity's `emit` override (#B441), which every completion passes
|
|
52
|
+
* whether or not a dispatcher is attached — this function only pairs.
|
|
52
53
|
*
|
|
53
54
|
* @private
|
|
54
55
|
* @param {Array<function>} q - the trigger's FIFO of pending resolvers
|
|
@@ -61,21 +62,27 @@ var _dequeueByIdentity = function (q, e) {
|
|
|
61
62
|
var idx = q ? q.indexOf(st.r) : -1;
|
|
62
63
|
return idx > -1 ? q.splice(idx, 1)[0] : null;
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
+
// (#B441) the DISPATCH:NO_CONTEXT line is emitted at emit time — see the emit override — so it
|
|
66
|
+
// fires whether or not anything is pending; arrival-order pairing below is unchanged.
|
|
65
67
|
return q ? q.shift() : null;
|
|
66
68
|
};
|
|
67
69
|
|
|
68
70
|
/**
|
|
69
71
|
* Removes a settled call's resolver from its trigger's queue, so a completion that
|
|
70
|
-
* arrives after the call settled cannot be paired with it (#B440)
|
|
72
|
+
* arrives after the call settled cannot be paired with it (#B440), and stamps the
|
|
73
|
+
* resolver `_settled` (#B441). Every settle path of both call forms — the identity
|
|
74
|
+
* dispatch, a returned Promise, the bounded `model.emitTimeout` wait — passes through
|
|
75
|
+
* here, so the stamp is how the entity's `emit` override recognises a completion that
|
|
76
|
+
* arrives AFTER its call settled (a surplus completion) without consulting the queue.
|
|
71
77
|
*
|
|
72
78
|
* @private
|
|
73
79
|
* @param {EntitySuper} entity - the entity carrying the `_callbacks` queues
|
|
74
80
|
* @param {string} e - trigger name
|
|
75
|
-
* @param {function} r - the resolver to forget
|
|
81
|
+
* @param {function} r - the resolver to forget; gains a truthy `_settled` property
|
|
76
82
|
* @returns {void}
|
|
77
83
|
*/
|
|
78
84
|
var _forget = function (entity, e, r) {
|
|
85
|
+
if (typeof r === 'function') { r._settled = true; } // #B441 — read by the emit override
|
|
79
86
|
var q = entity._callbacks[e]; if (!Array.isArray(q)) return;
|
|
80
87
|
var i = q.indexOf(r); if (i > -1) q.splice(i, 1);
|
|
81
88
|
};
|
|
@@ -754,18 +761,71 @@ function EntitySuper(conn, caller, injected) {
|
|
|
754
761
|
}
|
|
755
762
|
|
|
756
763
|
/**
|
|
757
|
-
*
|
|
758
|
-
*
|
|
759
|
-
*
|
|
764
|
+
* Custom `emit`, based on the node.js EventEmitter emit source (added 2016-02-09).
|
|
765
|
+
*
|
|
766
|
+
* Beyond native dispatch it (1) routes a registered trigger with no attached
|
|
767
|
+
* listener through `setListener`, which buffers the emit into `_arguments` for the
|
|
768
|
+
* next caller (the historical "emit before the listener is ready" idiom, and the
|
|
769
|
+
* numbered `<trigger>1`, `<trigger>2` loop variants), (2) bridges whitelisted
|
|
770
|
+
* triggers onto the Inspector event signal (#EVTBUS), and (3) accounts for
|
|
771
|
+
* completion signals per call (#B441):
|
|
772
|
+
*
|
|
773
|
+
* - The active per-call store (#B440) names this trigger and its resolver is already
|
|
774
|
+
* `_settled` ⇒ a SURPLUS completion. It is never buffered — measured before the fix,
|
|
775
|
+
* the next detached (`util.promisify`) caller of the method received it as its own
|
|
776
|
+
* result, every later caller too, and `_arguments` grew by one entry per surplus
|
|
777
|
+
* emit. The second completion of one call logs `DISPATCH:REPEAT_EMIT` once at debug
|
|
778
|
+
* level; a single late completion after a Promise or timeout settle stays silent.
|
|
779
|
+
* - No store, or another trigger's store ⇒ `DISPATCH:NO_CONTEXT` at debug level,
|
|
780
|
+
* pending or not: the pre-#B440 arrival-order boundary, now visible even when the
|
|
781
|
+
* completion arrives with nothing pending.
|
|
782
|
+
* - A numbered variant of the store's own trigger is the documented loop idiom and
|
|
783
|
+
* is not a completion: silent.
|
|
784
|
+
*
|
|
785
|
+
* @param {string} type - event name; for a completion, the `<shortName>#<method>` trigger
|
|
786
|
+
* @param {...*} args - forwarded to the listeners
|
|
787
|
+
* @returns {boolean} `true` when at least one listener received the event
|
|
788
|
+
* @example
|
|
789
|
+
* // inside an entity method, once per call:
|
|
790
|
+
* self.emit('user#insert', false, record);
|
|
791
|
+
*/
|
|
760
792
|
this.emit = function emit(type) {
|
|
793
|
+
// #B441 — completion-signal accounting at EMIT time, for registered triggers only
|
|
794
|
+
// (numbered loop variants are not in _triggers and are the documented multi-emit idiom).
|
|
795
|
+
// Both dispatch listeners remove themselves once their queue drains, so a completion of a
|
|
796
|
+
// call that already settled reaches no dispatcher — the emit is the one place every
|
|
797
|
+
// completion passes. A SURPLUS completion (this call's resolver already settled: by an
|
|
798
|
+
// earlier emit, a returned Promise or the bounded wait) must never take the setListener
|
|
799
|
+
// buffering path below: measured, it was buffered into _arguments and the next detached
|
|
800
|
+
// (promisify) caller of the method received it as its own result.
|
|
801
|
+
var _b441Surplus = false;
|
|
802
|
+
if ( type !== 'error' && self._triggers && self._triggers.indexOf(type) > -1 ) {
|
|
803
|
+
var _b441St = _callALS.getStore();
|
|
804
|
+
if ( _b441St && _b441St.e === type ) {
|
|
805
|
+
_b441St._emits = (_b441St._emits || 0) + 1;
|
|
806
|
+
if ( _b441St.r && _b441St.r._settled ) {
|
|
807
|
+
_b441Surplus = true;
|
|
808
|
+
if ( _b441St._emits === 2 ) {
|
|
809
|
+
console.debug('[ MODEL ][ ENTITY ] DISPATCH:REPEAT_EMIT ' + type + ' (this method emitted its completion a second time within one call — the caller was settled by the first; this and any later completion are discarded, never buffered for the next caller)');
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
} else if ( _b441St && _b441St.e === type.replace(/[0-9]/g, '') ) {
|
|
813
|
+
// a numbered variant of this call's own trigger — the documented loop idiom
|
|
814
|
+
// (`<trigger>1`, `<trigger>2`, …); not a completion, nothing to report
|
|
815
|
+
} else {
|
|
816
|
+
// no call context, or another trigger's — the pre-#B440 pairing boundary, now
|
|
817
|
+
// reported whether or not anything is pending (#B441 limb b)
|
|
818
|
+
console.debug('[ MODEL ][ ENTITY ] DISPATCH:NO_CONTEXT ' + type + ' (completion reached the entity outside any call\'s async context: paired by arrival order if a call is pending, otherwise buffered for a following promisify-style call)');
|
|
819
|
+
}
|
|
820
|
+
}
|
|
761
821
|
// BO Added to handle trigger with increment when `emit occurs whithin a loop or recursive function
|
|
762
|
-
if (
|
|
822
|
+
if ( !_b441Surplus && (
|
|
763
823
|
self._triggers && self._triggers.indexOf(type) == -1 && self._triggers.indexOf(type.replace(/[0-9]/g, '')) > -1
|
|
764
824
|
|| self._triggers && self._triggers.indexOf(type) > -1 && typeof(self._callbacks[type]) == 'undefined' && typeof(self._events[type]) == 'undefined'
|
|
765
825
|
// #M2 — skip DISPATCH:CALLBACK_FLUSH for queue mode (_callbacks is an array);
|
|
766
826
|
// the persistent .on dispatch listener handles routing in that case.
|
|
767
827
|
|| self._triggers && self._triggers.indexOf(type) > -1 && typeof(self._callbacks[type]) != 'undefined' && !Array.isArray(self._callbacks[type])
|
|
768
|
-
) {
|
|
828
|
+
) ) {
|
|
769
829
|
setListener(arguments)
|
|
770
830
|
}
|
|
771
831
|
// EO Added to handle trigger with increment
|
|
@@ -1085,11 +1085,19 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
1085
1085
|
var attr = options.url.split(/@/);
|
|
1086
1086
|
rule = attr[0];
|
|
1087
1087
|
bundle = attr[1];
|
|
1088
|
-
var proxyConf = getConfig( currentBundle, 'app' ).proxy;
|
|
1089
1088
|
try {
|
|
1090
1089
|
if (config.bundle !== bundle) { // ignore if same bundle
|
|
1091
1090
|
// getting proxy conf when available
|
|
1092
|
-
|
|
1091
|
+
// #B522 — clone. The GLOBAL two-argument getConfig() hands back the
|
|
1092
|
+
// bundle's `app` conf BY REFERENCE, so the `opt.method` / `opt.path`
|
|
1093
|
+
// writes further down — and the `requestTimeout` controller.query()
|
|
1094
|
+
// adds to the caller's object before its own defensive copy — used to
|
|
1095
|
+
// persist on the shared content.app.proxy[<bundle>] for the whole
|
|
1096
|
+
// process lifetime. `path` and `requestTimeout` are documented
|
|
1097
|
+
// proxyTarget properties, so that clobbered configured values for
|
|
1098
|
+
// every other reader of this conf, not merely added stray keys.
|
|
1099
|
+
// opt = getConfig( currentBundle, 'app' ).proxy[bundle];
|
|
1100
|
+
opt = JSON.clone( getConfig( currentBundle, 'app' ).proxy[bundle] );
|
|
1093
1101
|
}
|
|
1094
1102
|
} catch (proxyError) {
|
|
1095
1103
|
throw new Error('Could not retrieve `proxy` configuration for bundle `'+ bundle +'`. Please check your `/config/app.json`.\n'+proxyError.stack);
|
|
@@ -776,7 +776,15 @@ function Router(env, scope) {
|
|
|
776
776
|
// options.conf = JSON.clone(conf); // pre-#B52-residual: whole-conf deep clone per request
|
|
777
777
|
options.conf = Object.assign({}, conf);
|
|
778
778
|
options.conf.content = Object.assign({}, conf.content);
|
|
779
|
-
|
|
779
|
+
// #P40 S3b — a per-rule SHALLOW copy replaces the deep clone of the whole routing
|
|
780
|
+
// map: the only per-request write below is the [rule].param REPLACEMENT on the
|
|
781
|
+
// matched rule (a whole-property assignment), and `params.middleware` — the array
|
|
782
|
+
// processMiddlewares splices — is already this request's own copy from the matcher
|
|
783
|
+
// (server.js / lib/routing build params with a cloned middleware array). Every other
|
|
784
|
+
// rule stays shared by reference; the deep clone cost 5 µs at 8 routes and ~290 µs at
|
|
785
|
+
// 380 on this host, on every matched request, for a map nothing else mutates.
|
|
786
|
+
options.conf.content.routing = Object.assign({}, conf.content.routing);
|
|
787
|
+
options.conf.content.routing[options.rule] = Object.assign({}, conf.content.routing[options.rule]);
|
|
780
788
|
// inheriting from _common
|
|
781
789
|
if (
|
|
782
790
|
options.template
|
|
@@ -7739,7 +7739,15 @@ function Server(options) {
|
|
|
7739
7739
|
var _reqStore = {
|
|
7740
7740
|
requestId : req._ginaReqId || _resolveRequestId(req),
|
|
7741
7741
|
startMs : (typeof req._ginaReqStartMs === 'number') ? req._ginaReqStartMs : Date.now(),
|
|
7742
|
-
proxy : null
|
|
7742
|
+
proxy : null,
|
|
7743
|
+
// #B534 — carry THIS request's trio so a detached callback can answer the
|
|
7744
|
+
// request whose call failed, rather than whichever one the process-wide
|
|
7745
|
+
// `router` context slot happened to see last. The slot (core/router.js) is
|
|
7746
|
+
// never cleared, so under concurrency it is the wrong request as often as
|
|
7747
|
+
// the right one; helpers/context.js's throwError prefers these.
|
|
7748
|
+
req : req,
|
|
7749
|
+
res : res,
|
|
7750
|
+
next : next
|
|
7743
7751
|
};
|
|
7744
7752
|
return process.gina._reqALS.run(_reqStore, function() {
|
|
7745
7753
|
return _handleDispatch(req, res, next, bundle, pathname, config);
|
|
@@ -8,9 +8,29 @@
|
|
|
8
8
|
var fs = require('fs');
|
|
9
9
|
var os = require('os');
|
|
10
10
|
const {execSync} = require('child_process');
|
|
11
|
+
var crypto = require('crypto');
|
|
11
12
|
//var merge = require('./../lib/merge');
|
|
12
13
|
//var console = require('./../lib/logger');
|
|
13
14
|
|
|
15
|
+
/**
|
|
16
|
+
* #ERRREF — mints the incident ref that an error response returns to the
|
|
17
|
+
* client and the server-side pairing line is keyed by (#B533 brought this
|
|
18
|
+
* third `throwError` twin into the contract). Honours a relay-safe
|
|
19
|
+
* caller-supplied ref (1-32 word chars, dots or dashes), otherwise returns a
|
|
20
|
+
* fresh mint. Kept byte-identical with the two other copies
|
|
21
|
+
* (core/server.js + core/controller/controller.js) — test-pinned.
|
|
22
|
+
*
|
|
23
|
+
* @private
|
|
24
|
+
* @param {string} [supplied] - caller/producer-provided ref candidate
|
|
25
|
+
* @returns {string} the supplied value when relay-safe, else 6 fresh uppercase hex chars
|
|
26
|
+
*/
|
|
27
|
+
var _mintErrorRef = function(supplied) {
|
|
28
|
+
if ( typeof(supplied) == 'string' && /^[\w.\-]{1,32}$/.test(supplied) ) {
|
|
29
|
+
return supplied;
|
|
30
|
+
}
|
|
31
|
+
return crypto.randomBytes(3).toString('hex').toUpperCase();
|
|
32
|
+
};
|
|
33
|
+
|
|
14
34
|
/**
|
|
15
35
|
* ContextHelper
|
|
16
36
|
*
|
|
@@ -287,27 +307,67 @@ function ContextHelper(contexts) {
|
|
|
287
307
|
code = 500
|
|
288
308
|
}
|
|
289
309
|
|
|
310
|
+
// #B534 — the `router` context slot (core/router.js) is process-wide and is
|
|
311
|
+
// never cleared, so it holds whichever request was routed LAST rather than
|
|
312
|
+
// the one whose call failed. A callback resumed after an await could
|
|
313
|
+
// therefore answer a stranger's response — writing this error to their
|
|
314
|
+
// client and leaving its own caller hanging until the server timeout.
|
|
315
|
+
// Prefer THIS request's AsyncLocalStorage store, which server.js handle()
|
|
316
|
+
// establishes for every request on both engines and which propagates across
|
|
317
|
+
// await; fall back to the slot only for a caller that has no store at all
|
|
318
|
+
// (boot, CLI, cron, worker), which is what the slot was there for.
|
|
319
|
+
// `process` is guarded because the egress harness stubs it without `.gina`.
|
|
320
|
+
var _reqStore = ( typeof(process) != 'undefined' && process.gina && process.gina._reqALS )
|
|
321
|
+
? process.gina._reqALS.getStore()
|
|
322
|
+
: null;
|
|
323
|
+
// `res` and `next` must come from the SAME source: pairing a store response
|
|
324
|
+
// with the slot's `next` would hand the middleware chain a stale callback.
|
|
325
|
+
var _fromStore = ( _reqStore && _reqStore.res ) ? true : false;
|
|
290
326
|
var router = getContext('router')
|
|
291
|
-
, res = ( router ) ? router.response : null
|
|
292
|
-
, next = ( router ) ? router.next : null
|
|
327
|
+
, res = ( _fromStore ) ? _reqStore.res : ( ( router ) ? router.response : null )
|
|
328
|
+
, next = ( _fromStore ) ? _reqStore.next : ( ( router ) ? router.next : null )
|
|
293
329
|
;
|
|
294
330
|
|
|
295
331
|
// Live HTTP request we can still write an error response to.
|
|
296
332
|
if ( res && !res.headersSent ) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
333
|
+
// #ERRREF / #B533 — this twin used to answer with the raw stack in EVERY
|
|
334
|
+
// scope and record nothing server-side: the client received the
|
|
335
|
+
// framework's install path, version dir and frames, the operator got no
|
|
336
|
+
// line at all. It now does what core/server.js and
|
|
337
|
+
// core/controller/controller.js do: mint a relay-safe incident ref, emit
|
|
338
|
+
// ONE full-detail pairing line (message + stack + cause, keyed by the
|
|
339
|
+
// ref) BEFORE the wire write, and shape the wire copy by scope — local
|
|
340
|
+
// keeps the stack (the dev toolbar reads it; the `error` string is
|
|
341
|
+
// unchanged there for an Error without a cause), every other scope gets
|
|
342
|
+
// the message line only, fail-closed on an unset NODE_SCOPE_IS_LOCAL
|
|
343
|
+
// (the same read as server.js's isLocalScope()). A relay-safe
|
|
344
|
+
// caller-supplied `err.ref` is honoured, as the twins do.
|
|
345
|
+
var ref = _mintErrorRef( ( err && typeof(err) == 'object' && err.ref ) ? err.ref : undefined );
|
|
346
|
+
var _isLocal = /^true$/i.test(process.env.NODE_SCOPE_IS_LOCAL);
|
|
347
|
+
var _isErrObj = ( err && typeof(err) == 'object' ) ? true : false;
|
|
348
|
+
var _errDetail = _isErrObj ? ( err.stack || err.message || String(err) ) : String(err);
|
|
349
|
+
if ( _isErrObj && err.cause ) {
|
|
350
|
+
_errDetail += '\ncaused by: '+ ( err.cause.stack || err.cause.message || err.cause );
|
|
310
351
|
}
|
|
352
|
+
// #B534 — the pairing line must name the request that `res` belongs to. The
|
|
353
|
+
// router slot carries no request at all, so this used to read `res.req`;
|
|
354
|
+
// under the slot's concurrency defect that named the WRONG request beside
|
|
355
|
+
// this error's ref, which is worse than naming none — the ref exists so an
|
|
356
|
+
// operator can correlate. Prefer the store's request when the store is
|
|
357
|
+
// what supplied `res`, and keep `res.req` for the fallback path.
|
|
358
|
+
var _req = ( _fromStore && _reqStore.req ) ? _reqStore.req : ( ( res.req ) ? res.req : null );
|
|
359
|
+
console.error('[ CONTEXT ][ '+ ( getContext('bundle') || '-' ) +' ][ ref '+ ref +' ][ req '+ ( ( _req && _req._ginaReqId ) || '-' ) +' ] '+ ( ( _req && _req.method ) || '-' ) +' [ '+ code +' ] '+ ( ( _req && _req.url ) || '-' ) +'\n'+ _errDetail);
|
|
360
|
+
var _wireDetail = _isLocal ? _errDetail : ( ( _isErrObj && err.message ) ? err.message : String(err) );
|
|
361
|
+
// #B254 — the former HTML arm of this branch was unreachable (its guard
|
|
362
|
+
// read a self-assigned, always-undefined local), so this path has only
|
|
363
|
+
// ever answered JSON; the dead arm is removed rather than made live,
|
|
364
|
+
// which would have been a behaviour change nobody asked for.
|
|
365
|
+
res.writeHead(code, { 'Content-Type': 'application/json'} );
|
|
366
|
+
res.end(JSON.stringify({
|
|
367
|
+
status : code,
|
|
368
|
+
error : 'Error '+ code +'. '+ _wireDetail,
|
|
369
|
+
ref : ref
|
|
370
|
+
}));
|
|
311
371
|
return;
|
|
312
372
|
}
|
|
313
373
|
|
|
@@ -113,6 +113,40 @@ function Tail(opt, cmd) {
|
|
|
113
113
|
var loggers = console.getLoggers();
|
|
114
114
|
var loggerHelper = LoggerHelper(loggerOptions, loggers);
|
|
115
115
|
var format = loggerHelper.format;
|
|
116
|
+
// #B524 — honour the render mode this process's logger resolved. `loggerOptions.format`
|
|
117
|
+
// is the logger's ONE precedence rule (`GINA_LOG_FORMAT=json|text` > `GINA_LOG_STDOUT`
|
|
118
|
+
// truthy ⇒ json > text), resolved once at logger init, so `GINA_LOG_FORMAT=json` on the
|
|
119
|
+
// `gina tail` process turns the relay into one JSON object per line — the answer for a
|
|
120
|
+
// container that runs a framework daemon: the daemon discards the bundle's own stdout
|
|
121
|
+
// once it has started (bundle/start.js, `if (isStarting) return;`), so this relay is
|
|
122
|
+
// the only path a runtime line has to `kubectl logs`, and it must stay on. Same shape
|
|
123
|
+
// as the default container's line; the relay payload carries no request context, so
|
|
124
|
+
// `requestId`/`durationMs` are absent here.
|
|
125
|
+
var isJsonMode = (loggerOptions && loggerOptions.format === 'json');
|
|
126
|
+
/**
|
|
127
|
+
* Renders one relayed payload for stdout in the resolved mode.
|
|
128
|
+
*
|
|
129
|
+
* @inner
|
|
130
|
+
* @param {object} pl - A relayed payload (`group`, `level`, `content`).
|
|
131
|
+
* @returns {string} The line to write — a newline-terminated JSON object in
|
|
132
|
+
* json mode, the coloured `format()` text otherwise.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* process.stdout.write( renderLine({ group: 'api@shop', level: 'info', content: 'ready' }) );
|
|
136
|
+
*/
|
|
137
|
+
var renderLine = function(pl) {
|
|
138
|
+
if (isJsonMode) {
|
|
139
|
+
return JSON.stringify({
|
|
140
|
+
ts : new Date().toISOString(),
|
|
141
|
+
level : pl.level,
|
|
142
|
+
bundle : pl.group,
|
|
143
|
+
message: pl.content,
|
|
144
|
+
group : pl.group,
|
|
145
|
+
msg : pl.content
|
|
146
|
+
}) + '\n';
|
|
147
|
+
}
|
|
148
|
+
return format(pl.group, pl.level, pl.content);
|
|
149
|
+
};
|
|
116
150
|
|
|
117
151
|
var delayedMessages = [];
|
|
118
152
|
|
|
@@ -121,7 +155,7 @@ function Tail(opt, cmd) {
|
|
|
121
155
|
var i = 0;
|
|
122
156
|
while (i < delayedMessages.length) {
|
|
123
157
|
let pl = delayedMessages[i];
|
|
124
|
-
process.stdout.write(
|
|
158
|
+
process.stdout.write( renderLine(pl) );
|
|
125
159
|
i++;
|
|
126
160
|
}
|
|
127
161
|
delayedMessages = []
|
|
@@ -232,7 +266,7 @@ function Tail(opt, cmd) {
|
|
|
232
266
|
|
|
233
267
|
try {
|
|
234
268
|
// Main output
|
|
235
|
-
process.stdout.write(
|
|
269
|
+
process.stdout.write( renderLine(pl) );
|
|
236
270
|
|
|
237
271
|
|
|
238
272
|
if (
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gina-lib-conf-view",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "per-call copy-on-write view over a shared configuration tree: reads pass through, writes land in a private overlay, enumeration materialises the touched subtree once",
|
|
5
|
+
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Martin Luther ETOUMAN NDAMBWE",
|
|
8
|
+
"email": "contact@gina.io"
|
|
9
|
+
},
|
|
10
|
+
"copyright": "Copyright (c) 2009-2026 Rhinostone <contact@gina.io>",
|
|
11
|
+
"engines": {
|
|
12
|
+
"node": ">=22"
|
|
13
|
+
},
|
|
14
|
+
"main": "src/main",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"readmeFilename": "README.md"
|
|
17
|
+
}
|