gina 0.5.10 → 0.5.11
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 +6 -0
- package/README.md +3 -2
- package/ROADMAP.md +2 -0
- package/bin/cli +1 -0
- package/framework/v0.5.11/VERSION +1 -0
- package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.js +12 -6
- package/framework/{v0.5.10 → v0.5.11}/lib/cmd/gina.1.md +1 -0
- package/framework/v0.5.11/lib/cmd/image/arguments.json +11 -0
- package/framework/v0.5.11/lib/cmd/image/build.js +516 -0
- package/framework/v0.5.11/lib/cmd/image/help.js +46 -0
- package/framework/v0.5.11/lib/cmd/image/help.txt +72 -0
- package/framework/v0.5.11/lib/cmd/image/man.js +6 -0
- package/framework/v0.5.11/lib/image-build/package.json +17 -0
- package/framework/v0.5.11/lib/image-build/src/main.js +721 -0
- package/framework/{v0.5.10 → v0.5.11}/lib/index.js +6 -0
- package/framework/{v0.5.10 → v0.5.11}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +1 -1
- package/package.json +3 -3
- package/framework/v0.5.10/VERSION +0 -1
- /package/framework/{v0.5.10 → v0.5.11}/AUTHORS +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/LICENSE +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/html/static.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/config.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/content.encoding +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/dev/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/gna.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/locales/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/locales/currency.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/locales/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/mime.types +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/model/entity.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/model/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/model/template/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/router.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/server.express.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/server.isaac.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/server.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/status.codes +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/_gitignore +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/env.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/console.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/context.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/data/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/data/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/json/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/json/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/path.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/prototypes.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/task.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/helpers/text.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/admin/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/build.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/async/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/async/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cache/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cache/build.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cache/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/collection/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/collection/build.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/collection/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/config.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cron/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cron/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/domain/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/domain/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/generator/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/i18n/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/instrument/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/job/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/job/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/job-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/math/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/merge/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/merge/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/metrics/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/model.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/proc.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/routing/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/routing/build.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/routing/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/secrets/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/session-store.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/shell.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/state.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/url/README.md +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/url/index.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/url/routing.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/uuid/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/validator.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/watcher/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.5.10 → v0.5.11}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,12 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|
|
6
6
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## 0.5.11 - 2026-07-05
|
|
10
|
+
### Added
|
|
11
|
+
* New `image:build` command — first-class OCI packaging: `gina image:build [<bundle>] @<project>` synthesizes a Containerfile + build context from the project's registered state (bundles, entry, ports, env model, node floor) and executes the build with buildah, natively on Linux or on a container host reached over ssh. Host resolution precedence: `GINA_CONTAINER_HOST=ssh://[user@]host[:port]` env override, then native buildah, then `container.host` in `~/.gina/<shortVersion>/settings.json`; with none available the command fails naming both surfaces. The selected `--env` bakes dev/prod parity — a non-dev env ships the release tree built in-image by `gina bundle:build`, with `GINA_DEV_ENV` kept distinct so the container never runs dev-mode hot-reload; the image boots via `gina-init` + `gina-container` (SIGTERM drain) and the `EXPOSE` port is computed deterministically from the `gina-init` allocator. `${secret:KEY}` config placeholders ride byte-verbatim and resolve from the container environment at runtime — no secret value is ever read or baked at build time. Wire contract: `--emit` prints the synthesized Containerfile + entrypoint + context manifest and builds nothing (`--emit --format=json` emits `{ project, bundle, env, scope, image, tag, exposedPort, containerfile, entrypoint, context }`); `--format=json` one-shot emits `{ project, bundle, image, tag, imageId?, durationMs, host, exposedPort }` on stdout, exit 0; `--stream` emits NDJSON frames — `start` then `step` then `log` lines then a terminal `done` (carrying the one-shot shape) or `error` frame; failures exit 1 with the reason on stdout. Flags: `--env`, `--scope`, `--tag=<ref>` (default `<project>/<bundle>:<env>`), `--platform=linux/arm64|linux/amd64` (default build-host native), `--start-port-from` (default 3100), `--gina-version` (default: the project's registered framework version, installed from the npm registry).
|
|
12
|
+
### Fixed
|
|
13
|
+
* Framework-emitted redirects (controller redirect calls and route-declared redirect controls) now carry Cache-Control: no-cache, no-store, must-revalidate plus Pragma and Expires whenever the request is classified as reverse-proxied, matching the existing dev-mode behavior. A proxied redirect target host is derived from proxy context, so a browser-cacheable 301 could permanently pin a transient value in client caches; the no-store set also rides the inter-bundle query 3xx forward path now.
|
|
14
|
+
|
|
9
15
|
## 0.5.10 - 2026-07-05
|
|
10
16
|
### Fixed
|
|
11
17
|
* Fixed a cross-bundle `getRoute(...).toUrl()` link resolving to an unreachable internal host with a doubled web root on reverse-proxied deployments; a proxied request now resolves the public host for both the Isaac and Express engines.
|
package/README.md
CHANGED
|
@@ -42,9 +42,10 @@ open https://localhost:3100
|
|
|
42
42
|
|
|
43
43
|
> **npm 12+** blocks install scripts by default, and gina's post-install bootstraps `~/.gina` and the framework dependencies. Install with `npm install -g gina@latest --allow-scripts=gina`, or allow it once for all global installs with `npm config set allow-scripts=gina --location=user`. (Not needed on npm ≤ 11.)
|
|
44
44
|
|
|
45
|
-
## What's in 0.5.
|
|
45
|
+
## What's in 0.5.11
|
|
46
46
|
|
|
47
|
-
- **
|
|
47
|
+
- **Added — `gina image:build`: first-class OCI packaging.** Package a project bundle as a standard OCI image with one command: it synthesizes a `Containerfile` + build context from the project's registered state (bundles, entry, ports, env model, Node engine floor) and executes the build with buildah — natively on Linux, or on a container host reached over ssh (`GINA_CONTAINER_HOST=ssh://[user@]host[:port]` env override → native buildah → `container.host` in `~/.gina/<shortVersion>/settings.json`). A non-dev `--env` ships the release tree built in-image by `gina bundle:build`, so a production image never runs dev-mode hot-reload; the image boots via `gina-init` + `gina-container` (SIGTERM drain) and the `EXPOSE`d port is computed deterministically from the port allocator. `${secret:KEY}` placeholders ride byte-verbatim and resolve from the container environment at runtime — never baked. `--emit` prints the synthesized artifact without building; `--format=json` emits a one-shot machine-readable result; `--stream` emits NDJSON progress frames for CI/GUI consumers.
|
|
48
|
+
- **Fixed — proxied redirects now carry no-store cache headers (#B68).** Framework-emitted redirects on requests classified as reverse-proxied now include `Cache-Control: no-cache, no-store, must-revalidate` (+ `Pragma` / `Expires`), so a browser never caches a proxy-context-derived redirect; the inter-bundle query 3xx forward path inherits the set. Direct production redirects are byte-identical, and the `301` default and route-declared `param.code` are untouched.
|
|
48
49
|
|
|
49
50
|
See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
|
|
50
51
|
|
package/ROADMAP.md
CHANGED
|
@@ -35,6 +35,7 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
35
35
|
| **Q3 2026** | `0.5.8` ✅ | `connector:models` — list a configured AI connector's provider models (the read sibling of `connector:test --connect`) · per-group `gina help [<group>]` · **Fixed**: reverse-proxy host context request-scoped — `PROXY_HOST` / `PROXY_HOSTNAME` no longer freeze at the first proxied request (single-hop and multi-hop `X-Forwarded-Host` both handled; raw `host:port` unchanged) · CLI help polish (per-group help output, clean message for an unknown action, em-dash flag typos) |
|
|
36
36
|
| **Q3 2026** | `0.5.9` ✅ | **Security**: reverse-proxied deployments no longer disclose a bundle's internal `scheme://host:port` to the browser — the client `gina.config.hostname` and the fetched `/_gina/assets/routing.json` serve a public host-only origin and a host-stripped routing map to proxied clients (direct `host:port` access byte-identical), also fixing cross-bundle client `getRoute(...).toUrl()` which previously resolved to the unreachable internal host (#B66) · **Fixed**: the server-side URL / redirect / config resolvers request-scope the proxy host, so a worker serving mixed proxied + direct traffic (or several public hosts) no longer inherits a stale proxied host (#B66 S2b) · **Fixed**: `connector:add` / `connector:rm` / `connector:migrate --fix` no longer corrupt a comment-headed `connectors.json` · **Fixed**: a latent `ReferenceError` in server-side URL resolution for redirect-flagged routes |
|
|
37
37
|
| **Q3 2026** | `0.5.10` ✅ | **Fixed**: server-side cross-bundle `getRoute('route@bundle').toUrl()` now resolves the public host on reverse-proxied deployments — a controller building a cross-bundle URL server-side (e.g. via `self.redirect`) could emit an unreachable internal host with a doubled web root on a proxied request; it now resolves the public host for both the Isaac and Express engines. Completes the `0.5.9` client-side cross-bundle URL fix on the server side (#B67) |
|
|
38
|
+
| **Q3 2026** | `0.5.11` ✅ | `image:build` — first-class OCI packaging: synthesizes a Containerfile + build context from the project's registered state (bundles, entry, ports, env model, node floor) and builds with buildah, natively on Linux or on a container host over ssh (env override → native → `container.host` settings fallback); dev/prod parity (a non-dev env ships the release tree built in-image), deterministic `EXPOSE`, `${secret:KEY}` placeholders never baked; `--emit` / `--format=json` / `--stream` NDJSON for CI and GUI consumers · **Fixed**: framework-emitted redirects on proxied requests carry no-store cache headers, so a browser never caches a proxy-context-derived redirect (the inter-bundle query 3xx forward path inherits the set; direct production redirects unchanged) |
|
|
38
39
|
| **Q1 2027** | `0.5.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
|
|
39
40
|
| **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
|
|
40
41
|
|
|
@@ -92,6 +93,7 @@ Stub commands confirmed in source — handler files exist but are empty or comme
|
|
|
92
93
|
| ✅ | **`framework:reset`** — Factory reset: clears `~/.gina` (settings, project registry, env config, port allocations) so the framework rebuilds to clean defaults on the next command — the runtime, package-manager-agnostic equivalent of a fresh install (works identically on Node and Bun, unlike the npm install-flag form). Project source files are never touched. Refuses while the daemon or any bundle is running (`framework:init`'s `process.kill`-based pidfile prune keeps the guard reliable even on `ps`-less images); `--force` overrides. Shorthand: `gina reset`. | `0.5.5-alpha.2` | 2026-06-21 |
|
|
93
94
|
| ✅ | **`project:backup` / `project:restore`** — Archive a project's source tree to a `.zip` (`backup`, symlinks skipped), and rebuild + re-register a project from a backup `.zip` so it is immediately startable (`restore`). | `0.5.5-alpha.2` | 2026-06-19 |
|
|
94
95
|
| ✅ | **`framework:man` / `project:man` / `bundle:man` / `service:man`** — Inline CLI manual pages. Runtime-renders the group's ronn `.1.md` (substituting `{version}`/`{year}`) when it exists (`framework` today), else falls back to that group's `help.txt`. No build step or markdown/man dependency. | `0.5.5-alpha.2` | 2026-06-20 |
|
|
96
|
+
| ✅ | **`image:build` — first-class OCI packaging** — Packages a project bundle as a standard OCI image: synthesizes a Containerfile + build context from the project's registered state (bundles, entry, ports, env model, node floor) and executes the build with buildah — natively on Linux, or on a container host reached over ssh (`GINA_CONTAINER_HOST=ssh://[user@]host[:port]` env override → native buildah → `container.host` settings fallback). The selected `--env` bakes dev/prod parity: a non-dev env ships the release tree built in-image by `gina bundle:build` (never dev-mode hot-reload); the image boots via `gina-init` + `gina-container` (SIGTERM drain) and `EXPOSE` is computed deterministically from the `gina-init` port allocator. `${secret:KEY}` config placeholders ride byte-verbatim and resolve from the container environment at runtime — never baked. `--emit` prints the Containerfile + context manifest without building; `--format=json` emits a one-shot `{ project, bundle, image, tag, imageId?, durationMs, host, exposedPort }`; `--stream` emits NDJSON progress frames (`start` → `step` → `log` → `done` \| `error`); failures exit 1 with the reason on stdout. | `0.5.11-alpha.2` | 2026-07-05 |
|
|
95
97
|
|
|
96
98
|
---
|
|
97
99
|
|
package/bin/cli
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.5.11
|
|
@@ -2063,7 +2063,9 @@ function SuperController(options) {
|
|
|
2063
2063
|
* And Where `ignoreWebRoot` is an optional parameter used to ignore web root settings (Standalone mode or user set web root)
|
|
2064
2064
|
* `ignoreWebRoot` behaves the like set to `false` by default
|
|
2065
2065
|
*
|
|
2066
|
-
* N.B.: Gina will tell browsers not to cache redirections
|
|
2066
|
+
* N.B.: Gina will tell browsers not to cache redirections when running in the `dev` environment
|
|
2067
|
+
* OR when the request is classified as reverse-proxied — a proxied redirect's target host is
|
|
2068
|
+
* composed from proxy context, so a browser-cacheable 301 would freeze a transient value
|
|
2067
2069
|
*
|
|
2068
2070
|
* Trobleshouting:
|
|
2069
2071
|
* ---------------
|
|
@@ -2411,15 +2413,19 @@ function SuperController(options) {
|
|
|
2411
2413
|
'location': path
|
|
2412
2414
|
};
|
|
2413
2415
|
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
+
// A proxied request's redirect target is composed from proxy context (see the
|
|
2417
|
+
// `hostname` pick above): a browser-cacheable 301 would freeze a transient value
|
|
2418
|
+
// permanently. Folded into `headInfos` — not the writeHead call — so the
|
|
2419
|
+
// inter-bundle query 3xx intercepts, which replay `{ status, headers }`
|
|
2420
|
+
// verbatim, inherit the no-store set too.
|
|
2421
|
+
if (self.isCacheless() || isProxyHost) {
|
|
2422
|
+
headInfos = merge(headInfos, {
|
|
2416
2423
|
'cache-control': 'no-cache, no-store, must-revalidate', // preventing browsers from using cache
|
|
2417
2424
|
'pragma': 'no-cache',
|
|
2418
2425
|
'expires': '0'
|
|
2419
|
-
})
|
|
2420
|
-
} else {
|
|
2421
|
-
res.writeHead(code, headInfos)
|
|
2426
|
+
});
|
|
2422
2427
|
}
|
|
2428
|
+
res.writeHead(code, headInfos);
|
|
2423
2429
|
// in case of query from another bundle waiting for a response
|
|
2424
2430
|
var redirectObject = JSON.stringify({ status: code, headers: headInfos });
|
|
2425
2431
|
|
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
var fs = require('fs');
|
|
2
|
+
var os = require('os');
|
|
3
|
+
var nodePath = require('path');
|
|
4
|
+
var spawn = require('child_process').spawn;
|
|
5
|
+
var spawnSync = require('child_process').spawnSync;
|
|
6
|
+
|
|
7
|
+
var CmdHelper = require('./../helper');
|
|
8
|
+
var console = lib.logger;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @module gina/lib/cmd/image/build
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Packages a registered project bundle as a standard OCI image: synthesizes a
|
|
15
|
+
* Containerfile + build context from what the framework already knows about
|
|
16
|
+
* the project (bundles, entry, ports, env model, node floor), then executes
|
|
17
|
+
* the build with buildah — natively on a Linux host, or on a configurable
|
|
18
|
+
* container host reached over ssh.
|
|
19
|
+
*
|
|
20
|
+
* The synthesized artifact reuses the framework's own container mechanics:
|
|
21
|
+
* `gina-init` (idempotent env-var-driven `~/.gina` bootstrap) + `gina-container`
|
|
22
|
+
* (foreground bundle launcher, SIGTERM drain) as the entrypoint, and — when the
|
|
23
|
+
* selected env is not the dev env — an in-image `gina bundle:build` producing
|
|
24
|
+
* the release tree the launcher resolves (dev/prod parity, built by the
|
|
25
|
+
* framework itself). The `EXPOSE` port is computed with an exact replica of
|
|
26
|
+
* the `gina-init` allocator, so it always matches the port the bundle binds.
|
|
27
|
+
*
|
|
28
|
+
* `${secret:KEY}` config placeholders are NEVER resolved or baked: context
|
|
29
|
+
* files are copied byte-verbatim and this command never invokes the secrets
|
|
30
|
+
* resolver — references resolve from the container's environment at runtime.
|
|
31
|
+
*
|
|
32
|
+
* Container-host resolution precedence: the `GINA_CONTAINER_HOST` env var
|
|
33
|
+
* (explicit `ssh://[user@]host[:port]` override) wins; then a Linux host with
|
|
34
|
+
* buildah on PATH builds natively; then the `container.host` key of
|
|
35
|
+
* `~/.gina/<shortVersion>/settings.json`; otherwise the command fails with an
|
|
36
|
+
* actionable error naming both surfaces (exit 1). The remote path streams the
|
|
37
|
+
* context as a tarball over ssh stdin into a remote temp dir (buildah accepts
|
|
38
|
+
* only a directory context) and never opens any listening socket.
|
|
39
|
+
*
|
|
40
|
+
* Usage:
|
|
41
|
+
* gina image:build @<project> # single-bundle project
|
|
42
|
+
* gina image:build <bundle> @<project> --env=prod # explicit bundle + env
|
|
43
|
+
* gina image:build @<project> --emit # print Containerfile + context manifest, build nothing
|
|
44
|
+
* gina image:build @<project> --format=json # machine-readable one-shot result
|
|
45
|
+
* gina image:build @<project> --stream # NDJSON progress frames
|
|
46
|
+
*
|
|
47
|
+
* Output contract:
|
|
48
|
+
* - `--emit` prints the synthesized Containerfile, the entrypoint script and
|
|
49
|
+
* the context manifest (text), or `{ project, bundle, env, scope, image,
|
|
50
|
+
* tag, exposedPort, containerfile, entrypoint, context }` with
|
|
51
|
+
* `--format=json`. Nothing is built or staged.
|
|
52
|
+
* - `--format=json` (one-shot): `{ project, bundle, image, tag, imageId?,
|
|
53
|
+
* durationMs, host, exposedPort }` on stdout, exit 0.
|
|
54
|
+
* - `--stream`: NDJSON frames, one per line — `start` → `step` → `log`* →
|
|
55
|
+
* `done` | `error`; `done` carries the one-shot shape. All frames are
|
|
56
|
+
* written with synchronous `fs.writeSync` so `process.exit()` cannot
|
|
57
|
+
* truncate them on a pipe.
|
|
58
|
+
* - failures: the reason on stdout, exit 1 (an `error` frame in stream mode).
|
|
59
|
+
*
|
|
60
|
+
* Exit codes: 0 on success or a completed `--emit`; 1 on any usage error,
|
|
61
|
+
* unresolvable plan, missing container host, transfer failure or build failure.
|
|
62
|
+
*
|
|
63
|
+
* @class Build
|
|
64
|
+
* @constructor
|
|
65
|
+
* @param {object} opt - Parsed command-line options
|
|
66
|
+
* @param {object} opt.client - Socket client for terminal output
|
|
67
|
+
* @param {string[]} opt.argv - Full argv array
|
|
68
|
+
* @param {number} [opt.debugPort] - Node.js inspector port
|
|
69
|
+
* @param {boolean} [opt.debugBrkEnabled] - True when --inspect-brk is active
|
|
70
|
+
* @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* // Inspect what would be built (nothing is executed).
|
|
74
|
+
* // $ gina image:build @myproject --emit
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* // Build a production image and capture the result.
|
|
78
|
+
* // $ gina image:build demo @myproject --env=prod --format=json | jq .imageId
|
|
79
|
+
*/
|
|
80
|
+
function Build(opt, cmd) {
|
|
81
|
+
|
|
82
|
+
var self = { format: 'text', emit: false, stream: false };
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Pure OCI packaging primitives — synthesis, staging, port computation,
|
|
86
|
+
* descriptor resolution. See `lib/image-build/src/main.js`.
|
|
87
|
+
*
|
|
88
|
+
* @inner
|
|
89
|
+
* @constant
|
|
90
|
+
*/
|
|
91
|
+
var imageBuild = lib.imageBuild;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Writes one NDJSON frame to stdout. Synchronous `fs.writeSync` (fd 1) so
|
|
95
|
+
* the frame survives the `process.exit()` that follows the terminal
|
|
96
|
+
* frames when stdout is a pipe. Mirrors `connector:infer`.
|
|
97
|
+
*
|
|
98
|
+
* @inner
|
|
99
|
+
* @private
|
|
100
|
+
* @param {object} frame - The frame (`type` plus payload fields)
|
|
101
|
+
* @returns {void}
|
|
102
|
+
*/
|
|
103
|
+
var emitFrame = function (frame) {
|
|
104
|
+
fs.writeSync(1, JSON.stringify(frame) + '\n');
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Emits a `step` progress frame in stream mode (no-op otherwise).
|
|
109
|
+
*
|
|
110
|
+
* @inner
|
|
111
|
+
* @private
|
|
112
|
+
* @param {string} name - Step name: synthesize | stage | connect | build
|
|
113
|
+
* @returns {void}
|
|
114
|
+
*/
|
|
115
|
+
var emitStep = function (name) {
|
|
116
|
+
if (self.stream) emitFrame({ type: 'step', name: name });
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Terminal failure: the reason goes to stdout (an `error` frame in stream
|
|
121
|
+
* mode, plain text otherwise — the family convention consumers already
|
|
122
|
+
* ANSI-strip), then exit 1.
|
|
123
|
+
*
|
|
124
|
+
* @inner
|
|
125
|
+
* @private
|
|
126
|
+
* @param {string} reason - User-facing failure reason
|
|
127
|
+
* @returns {void}
|
|
128
|
+
*/
|
|
129
|
+
var fail = function (reason) {
|
|
130
|
+
if (self.stream) {
|
|
131
|
+
emitFrame({ type: 'error', error: { message: reason } });
|
|
132
|
+
} else {
|
|
133
|
+
console.error(reason);
|
|
134
|
+
}
|
|
135
|
+
process.exit(1);
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Extracts positional arguments (neither `--flags` nor `@project`) from
|
|
140
|
+
* argv after the task name. For `image:build` the only positional is the
|
|
141
|
+
* optional bundle name.
|
|
142
|
+
*
|
|
143
|
+
* @inner
|
|
144
|
+
* @private
|
|
145
|
+
* @param {string[]} argv - process.argv
|
|
146
|
+
* @returns {string[]} Positional tokens in order
|
|
147
|
+
*/
|
|
148
|
+
var extractPositionals = function (argv) {
|
|
149
|
+
var out = [];
|
|
150
|
+
for (var i = 3, len = argv.length; i < len; i++) {
|
|
151
|
+
var t = argv[i];
|
|
152
|
+
if (/^\-/.test(t)) continue;
|
|
153
|
+
if (/^@/.test(t)) continue;
|
|
154
|
+
out.push(t);
|
|
155
|
+
}
|
|
156
|
+
return out;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Parse flags, resolve the project + build plan, then route to `--emit`
|
|
161
|
+
* or the real build.
|
|
162
|
+
*
|
|
163
|
+
* @inner
|
|
164
|
+
* @private
|
|
165
|
+
*/
|
|
166
|
+
var init = function () {
|
|
167
|
+
|
|
168
|
+
new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
|
|
169
|
+
if ( !isCmdConfigured() ) return false;
|
|
170
|
+
|
|
171
|
+
var p = self.params || {};
|
|
172
|
+
self.emit = !!p['emit'];
|
|
173
|
+
self.stream = !!p['stream'];
|
|
174
|
+
|
|
175
|
+
// Value flags — argv walk with a first-`=` split (values may not be
|
|
176
|
+
// re-split on later `=` chars), mirroring connector:infer.
|
|
177
|
+
for (var i = 3, len = process.argv.length; i < len; i++) {
|
|
178
|
+
var arg = process.argv[i];
|
|
179
|
+
var eq = arg.indexOf('=');
|
|
180
|
+
if (!/^\-\-/.test(arg) || eq < 0) continue;
|
|
181
|
+
var key = arg.substring(2, eq);
|
|
182
|
+
var val = arg.substring(eq + 1);
|
|
183
|
+
if (key === 'format') self.format = val || 'text';
|
|
184
|
+
if (key === 'tag') self.tagRef = val;
|
|
185
|
+
if (key === 'platform') self.platform = val;
|
|
186
|
+
if (key === 'start-port-from') self.portStart = val;
|
|
187
|
+
if (key === 'gina-version') self.ginaVersion = val;
|
|
188
|
+
if (key === 'env') self.env = val;
|
|
189
|
+
if (key === 'scope') self.scope = val;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if (['text', 'json'].indexOf(self.format) < 0) {
|
|
193
|
+
return fail('unsupported --format `' + self.format + '` — use `text` or `json`');
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
var positionals = extractPositionals(process.argv);
|
|
197
|
+
var bundleName = positionals[0] || null;
|
|
198
|
+
|
|
199
|
+
if ( typeof(self.projectName) == 'undefined' || self.projectName == null ) {
|
|
200
|
+
return fail('`image:build` requires `@<project>` (or run it from inside a registered project). Usage: gina image:build [<bundle>] @<project> [--env=<env>] [--emit|--format=json|--stream]');
|
|
201
|
+
}
|
|
202
|
+
if ( typeof(self.projects[self.projectName]) == 'undefined' ) {
|
|
203
|
+
return fail('project @' + self.projectName + ' is not registered — run `gina project:list`, or register it with `gina project:import @' + self.projectName + ' --path=<project_path>`');
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
var projectEntry = self.projects[self.projectName];
|
|
207
|
+
var projectPath = projectEntry.path;
|
|
208
|
+
|
|
209
|
+
var manifest = null;
|
|
210
|
+
try {
|
|
211
|
+
manifest = requireJSON(_(projectPath + '/manifest.json', true));
|
|
212
|
+
} catch (e) {
|
|
213
|
+
return fail('could not read ' + projectPath + '/manifest.json — ' + (e.message || e));
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
var hasDependencies = false;
|
|
217
|
+
try {
|
|
218
|
+
var projectPkg = requireJSON(_(projectPath + '/package.json', true));
|
|
219
|
+
hasDependencies = !!(projectPkg.dependencies && Object.keys(projectPkg.dependencies).length > 0);
|
|
220
|
+
} catch (e) {
|
|
221
|
+
hasDependencies = false; // no package.json → nothing to install
|
|
222
|
+
}
|
|
223
|
+
var hasLockfile = fs.existsSync(projectPath + '/package-lock.json');
|
|
224
|
+
|
|
225
|
+
// The framework's own engine range — the node floor for the base image.
|
|
226
|
+
var ginaPkg = require(__dirname + '/../../../../../package.json');
|
|
227
|
+
|
|
228
|
+
var plan = null;
|
|
229
|
+
try {
|
|
230
|
+
plan = imageBuild.resolveBuildPlan({
|
|
231
|
+
projectName : self.projectName,
|
|
232
|
+
projectEntry : projectEntry,
|
|
233
|
+
manifest : manifest,
|
|
234
|
+
bundleName : bundleName,
|
|
235
|
+
env : self.env,
|
|
236
|
+
scope : self.scope,
|
|
237
|
+
portStart : self.portStart,
|
|
238
|
+
tag : self.tagRef,
|
|
239
|
+
ginaVersion : self.ginaVersion,
|
|
240
|
+
platform : self.platform,
|
|
241
|
+
nodeEngine : (ginaPkg.engine && ginaPkg.engine.node) || null,
|
|
242
|
+
hasDependencies : hasDependencies,
|
|
243
|
+
hasLockfile : hasLockfile
|
|
244
|
+
});
|
|
245
|
+
} catch (e) {
|
|
246
|
+
return fail(e.message || String(e));
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
if (self.emit) {
|
|
250
|
+
return doEmit(plan, projectPath);
|
|
251
|
+
}
|
|
252
|
+
return doBuild(plan, projectPath);
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* `--emit`: print the synthesized Containerfile, entrypoint and context
|
|
257
|
+
* manifest — the expert-inspectable form. Builds and stages NOTHING.
|
|
258
|
+
*
|
|
259
|
+
* @inner
|
|
260
|
+
* @private
|
|
261
|
+
* @param {object} plan - The resolved build plan
|
|
262
|
+
* @param {string} projectPath - Project root on disk
|
|
263
|
+
* @returns {void}
|
|
264
|
+
*/
|
|
265
|
+
var doEmit = function (plan, projectPath) {
|
|
266
|
+
var containerfile = imageBuild.renderContainerfile(plan);
|
|
267
|
+
var entrypoint = imageBuild.renderEntrypoint();
|
|
268
|
+
var context = imageBuild.listContext(plan, projectPath);
|
|
269
|
+
|
|
270
|
+
if (self.format === 'json') {
|
|
271
|
+
fs.writeSync(1, JSON.stringify({
|
|
272
|
+
project : plan.projectName,
|
|
273
|
+
bundle : plan.bundleName,
|
|
274
|
+
env : plan.env,
|
|
275
|
+
scope : plan.scope,
|
|
276
|
+
image : plan.image,
|
|
277
|
+
tag : plan.tag,
|
|
278
|
+
exposedPort : plan.exposedPort,
|
|
279
|
+
containerfile : containerfile,
|
|
280
|
+
entrypoint : entrypoint,
|
|
281
|
+
context : context
|
|
282
|
+
}) + '\n');
|
|
283
|
+
} else {
|
|
284
|
+
fs.writeSync(1,
|
|
285
|
+
containerfile +
|
|
286
|
+
'\n# --- gina-entrypoint.sh ---\n\n' + entrypoint +
|
|
287
|
+
'\n# --- context manifest (' + context.length + ' files) ---\n\n' +
|
|
288
|
+
context.join('\n') + '\n'
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
process.exit(0);
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Reads the machine-level container-host fallback from
|
|
296
|
+
* `~/.gina/<shortVersion>/settings.json` (`container.host`). Absent or
|
|
297
|
+
* unreadable settings resolve to null — resolution then falls through to
|
|
298
|
+
* the native/error branches.
|
|
299
|
+
*
|
|
300
|
+
* @inner
|
|
301
|
+
* @private
|
|
302
|
+
* @returns {string|null} The configured descriptor, or null
|
|
303
|
+
*/
|
|
304
|
+
var getSettingsContainerHost = function () {
|
|
305
|
+
try {
|
|
306
|
+
var version = getEnvVar('GINA_VERSION') || require(__dirname + '/../../../../../package.json').version;
|
|
307
|
+
var short = version.split('.').slice(0, 2).join('.');
|
|
308
|
+
var raw = fs.readFileSync(GINA_HOMEDIR + '/' + short + '/settings.json', 'utf8');
|
|
309
|
+
var parsed = JSON.parse(raw);
|
|
310
|
+
return (parsed.container && parsed.container.host) ? String(parsed.container.host) : null;
|
|
311
|
+
} catch (e) {
|
|
312
|
+
return null;
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Builds the remote shell command for the ssh path. buildah accepts only
|
|
318
|
+
* a DIRECTORY context (no stdin-tar form), so the context tarball is
|
|
319
|
+
* streamed over ssh stdin into a remote temp dir, built there, and the
|
|
320
|
+
* image id is echoed back behind a parseable marker. Every interpolated
|
|
321
|
+
* token (tag, platform) is regex-validated by the plan resolver — no
|
|
322
|
+
* user-controlled free text reaches the command line.
|
|
323
|
+
*
|
|
324
|
+
* @inner
|
|
325
|
+
* @private
|
|
326
|
+
* @param {object} plan - The resolved build plan
|
|
327
|
+
* @returns {string} The remote command (single ssh argv element)
|
|
328
|
+
*/
|
|
329
|
+
var buildRemoteCommand = function (plan) {
|
|
330
|
+
var platformOpt = plan.platform ? ' --platform ' + plan.platform : '';
|
|
331
|
+
return 'sh -c \'set -e; D=$(mktemp -d); trap "rm -rf \\"$D\\"" EXIT; tar -xf - -C "$D"; ' +
|
|
332
|
+
'buildah build --format oci -f "$D/Containerfile" -t ' + plan.tag + platformOpt +
|
|
333
|
+
' --iidfile "$D/.gina-iid" "$D" 2>&1; ' +
|
|
334
|
+
'echo "__GINA_IID__$(cat "$D/.gina-iid")"\'';
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Stages the context, resolves the container host, executes the buildah
|
|
339
|
+
* build (native or over ssh), and emits the one-shot result / stream
|
|
340
|
+
* frames. All stdout writes are synchronous.
|
|
341
|
+
*
|
|
342
|
+
* @inner
|
|
343
|
+
* @private
|
|
344
|
+
* @param {object} plan - The resolved build plan
|
|
345
|
+
* @param {string} projectPath - Project root on disk
|
|
346
|
+
* @returns {void}
|
|
347
|
+
*/
|
|
348
|
+
var doBuild = function (plan, projectPath) {
|
|
349
|
+
var t0 = Date.now();
|
|
350
|
+
|
|
351
|
+
var hasBuildah = false;
|
|
352
|
+
if (process.platform === 'linux') {
|
|
353
|
+
try {
|
|
354
|
+
hasBuildah = (spawnSync('buildah', ['--version']).status === 0);
|
|
355
|
+
} catch (e) {
|
|
356
|
+
hasBuildah = false;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// The CLI bootstrap sweeps every GINA_* OS env var into process.gina
|
|
361
|
+
// and DELETES it from process.env (utils/helper.js `filterArgs`), so
|
|
362
|
+
// the override must be read through the injected getEnvVar global;
|
|
363
|
+
// the process.env fallback covers contexts where the sweep never ran.
|
|
364
|
+
var envHost = getEnvVar('GINA_CONTAINER_HOST') || process.env.GINA_CONTAINER_HOST || null;
|
|
365
|
+
|
|
366
|
+
var host = null;
|
|
367
|
+
try {
|
|
368
|
+
host = imageBuild.resolveContainerHost({
|
|
369
|
+
envValue : envHost,
|
|
370
|
+
settingsValue : getSettingsContainerHost(),
|
|
371
|
+
platform : process.platform,
|
|
372
|
+
hasBuildah : hasBuildah
|
|
373
|
+
});
|
|
374
|
+
} catch (e) {
|
|
375
|
+
return fail(e.message || String(e));
|
|
376
|
+
}
|
|
377
|
+
if (host.mode === 'error') {
|
|
378
|
+
return fail(host.reason);
|
|
379
|
+
}
|
|
380
|
+
var hostLabel = (host.mode === 'native') ? 'native' : host.descriptor;
|
|
381
|
+
|
|
382
|
+
if (self.stream) {
|
|
383
|
+
emitFrame({
|
|
384
|
+
type : 'start',
|
|
385
|
+
project : plan.projectName,
|
|
386
|
+
bundle : plan.bundleName,
|
|
387
|
+
env : plan.env,
|
|
388
|
+
scope : plan.scope,
|
|
389
|
+
image : plan.image,
|
|
390
|
+
tag : plan.tag,
|
|
391
|
+
host : hostLabel,
|
|
392
|
+
exposedPort : plan.exposedPort
|
|
393
|
+
});
|
|
394
|
+
} else if (self.format === 'text') {
|
|
395
|
+
fs.writeSync(1, '[image:build] building ' + plan.tag + ' (' + plan.bundleName + '@' + plan.projectName + ', env: ' + plan.env + ') on ' + hostLabel + '\n');
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
emitStep('stage');
|
|
399
|
+
var stagingDir = nodePath.join(os.tmpdir(), 'gina-image-build-' + plan.projectName + '-' + plan.bundleName + '-' + Date.now());
|
|
400
|
+
try {
|
|
401
|
+
imageBuild.stageContext(plan, projectPath, stagingDir);
|
|
402
|
+
} catch (e) {
|
|
403
|
+
return fail('context staging failed: ' + (e.message || e));
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
emitStep('build');
|
|
407
|
+
var child = null;
|
|
408
|
+
var tarProc = null;
|
|
409
|
+
if (host.mode === 'native') {
|
|
410
|
+
var args = ['build', '--format', 'oci', '-f', stagingDir + '/Containerfile', '-t', plan.tag, '--iidfile', stagingDir + '/.gina-iid'];
|
|
411
|
+
if (plan.platform) { args.push('--platform', plan.platform); }
|
|
412
|
+
args.push(stagingDir);
|
|
413
|
+
child = spawn('buildah', args);
|
|
414
|
+
} else {
|
|
415
|
+
// -p only when the descriptor names a port explicitly — a bare
|
|
416
|
+
// ssh://host must let the user's ssh config decide (host aliases
|
|
417
|
+
// may define their own Port/ProxyCommand).
|
|
418
|
+
var sshArgs = ['-o', 'BatchMode=yes', '-o', 'ConnectTimeout=10'];
|
|
419
|
+
if (host.parsed.port) { sshArgs.push('-p', String(host.parsed.port)); }
|
|
420
|
+
sshArgs.push(host.parsed.sshTarget, buildRemoteCommand(plan));
|
|
421
|
+
child = spawn('ssh', sshArgs);
|
|
422
|
+
tarProc = spawn('tar', ['-cf', '-', '-C', stagingDir, '.']);
|
|
423
|
+
tarProc.on('error', function (err) {
|
|
424
|
+
fail('context transfer failed — could not run tar: ' + (err.message || err));
|
|
425
|
+
});
|
|
426
|
+
tarProc.stdout.pipe(child.stdin);
|
|
427
|
+
child.stdin.on('error', function () { /* remote closed early — surfaced via exit code */ });
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
var imageId = null;
|
|
431
|
+
var logTail = [];
|
|
432
|
+
var pending = '';
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Line-buffers a child stream chunk: captures the image-id marker,
|
|
436
|
+
* keeps a short tail for failure reporting, and forwards each line
|
|
437
|
+
* (stream mode → `log` frames; text mode → passthrough).
|
|
438
|
+
*
|
|
439
|
+
* @inner
|
|
440
|
+
* @private
|
|
441
|
+
* @param {Buffer|string} chunk - Raw child output
|
|
442
|
+
* @returns {void}
|
|
443
|
+
*/
|
|
444
|
+
var onChunk = function (chunk) {
|
|
445
|
+
pending += chunk.toString();
|
|
446
|
+
var idx;
|
|
447
|
+
while ((idx = pending.indexOf('\n')) > -1) {
|
|
448
|
+
var line = pending.substring(0, idx);
|
|
449
|
+
pending = pending.substring(idx + 1);
|
|
450
|
+
var m = line.match(/^__GINA_IID__(sha256:[0-9a-f]+|[0-9a-f]+)\s*$/);
|
|
451
|
+
if (m) { imageId = m[1]; continue; }
|
|
452
|
+
logTail.push(line);
|
|
453
|
+
if (logTail.length > 20) logTail.shift();
|
|
454
|
+
if (self.stream) {
|
|
455
|
+
emitFrame({ type: 'log', line: line });
|
|
456
|
+
} else if (self.format === 'text') {
|
|
457
|
+
fs.writeSync(1, line + '\n');
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
child.stdout.on('data', onChunk);
|
|
463
|
+
child.stderr.on('data', onChunk);
|
|
464
|
+
child.on('error', function (err) {
|
|
465
|
+
fail((host.mode === 'native' ? '`buildah`' : '`ssh`') + ' could not be spawned: ' + (err.message || err));
|
|
466
|
+
});
|
|
467
|
+
|
|
468
|
+
child.on('close', function (code) {
|
|
469
|
+
if (host.mode === 'native' && imageId === null) {
|
|
470
|
+
try {
|
|
471
|
+
imageId = fs.readFileSync(stagingDir + '/.gina-iid', 'utf8').trim() || null;
|
|
472
|
+
} catch (e) { /* build failed before the iidfile was written */ }
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
if (code === 0 && imageId) {
|
|
476
|
+
try { fs.rmSync(stagingDir, { recursive: true, force: true }); } catch (e) { /* best effort */ }
|
|
477
|
+
var oneShot = imageBuild.buildOneShot(plan, {
|
|
478
|
+
imageId : imageId,
|
|
479
|
+
durationMs : Date.now() - t0,
|
|
480
|
+
host : hostLabel
|
|
481
|
+
});
|
|
482
|
+
if (self.stream) {
|
|
483
|
+
oneShot.type = 'done';
|
|
484
|
+
emitFrame(oneShot);
|
|
485
|
+
} else if (self.format === 'json') {
|
|
486
|
+
fs.writeSync(1, JSON.stringify(oneShot) + '\n');
|
|
487
|
+
} else {
|
|
488
|
+
fs.writeSync(1, '[image:build] built ' + plan.tag + ' (' + imageId + ') on ' + hostLabel + ' in ' + oneShot.durationMs + ' ms\n');
|
|
489
|
+
}
|
|
490
|
+
process.exit(0);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// Failure — staging dir kept for inspection.
|
|
494
|
+
var reason = 'build failed (exit ' + code + ') on ' + hostLabel;
|
|
495
|
+
if (/exec format error/.test(logTail.join('\n'))) {
|
|
496
|
+
reason += ' — the build host lacks qemu/binfmt emulation for ' + (plan.platform || 'the requested platform');
|
|
497
|
+
}
|
|
498
|
+
if (host.mode === 'ssh' && /Host key verification failed/.test(logTail.join('\n'))) {
|
|
499
|
+
reason += ' — the host key is not trusted yet: run `ssh ' + host.parsed.sshTarget + '` once to accept it, then retry';
|
|
500
|
+
}
|
|
501
|
+
if (code === 0 && !imageId) {
|
|
502
|
+
reason = 'build reported success but no image id was captured on ' + hostLabel;
|
|
503
|
+
}
|
|
504
|
+
if (self.format !== 'text' || self.stream) {
|
|
505
|
+
var tail = logTail.slice(-5).join(' | ');
|
|
506
|
+
if (tail) reason += ' — last output: ' + tail;
|
|
507
|
+
}
|
|
508
|
+
reason += ' (context kept at ' + stagingDir + ')';
|
|
509
|
+
fail(reason);
|
|
510
|
+
});
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
init();
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
module.exports = Build;
|