gina 0.5.6 → 0.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +9 -6
- package/ROADMAP.md +1 -0
- package/framework/v0.5.7/VERSION +1 -0
- package/framework/v0.5.7/core/connectors/mongodb/lib/job-store.js +334 -0
- package/framework/v0.5.7/core/connectors/redis/index.js +36 -0
- package/framework/v0.5.7/core/connectors/redis/lib/connector.js +66 -0
- package/framework/v0.5.7/core/connectors/redis/lib/job-store.js +454 -0
- package/framework/v0.5.7/core/connectors/sqlite/lib/job-store.js +263 -0
- package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-json.js +41 -31
- package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-stream.js +10 -5
- package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-swig.js +37 -31
- package/framework/{v0.5.6 → v0.5.7}/core/gna.js +22 -2
- package/framework/{v0.5.6 → v0.5.7}/core/server.js +68 -0
- package/framework/{v0.5.6 → v0.5.7}/lib/index.js +4 -0
- package/framework/{v0.5.6 → v0.5.7}/lib/job/src/main.js +147 -29
- package/framework/v0.5.7/lib/job-store.js +84 -0
- package/framework/{v0.5.6 → v0.5.7}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +7 -4
- package/package.json +4 -4
- package/script/check_no_local_leak.js +22 -2
- package/script/smoke_in_container.js +8 -2
- package/script/smoke_test_tarball.js +8 -1
- package/framework/v0.5.6/VERSION +0 -1
- package/framework/v0.5.6/core/connectors/redis/index.js +0 -30
- /package/framework/{v0.5.6 → v0.5.7}/AUTHORS +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/LICENSE +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/html/static.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/config.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/content.encoding +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/dev/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/locales/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/locales/currency.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/locales/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/mime.types +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/model/entity.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/model/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/model/template/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/router.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/server.express.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/server.isaac.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/status.codes +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/_gitignore +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/env.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/console.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/context.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/data/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/data/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/json/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/json/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/path.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/prototypes.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/task.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/helpers/text.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/admin/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/build.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/async/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/async/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cache/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cache/build.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cache/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/collection/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/collection/build.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/collection/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/config.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cron/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cron/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/domain/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/domain/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/generator/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/i18n/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/instrument/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/job/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/math/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/merge/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/merge/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/metrics/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/model.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/proc.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/routing/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/routing/build.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/routing/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/secrets/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/session-store.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/shell.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/state.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/url/README.md +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/url/index.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/url/routing.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/uuid/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/validator.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/watcher/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.5.6 → v0.5.7}/lib/ws-session/src/main.js +0 -0
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the gina package.
|
|
3
|
+
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
4
|
+
*
|
|
5
|
+
* For the full copyright and license information, please view the LICENSE
|
|
6
|
+
* file that was distributed with this source code.
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @module gina/core/connectors/sqlite/job-store
|
|
12
|
+
*
|
|
13
|
+
* SQLite-backed `JobStore` for the async-job primitive (`lib/job`) — the
|
|
14
|
+
* connector-backed store follow-up of #AI6. Backed by `node:sqlite` (Node.js
|
|
15
|
+
* built-in since 22.5.0 — zero npm deps), the same substrate as the framework
|
|
16
|
+
* state store (`lib/state`) and the SQLite session store.
|
|
17
|
+
*
|
|
18
|
+
* What it buys over the default memory store: job records survive a bundle
|
|
19
|
+
* restart (a client polling `/_gina/jobs/:id` keeps resolving across a
|
|
20
|
+
* deploy), and are visible to any process that opens the same file. The
|
|
21
|
+
* deferred *function* still runs only in the process that created the job —
|
|
22
|
+
* the store shares the record, never the closure (see `lib/job`).
|
|
23
|
+
*
|
|
24
|
+
* Deliberate divergences from the SQLite SESSION store (same file family,
|
|
25
|
+
* different contract):
|
|
26
|
+
* - `get` / `list` do NOT filter on expiry. The memory store returns
|
|
27
|
+
* terminal records until `sweep` purges them, and behavioral parity with
|
|
28
|
+
* the memory store is the contract here — expiry acts only at sweep time.
|
|
29
|
+
* - No internal cleanup timer. `lib/job` owns the sweep cadence and calls
|
|
30
|
+
* `sweep(now, fn)` itself.
|
|
31
|
+
*
|
|
32
|
+
* Constructed by the `lib/job-store` dispatcher at boot; not meant to be
|
|
33
|
+
* instantiated from application code.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Job lifecycle states — imported so the sweep predicate can never drift from
|
|
38
|
+
* the memory store's (`lib/job` is a plain-required module-singleton; there is
|
|
39
|
+
* no load-time cycle because `lib/job` never requires this file — the
|
|
40
|
+
* `lib/job-store` dispatcher requires it lazily at boot).
|
|
41
|
+
*
|
|
42
|
+
* @inner
|
|
43
|
+
* @type {{PENDING:string, RUNNING:string, COMPLETED:string, FAILED:string}}
|
|
44
|
+
*/
|
|
45
|
+
var STATES = require('../../../../lib/job/src/main').STATES;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* No-op callback used when a caller omits one.
|
|
49
|
+
* @inner
|
|
50
|
+
* @returns {void}
|
|
51
|
+
*/
|
|
52
|
+
function noop() {}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Build a SQLite-backed job store implementing the `lib/job` `JobStore` seam
|
|
56
|
+
* (`set / get / remove / list / sweep`, all Node-callback-shaped). Callbacks
|
|
57
|
+
* fire synchronously (`node:sqlite`'s `DatabaseSync` is a synchronous driver),
|
|
58
|
+
* so the store has the same timing semantics class as the memory store.
|
|
59
|
+
*
|
|
60
|
+
* @param {object} connConf - Resolved `connectors.json` entry for this store.
|
|
61
|
+
* @param {string} [connConf.file] - Path to the SQLite file, or `':memory:'` (volatile —
|
|
62
|
+
* only useful in tests). Defaults to
|
|
63
|
+
* `~/.gina/{version}/jobs-{bundle}.db`.
|
|
64
|
+
* `file` is the PATH key by the sqlite DB-connector
|
|
65
|
+
* convention — the model layer scans every
|
|
66
|
+
* connectors.json entry at boot and treats `database`
|
|
67
|
+
* as a NAME (`~/.gina/{version}/{database}.sqlite`),
|
|
68
|
+
* so a path in `database` fails the boot before this
|
|
69
|
+
* store is even built.
|
|
70
|
+
* @param {string} bundle - Bundle name — used for the default file name.
|
|
71
|
+
* @returns {object} - A `JobStore` instance, plus a `close()` convenience
|
|
72
|
+
* (not part of the seam; releases the file handle).
|
|
73
|
+
* @throws {Error} - On Node < 22.5.0 (no `node:sqlite`) or when the
|
|
74
|
+
* database file cannot be opened.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* // connectors.json: { "jobsDb": { "connector": "sqlite", "file": "/data/jobs.db" } }
|
|
78
|
+
* // app.json: { "jobs": { "store": "jobsDb" } }
|
|
79
|
+
* // (wired automatically at boot by gna.js via lib/job-store)
|
|
80
|
+
*/
|
|
81
|
+
module.exports = function SqliteJobStore(connConf, bundle) {
|
|
82
|
+
connConf = connConf || {};
|
|
83
|
+
|
|
84
|
+
// Require node:sqlite — available as a built-in since Node 22.5.0, zero npm deps.
|
|
85
|
+
var DatabaseSync;
|
|
86
|
+
try {
|
|
87
|
+
DatabaseSync = require('node:sqlite').DatabaseSync;
|
|
88
|
+
} catch (e) {
|
|
89
|
+
throw new Error(
|
|
90
|
+
'[SqliteJobStore] node:sqlite requires Node.js >= 22.5.0. '
|
|
91
|
+
+ 'Current: ' + process.version + '\n'
|
|
92
|
+
+ e.message
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Resolve DB path: connectors.json `file` > default per-bundle file. The
|
|
97
|
+
// default branch is the only place the injected `_` / `getPath` globals
|
|
98
|
+
// are read, so a test passing an explicit `file` stays standalone.
|
|
99
|
+
var dbPath = connConf.file
|
|
100
|
+
|| _(getPath('gina').home + '/jobs-' + (bundle || 'bundle') + '.db', true);
|
|
101
|
+
|
|
102
|
+
var db = new DatabaseSync(dbPath);
|
|
103
|
+
|
|
104
|
+
// WAL + synchronous=NORMAL: same trade-off as the SQLite session store —
|
|
105
|
+
// concurrent readers never block the writer; a crash can lose the last
|
|
106
|
+
// committed transaction but never corrupts the database.
|
|
107
|
+
db.exec('PRAGMA journal_mode=WAL');
|
|
108
|
+
db.exec('PRAGMA synchronous=NORMAL');
|
|
109
|
+
|
|
110
|
+
// Schema bootstrap — idempotent. Thin indexed columns for the two query
|
|
111
|
+
// shapes (list-by-state, sweep-by-expiry); the full record rides as JSON
|
|
112
|
+
// because it legitimately gains keys after creation (webhookDeliveredAt,
|
|
113
|
+
// webhookFailed, ...). All timestamps are epoch MILLISECONDS — the seam's
|
|
114
|
+
// unit (`sweep(now)` receives `Date.now()`).
|
|
115
|
+
db.exec(
|
|
116
|
+
'CREATE TABLE IF NOT EXISTS jobs ('
|
|
117
|
+
+ ' id TEXT PRIMARY KEY,'
|
|
118
|
+
+ ' state TEXT NOT NULL,'
|
|
119
|
+
+ ' expires_at INTEGER,'
|
|
120
|
+
+ ' updated_at INTEGER NOT NULL,'
|
|
121
|
+
+ ' record TEXT NOT NULL'
|
|
122
|
+
+ ')'
|
|
123
|
+
);
|
|
124
|
+
db.exec('CREATE INDEX IF NOT EXISTS jobs_state ON jobs (state)');
|
|
125
|
+
db.exec('CREATE INDEX IF NOT EXISTS jobs_expires ON jobs (expires_at)');
|
|
126
|
+
|
|
127
|
+
// Prepare reusable statements once — avoids re-parsing SQL on every call.
|
|
128
|
+
var stmtUpsert = db.prepare('INSERT OR REPLACE INTO jobs (id, state, expires_at, updated_at, record) VALUES (?, ?, ?, ?, ?)');
|
|
129
|
+
var stmtGet = db.prepare('SELECT record FROM jobs WHERE id = ?');
|
|
130
|
+
var stmtDel = db.prepare('DELETE FROM jobs WHERE id = ?');
|
|
131
|
+
var stmtListAll = db.prepare('SELECT record FROM jobs');
|
|
132
|
+
var stmtListState = db.prepare('SELECT record FROM jobs WHERE state = ?');
|
|
133
|
+
var stmtSweep = db.prepare(
|
|
134
|
+
'DELETE FROM jobs WHERE expires_at IS NOT NULL AND expires_at <= ?'
|
|
135
|
+
+ ' AND state IN (\'' + STATES.COMPLETED + '\', \'' + STATES.FAILED + '\')'
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Upsert `record` under `id`. The record is serialised whole; `state`
|
|
142
|
+
* and `expiresAt` are additionally mirrored into their indexed columns.
|
|
143
|
+
*
|
|
144
|
+
* @param {string} id
|
|
145
|
+
* @param {JobRecord} record
|
|
146
|
+
* @param {function} [fn] - `fn(err, record)`.
|
|
147
|
+
* @returns {void}
|
|
148
|
+
*/
|
|
149
|
+
set: function(id, record, fn) {
|
|
150
|
+
if (typeof fn !== 'function') fn = noop;
|
|
151
|
+
var json;
|
|
152
|
+
try {
|
|
153
|
+
json = JSON.stringify(record);
|
|
154
|
+
} catch (err) {
|
|
155
|
+
return fn(err);
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
stmtUpsert.run(
|
|
159
|
+
id,
|
|
160
|
+
String(record.state || ''),
|
|
161
|
+
(typeof record.expiresAt === 'number') ? record.expiresAt : null,
|
|
162
|
+
(typeof record.updatedAt === 'number') ? record.updatedAt : Date.now(),
|
|
163
|
+
json
|
|
164
|
+
);
|
|
165
|
+
fn(null, record);
|
|
166
|
+
} catch (err) {
|
|
167
|
+
fn(err);
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Fetch a record by `id`. No expiry filter — a terminal record past its
|
|
173
|
+
* `expiresAt` stays readable until `sweep` purges it (memory-store parity).
|
|
174
|
+
*
|
|
175
|
+
* @param {string} id
|
|
176
|
+
* @param {function} fn - `fn(err, record|null)`.
|
|
177
|
+
* @returns {void}
|
|
178
|
+
*/
|
|
179
|
+
get: function(id, fn) {
|
|
180
|
+
if (typeof fn !== 'function') fn = noop;
|
|
181
|
+
var row;
|
|
182
|
+
try {
|
|
183
|
+
row = stmtGet.get(id);
|
|
184
|
+
} catch (err) {
|
|
185
|
+
return fn(err);
|
|
186
|
+
}
|
|
187
|
+
if (!row) return fn(null, null);
|
|
188
|
+
try {
|
|
189
|
+
return fn(null, JSON.parse(row.record));
|
|
190
|
+
} catch (parseErr) {
|
|
191
|
+
return fn(new Error('[SqliteJobStore] could not parse job record `' + id + '`: ' + parseErr.message));
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Delete a record by `id`.
|
|
197
|
+
*
|
|
198
|
+
* @param {string} id
|
|
199
|
+
* @param {function} [fn] - `fn(err, existed)`.
|
|
200
|
+
* @returns {void}
|
|
201
|
+
*/
|
|
202
|
+
remove: function(id, fn) {
|
|
203
|
+
if (typeof fn !== 'function') fn = noop;
|
|
204
|
+
try {
|
|
205
|
+
var res = stmtDel.run(id);
|
|
206
|
+
fn(null, res.changes > 0);
|
|
207
|
+
} catch (err) {
|
|
208
|
+
fn(err);
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* List records, optionally filtered by `{ state }`. No expiry filter
|
|
214
|
+
* (memory-store parity). A record that fails to parse fails the whole
|
|
215
|
+
* list loudly — silent skipping would hide corruption.
|
|
216
|
+
*
|
|
217
|
+
* @param {?Object} filter - e.g. `{ state: 'failed' }`; `null` for all.
|
|
218
|
+
* @param {function} fn - `fn(err, records)`.
|
|
219
|
+
* @returns {void}
|
|
220
|
+
*/
|
|
221
|
+
list: function(filter, fn) {
|
|
222
|
+
if (typeof fn !== 'function') fn = noop;
|
|
223
|
+
try {
|
|
224
|
+
var rows = (filter && filter.state) ? stmtListState.all(String(filter.state)) : stmtListAll.all();
|
|
225
|
+
var out = [];
|
|
226
|
+
for (var i = 0; i < rows.length; i++) {
|
|
227
|
+
out.push(JSON.parse(rows[i].record));
|
|
228
|
+
}
|
|
229
|
+
fn(null, out);
|
|
230
|
+
} catch (err) {
|
|
231
|
+
fn(err);
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Purge terminal (`completed` / `failed`) records whose `expiresAt` has
|
|
237
|
+
* elapsed — the exact memory-store predicate, expressed as one DELETE.
|
|
238
|
+
*
|
|
239
|
+
* @param {number} now - Epoch ms (passed in by `lib/job`).
|
|
240
|
+
* @param {function} fn - `fn(err, removedCount)`.
|
|
241
|
+
* @returns {void}
|
|
242
|
+
*/
|
|
243
|
+
sweep: function(now, fn) {
|
|
244
|
+
if (typeof fn !== 'function') fn = noop;
|
|
245
|
+
try {
|
|
246
|
+
var res = stmtSweep.run(now);
|
|
247
|
+
fn(null, res.changes);
|
|
248
|
+
} catch (err) {
|
|
249
|
+
fn(err);
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Release the underlying file handle. NOT part of the `JobStore` seam —
|
|
255
|
+
* `lib/job` never calls it; provided for tests and explicit teardown.
|
|
256
|
+
*
|
|
257
|
+
* @returns {void}
|
|
258
|
+
*/
|
|
259
|
+
close: function() {
|
|
260
|
+
try { db.close(); } catch (e) { /* already closed */ }
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
};
|
|
@@ -7,12 +7,15 @@ var statusCodes = requireJSON( _( getPath('gina').core + '/status.codes'
|
|
|
7
7
|
// Inspector secret redaction (dev-mode only — never touches the actual response body)
|
|
8
8
|
var inspectorRedact = require('lib/inspector-redact');
|
|
9
9
|
|
|
10
|
-
// Inherited from controller
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
;
|
|
10
|
+
// Inherited from controller.
|
|
11
|
+
// #B63 (sibling of the render-swig #B61 / render-stream #B62 race fixes):
|
|
12
|
+
// the per-request deps are FUNCTION-scoped inside renderJSON() and threaded
|
|
13
|
+
// into the module-level writeCache() as parameters — nothing per-request
|
|
14
|
+
// lives at module scope. In prod this module is a shared singleton across
|
|
15
|
+
// concurrent requests; a module-scoped capture is reassigned by every
|
|
16
|
+
// incoming renderJSON, so writeCache resumed after its writeFile await
|
|
17
|
+
// reading a CONCURRENT request's controller (measured: the cache-config
|
|
18
|
+
// error path reported through the other request's throwError).
|
|
16
19
|
|
|
17
20
|
|
|
18
21
|
/**
|
|
@@ -24,29 +27,35 @@ var self = null
|
|
|
24
27
|
* @param {string} bundle - Bundle name (used as cache-key namespace)
|
|
25
28
|
* @param {object} opt - Server cache configuration (`opt.path`, `opt.ttl`)
|
|
26
29
|
* @param {string} jsonContent - Serialised JSON string to cache
|
|
30
|
+
* @param {object} req - Per-request request captured by renderJSON (race-safe)
|
|
31
|
+
* @param {object} res - Per-request response captured by renderJSON (race-safe)
|
|
32
|
+
* @param {boolean|string} cacheIsEnabled - Server-level cache flag threaded by renderJSON
|
|
33
|
+
* @param {function} throwError - Render-scoped controller `throwError` (closure-bound), threaded
|
|
34
|
+
* for the `invalidateOnEvents` validation branch
|
|
27
35
|
* @returns {Promise<void>}
|
|
28
36
|
*/
|
|
29
|
-
//
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
|
|
37
|
+
// Every render-scoped value is threaded as a parameter — writeCache is
|
|
38
|
+
// module-level and must not read the per-request bindings, which are
|
|
39
|
+
// function-scoped inside renderJSON (#B63). The post-await throwError uses
|
|
40
|
+
// the captured `res` so it never dereferences a nulled `local.res`, and the
|
|
41
|
+
// captured `throwError` so a concurrent renderJSON entering during the
|
|
42
|
+
// writeFile await can never re-route this request's error reporting.
|
|
43
|
+
async function writeCache(bundle, opt, jsonContent, req, res, cacheIsEnabled, throwError) {
|
|
35
44
|
if (
|
|
36
|
-
typeof(
|
|
45
|
+
typeof(req.routing.cache) == 'undefined'
|
|
37
46
|
||
|
|
38
|
-
!
|
|
47
|
+
! req.routing.cache
|
|
39
48
|
||
|
|
40
|
-
! /^true$/i.test(
|
|
49
|
+
! /^true$/i.test(cacheIsEnabled)
|
|
41
50
|
) {
|
|
42
51
|
return;
|
|
43
52
|
}
|
|
44
|
-
// before: "data:" +
|
|
45
|
-
var cacheKey = "data:" + bundle + ":" +
|
|
46
|
-
var responseHeaders =
|
|
53
|
+
// before: "data:" + originalUrl only (#C3 — added bundle namespace to prevent silent collisions when two bundles serve the same URL path)
|
|
54
|
+
var cacheKey = "data:" + bundle + ":" + req.originalUrl;
|
|
55
|
+
var responseHeaders = res.getHeaders() || {};
|
|
47
56
|
|
|
48
57
|
// Caching kinds are: `memory` & `fs`
|
|
49
|
-
var cachingOption = ( typeof(
|
|
58
|
+
var cachingOption = ( typeof(req.routing.cache) == 'string' ) ? { type: req.routing.cache } : JSON.clone(req.routing.cache);
|
|
50
59
|
if ( typeof(cachingOption.ttl) == 'undefined' ) {
|
|
51
60
|
cachingOption.ttl = opt.ttl
|
|
52
61
|
}
|
|
@@ -88,7 +97,7 @@ async function writeCache(bundle, opt, jsonContent, res) {
|
|
|
88
97
|
// - prioritize content linked to sessions
|
|
89
98
|
// - default ttl is 3600 sec
|
|
90
99
|
if ( /^fs$/i.test(cachingOption.type) ) {
|
|
91
|
-
var url =
|
|
100
|
+
var url = req.originalUrl;
|
|
92
101
|
if ( /\/$/.test(url) ) {
|
|
93
102
|
url += 'index'
|
|
94
103
|
}
|
|
@@ -116,11 +125,11 @@ async function writeCache(bundle, opt, jsonContent, res) {
|
|
|
116
125
|
// Invalidation
|
|
117
126
|
if ( typeof(cachingOption.invalidateOnEvents) != 'undefined' ) {
|
|
118
127
|
if ( !Array.isArray(cachingOption.invalidateOnEvents) ) {
|
|
119
|
-
// #M1 —
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
return
|
|
128
|
+
// #M1/#B63 — this resume point sits after the writeFile await:
|
|
129
|
+
// both the response AND the reporting controller come from the
|
|
130
|
+
// threaded parameters (renderJSON's captures), never from the
|
|
131
|
+
// module scope a concurrent request may have moved on from.
|
|
132
|
+
return throwError(res, 500, new Error('cache.invalidateOn must be an array'));
|
|
124
133
|
}
|
|
125
134
|
// Placing event listeners
|
|
126
135
|
cache.setEvents(cacheKey, cachingOption.invalidateOnEvents);
|
|
@@ -141,10 +150,12 @@ async function writeCache(bundle, opt, jsonContent, res) {
|
|
|
141
150
|
* @returns {void}
|
|
142
151
|
*/
|
|
143
152
|
module.exports = function renderJSON(jsonObj, deps) {
|
|
144
|
-
// Inherited from controller
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
153
|
+
// Inherited from controller — function-scoped (#B63): a concurrent
|
|
154
|
+
// renderJSON must not reassign this render's captures while its
|
|
155
|
+
// fire-and-forget writeCache is suspended at the writeFile await.
|
|
156
|
+
var self = deps.self;
|
|
157
|
+
var local = deps.local;
|
|
158
|
+
var headersSent = deps.headersSent;
|
|
148
159
|
|
|
149
160
|
// preventing multiple call of self.renderJSON() when controller is rendering from another required controller
|
|
150
161
|
if (local.options.renderingStack.length > 1) {
|
|
@@ -165,7 +176,6 @@ module.exports = function renderJSON(jsonObj, deps) {
|
|
|
165
176
|
|
|
166
177
|
// Using server cache to cache compiledTemplates
|
|
167
178
|
cache.from(self.serverInstance._cached);
|
|
168
|
-
cachePath = self.serverInstance._cachePath;
|
|
169
179
|
|
|
170
180
|
var request = local.req;
|
|
171
181
|
var response = local.res;
|
|
@@ -441,7 +451,7 @@ module.exports = function renderJSON(jsonObj, deps) {
|
|
|
441
451
|
&& typeof(request.routing.cache) != 'undefined'
|
|
442
452
|
&& /^GET$/i.test(request.method)
|
|
443
453
|
) {
|
|
444
|
-
writeCache(self._options.bundle, local.options.conf.server.cache, data, response).catch(function(err) {
|
|
454
|
+
writeCache(self._options.bundle, local.options.conf.server.cache, data, request, response, self.serverInstance._cacheIsEnabled, self.throwError).catch(function(err) {
|
|
445
455
|
console.error('[render-json] writeCache failed:', err);
|
|
446
456
|
});
|
|
447
457
|
}
|
|
@@ -30,13 +30,18 @@
|
|
|
30
30
|
* @param {object} deps Injected by controller: { self, local, headersSent }
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
var self, local, headersSent;
|
|
34
|
-
|
|
35
33
|
module.exports = function renderStream(asyncIterable, contentType, deps) {
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
// #B62 (sibling of the render-swig #B61 race fix): the per-request deps
|
|
36
|
+
// are FUNCTION-scoped. In prod this module is a shared singleton across
|
|
37
|
+
// concurrent requests; with module-scoped captures, the fire-and-forget
|
|
38
|
+
// _doStream IIFE below resumed after its `for await` reading a CONCURRENT
|
|
39
|
+
// request's refs — its catch reported errors through the other request's
|
|
40
|
+
// controller, and its finally nulled the OTHER request's live
|
|
41
|
+
// local.req/res/next mid-stream (measured) while never releasing its own.
|
|
42
|
+
var self = deps.self;
|
|
43
|
+
var local = deps.local;
|
|
44
|
+
var headersSent = deps.headersSent;
|
|
40
45
|
|
|
41
46
|
// Prevent double-render (same guard used by renderJSON / renderTEXT)
|
|
42
47
|
if (local.options.renderingStack.length > 1) return false;
|
|
@@ -13,17 +13,13 @@ var emitInspectorWindowData = require('./inspector-window-emit');
|
|
|
13
13
|
var blacklistRe = /[<>]/g;
|
|
14
14
|
|
|
15
15
|
// Inherited from controller.
|
|
16
|
-
// #INS10 race fix:
|
|
17
|
-
//
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
, SwigFilters = null
|
|
24
|
-
, headersSent = null
|
|
25
|
-
, cachePath = null
|
|
26
|
-
;
|
|
16
|
+
// #B61 (completes the #INS10 race fix): ALL per-request deps are captured
|
|
17
|
+
// FUNCTION-scoped inside render() — nothing per-request lives at module scope.
|
|
18
|
+
// In prod this module is a shared singleton across concurrent requests, and a
|
|
19
|
+
// module-scoped capture is reassigned by every incoming render; a render
|
|
20
|
+
// suspended at an await would resume reading a CONCURRENT request's closures
|
|
21
|
+
// (measured: the post-await setResources / getData calls executed the other
|
|
22
|
+
// request's functions, gap-filling its page data into this render's context).
|
|
27
23
|
|
|
28
24
|
/**
|
|
29
25
|
* Write the rendered HTML to the cache store (memory or file system).
|
|
@@ -35,16 +31,21 @@ var getData = null
|
|
|
35
31
|
* @param {string} htmlContent - Compiled HTML string to cache
|
|
36
32
|
* @param {object} req - Per-request request captured by render() (function-scoped, race-safe)
|
|
37
33
|
* @param {object} res - Per-request response captured by render() (function-scoped, race-safe)
|
|
34
|
+
* @param {boolean|string} cacheIsEnabled - Server-level cache flag threaded by render(); writeCache
|
|
35
|
+
* is module-level and has no access to render()-scoped bindings
|
|
36
|
+
* @param {function} throwError - Render-scoped controller `throwError` (closure-bound), threaded
|
|
37
|
+
* for the `invalidateOnEvents` validation branch
|
|
38
38
|
* @returns {Promise<void>}
|
|
39
39
|
*/
|
|
40
|
-
async function writeCache(bundle, opt, htmlContent, req, res) {
|
|
40
|
+
async function writeCache(bundle, opt, htmlContent, req, res, cacheIsEnabled, throwError) {
|
|
41
41
|
if (
|
|
42
42
|
typeof(req.routing.cache) == 'undefined'
|
|
43
43
|
||
|
|
44
44
|
! req.routing.cache
|
|
45
45
|
||
|
|
46
|
-
// replaced: /^true$/i.test() (#P6)
|
|
47
|
-
|
|
46
|
+
// replaced: /^true$/i.test() (#P6); flag threaded as a param — module scope
|
|
47
|
+
// has no render()-scoped bindings (see the #INS10 note at the top of this file)
|
|
48
|
+
String(cacheIsEnabled).toLowerCase() !== 'true'
|
|
48
49
|
) {
|
|
49
50
|
return;
|
|
50
51
|
}
|
|
@@ -124,7 +125,7 @@ async function writeCache(bundle, opt, htmlContent, req, res) {
|
|
|
124
125
|
// Invalidation
|
|
125
126
|
if ( typeof(cachingOption.invalidateOnEvents) != 'undefined' ) {
|
|
126
127
|
if ( !Array.isArray(cachingOption.invalidateOnEvents) ) {
|
|
127
|
-
return
|
|
128
|
+
return throwError(res, 500, new Error('cache.invalidateOn must be an array'));
|
|
128
129
|
}
|
|
129
130
|
// Placing event listeners
|
|
130
131
|
cache.setEvents(cacheKey, cachingOption.invalidateOnEvents);
|
|
@@ -162,23 +163,28 @@ async function writeCache(bundle, opt, htmlContent, req, res) {
|
|
|
162
163
|
module.exports = async function render(userData, displayInspector, errOptions, deps) {
|
|
163
164
|
|
|
164
165
|
// Inherited from controller.
|
|
165
|
-
// #INS10 race fix —
|
|
166
|
-
//
|
|
167
|
-
//
|
|
168
|
-
// post-await Inspector emit
|
|
169
|
-
//
|
|
170
|
-
//
|
|
171
|
-
//
|
|
166
|
+
// #INS10 / #B61 race fix — EVERY per-request dep is FUNCTION-scoped (`var`):
|
|
167
|
+
// render() is async, so a render suspended at an await must not have its
|
|
168
|
+
// captures overwritten by a concurrent render. #INS10 (8674c514) scoped
|
|
169
|
+
// `self` / `local` for the post-await Inspector emit; #B61 completes the
|
|
170
|
+
// sweep — getData / setResources were still module-scoped yet are read
|
|
171
|
+
// AFTER the template-read await (the setResources call and the
|
|
172
|
+
// `merge(data, getData())` restore further down), so a concurrent render's
|
|
173
|
+
// reassignment executed the OTHER request's closures and gap-filled its
|
|
174
|
+
// page data into this render. cachePath is likewise read post-await on the
|
|
175
|
+
// layout-cache path, and the engine ref was assigned as an implicit global.
|
|
172
176
|
var self = deps.self;
|
|
173
177
|
var local = deps.local;
|
|
174
|
-
getData = deps.getData;
|
|
175
|
-
hasViews = deps.hasViews;
|
|
176
|
-
setResources = deps.setResources;
|
|
178
|
+
var getData = deps.getData;
|
|
179
|
+
var hasViews = deps.hasViews;
|
|
180
|
+
var setResources = deps.setResources;
|
|
177
181
|
// Default filters
|
|
178
|
-
swig = deps.swig;
|
|
179
|
-
SwigFilters = deps.SwigFilters;
|
|
180
|
-
headersSent = deps.headersSent;
|
|
181
|
-
;
|
|
182
|
+
var swig = deps.swig;
|
|
183
|
+
var SwigFilters = deps.SwigFilters;
|
|
184
|
+
var headersSent = deps.headersSent;
|
|
185
|
+
// Assigned on the layout-cache path once localOptions is resolved; read
|
|
186
|
+
// post-await there (.gitignore drop + the {% extends %} rewrite).
|
|
187
|
+
var cachePath = null;
|
|
182
188
|
// Function-scoped captures of per-request refs. The exported render()
|
|
183
189
|
// is async with multiple await boundaries (template + layout reads,
|
|
184
190
|
// cache writes). Between yields, `local.req` / `local.res` / `local.next`
|
|
@@ -977,7 +983,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
977
983
|
&& typeof(req.routing.cache) != 'undefined'
|
|
978
984
|
&& req.method.toUpperCase() === 'GET'
|
|
979
985
|
) {
|
|
980
|
-
await writeCache(localOptions.bundle, localOptions.conf.server.cache, htmlContent, req, res);
|
|
986
|
+
await writeCache(localOptions.bundle, localOptions.conf.server.cache, htmlContent, req, res, self.serverInstance._cacheIsEnabled, self.throwError);
|
|
981
987
|
}
|
|
982
988
|
|
|
983
989
|
// Cache-Control: miss path — inform browsers/CDNs of the response lifetime (#C6)
|
|
@@ -1742,7 +1748,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
|
|
|
1742
1748
|
&& req.method.toUpperCase() === 'GET'
|
|
1743
1749
|
)
|
|
1744
1750
|
) {
|
|
1745
|
-
await writeCache(localOptions.bundle, localOptions.conf.server.cache, htmlContent, req, res);
|
|
1751
|
+
await writeCache(localOptions.bundle, localOptions.conf.server.cache, htmlContent, req, res, self.serverInstance._cacheIsEnabled, self.throwError);
|
|
1746
1752
|
}
|
|
1747
1753
|
|
|
1748
1754
|
// Cache-Control: miss path — inform browsers/CDNs of the response lifetime (#C6)
|
|
@@ -1421,16 +1421,36 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1421
1421
|
var _jobsConf = (_jobsAppConf && _jobsAppConf.jobs && typeof _jobsAppConf.jobs === 'object')
|
|
1422
1422
|
? _jobsAppConf.jobs
|
|
1423
1423
|
: {};
|
|
1424
|
-
|
|
1424
|
+
var _jobsStartOpts = {
|
|
1425
1425
|
maxConcurrency: _jobsConf.maxConcurrency,
|
|
1426
1426
|
ttl: _jobsConf.ttl,
|
|
1427
1427
|
sweepInterval: _jobsConf.sweepInterval,
|
|
1428
1428
|
idSize: _jobsConf.idSize,
|
|
1429
|
+
retryBackoffMs: _jobsConf.retryBackoffMs,
|
|
1429
1430
|
webhookMaxAttempts: _jobsConf.webhookMaxAttempts,
|
|
1430
1431
|
webhookBackoffMs: _jobsConf.webhookBackoffMs,
|
|
1431
1432
|
webhookTimeoutMs: _jobsConf.webhookTimeoutMs,
|
|
1432
1433
|
webhookSecret: _jobsConf.webhookSecret
|
|
1433
|
-
}
|
|
1434
|
+
};
|
|
1435
|
+
// #AI6 connector-backed store — `jobs.store` names a
|
|
1436
|
+
// connectors.json entry, resolved through lib/job-store.
|
|
1437
|
+
// Fail-fast when the configured store cannot be built
|
|
1438
|
+
// (#B57 shape): the config explicitly asked for durable
|
|
1439
|
+
// records, so a silent memory fallback would hide the
|
|
1440
|
+
// misconfig and lose the durability it asked for. An
|
|
1441
|
+
// ABSENT `jobs.store` key still means the memory store.
|
|
1442
|
+
if (typeof _jobsConf.store === 'string' && _jobsConf.store.length > 0) {
|
|
1443
|
+
try {
|
|
1444
|
+
_jobsStartOpts.store = lib.JobStore(_jobsConf.store);
|
|
1445
|
+
} catch (jobsStoreErr) {
|
|
1446
|
+
var _jobsStoreMsg = '[lib.job] jobs.store `' + _jobsConf.store + '` could not be built — aborting boot: ' + (jobsStoreErr.message || jobsStoreErr);
|
|
1447
|
+
console.emerg(_jobsStoreMsg + '\n' + (jobsStoreErr.stack || ''));
|
|
1448
|
+
// process.exit() truncates async stdio on a pipe — flush synchronously first.
|
|
1449
|
+
fs.writeSync(2, _jobsStoreMsg + '\n');
|
|
1450
|
+
process.exit(1);
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
lib.job.start(_jobsStartOpts);
|
|
1434
1454
|
} catch (jobsErr) {
|
|
1435
1455
|
console.warn('[lib.job] init skipped: ' + (jobsErr.message || jobsErr));
|
|
1436
1456
|
}
|