gina 0.6.8 → 0.6.9
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 +25 -28
- package/ROADMAP.md +2 -1
- package/framework/v0.6.9/VERSION +1 -0
- package/framework/{v0.6.8 → v0.6.9}/core/config.js +102 -1
- package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.js +32 -4
- package/framework/{v0.6.8 → v0.6.9}/core/gna.js +107 -0
- package/framework/{v0.6.8 → v0.6.9}/core/server.express.js +40 -1
- package/framework/{v0.6.8 → v0.6.9}/core/server.isaac.js +110 -3
- package/framework/{v0.6.8 → v0.6.9}/core/server.js +16 -2
- package/framework/{v0.6.8 → v0.6.9}/helpers/path.js +108 -26
- package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/build.js +37 -0
- package/framework/{v0.6.8 → v0.6.9}/lib/cmd/helper.js +148 -49
- package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/add.js +75 -3
- package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/build.js +24 -0
- package/framework/{v0.6.8 → v0.6.9}/lib/index.js +8 -0
- package/framework/v0.6.9/lib/push/package.json +19 -0
- package/framework/v0.6.9/lib/push/src/main.js +144 -0
- package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/backends/env.js +15 -4
- package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/main.js +48 -4
- package/framework/{v0.6.8 → v0.6.9}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +9 -6
- package/package.json +3 -3
- package/schema/manifest.json +6 -0
- package/schema/settings.json +3 -2
- package/types/index.d.ts +39 -0
- package/framework/v0.6.8/VERSION +0 -1
- /package/framework/{v0.6.8 → v0.6.9}/AUTHORS +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/LICENSE +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/content.encoding +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/dev/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/locales/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/locales/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/mime.types +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/model/entity.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/model/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/router.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/status.codes +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/console.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/context.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/task.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/helpers/text.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/async/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/config.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/job/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/job-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/math/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/model.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/proc.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/session-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/shell.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/state.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/url/README.md +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/url/index.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/validator.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.8 → v0.6.9}/lib/ws-session/src/main.js +0 -0
|
@@ -94,6 +94,8 @@ function CmdHelper(cmd, client, debug) {
|
|
|
94
94
|
// don't use this collection to store into files
|
|
95
95
|
bundlesByProject: {}, // bundles collection will be loaded into cmd.projects[$project].bundles
|
|
96
96
|
bundlesLocation : null, // symlink to cmd.projects[$project].bundles_path
|
|
97
|
+
warnedAbsentBundles : {}, // #B375 — once-per-command dedup for the declared-but-absent-bundle warning emitted by loadAssets()
|
|
98
|
+
warnedInvalidServerSettings : {}, // #B378 — once-per-command dedup for the invalid bundle protocol/scheme warning emitted by loadAssets()
|
|
97
99
|
|
|
98
100
|
// current project env.json path
|
|
99
101
|
envPath : null, // path to env.json - defined by filterArgs()
|
|
@@ -663,6 +665,18 @@ function CmdHelper(cmd, client, debug) {
|
|
|
663
665
|
* A registered project whose directory exists but whose manifest.json is missing
|
|
664
666
|
* (a stale ~/.gina/projects.json entry) is warned and skipped (#B24) rather than
|
|
665
667
|
* aborting the whole command.
|
|
668
|
+
* On `project:add`/`project:import`, the current project's bundle list is the
|
|
669
|
+
* UNION of the manifest's declared bundles and the bundle directories found on
|
|
670
|
+
* disk (#B375): declared entries are preserved as-is, disk-only bundles are
|
|
671
|
+
* appended for additive registration, and a declared bundle whose tree is
|
|
672
|
+
* absent is warned about once per command — never auto-pruned, since the
|
|
673
|
+
* declaration may be scope-restricted (#B373).
|
|
674
|
+
* Each project's bundles are resolved against that project's OWN path (#B379),
|
|
675
|
+
* and a project's protocols/schemes lists are DERIVED bookkeeping constrained
|
|
676
|
+
* to the framework's supported sets from `~/main.json` (#B378): a bundle's
|
|
677
|
+
* declared `server.protocol`/`server.scheme` may extend its project's list
|
|
678
|
+
* only when the framework supports the value — an unsupported one is warned
|
|
679
|
+
* about once per command and never adopted or made a default.
|
|
666
680
|
* Also links node_modules and gina when running start/stop/restart tasks in global mode.
|
|
667
681
|
* Assigns itself to the global `loadAssets`.
|
|
668
682
|
*
|
|
@@ -1373,36 +1387,53 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1373
1387
|
}
|
|
1374
1388
|
|
|
1375
1389
|
cmd.bundlesByProject[project] = (cmd.bundlesByProject[project].count() > 0) ? cmd.bundlesByProject[project] : requireJSON(projectPropertiesPath).bundles;
|
|
1376
|
-
// additional checks
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1390
|
+
// #B375 — the "additional checks" block below (introduced 2023, absorbed into an
|
|
1391
|
+
// automated version-bump commit, never revisited) compared each project's declared
|
|
1392
|
+
// bundle COUNT against a readdir of `<project>/src` (else `/releases`) and, on ANY
|
|
1393
|
+
// mismatch, emptied `manifest.bundles` and wrote it back to disk — for EVERY
|
|
1394
|
+
// registered project, not just the one being added/imported. That destroyed every
|
|
1395
|
+
// per-bundle declaration the recreation skeleton does not carry (the `scopes`
|
|
1396
|
+
// allow-list — #B373 —, `gina_version`, any custom key), reset `version`/`tag` and
|
|
1397
|
+
// release targets to defaults, permanently emptied bystander projects' manifests
|
|
1398
|
+
// (no rebuild ever runs for a non-target project), and did the same on plain
|
|
1399
|
+
// `project:add` (the rebuild only runs on import). Its one legitimate function —
|
|
1400
|
+
// forcing a rescan of the bundle directories so bundles on disk but missing from
|
|
1401
|
+
// the manifest still get registered on import — is now served non-destructively by
|
|
1402
|
+
// the union rescan near the end of loadAssets, which no longer needs `cmd.bundles`
|
|
1403
|
+
// to be emptied to fire. Manifest entries are never auto-pruned anymore: a
|
|
1404
|
+
// declared bundle whose tree is absent is warned about there instead.
|
|
1405
|
+
// Kept commented per the replace-don't-delete convention:
|
|
1406
|
+
//
|
|
1407
|
+
// // additional checks
|
|
1408
|
+
// let bundlesCount = cmd.bundlesByProject[project].count();
|
|
1409
|
+
// if ( /^project\:(add|import)/.test(cmd.task) && bundlesCount > 0 ) {
|
|
1410
|
+
// let releasesPathObj = new _(cmd.projects[project].path +'/releases', true);
|
|
1411
|
+
// let _bundleConfigPath = cmd.bundlesLocation;
|
|
1412
|
+
// let files = [], f = 0;
|
|
1413
|
+
// if ( new _(cmd.projects[project].path +'/src', true).existsSync() ) {
|
|
1414
|
+
// files = fs.readdirSync(_(cmd.projects[project].path +'/src', true));
|
|
1415
|
+
// } else if (releasesPathObj.existsSync()) {
|
|
1416
|
+
// _bundleConfigPath = releasesPathObj.toString();
|
|
1417
|
+
// files = fs.readdirSync(releasesPathObj.toString());
|
|
1418
|
+
// }
|
|
1419
|
+
// let _count = 0;
|
|
1420
|
+
// for (;f < files.length; ++f) {
|
|
1421
|
+
// // skip hidden
|
|
1422
|
+
// let name = files[f];
|
|
1423
|
+
// if ( /^\./.test(name) ) continue;
|
|
1424
|
+
// _count++
|
|
1425
|
+
// }
|
|
1426
|
+
// if (_count != bundlesCount) {
|
|
1427
|
+
// cmd.bundles = [];
|
|
1428
|
+
// cmd.bundlesByProject[project] = {}
|
|
1429
|
+
// let updatedManifest = requireJSON(projectPropertiesPath);
|
|
1430
|
+
// updatedManifest.bundles = {};
|
|
1431
|
+
// lib.generator.createFileFromDataSync(
|
|
1432
|
+
// updatedManifest,
|
|
1433
|
+
// projectPropertiesPath
|
|
1434
|
+
// )
|
|
1435
|
+
// }
|
|
1436
|
+
// }
|
|
1406
1437
|
|
|
1407
1438
|
} else {
|
|
1408
1439
|
cmd.projects[project].exists = false;
|
|
@@ -1456,10 +1487,18 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1456
1487
|
cmd.bundlesByProject[project][bundle].schemes = cmd.projects[project].schemes;
|
|
1457
1488
|
cmd.bundlesByProject[project][bundle].def_scheme = cmd.defaultScheme;
|
|
1458
1489
|
|
|
1459
|
-
|
|
1490
|
+
// #B379 — resolve each project's bundles against ITS OWN path. This loop
|
|
1491
|
+
// runs over EVERY registered project, while the singular
|
|
1492
|
+
// `cmd.projectLocation` names only the CURRENT one — so a same-named
|
|
1493
|
+
// bundle in another project used to be read out of the wrong tree: its
|
|
1494
|
+
// `exists` flag, `configPaths` and default protocol/scheme all came from
|
|
1495
|
+
// the current project's files, and whatever its namesake declared there
|
|
1496
|
+
// leaked into the other project's registry entry.
|
|
1497
|
+
let _ownProjectPath = cmd.projects[project].path;
|
|
1498
|
+
if ( fs.existsSync(_(_ownProjectPath + '/'+ cmd.bundlesByProject[project][bundle].src )) ) {
|
|
1460
1499
|
cmd.bundlesByProject[project][bundle].exists = true;
|
|
1461
1500
|
// adding configurations
|
|
1462
|
-
bundleConfigPath = _(
|
|
1501
|
+
bundleConfigPath = _(_ownProjectPath + '/'+ cmd.bundlesByProject[project][bundle].src +'/config' );
|
|
1463
1502
|
cmd.bundlesByProject[project][bundle].configPaths = {
|
|
1464
1503
|
settings: _(bundleConfigPath +'/settings.json')
|
|
1465
1504
|
};
|
|
@@ -1471,22 +1510,40 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1471
1510
|
typeof(settings.server) != 'undefined'
|
|
1472
1511
|
&& typeof(settings.server.protocol) != 'undefined'
|
|
1473
1512
|
) {
|
|
1474
|
-
//
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1513
|
+
// #B378 — a bundle's declared protocol may extend the project's
|
|
1514
|
+
// list ONLY when the framework itself supports it. The entry's
|
|
1515
|
+
// `.protocols` deliberately aliases the project's own array
|
|
1516
|
+
// (assigned above): that aliasing is how the project's port
|
|
1517
|
+
// matrix learns what its bundles use — and it persists to
|
|
1518
|
+
// ~/.gina/projects.json on the next registry write, from where
|
|
1519
|
+
// `image:build` bakes the list into a container's environment.
|
|
1520
|
+
// So an unsupported value is surfaced by name instead of
|
|
1521
|
+
// adopted, and never becomes the entry's default either.
|
|
1522
|
+
if ( cmd.protocolsAvailable.indexOf(settings.server.protocol) > -1 ) {
|
|
1523
|
+
if (cmd.bundlesByProject[project][bundle].protocols.indexOf(settings.server.protocol) < 0)
|
|
1524
|
+
cmd.bundlesByProject[project][bundle].protocols.push(settings.server.protocol);
|
|
1525
|
+
|
|
1526
|
+
cmd.bundlesByProject[project][bundle].def_protocol = settings.server.protocol
|
|
1527
|
+
} else if ( !cmd.warnedInvalidServerSettings[project +'/'+ bundle +':protocol'] ) {
|
|
1528
|
+
cmd.warnedInvalidServerSettings[project +'/'+ bundle +':protocol'] = true;
|
|
1529
|
+
console.warn('Bundle `'+ bundle +'` of project `@'+ project +'` declares `server.protocol: "'+ settings.server.protocol +'"`, which is not an allowed protocol (allowed: '+ cmd.protocolsAvailable.join(', ') +' — check your framework configuration `~/main.json`). Ignoring it: the bundle keeps the default `'+ cmd.bundlesByProject[project][bundle].def_protocol +'`.');
|
|
1530
|
+
}
|
|
1479
1531
|
}
|
|
1480
1532
|
|
|
1481
1533
|
if (
|
|
1482
1534
|
typeof(settings.server) != 'undefined'
|
|
1483
1535
|
&& typeof(settings.server.scheme) != 'undefined'
|
|
1484
1536
|
) {
|
|
1485
|
-
//
|
|
1486
|
-
if (cmd.
|
|
1487
|
-
cmd.bundlesByProject[project][bundle].schemes.
|
|
1488
|
-
|
|
1489
|
-
|
|
1537
|
+
// #B378 — same rule as the protocol above.
|
|
1538
|
+
if ( cmd.schemesAvailable.indexOf(settings.server.scheme) > -1 ) {
|
|
1539
|
+
if (cmd.bundlesByProject[project][bundle].schemes.indexOf(settings.server.scheme) < 0)
|
|
1540
|
+
cmd.bundlesByProject[project][bundle].schemes.push(settings.server.scheme);
|
|
1541
|
+
|
|
1542
|
+
cmd.bundlesByProject[project][bundle].def_scheme = settings.server.scheme
|
|
1543
|
+
} else if ( !cmd.warnedInvalidServerSettings[project +'/'+ bundle +':scheme'] ) {
|
|
1544
|
+
cmd.warnedInvalidServerSettings[project +'/'+ bundle +':scheme'] = true;
|
|
1545
|
+
console.warn('Bundle `'+ bundle +'` of project `@'+ project +'` declares `server.scheme: "'+ settings.server.scheme +'"`, which is not an allowed scheme (allowed: '+ cmd.schemesAvailable.join(', ') +' — check your framework configuration `~/main.json`). Ignoring it: the bundle keeps the default `'+ cmd.bundlesByProject[project][bundle].def_scheme +'`.');
|
|
1546
|
+
}
|
|
1490
1547
|
}
|
|
1491
1548
|
}
|
|
1492
1549
|
|
|
@@ -1525,10 +1582,22 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1525
1582
|
return false;
|
|
1526
1583
|
}
|
|
1527
1584
|
|
|
1585
|
+
// #B375 — this rescan used to be gated on `!cmd.bundles.length`, which only ever
|
|
1586
|
+
// opened after the destructive count-mismatch reset (now retired, see above) had
|
|
1587
|
+
// emptied the list: that reset WAS the discovery mechanism for bundles present on
|
|
1588
|
+
// disk but missing from the manifest. The rescan now always runs for
|
|
1589
|
+
// `project:add`/`project:import` on the current project and UNIONS the two sources
|
|
1590
|
+
// instead: manifest-declared bundles keep their existing entries untouched
|
|
1591
|
+
// (`scopes`, `version`, custom keys, release targets — all preserved), and only
|
|
1592
|
+
// bundles found on disk but absent from the manifest are appended, for
|
|
1593
|
+
// `addBundleToManifest` to seed additively (#B55). A bundle declared in the
|
|
1594
|
+
// manifest but absent from disk is warned about, never auto-pruned: the
|
|
1595
|
+
// declaration may be deliberate (a bundle restricted to other scopes — #B373 —
|
|
1596
|
+
// whose tree is stripped at this scope); removing it for good is
|
|
1597
|
+
// `gina bundle:remove`'s job.
|
|
1528
1598
|
if (
|
|
1529
1599
|
/^project\:(add|import)/.test(cmd.task)
|
|
1530
1600
|
&& typeof(cmd.projects[cmd.projectName]) != 'undefined'
|
|
1531
|
-
&& !cmd.bundles.length
|
|
1532
1601
|
) {
|
|
1533
1602
|
var releasesPathObj = new _(cmd.projects[cmd.projectName].path +'/releases', true);
|
|
1534
1603
|
var _bundleConfigPath = cmd.bundlesLocation;
|
|
@@ -1539,18 +1608,35 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1539
1608
|
_bundleConfigPath = releasesPathObj.toString();
|
|
1540
1609
|
files = fs.readdirSync(releasesPathObj.toString());
|
|
1541
1610
|
}
|
|
1611
|
+
var _diskNames = [];
|
|
1542
1612
|
for (;f < files.length; ++f) {
|
|
1543
1613
|
// skip hidden
|
|
1544
1614
|
let name = files[f];
|
|
1545
1615
|
if ( /^\./.test(name) ) continue;
|
|
1616
|
+
_diskNames.push(name);
|
|
1617
|
+
if ( cmd.bundles.indexOf(name) > -1 ) {
|
|
1618
|
+
// already declared in the manifest — keep the existing entry untouched
|
|
1619
|
+
continue;
|
|
1620
|
+
}
|
|
1546
1621
|
cmd.bundles.push(name);
|
|
1547
|
-
|
|
1622
|
+
// #B376 — the settings path is derived from the loop-invariant scan root
|
|
1623
|
+
// for every bundle: the previous version mutated the root across
|
|
1624
|
+
// iterations, so every bundle after the first got a path nested under its
|
|
1625
|
+
// predecessors and the settings-consistency pass silently skipped it.
|
|
1548
1626
|
cmd.bundlesByProject[cmd.projectName][name] = {
|
|
1627
|
+
src: 'src/'+ name,
|
|
1549
1628
|
configPaths: {
|
|
1550
|
-
settings: _(_bundleConfigPath +'/config/settings.json', true)
|
|
1629
|
+
settings: _(_bundleConfigPath +'/'+ name +'/config/settings.json', true)
|
|
1551
1630
|
}
|
|
1552
1631
|
};
|
|
1553
1632
|
}
|
|
1633
|
+
// Surface manifest entries whose tree is missing from the scanned location —
|
|
1634
|
+
// once per bundle per command (loadAssets runs several times per command).
|
|
1635
|
+
for (let declared in cmd.bundlesByProject[cmd.projectName]) {
|
|
1636
|
+
if ( _diskNames.indexOf(declared) > -1 || cmd.warnedAbsentBundles[declared] ) continue;
|
|
1637
|
+
cmd.warnedAbsentBundles[declared] = true;
|
|
1638
|
+
console.warn('Bundle `'+ declared +'` is declared in the manifest.json of project `@'+ cmd.projectName +'` but was not found under `'+ _bundleConfigPath +'` — keeping the declaration (it may be restricted to other scopes); if the bundle is gone for good, remove it with `gina bundle:remove '+ declared +' @'+ cmd.projectName +'`.');
|
|
1639
|
+
}
|
|
1554
1640
|
cmd.bundles.sort()
|
|
1555
1641
|
}
|
|
1556
1642
|
|
|
@@ -1783,17 +1869,30 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1783
1869
|
}
|
|
1784
1870
|
|
|
1785
1871
|
// getting available all protocols
|
|
1872
|
+
// #B380 — read the SOURCE list by its own index, exactly as the env loop
|
|
1873
|
+
// above does: the previous form indexed the TARGET with the source's index,
|
|
1874
|
+
// so once the contextual list outgrew the project's own, the overshoot read
|
|
1875
|
+
// undefined. #B378 — and merge only values the framework supports: the
|
|
1876
|
+
// contextual list also grows from ports.json keys, which can retain
|
|
1877
|
+
// protocols a framework update removed.
|
|
1786
1878
|
for (let p in cmd.protocols) {
|
|
1787
|
-
let newProtocol =
|
|
1788
|
-
if (
|
|
1879
|
+
let newProtocol = cmd.protocols[p];
|
|
1880
|
+
if (
|
|
1881
|
+
cmd.protocolsAvailable.indexOf(newProtocol) > -1
|
|
1882
|
+
&& allProjectProtocols.indexOf(newProtocol) < 0
|
|
1883
|
+
) {
|
|
1789
1884
|
console.debug('adding new protocol ['+newProtocol+'] VS' + JSON.stringify(cmd.protocols, null, 2));
|
|
1790
1885
|
allProjectProtocols.push(newProtocol);
|
|
1791
1886
|
}
|
|
1792
1887
|
}
|
|
1793
1888
|
// getting available all schemes
|
|
1889
|
+
// #B380 / #B378 — same two rules as the protocol loop above.
|
|
1794
1890
|
for (let p in cmd.schemes) {
|
|
1795
|
-
let newScheme =
|
|
1796
|
-
if (
|
|
1891
|
+
let newScheme = cmd.schemes[p];
|
|
1892
|
+
if (
|
|
1893
|
+
cmd.schemesAvailable.indexOf(newScheme) > -1
|
|
1894
|
+
&& allProjectSchemes.indexOf(newScheme) < 0
|
|
1895
|
+
) {
|
|
1797
1896
|
console.debug('adding new scheme ['+newScheme+'] VS' + JSON.stringify(cmd.schemes, null, 2));
|
|
1798
1897
|
allProjectSchemes.push(newScheme);
|
|
1799
1898
|
}
|
|
@@ -390,6 +390,58 @@ function Add(opt, cmd) {
|
|
|
390
390
|
}
|
|
391
391
|
|
|
392
392
|
|
|
393
|
+
/**
|
|
394
|
+
* Copies the framework's `_gitignore` template to the project's `.gitignore`,
|
|
395
|
+
* but only when the project does not already have one (#B258).
|
|
396
|
+
*
|
|
397
|
+
* The `_` prefix is the ship-time name: a real `.gitignore` tracked inside
|
|
398
|
+
* `core/template/` would be read by git as ignore rules for the framework's
|
|
399
|
+
* own tree. The rename to the dotted form belongs here, at scaffold time —
|
|
400
|
+
* and until now nothing performed it, so the template shipped in every
|
|
401
|
+
* tarball with no consumer and scaffolded projects got no `.gitignore` at
|
|
402
|
+
* all. That left the `.env` / `*.env` globs it carries unable to protect
|
|
403
|
+
* anything, which is the security-adjacent half of this fix.
|
|
404
|
+
*
|
|
405
|
+
* SKIP-IF-EXISTS is deliberate. A project's `.gitignore` is the user's file
|
|
406
|
+
* and routinely carries rules the framework knows nothing about; filling a
|
|
407
|
+
* gap is safe, replacing is not. This also makes the step idempotent, so
|
|
408
|
+
* re-running `project:add` over an existing project cannot clobber it.
|
|
409
|
+
*
|
|
410
|
+
* Note this does NOT reuse `lib.generator.createFileFromTemplateSync`, which
|
|
411
|
+
* is otherwise the right shape: it unlinks the target first, so it cannot
|
|
412
|
+
* express skip-if-exists, and it chmods 0755 — an executable `.gitignore`.
|
|
413
|
+
*
|
|
414
|
+
* Never fatal: a scaffold that produced a complete, working project should
|
|
415
|
+
* not fail over an ignore file the operator can write by hand.
|
|
416
|
+
*
|
|
417
|
+
* @inner
|
|
418
|
+
* @private
|
|
419
|
+
* @param {string} target - Absolute path to the project's `.gitignore`
|
|
420
|
+
* @returns {boolean} true when written, false when one already existed or the write was skipped
|
|
421
|
+
*
|
|
422
|
+
* @example
|
|
423
|
+
* createGitignoreFile('/path/to/project/.gitignore'); // → true on a fresh project
|
|
424
|
+
* createGitignoreFile('/path/to/project/.gitignore'); // → false the second time
|
|
425
|
+
*/
|
|
426
|
+
var createGitignoreFile = function(target) {
|
|
427
|
+
try {
|
|
428
|
+
if ( fs.existsSync(target) ) {
|
|
429
|
+
return false
|
|
430
|
+
}
|
|
431
|
+
var source = _(getPath('gina').core + '/template/_gitignore', true).toString();
|
|
432
|
+
if ( !fs.existsSync(source) ) {
|
|
433
|
+
return false
|
|
434
|
+
}
|
|
435
|
+
fs.writeFileSync(target, fs.readFileSync(source));
|
|
436
|
+
try { fs.chmodSync(target, 0o644) } catch (chmodErr) { /* best effort */ }
|
|
437
|
+
return true
|
|
438
|
+
} catch (gitignoreErr) {
|
|
439
|
+
console.warning('[ project:add ] could not write `.gitignore`: ' + (gitignoreErr.message || gitignoreErr));
|
|
440
|
+
return false
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
|
|
393
445
|
/**
|
|
394
446
|
* Creates or updates package.json from the framework template, merging
|
|
395
447
|
* any existing file when isCreatedFromExistingPackage is true.
|
|
@@ -430,6 +482,12 @@ function Add(opt, cmd) {
|
|
|
430
482
|
target
|
|
431
483
|
);
|
|
432
484
|
|
|
485
|
+
// #B258 — the project's `.gitignore`, written only when absent. This is
|
|
486
|
+
// the last scaffold step for both the new-project and the import path:
|
|
487
|
+
// an imported project without one has exactly the same exposure as a
|
|
488
|
+
// fresh one, and skip-if-exists keeps the import non-destructive.
|
|
489
|
+
createGitignoreFile( _(self.projectLocation + '/.gitignore', true).toString() );
|
|
490
|
+
|
|
433
491
|
end(true)
|
|
434
492
|
}
|
|
435
493
|
|
|
@@ -593,6 +651,10 @@ function Add(opt, cmd) {
|
|
|
593
651
|
* and writes ports.json and ports.reverse.json when all bundles are done.
|
|
594
652
|
* Also used by the `port:reset` command.
|
|
595
653
|
*
|
|
654
|
+
* Bundles declared in the manifest but absent from disk (e.g. restricted to
|
|
655
|
+
* other scopes — #B373) carry no `configPaths`; the settings-consistency
|
|
656
|
+
* check skips them (#B375) while their port entries are still processed.
|
|
657
|
+
*
|
|
596
658
|
* @inner
|
|
597
659
|
* @private
|
|
598
660
|
* @param {number} b - Current bundle index into self.bundles
|
|
@@ -677,20 +739,29 @@ function Add(opt, cmd) {
|
|
|
677
739
|
// bundle settings inconsistency check @ fix
|
|
678
740
|
bundleName = local.bundle;
|
|
679
741
|
bundleConfig = self.bundlesByProject[self.projectName][bundleName];
|
|
680
|
-
|
|
742
|
+
// #B375 — a bundle declared in the manifest but absent from disk
|
|
743
|
+
// (e.g. restricted to other scopes) carries no `configPaths`: skip
|
|
744
|
+
// its settings-consistency check instead of throwing; the ports
|
|
745
|
+
// handling below is unaffected.
|
|
746
|
+
settingsPath = ( bundleConfig && bundleConfig.configPaths ) ? _(bundleConfig.configPaths.settings, true) : null;
|
|
681
747
|
bundleSettingsUpdate = false;
|
|
682
748
|
|
|
683
|
-
if ( fs.existsSync(settingsPath) ) {
|
|
749
|
+
if ( settingsPath && fs.existsSync(settingsPath) ) {
|
|
684
750
|
|
|
685
751
|
bundleSettings = requireJSON(settingsPath);
|
|
686
752
|
//console.debug('found [ '+ bundleName +' ] settings ');
|
|
687
753
|
if ( typeof(bundleSettings.server) != 'undefined' ) {
|
|
754
|
+
// #B378 — this heal is what makes an invalid declaration
|
|
755
|
+
// bootable again, but a user file must never be rewritten
|
|
756
|
+
// silently: every change is collected and reported by name.
|
|
757
|
+
var _settingsChanges = [];
|
|
688
758
|
// update only if given bundle protocol setting not in project protocols list
|
|
689
759
|
// use project def_protocol by default in that case
|
|
690
760
|
if (
|
|
691
761
|
typeof(bundleSettings.server.protocol) != 'undefined'
|
|
692
762
|
&& protocols.indexOf(bundleSettings.server.protocol) < 0
|
|
693
763
|
) {
|
|
764
|
+
_settingsChanges.push('server.protocol "'+ bundleSettings.server.protocol +'" -> "'+ self.defaultProtocol +'"');
|
|
694
765
|
bundleSettings.server.protocol = self.defaultProtocol;
|
|
695
766
|
bundleSettingsUpdate = true
|
|
696
767
|
}
|
|
@@ -701,13 +772,14 @@ function Add(opt, cmd) {
|
|
|
701
772
|
typeof(bundleSettings.server.scheme) != 'undefined'
|
|
702
773
|
&& schemes.indexOf(bundleSettings.server.scheme) < 0
|
|
703
774
|
) {
|
|
775
|
+
_settingsChanges.push('server.scheme "'+ bundleSettings.server.scheme +'" -> "'+ self.defaultScheme +'"');
|
|
704
776
|
bundleSettings.server.scheme = self.defaultScheme;
|
|
705
777
|
bundleSettingsUpdate = true
|
|
706
778
|
}
|
|
707
779
|
|
|
708
780
|
if (bundleSettingsUpdate) {
|
|
709
781
|
lib.generator.createFileFromDataSync(bundleSettings, settingsPath);
|
|
710
|
-
console.
|
|
782
|
+
console.warn('Updated [ '+ bundleName +' ] settings: '+ _settingsChanges.join('; ') +' — the declared value is not in the project protocols/schemes list.');
|
|
711
783
|
}
|
|
712
784
|
}
|
|
713
785
|
}
|
|
@@ -130,6 +130,22 @@ function Build(opt, cmd) {
|
|
|
130
130
|
|
|
131
131
|
var bundle = self.bundles[b];
|
|
132
132
|
|
|
133
|
+
// #B373 — per-scope deployment. This is the BULK verb: it walks every bundle
|
|
134
|
+
// in the project, so a bundle not deployed in the scope being built is skipped
|
|
135
|
+
// with a notice rather than refused — refusing would make one parked bundle
|
|
136
|
+
// block the whole project build. (The single-target `bundle:build` refuses
|
|
137
|
+
// instead, because there the exclusion is what the operator explicitly asked
|
|
138
|
+
// for.) A malformed `scopes` is still a hard error: it is a manifest defect,
|
|
139
|
+
// not an opt-out.
|
|
140
|
+
var _entry = local.manifest.bundles[bundle];
|
|
141
|
+
if ( _entry && typeof(_entry.scopes) != 'undefined' && _entry.scopes !== null && !Array.isArray(_entry.scopes) ) {
|
|
142
|
+
return end( new Error('[ manifest ] `bundles.'+ bundle +'.scopes` must be an array of scope names (got '+ typeof(_entry.scopes) +'). Remove the key to deploy `'+ bundle +'` in every scope, or list the scopes it belongs to.') );
|
|
143
|
+
}
|
|
144
|
+
if ( _entry && Array.isArray(_entry.scopes) && _entry.scopes.indexOf(process.env.NODE_SCOPE) < 0 ) {
|
|
145
|
+
console.info('[ BUILD ] Skipping bundle [ '+ bundle +' ]: not deployed in scope `'+ process.env.NODE_SCOPE +'` (declared scopes: '+ ( _entry.scopes.length ? '`'+ _entry.scopes.join('`, `') +'`' : 'none' ) +').');
|
|
146
|
+
return buildBundle(b+1);
|
|
147
|
+
}
|
|
148
|
+
|
|
133
149
|
local.envs = self.envs.slice();
|
|
134
150
|
local.scopes = self.scopes.slice();
|
|
135
151
|
// var releasesPathObj = new _(self.projects[self.projectName].path +'/releases', true);
|
|
@@ -137,6 +153,14 @@ function Build(opt, cmd) {
|
|
|
137
153
|
// per scope
|
|
138
154
|
for (let i = 0, len = local.scopes.length; i < len; i++) {
|
|
139
155
|
let scope = local.scopes[i]
|
|
156
|
+
// #B373 — do not seed a scope the bundle opts out of; this loop walks
|
|
157
|
+
// EVERY project scope, so unfiltered it regrows the opted-out entries.
|
|
158
|
+
if (
|
|
159
|
+
Array.isArray(local.manifest.bundles[bundle].scopes)
|
|
160
|
+
&& local.manifest.bundles[bundle].scopes.indexOf(scope) < 0
|
|
161
|
+
) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
140
164
|
if ( typeof(local.manifest.bundles[bundle].releases[scope]) == 'undefined' ) {
|
|
141
165
|
local.manifest.bundles[bundle].releases[scope] = {}
|
|
142
166
|
}
|
|
@@ -140,6 +140,14 @@ function Lib() {
|
|
|
140
140
|
// module, discarding the live registry and orphaning the sweep timer on
|
|
141
141
|
// each request. Plain require = cache hit = the singleton survives.
|
|
142
142
|
job : require('./job'),
|
|
143
|
+
// #B366 — out-of-request push primitive, behind the gina.pushToSession()
|
|
144
|
+
// global. Stateless (the caller hands it the live server instance), but a
|
|
145
|
+
// PLAIN require (NOT _require) for the authzGate/authn reason: gna.js is
|
|
146
|
+
// load-once and captures this binding at boot, so a _require'd copy would
|
|
147
|
+
// be evicted and re-required out from under that gen-0 capture on every
|
|
148
|
+
// dev-mode request — the #B32-residual leak class. It also keeps the
|
|
149
|
+
// primitive that chooses a push recipient out of the hot-reload path.
|
|
150
|
+
push : require('./push'),
|
|
143
151
|
// #INS10 — toggleable instrumentation window primitive. Owns the
|
|
144
152
|
// time-boxed Inspector capture window (process.gina._inspectorWindowUntil)
|
|
145
153
|
// and its unref'd expiry timer. PLAIN require (like job / State / logger):
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "gina-lib-push",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Out-of-request push primitive (#B366) — deliver a payload to ONE named session's engine.io sockets from code with no live request (job handlers, cron, boot hooks). Recipient is a required argument with no fallback and no reachable broadcast; reports how many sockets were written. Backs the gina.pushToSession() global.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Martin-Luther ETOUMAN",
|
|
7
|
+
"email": "contact@gina.io"
|
|
8
|
+
},
|
|
9
|
+
"copyright": "Copyright (c) 2009-2026 Rhinostone <contact@gina.io>",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=16.0.0"
|
|
12
|
+
},
|
|
13
|
+
"main": "src/main",
|
|
14
|
+
"scripts": {
|
|
15
|
+
"test": "node --test test"
|
|
16
|
+
},
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"readmeFilename": "README.md"
|
|
19
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Out-of-request push primitive (#B366).
|
|
3
|
+
*
|
|
4
|
+
* `SuperController.push()` is reachable only from a live request-bound
|
|
5
|
+
* controller — it returns early once the request is released (#B38) — and the
|
|
6
|
+
* engine.io socket set has exactly one other reader in the whole framework.
|
|
7
|
+
* So code with no request in hand (a `lib/job` handler, a cron tick, a boot
|
|
8
|
+
* hook) has had no sanctioned way to reach a user's socket. This module is it.
|
|
9
|
+
*
|
|
10
|
+
* Design notes (full record: the #B366 design):
|
|
11
|
+
*
|
|
12
|
+
* - The recipient is a REQUIRED argument with no fallback, and there is no
|
|
13
|
+
* broadcast reachable from this API at all. #B364 shipped because a
|
|
14
|
+
* primitive whose blast radius is "everyone connected" inferred the wide
|
|
15
|
+
* case from a MISSING value; an absent recipient here is an error, never a
|
|
16
|
+
* fan-out. Deliberate all-clients sends stay in-request
|
|
17
|
+
* (`self.push(payload, { broadcast: true })`).
|
|
18
|
+
*
|
|
19
|
+
* - The caller is trusted to name any session, exactly as the in-request
|
|
20
|
+
* `option.sessionID` branch already trusts server-side code. What must
|
|
21
|
+
* never happen is a recipient sourced from client input: capture the id
|
|
22
|
+
* server-side (at job creation, say) and keep it there. Round-tripping a
|
|
23
|
+
* recipient id — or a token naming one — through the browser hands the
|
|
24
|
+
* choice back to the caller and re-opens #B364 one layer up.
|
|
25
|
+
*
|
|
26
|
+
* - Delivery is REPORTED, not assumed. `callback(err, { delivered })` gives
|
|
27
|
+
* the number of sockets written, because the shape this replaces was
|
|
28
|
+
* fire-and-forget and blind: a consumer measured ~41% of their progress
|
|
29
|
+
* pushes never sending, and nothing surfaced it. `delivered: 0` is a
|
|
30
|
+
* normal outcome (the user has no socket open), not an error.
|
|
31
|
+
*
|
|
32
|
+
* - Receiver identity is a SEPARATE axis (#B365): this decides who a sender
|
|
33
|
+
* may aim at, never how a receiver proves who it is.
|
|
34
|
+
*
|
|
35
|
+
* @module lib/push
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Push a payload to every engine.io socket bound to one session.
|
|
40
|
+
*
|
|
41
|
+
* @param {object} instance - The live server instance (`process.gina._serverInstance`).
|
|
42
|
+
* @param {string} sessionID - REQUIRED recipient session id; empty/non-string is an error, never a broadcast.
|
|
43
|
+
* @param {object|string} payload - Object (JSON-stringified) or a pre-serialized string.
|
|
44
|
+
* @param {object} [option] - Forwarded to the transport (e.g. `{ compress: true }`).
|
|
45
|
+
* @param {string} [option.section] - Stamped onto an object payload when it carries no `section`.
|
|
46
|
+
* @param {function} [callback] - `callback(err, { delivered })`, called exactly ONCE.
|
|
47
|
+
* @returns {void}
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* // from a job handler, with the session id captured at job creation
|
|
51
|
+
* var push = require('gina').lib.push;
|
|
52
|
+
* push.toSession(process.gina._serverInstance, job.sessionID, { event: 'ready', pct: 100 }, null, function(err, res) {
|
|
53
|
+
* if (err) { return console.error(err.code, err.message); }
|
|
54
|
+
* if (!res.delivered) { console.debug('user has no socket open'); }
|
|
55
|
+
* });
|
|
56
|
+
*/
|
|
57
|
+
var toSession = function(instance, sessionID, payload, option, callback) {
|
|
58
|
+
|
|
59
|
+
if ( typeof(option) == 'function' ) {
|
|
60
|
+
callback = option;
|
|
61
|
+
option = null;
|
|
62
|
+
}
|
|
63
|
+
var cb = ( typeof(callback) == 'function' ) ? callback : function() {};
|
|
64
|
+
|
|
65
|
+
// Fail CLOSED on an unusable recipient. This is the #B364 invariant in the
|
|
66
|
+
// signature: no recipient means nothing is sent — never everyone.
|
|
67
|
+
if ( typeof(sessionID) != 'string' || sessionID === '' ) {
|
|
68
|
+
return cb(_err('PUSH_INVALID_RECIPIENT',
|
|
69
|
+
'`sessionID` is required and must be a non-empty string. This API never broadcasts: '
|
|
70
|
+
+ 'use the in-request `self.push(payload, { broadcast: true })` to reach every client.'));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if ( payload == null ) {
|
|
74
|
+
return cb(_err('PUSH_INVALID_PAYLOAD',
|
|
75
|
+
'`payload` is required. There is no request to fall back to outside a controller.'));
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if ( instance == null || instance.eio == null || instance.eio.clients == null ) {
|
|
79
|
+
return cb(_err('PUSH_CHANNEL_NOT_CONFIGURED',
|
|
80
|
+
'no engine.io channel on this server instance. The push channel needs the isaac engine with '
|
|
81
|
+
+ '`settings.json > server.ioServer.integrationMode: "attach"`; the express engine has no `eio`.'));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Section stamping mirrors the in-request path, minus every request-sourced
|
|
85
|
+
// default — there is no request here, so an explicit option is the only source.
|
|
86
|
+
var section = ( option != null && typeof(option.section) != 'undefined' ) ? option.section : null;
|
|
87
|
+
var body = payload;
|
|
88
|
+
if ( typeof(body) == 'object' ) {
|
|
89
|
+
if ( section && typeof(body.section) == 'undefined' ) {
|
|
90
|
+
body.section = section;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
body = JSON.stringify(body);
|
|
94
|
+
} catch (serializeErr) {
|
|
95
|
+
return cb(_err('PUSH_PAYLOAD_SERIALIZE_FAILED', serializeErr.message || String(serializeErr)));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
var clients = instance.eio.clients;
|
|
100
|
+
var delivered = 0;
|
|
101
|
+
try {
|
|
102
|
+
for (let s in clients) {
|
|
103
|
+
// #B364 — the guard this replaces read `!clients[s].constructor.name == 'Socket'`,
|
|
104
|
+
// which parses as `(!name) == 'Socket'` and so never once skipped anything.
|
|
105
|
+
if ( clients[s].constructor.name !== 'Socket' ) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (
|
|
109
|
+
typeof(clients[s].sessionId) != 'undefined'
|
|
110
|
+
&& clients[s].sessionId == sessionID
|
|
111
|
+
) {
|
|
112
|
+
// The caller's callback is NOT threaded into sendPacket: it fires
|
|
113
|
+
// per socket, and this API promises exactly one callback carrying a
|
|
114
|
+
// total. Transport-level acks stay the transport's business.
|
|
115
|
+
clients[s].sendPacket('message', body, option || {});
|
|
116
|
+
++delivered;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
} catch (sendErr) {
|
|
120
|
+
return cb(sendErr);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return cb(null, { delivered: delivered });
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Build a coded Error — same shape as the storage verbs, so callers can branch
|
|
128
|
+
* on `err.code` instead of matching message text.
|
|
129
|
+
*
|
|
130
|
+
* @inner
|
|
131
|
+
* @private
|
|
132
|
+
* @param {string} code - Machine-readable code.
|
|
133
|
+
* @param {string} message - Human-readable detail.
|
|
134
|
+
* @returns {Error} The error, with `code` attached.
|
|
135
|
+
*/
|
|
136
|
+
var _err = function(code, message) {
|
|
137
|
+
var e = new Error('[ push ] ' + message);
|
|
138
|
+
e.code = code;
|
|
139
|
+
return e;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
module.exports = {
|
|
143
|
+
toSession: toSession
|
|
144
|
+
};
|