gina 0.3.13-alpha.3 → 0.3.13
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/.playwright-mcp/console-2026-05-14T02-27-11-347Z.log +64 -0
- package/.playwright-mcp/d9-after-connector.png +0 -0
- package/.playwright-mcp/d9-after-service.png +0 -0
- package/.playwright-mcp/d9-before-connector-full.png +0 -0
- package/.playwright-mcp/d9-before-connector-leak.png +0 -0
- package/.playwright-mcp/d9-before-connector-top.png +0 -0
- package/.playwright-mcp/d9-before-connector-v2.png +0 -0
- package/.playwright-mcp/d9-before-connector.png +0 -0
- package/.playwright-mcp/page-2026-05-14T02-24-51-996Z.yml +1818 -0
- package/.playwright-mcp/page-2026-05-14T02-26-47-905Z.yml +2063 -0
- package/.playwright-mcp/page-2026-05-14T02-27-11-472Z.yml +406 -0
- package/.playwright-mcp/page-2026-05-14T02-28-37-939Z.yml +2061 -0
- package/.playwright-mcp/page-2026-05-14T02-29-01-333Z.yml +404 -0
- package/CHANGELOG.md +12 -0
- package/README.md +11 -1
- package/ROADMAP.md +6 -6
- package/framework/v0.3.13/VERSION +1 -0
- package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/server.isaac.js +56 -11
- package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/config/settings.server.json +3 -1
- package/framework/v0.3.13/core/template/boilerplate/bundle_public/manifest.webmanifest +17 -0
- package/framework/v0.3.13/core/template/boilerplate/bundle_public/readme.md +20 -0
- package/framework/v0.3.13/core/template/boilerplate/bundle_public/sw.js +122 -0
- package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_templates/html/layouts/main.html +14 -0
- package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/conf/settings.json +3 -1
- package/framework/{v0.3.13-alpha.3 → v0.3.13}/package.json +2 -2
- package/gna.js +4 -4
- package/llms.txt +11 -1
- package/package.json +3 -3
- package/framework/v0.3.13-alpha.3/VERSION +0 -1
- package/framework/v0.3.13-alpha.3/core/plugins/lib/file/package.json +0 -25
- package/framework/v0.3.13-alpha.3/core/plugins/lib/intl/package.json +0 -25
- package/framework/v0.3.13-alpha.3/core/plugins/lib/intl/src/main.js +0 -35
- package/framework/v0.3.13-alpha.3/core/template/boilerplate/bundle_public/readme.md +0 -1
- package/framework/v0.3.13-alpha.3/lib/collection/build.json +0 -0
- package/framework/v0.3.13-alpha.3/lib/routing/build.json +0 -0
- package/framework/v0.3.13-alpha.3/lib/swig-filters/README.md +0 -0
- package/framework/v0.3.13-alpha.3/lib/url/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/AUTHORS +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/LICENSE +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/html/static.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/config.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/content.encoding +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/controller.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/controller/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/dev/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/gna.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/locales/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/locales/currency.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/locales/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/mime.types +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/model/entity.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/model/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/model/template/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/file → v0.3.13/core/plugins/lib/storage}/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/file → v0.3.13/core/plugins/lib/storage}/build.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/intl → v0.3.13/core/plugins/lib/validator}/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/intl → v0.3.13/core/plugins/lib/validator}/build.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/router.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/server.express.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/server.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/status.codes +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/_gitignore +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/conf/env.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/conf/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/console.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/context.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/data/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/data/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/json/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/json/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/path.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/prototypes.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/task.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/helpers/text.js +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/storage → v0.3.13/lib/archiver}/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/storage → v0.3.13/lib/archiver}/build.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/archiver/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/async/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/async/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cache/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/validator → v0.3.13/lib/cache}/build.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cache/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/collection/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3/lib/archiver → v0.3.13/lib/collection}/build.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/collection/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/config.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cron/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cron/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/domain/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/domain/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/generator/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/i18n/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/inherits/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/inherits/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/math/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/merge/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/merge/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/metrics/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/model.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/proc.js +0 -0
- /package/framework/{v0.3.13-alpha.3/core/plugins/lib/validator → v0.3.13/lib/routing}/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3/lib/cache → v0.3.13/lib/routing}/build.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/routing/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/secrets/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/session-store.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/shell.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/state.js +0 -0
- /package/framework/{v0.3.13-alpha.3/lib/archiver → v0.3.13/lib/swig-filters}/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3/lib/routing → v0.3.13/lib/url}/README.md +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/url/index.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/url/routing.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/uuid/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/validator.js +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/watcher/package.json +0 -0
- /package/framework/{v0.3.13-alpha.3 → v0.3.13}/lib/watcher/src/main.js +0 -0
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
- generic [ref=e2]:
|
|
2
|
+
- region "Skip to main content":
|
|
3
|
+
- link "Skip to main content" [ref=e3] [cursor=pointer]:
|
|
4
|
+
- /url: "#__docusaurus_skipToContent_fallback"
|
|
5
|
+
- navigation "Main" [ref=e4]:
|
|
6
|
+
- generic [ref=e5]:
|
|
7
|
+
- generic [ref=e6]:
|
|
8
|
+
- link "Gina logo Gina" [ref=e7] [cursor=pointer]:
|
|
9
|
+
- /url: /docs/
|
|
10
|
+
- img "Gina logo" [ref=e9]
|
|
11
|
+
- generic [ref=e10]: Gina
|
|
12
|
+
- link "Docs" [ref=e11] [cursor=pointer]:
|
|
13
|
+
- /url: /docs/intro
|
|
14
|
+
- link "Tutorials" [ref=e12] [cursor=pointer]:
|
|
15
|
+
- /url: /docs/tutorials
|
|
16
|
+
- link "Templating" [ref=e13] [cursor=pointer]:
|
|
17
|
+
- /url: /docs/templating/
|
|
18
|
+
- link "Roadmap" [ref=e14] [cursor=pointer]:
|
|
19
|
+
- /url: /docs/roadmap
|
|
20
|
+
- generic [ref=e15]:
|
|
21
|
+
- generic [ref=e17]:
|
|
22
|
+
- link "Changelog" [ref=e18] [cursor=pointer]:
|
|
23
|
+
- /url: https://github.com/gina-io/gina/releases
|
|
24
|
+
- text: v0.3.12
|
|
25
|
+
- link "GitHub repository" [ref=e19] [cursor=pointer]:
|
|
26
|
+
- /url: https://github.com/gina-io/gina
|
|
27
|
+
- img [ref=e20]
|
|
28
|
+
- link "npm package (stable)" [ref=e22] [cursor=pointer]:
|
|
29
|
+
- /url: https://www.npmjs.com/package/gina/v/0.3.12
|
|
30
|
+
- img [ref=e23]
|
|
31
|
+
- generic "light mode" [ref=e26] [cursor=pointer]:
|
|
32
|
+
- checkbox "Switch between dark and light mode (currently light mode)" [disabled]
|
|
33
|
+
- generic [ref=e27]:
|
|
34
|
+
- generic [ref=e28]: ☾
|
|
35
|
+
- generic [ref=e29]: ☀
|
|
36
|
+
- textbox "Search" [ref=e32]
|
|
37
|
+
- generic [ref=e35]:
|
|
38
|
+
- complementary [ref=e36]:
|
|
39
|
+
- navigation "Docs sidebar" [ref=e39]:
|
|
40
|
+
- list [ref=e40]:
|
|
41
|
+
- listitem [ref=e41]:
|
|
42
|
+
- link "What is Gina?" [ref=e42] [cursor=pointer]:
|
|
43
|
+
- /url: /docs/intro
|
|
44
|
+
- img [ref=e44]
|
|
45
|
+
- generic "What is Gina?" [ref=e46]
|
|
46
|
+
- listitem [ref=e47]:
|
|
47
|
+
- generic [ref=e48]:
|
|
48
|
+
- link "Getting Started" [ref=e49] [cursor=pointer]:
|
|
49
|
+
- /url: /docs/getting-started
|
|
50
|
+
- img [ref=e51]
|
|
51
|
+
- generic "Getting Started" [ref=e56]
|
|
52
|
+
- button "Expand sidebar category 'Getting Started'" [ref=e57] [cursor=pointer]
|
|
53
|
+
- listitem [ref=e58]:
|
|
54
|
+
- generic [ref=e59]:
|
|
55
|
+
- link "Concepts" [ref=e60] [cursor=pointer]:
|
|
56
|
+
- /url: /docs/concepts
|
|
57
|
+
- img [ref=e62]
|
|
58
|
+
- generic "Concepts" [ref=e64]
|
|
59
|
+
- button "Expand sidebar category 'Concepts'" [ref=e65] [cursor=pointer]
|
|
60
|
+
- listitem [ref=e66]:
|
|
61
|
+
- generic [ref=e67]:
|
|
62
|
+
- link "Guides" [ref=e68] [cursor=pointer]:
|
|
63
|
+
- /url: /docs/guides
|
|
64
|
+
- img [ref=e70]
|
|
65
|
+
- generic "Guides" [ref=e73]
|
|
66
|
+
- button "Expand sidebar category 'Guides'" [ref=e74] [cursor=pointer]
|
|
67
|
+
- listitem [ref=e75]:
|
|
68
|
+
- generic [ref=e76]:
|
|
69
|
+
- link "CLI Reference" [ref=e77] [cursor=pointer]:
|
|
70
|
+
- /url: /docs/cli
|
|
71
|
+
- img [ref=e79]
|
|
72
|
+
- generic "CLI Reference" [ref=e81]
|
|
73
|
+
- button "Collapse sidebar category 'CLI Reference'" [expanded] [ref=e82] [cursor=pointer]
|
|
74
|
+
- list [ref=e83]:
|
|
75
|
+
- listitem [ref=e84]:
|
|
76
|
+
- link "bundle" [ref=e85] [cursor=pointer]:
|
|
77
|
+
- /url: /docs/cli/cli-bundle
|
|
78
|
+
- generic "bundle" [ref=e86]
|
|
79
|
+
- listitem [ref=e87]:
|
|
80
|
+
- link "project" [ref=e88] [cursor=pointer]:
|
|
81
|
+
- /url: /docs/cli/cli-project
|
|
82
|
+
- generic "project" [ref=e89]
|
|
83
|
+
- listitem [ref=e90]:
|
|
84
|
+
- link "framework" [ref=e91] [cursor=pointer]:
|
|
85
|
+
- /url: /docs/cli/cli-framework
|
|
86
|
+
- generic "framework" [ref=e92]
|
|
87
|
+
- listitem [ref=e93]:
|
|
88
|
+
- link "env" [ref=e94] [cursor=pointer]:
|
|
89
|
+
- /url: /docs/cli/cli-env
|
|
90
|
+
- generic "env" [ref=e95]
|
|
91
|
+
- listitem [ref=e96]:
|
|
92
|
+
- link "port" [ref=e97] [cursor=pointer]:
|
|
93
|
+
- /url: /docs/cli/cli-port
|
|
94
|
+
- generic "port" [ref=e98]
|
|
95
|
+
- listitem [ref=e99]:
|
|
96
|
+
- link "scope" [ref=e100] [cursor=pointer]:
|
|
97
|
+
- /url: /docs/cli/cli-scope
|
|
98
|
+
- generic "scope" [ref=e101]
|
|
99
|
+
- listitem [ref=e102]:
|
|
100
|
+
- link "view" [ref=e103] [cursor=pointer]:
|
|
101
|
+
- /url: /docs/cli/cli-view
|
|
102
|
+
- generic "view" [ref=e104]
|
|
103
|
+
- listitem [ref=e105]:
|
|
104
|
+
- link "cache" [ref=e106] [cursor=pointer]:
|
|
105
|
+
- /url: /docs/cli/cli-cache
|
|
106
|
+
- generic "cache" [ref=e107]
|
|
107
|
+
- listitem [ref=e108]:
|
|
108
|
+
- link "protocol" [ref=e109] [cursor=pointer]:
|
|
109
|
+
- /url: /docs/cli/cli-protocol
|
|
110
|
+
- generic "protocol" [ref=e110]
|
|
111
|
+
- listitem [ref=e111]:
|
|
112
|
+
- link "service" [ref=e112] [cursor=pointer]:
|
|
113
|
+
- /url: /docs/cli/cli-service
|
|
114
|
+
- generic "service" [ref=e113]
|
|
115
|
+
- listitem [ref=e114]:
|
|
116
|
+
- link "connector" [ref=e115] [cursor=pointer]:
|
|
117
|
+
- /url: /docs/cli/cli-connector
|
|
118
|
+
- generic "connector" [ref=e116]
|
|
119
|
+
- listitem [ref=e117]:
|
|
120
|
+
- generic [ref=e118]:
|
|
121
|
+
- link "Configuration Reference" [ref=e119] [cursor=pointer]:
|
|
122
|
+
- /url: /docs/reference/
|
|
123
|
+
- img [ref=e121]
|
|
124
|
+
- generic "Configuration Reference" [ref=e122]
|
|
125
|
+
- button "Expand sidebar category 'Configuration Reference'" [ref=e123] [cursor=pointer]
|
|
126
|
+
- listitem [ref=e124]:
|
|
127
|
+
- generic [ref=e125]:
|
|
128
|
+
- link "API Reference" [ref=e126] [cursor=pointer]:
|
|
129
|
+
- /url: /docs/api
|
|
130
|
+
- img [ref=e128]
|
|
131
|
+
- generic "API Reference" [ref=e131]
|
|
132
|
+
- button "Expand sidebar category 'API Reference'" [ref=e132] [cursor=pointer]
|
|
133
|
+
- listitem [ref=e133]:
|
|
134
|
+
- generic [ref=e134]:
|
|
135
|
+
- link "Globals" [ref=e135] [cursor=pointer]:
|
|
136
|
+
- /url: /docs/globals
|
|
137
|
+
- img [ref=e137]
|
|
138
|
+
- generic "Globals" [ref=e140]
|
|
139
|
+
- button "Expand sidebar category 'Globals'" [ref=e141] [cursor=pointer]
|
|
140
|
+
- listitem [ref=e142]:
|
|
141
|
+
- link "Security" [ref=e143] [cursor=pointer]:
|
|
142
|
+
- /url: /docs/security
|
|
143
|
+
- img [ref=e145]
|
|
144
|
+
- generic "Security" [ref=e147]
|
|
145
|
+
- listitem [ref=e148]:
|
|
146
|
+
- link "Migration Guide" [ref=e149] [cursor=pointer]:
|
|
147
|
+
- /url: /docs/migration
|
|
148
|
+
- img [ref=e151]
|
|
149
|
+
- generic "Migration Guide" [ref=e153]
|
|
150
|
+
- main [ref=e154]:
|
|
151
|
+
- generic [ref=e156]:
|
|
152
|
+
- generic [ref=e158]:
|
|
153
|
+
- article [ref=e159]:
|
|
154
|
+
- navigation "Breadcrumbs" [ref=e160]:
|
|
155
|
+
- list [ref=e161]:
|
|
156
|
+
- listitem [ref=e162]:
|
|
157
|
+
- link "Home page" [ref=e163] [cursor=pointer]:
|
|
158
|
+
- /url: /docs/
|
|
159
|
+
- img [ref=e164]
|
|
160
|
+
- listitem [ref=e166]:
|
|
161
|
+
- link "CLI Reference" [ref=e167] [cursor=pointer]:
|
|
162
|
+
- /url: /docs/cli
|
|
163
|
+
- listitem [ref=e168]:
|
|
164
|
+
- generic [ref=e169]: service
|
|
165
|
+
- generic [ref=e170]:
|
|
166
|
+
- heading "service" [level=1] [ref=e172]
|
|
167
|
+
- generic [ref=e173]:
|
|
168
|
+
- generic [ref=e174]:
|
|
169
|
+
- generic [ref=e175]:
|
|
170
|
+
- img [ref=e176]
|
|
171
|
+
- text: 1 min read
|
|
172
|
+
- generic [ref=e179]: Intermediate
|
|
173
|
+
- generic [ref=e180]:
|
|
174
|
+
- generic [ref=e181]: Prerequisites
|
|
175
|
+
- list [ref=e182]:
|
|
176
|
+
- listitem [ref=e183]:
|
|
177
|
+
- link "Gina installed globally" [ref=e184] [cursor=pointer]:
|
|
178
|
+
- /url: /docs/getting-started/installation
|
|
179
|
+
- listitem [ref=e185]:
|
|
180
|
+
- link "CLI bundle reference" [ref=e186] [cursor=pointer]:
|
|
181
|
+
- /url: /docs/cli/cli-bundle
|
|
182
|
+
- paragraph [ref=e187]:
|
|
183
|
+
- text: The
|
|
184
|
+
- code [ref=e188]: service
|
|
185
|
+
- text: command group lists
|
|
186
|
+
- strong [ref=e189]: framework-internal services
|
|
187
|
+
- text: — bundles that ship alongside gina and run as companion processes (currently
|
|
188
|
+
- code [ref=e190]: proxy
|
|
189
|
+
- text: and
|
|
190
|
+
- code [ref=e191]: inspector
|
|
191
|
+
- text: ). These services are registered under the reserved
|
|
192
|
+
- code [ref=e192]: "@gina"
|
|
193
|
+
- text: project.
|
|
194
|
+
- generic [ref=e193]:
|
|
195
|
+
- generic [ref=e194]:
|
|
196
|
+
- img [ref=e196]
|
|
197
|
+
- text: Gina-internal surface
|
|
198
|
+
- paragraph [ref=e199]:
|
|
199
|
+
- code [ref=e200]: service:list
|
|
200
|
+
- text: currently rejects any project other than
|
|
201
|
+
- code [ref=e201]: "@gina"
|
|
202
|
+
- text: . User-defined services are not a surface yet — use
|
|
203
|
+
- link "bundle:list" [ref=e202] [cursor=pointer]:
|
|
204
|
+
- /url: /docs/cli/cli-bundle#bundlelist
|
|
205
|
+
- code [ref=e203]: bundle:list
|
|
206
|
+
- text: for bundles in user projects.
|
|
207
|
+
- separator [ref=e204]
|
|
208
|
+
- heading "service:listDirect link to servicelist" [level=2] [ref=e205]:
|
|
209
|
+
- code [ref=e206]: service:list
|
|
210
|
+
- link "Direct link to servicelist" [ref=e207] [cursor=pointer]:
|
|
211
|
+
- /url: "#servicelist"
|
|
212
|
+
- text: "#"
|
|
213
|
+
- paragraph [ref=e208]:
|
|
214
|
+
- emphasis [ref=e209]: New in 0.3.7-alpha.2
|
|
215
|
+
- paragraph [ref=e210]: List framework-internal services with src-existence, preferred-port summary, and host-side running state.
|
|
216
|
+
- code [ref=e214]:
|
|
217
|
+
- generic [ref=e215]: gina service:list
|
|
218
|
+
- code [ref=e219]:
|
|
219
|
+
- generic [ref=e220]: gina service:list @gina
|
|
220
|
+
- paragraph [ref=e221]:
|
|
221
|
+
- strong [ref=e222]: Flags
|
|
222
|
+
- table [ref=e223]:
|
|
223
|
+
- rowgroup [ref=e224]:
|
|
224
|
+
- row "Flag Description" [ref=e225]:
|
|
225
|
+
- columnheader "Flag" [ref=e226]
|
|
226
|
+
- columnheader "Description" [ref=e227]
|
|
227
|
+
- rowgroup [ref=e228]:
|
|
228
|
+
- row "--format=json Emit a JSON payload instead of the human-readable text table" [ref=e229]:
|
|
229
|
+
- cell "--format=json" [ref=e230]:
|
|
230
|
+
- code [ref=e231]: "--format=json"
|
|
231
|
+
- cell "Emit a JSON payload instead of the human-readable text table" [ref=e232]
|
|
232
|
+
- heading "OutputDirect link to Output" [level=3] [ref=e233]:
|
|
233
|
+
- text: Output
|
|
234
|
+
- link "Direct link to Output" [ref=e234] [cursor=pointer]:
|
|
235
|
+
- /url: "#output"
|
|
236
|
+
- text: "#"
|
|
237
|
+
- code [ref=e238]:
|
|
238
|
+
- generic [ref=e239]: "[ running ] inspector http/2.0 dev https 4208 pid 27007"
|
|
239
|
+
- generic [ref=e240]: "[ running ] proxy http/2.0 dev https 4210 pid 15346"
|
|
240
|
+
- list [ref=e241]:
|
|
241
|
+
- listitem [ref=e242]:
|
|
242
|
+
- strong [ref=e243]:
|
|
243
|
+
- code [ref=e244]: "[ running ]"
|
|
244
|
+
- text: /
|
|
245
|
+
- code [ref=e245]: "[ stopped ]"
|
|
246
|
+
- text: /
|
|
247
|
+
- code [ref=e246]: "[ ?! ]"
|
|
248
|
+
- text: — running state (probed from
|
|
249
|
+
- code [ref=e247]: ~/.gina/run/<service>@gina.pid
|
|
250
|
+
- text: with
|
|
251
|
+
- code [ref=e248]: process.kill(pid, 0)
|
|
252
|
+
- text: ) or src-existence when the source directory is missing.
|
|
253
|
+
- listitem [ref=e249]:
|
|
254
|
+
- strong [ref=e250]:
|
|
255
|
+
- code [ref=e251]: http/2.0 dev https 4208
|
|
256
|
+
- text: — preferred port. Read from
|
|
257
|
+
- code [ref=e252]: ~/.gina/ports.reverse.json
|
|
258
|
+
- text: ". Precedence:"
|
|
259
|
+
- code [ref=e253]: http/2.0 https
|
|
260
|
+
- text: →
|
|
261
|
+
- code [ref=e254]: http/1.1 https
|
|
262
|
+
- text: →
|
|
263
|
+
- code [ref=e255]: http/1.1 http
|
|
264
|
+
- text: ;
|
|
265
|
+
- code [ref=e256]: dev
|
|
266
|
+
- text: env is preferred when present, otherwise the first environment in the record. Services with no allocated port render as
|
|
267
|
+
- code [ref=e257]: (no port)
|
|
268
|
+
- text: .
|
|
269
|
+
- listitem [ref=e258]:
|
|
270
|
+
- strong [ref=e259]:
|
|
271
|
+
- code [ref=e260]: pid 27007
|
|
272
|
+
- text: — process id when running.
|
|
273
|
+
- paragraph [ref=e261]:
|
|
274
|
+
- text: With
|
|
275
|
+
- code [ref=e262]: "--format=json"
|
|
276
|
+
- text: ", each service object carries:"
|
|
277
|
+
- code [ref=e266]:
|
|
278
|
+
- generic [ref=e267]: "{"
|
|
279
|
+
- generic [ref=e268]: "\"service\": \"inspector\","
|
|
280
|
+
- generic [ref=e269]: "\"path\": \"src/inspector\","
|
|
281
|
+
- generic [ref=e270]: "\"status\": \"ok\","
|
|
282
|
+
- generic [ref=e271]: "\"ports\": {"
|
|
283
|
+
- generic [ref=e272]: "\"dev\": { \"http/1.1\": { \"http\": 4200, \"https\": 4204 }, \"http/2.0\": { \"https\": 4208 } },"
|
|
284
|
+
- generic [ref=e273]: "\"prod\": { \"http/1.1\": { \"http\": 4201, \"https\": 4205 }, \"http/2.0\": { \"https\": 4209 } }"
|
|
285
|
+
- generic [ref=e274]: "},"
|
|
286
|
+
- generic [ref=e275]: "\"running\": true,"
|
|
287
|
+
- generic [ref=e276]: "\"pid\": 27007"
|
|
288
|
+
- generic [ref=e277]: "}"
|
|
289
|
+
- paragraph [ref=e278]:
|
|
290
|
+
- text: A missing or malformed
|
|
291
|
+
- code [ref=e279]: ports.reverse.json
|
|
292
|
+
- text: is tolerated — the command still renders with every service showing
|
|
293
|
+
- code [ref=e280]: (no port)
|
|
294
|
+
- text: /
|
|
295
|
+
- code [ref=e281]: "ports: null"
|
|
296
|
+
- text: . A stale pidfile (process exited) reports
|
|
297
|
+
- code [ref=e282]: (stopped)
|
|
298
|
+
- text: without being deleted; pidfile clean-up stays with
|
|
299
|
+
- link "bundle:stop" [ref=e283] [cursor=pointer]:
|
|
300
|
+
- /url: /docs/cli/cli-bundle#bundlestop
|
|
301
|
+
- code [ref=e284]: bundle:stop
|
|
302
|
+
- text: .
|
|
303
|
+
- generic [ref=e285]:
|
|
304
|
+
- generic [ref=e286]:
|
|
305
|
+
- img [ref=e288]
|
|
306
|
+
- text: Docker bundles
|
|
307
|
+
- paragraph [ref=e291]:
|
|
308
|
+
- text: Services running inside a Docker container write their pidfile inside the container, not on the host
|
|
309
|
+
- code [ref=e292]: ~/.gina/run/
|
|
310
|
+
- text: directory. Running
|
|
311
|
+
- code [ref=e293]: service:list
|
|
312
|
+
- text: from a host shell will report them as
|
|
313
|
+
- code [ref=e294]: (stopped)
|
|
314
|
+
- text: even when the container is up — use
|
|
315
|
+
- code [ref=e295]: docker ps
|
|
316
|
+
- text: or
|
|
317
|
+
- code [ref=e296]: docker exec <container> gina service:list
|
|
318
|
+
- text: for the container-side view.
|
|
319
|
+
- separator [ref=e297]
|
|
320
|
+
- heading "service:helpDirect link to servicehelp" [level=2] [ref=e298]:
|
|
321
|
+
- code [ref=e299]: service:help
|
|
322
|
+
- link "Direct link to servicehelp" [ref=e300] [cursor=pointer]:
|
|
323
|
+
- /url: "#servicehelp"
|
|
324
|
+
- text: "#"
|
|
325
|
+
- paragraph [ref=e301]:
|
|
326
|
+
- text: Print the usage summary for the
|
|
327
|
+
- code [ref=e302]: service
|
|
328
|
+
- text: command group.
|
|
329
|
+
- code [ref=e306]:
|
|
330
|
+
- generic [ref=e307]: gina service:help
|
|
331
|
+
- code [ref=e311]:
|
|
332
|
+
- generic [ref=e312]: gina service
|
|
333
|
+
- generic [ref=e313]:
|
|
334
|
+
- generic [ref=e314]:
|
|
335
|
+
- generic [ref=e315]: Was this page helpful?
|
|
336
|
+
- generic [ref=e316]:
|
|
337
|
+
- button "Yes, this was helpful" [ref=e317] [cursor=pointer]:
|
|
338
|
+
- generic [ref=e318]: 👍
|
|
339
|
+
- generic [ref=e319]: –
|
|
340
|
+
- button "No, this was not helpful" [ref=e320] [cursor=pointer]:
|
|
341
|
+
- generic [ref=e321]: 👎
|
|
342
|
+
- generic [ref=e322]: –
|
|
343
|
+
- link "Edit this page" [ref=e326] [cursor=pointer]:
|
|
344
|
+
- /url: https://github.com/gina-io/docs/tree/main/docs/cli/service.md
|
|
345
|
+
- img [ref=e327]
|
|
346
|
+
- text: Edit this page
|
|
347
|
+
- navigation "Docs pages" [ref=e331]:
|
|
348
|
+
- link "Previous « protocol" [ref=e332] [cursor=pointer]:
|
|
349
|
+
- /url: /docs/cli/cli-protocol
|
|
350
|
+
- generic [ref=e333]: Previous
|
|
351
|
+
- generic [ref=e334]: « protocol
|
|
352
|
+
- link "Next connector »" [ref=e335] [cursor=pointer]:
|
|
353
|
+
- /url: /docs/cli/cli-connector
|
|
354
|
+
- generic [ref=e336]: Next
|
|
355
|
+
- generic [ref=e337]: connector »
|
|
356
|
+
- list [ref=e341]:
|
|
357
|
+
- listitem [ref=e342]:
|
|
358
|
+
- link "service:list" [ref=e343] [cursor=pointer]:
|
|
359
|
+
- /url: "#servicelist"
|
|
360
|
+
- code [ref=e344]: service:list
|
|
361
|
+
- list [ref=e345]:
|
|
362
|
+
- listitem [ref=e346]:
|
|
363
|
+
- link "Output" [ref=e347] [cursor=pointer]:
|
|
364
|
+
- /url: "#output"
|
|
365
|
+
- listitem [ref=e348]:
|
|
366
|
+
- link "service:help" [ref=e349] [cursor=pointer]:
|
|
367
|
+
- /url: "#servicehelp"
|
|
368
|
+
- code [ref=e350]: service:help
|
|
369
|
+
- contentinfo [ref=e351]:
|
|
370
|
+
- generic [ref=e352]:
|
|
371
|
+
- generic [ref=e353]:
|
|
372
|
+
- generic [ref=e354]:
|
|
373
|
+
- generic [ref=e355]: Docs
|
|
374
|
+
- list [ref=e356]:
|
|
375
|
+
- listitem [ref=e357]:
|
|
376
|
+
- link "Getting Started" [ref=e358] [cursor=pointer]:
|
|
377
|
+
- /url: /docs/intro
|
|
378
|
+
- generic [ref=e359]:
|
|
379
|
+
- generic [ref=e360]: Community
|
|
380
|
+
- list [ref=e361]:
|
|
381
|
+
- listitem [ref=e362]:
|
|
382
|
+
- link "GitHub Issues(opens in new tab)" [ref=e363] [cursor=pointer]:
|
|
383
|
+
- /url: https://github.com/gina-io/gina/issues
|
|
384
|
+
- text: GitHub Issues
|
|
385
|
+
- img "(opens in new tab)" [ref=e364]
|
|
386
|
+
- listitem [ref=e366]:
|
|
387
|
+
- link "GitHub Discussions(opens in new tab)" [ref=e367] [cursor=pointer]:
|
|
388
|
+
- /url: https://github.com/gina-io/gina/discussions
|
|
389
|
+
- text: GitHub Discussions
|
|
390
|
+
- img "(opens in new tab)" [ref=e368]
|
|
391
|
+
- listitem [ref=e370]:
|
|
392
|
+
- link "Support Gina" [ref=e371] [cursor=pointer]:
|
|
393
|
+
- /url: /docs/support
|
|
394
|
+
- generic [ref=e372]:
|
|
395
|
+
- generic [ref=e373]: More
|
|
396
|
+
- list [ref=e374]:
|
|
397
|
+
- listitem [ref=e375]:
|
|
398
|
+
- link "npm(opens in new tab)" [ref=e376] [cursor=pointer]:
|
|
399
|
+
- /url: https://www.npmjs.com/package/gina
|
|
400
|
+
- text: npm
|
|
401
|
+
- img "(opens in new tab)" [ref=e377]
|
|
402
|
+
- generic [ref=e380]: Copyright © 2009-2026 Gina I/O.
|
|
403
|
+
- button "Collapse sidebar" [ref=e382] [cursor=pointer]:
|
|
404
|
+
- img [ref=e383]
|
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ 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.3.13 - 2026-05-14
|
|
10
|
+
### Added
|
|
11
|
+
* Released `0.3.13` — cumulative stable of the `0.3.13-alpha` cycle. Alpha-cycle headline tracks (detailed under `0.3.13-alpha.3` in the changelog): **`${secret:KEY}` config-placeholder resolver** (#SECRETS1) — `lib/secrets` substitutes `${secret:KEY}` placeholders embedded in bundle JSON configs (`settings.json`, `app.json`, `connectors.json`, `mcp.json`) from `process.env[KEY]` at config-load time, fail-closed on an unset/empty var; ships with a `settings.csrf.secret` slot for `gina.plugins.Csrf()` and `mcp.json` placeholder support for `gina bundle:mcp-start`. **Eval-safety campaign completed** (#M20–#M22) — validator nested-key rule construction refactored off `eval` (#M20); the four HTML event-callback `eval` sites and the conditional-binding evaluator fallback dropped (#M21a, #M21b); the Pattern B user-defined-validator `eval` documented as load-bearing public API with an invariant test (#M21c); the logger ↔ merge circular-require restructured so the three `eval(fs.readFileSync(...))` fallbacks are removed (#M22) — Phase 3c complete, one load-bearing framework `eval` remains by design. Plus the #M1 async-race retrofit follow-up (render-nunjucks terminal-exit closure nulling) and a `requireJSON` line-comment / URL-collision fix. The entries below are the post-alpha-cycle changes that complete the release.
|
|
12
|
+
* Bundle scaffolding now includes a starter Progressive Web App setup. Running view:add adds a manifest.webmanifest and a cache-first service-worker stub (sw.js) to the bundle public directory, and the default HTML layout links the manifest, declares a theme colour, and registers the service worker. Add your own icon PNGs and edit the manifest to describe the app.
|
|
13
|
+
* The Isaac HTTP/2 server now rate-limits rapid-reset stream floods. When a single connection opens more than maxStreamsPerSecond new streams within a rolling one-second window (default 200), the server sends a GOAWAY and closes that session — a targeted, application-level defense against CVE-2023-44487-style attacks on top of the OS-level fix in modern Node.js. Configurable via settings.json http2Options.maxStreamsPerSecond. The /_gina/info endpoint exposes a new rapidResetBlocked counter.
|
|
14
|
+
### Changed
|
|
15
|
+
* Bumped the @rhinostone/swig dependency floor from ^2.2.0 to ^2.3.0 in framework/v*/package.json. Version 2.3.0 drops yargs and terser from the published package production dependencies — CLI argument parsing is now a built-in zero-dependency parser, and terser (used only by swig compile --minify) moved to devDependencies and loads lazily. A library install of @rhinostone/swig now pulls in only @rhinostone/swig-core, so installing gina has a smaller transitive dependency tree. No template-engine API or behavior change; swigResolver DEFAULT_MIN stays at 2.0.0 since the framework does not depend on any new 2.3.0 API.
|
|
16
|
+
### Removed
|
|
17
|
+
* Removed two dormant plugin directories (`core/plugins/lib/file/` and `core/plugins/lib/intl/`) that had no consumers in any known bundle. Slightly smaller npm tarball; no functional change.
|
|
18
|
+
### Fixed
|
|
19
|
+
* Fixed a dev-mode hot-reload crash: refreshCore() overwrote the lib and plugins require.cache entries with their exports objects instead of Module instances, so the controller render delegates threw "Cannot read properties of undefined" after a hot reload.
|
|
20
|
+
|
|
9
21
|
## 0.3.13-alpha.3 - 2026-05-14 (npm only — no git tag)
|
|
10
22
|
### Added
|
|
11
23
|
* `${secret:KEY}` placeholder syntax in bundle JSON configs. Substituted at getConfig() time from process.env[KEY]. Fails closed if the env var is unset or empty. Resolution happens once per config-load cycle (cached). Pluggable-backend support is reserved for a future iteration; only the env-var backend ships in this alpha.
|
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ Node.js MVC framework with built-in HTTP/2, multi-bundle architecture, and scope
|
|
|
22
22
|
| ORM / entities | EventEmitter-based entity system; SQL files auto-wired to entity methods |
|
|
23
23
|
| Connectors | Couchbase, MongoDB, ScyllaDB / Cassandra, MySQL, PostgreSQL, Redis, SQLite, AI (LLM) — loaded from project `node_modules` |
|
|
24
24
|
| AI connector | Any LLM provider via named protocol (`anthropic://`, `openai://`, `ollama://`, …) |
|
|
25
|
-
| Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.
|
|
25
|
+
| Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.3.0 — maintained fork with CVE-2023-25345 patched; streaming SSE/chunked via `renderStream()`. Nunjucks supported as opt-in via `render.engine = "nunjucks"` |
|
|
26
26
|
| Internationalisation | Per-bundle JSON catalogs, `t()` helper, swig + nunjucks `t` filter, CLDR plurals, ICU MessageFormat opt-in via `t.icu()` |
|
|
27
27
|
| Observability | Built-in `/_gina/metrics` Prometheus endpoint (opt-in, IP-allowlisted) — Node.js process metrics + HTTP counter / duration histogram with cardinality-safe route labels |
|
|
28
28
|
| Hot reload | WatcherService evicts `require.cache` only on file change — zero per-request overhead in dev |
|
|
@@ -39,6 +39,16 @@ gina bundle:start api @myproject
|
|
|
39
39
|
open https://localhost:3100
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
+
## What's in 0.3.13
|
|
43
|
+
|
|
44
|
+
- **`${secret:KEY}` placeholder substitution** (#SECRETS1) — bundle JSON configs (`settings.json`, `app.json`, `connectors.json`, `mcp.json`, …) can embed `${secret:KEY}` placeholders that the framework resolves from `process.env[KEY]` at config-load time, before the merged config reaches `getConfig()` or any plugin factory. Anchored to whole-string values; fails closed on an unset/empty var. `gina.plugins.Csrf()` reads `settings.csrf.secret` through it, and `gina bundle:mcp-start` resolves `mcp.json` placeholders such as `server.authToken`. Pluggable-backend interface reserved for a future iteration; only the `process.env` backend ships now.
|
|
45
|
+
- **Progressive Web App scaffold** (#R6) — `gina view:add` now drops a `manifest.webmanifest` and a cache-first service-worker stub (`sw.js`) into the bundle's `public/` directory, and wires the manifest `<link>`, a `theme-color` `<meta>`, an apple-touch-icon `<link>`, and an inline service-worker registration into the default layout. Zero runtime dependency — static files plus layout tags.
|
|
46
|
+
- **HTTP/2 rapid-reset rate limiter** (#H9) — the Isaac engine now bounds new-stream creation per session in a rolling one-second window; over `maxStreamsPerSecond` (default 200) it sends a `GOAWAY` and closes the session. An application-level layer over the OS-level CVE-2023-44487 mitigation in modern Node.js, complementing `maxSessionRejectedStreams` (which counts refused, not created, streams). Configurable via `settings.json` `http2Options.maxStreamsPerSecond`; `/_gina/info` exposes a `rapidResetBlocked` counter.
|
|
47
|
+
- **Eval-safety campaign completed** (#M20–#M22) — the multi-release effort to remove `eval` / `new Function` call sites from the published tarball is finished. The validator plugin's `makeObjectFromArgs` was refactored to a segments-array path build; the HTML-event-callback evals and the conditional-binding fallback were dropped; and the logger's circular-require `eval(fs.readFileSync(...))` fallbacks were eliminated by fixing the `merge → helpers → logger` cycle at its source. The one remaining eval is a load-bearing public-API site (user-defined form validators), kept by design with a documented trust model and an invariant test.
|
|
48
|
+
- **`@rhinostone/swig` floor bumped to `^2.3.0`** — `2.3.0` drops `yargs` and `terser` from the published package's production dependencies (CLI parsing is now a built-in zero-dependency parser; `terser` moved to `devDependencies`, loaded lazily), so a library install pulls in only `@rhinostone/swig-core` — a smaller transitive tree. No template-engine API or behaviour change.
|
|
49
|
+
- **`requireJSON` comment / URL fix** — `requireJSON` no longer mis-parses JSON config files that combine a `//` line comment with a URL string value (`"key": "https://…"`); the comment-stripping pass is now per-line on the leftmost `//`, so comment-bearing configs with URLs load cleanly.
|
|
50
|
+
- **Dev-mode hot-reload fix** — `refreshCore()` was rebuilding the `lib` / `plugins` `require.cache` entries with their exports objects instead of `Module` instances, crashing the controller render delegates with `Cannot read properties of undefined` after a hot reload; it now lets `require()` rebuild a proper `Module`. Also removed two dormant internal plugin directories (`core/plugins/lib/file/`, `core/plugins/lib/intl/`) with no known consumers — a slightly smaller npm tarball, no functional change.
|
|
51
|
+
|
|
42
52
|
## What's in 0.3.12
|
|
43
53
|
|
|
44
54
|
- **Spec-correct `+` decoding in URL query strings and urlencoded bodies** — fixes two complementary parsers that didn't decode `+` to space per RFC 1866 / WHATWG URL. The Isaac engine's URL query-string parser had no `+` substitution at all in either of its two branches (multi-value `&` loop + single-key `=` no-`&` path); the body parser's `application/x-www-form-urlencoded` content-type test was inverted, leaving `+` literal in `req.post` / `req.put` / `req.patch` values. Both now correctly produce space. Express engine was already spec-correct via `qs` defaults. Closes #B17.
|
package/ROADMAP.md
CHANGED
|
@@ -23,7 +23,7 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
23
23
|
| **Q4 2026** | `0.3.8` ✅ | Patch: `npm install -g gina@latest` regression fix — `psl` + `@rhinostone/swig` promoted to top-level deps · install scripts decoupled from framework `lib` registry · helpers preload guarding `lib/logger` ↔ `framework/v*/helpers` circular dep |
|
|
24
24
|
| **Q2 2026** | `0.3.9` ✅ | Consumer-feedback batch (11 framework patches): per-request middleware dispatch isolation · Couchbase 4.x JsonTranscoder · `length` filter null safety · `process.env` mirroring · 6 nunjucks render-pipeline patches (libRef fallback · namespace prefix drop · bundle filter wraps · top-level userData · `data.data` alias · ginaLoader placeholders) · `getAssets` mid-URL `{{ }}` strip-guard anchor |
|
|
25
25
|
| **Q2 2026** | `0.3.10` ✅ | FormValidator HTML5 form-reassociation hardening trilogy (`HTMLFormControlsCollection`-based `bindForm` + `unbindForm` symmetry · radio mutual-exclusion + IDL/attribute reconciliation · `defaultChecked` cache for reset) · `X-Forwarded-Prefix` reverse-proxy path-prefix awareness |
|
|
26
|
-
| **Q4 2026** | `0.4.0` | AI agents (MCP) · ScyllaDB connector ·
|
|
26
|
+
| **Q4 2026** | `0.4.0` | AI agents (MCP) · ScyllaDB connector · Advanced tutorial · Website redesign · Docs offline ZIP · Bun investigation · Couchbase v2 removal · Trailer support · CLI Tier 2 (bundle/project status, rename, copy, protocol:remove, minions) |
|
|
27
27
|
| **Q1 2027** | `0.5.0` | ESM support · Template engine migration · Structured logging · Alt-Svc · HTTP/2 priorities · WebSocket over HTTP/2 · Inspector Production · CLI Tier 3 (project:move, framework:update, backup/restore, man pages) |
|
|
28
28
|
| **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
|
|
29
29
|
|
|
@@ -37,7 +37,7 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
37
37
|
| ✅ | **`watchers.json`** — First-class bundle config for file watchers. Declare watchers on config files with event-based notification (no polling). Foundation for the dev-mode hot-reload system. | `0.2.0` | 2026-03-29 |
|
|
38
38
|
| ✅ | **i18n core** — Per-bundle message catalogs under `bundle/locales/<culture>.json` with a fallback chain (specific culture → base language → default). Server-side `t(key, [params], [culture])` global helper with parameter interpolation and CLDR pluralisation. Swig and Nunjucks filters with the same surface (`{{ "key"\|t }}`, `{{ "key"\|t({ name: x }) }}`). Per-request locale negotiation from URL prefix / cookie / `Accept-Language` / settings default. CLI: `gina i18n:scan` for missing-key coverage per culture, `i18n:add <culture>` to seed a new catalog, `i18n:export` / `i18n:import` for `.po` / `.csv` / `.json` round-trip with translators. Headless by design — the visual translation editor lands later as the first content feature in Beemaster (admin Phase 3). Runtime + filters + `req.culture` negotiation + full CLI all shipped on the `0.3.11-alpha` track. | `0.3.11-alpha` | 2026-05-08 |
|
|
39
39
|
| ✅ | **i18n ICU MessageFormat** — Opt-in `t.icu(key, params, culture)` variant powered by `intl-messageformat`. Adds gender / select / nested combinators (`{count, plural, one {# item} other {# items}}`, `{gender, select, female {…} male {…} other {…}}`) on top of the i18n core. Existing `t()` shape unchanged — v1 catalogs continue to work. Covers grammars (Romance, Slavic) and select expressions the v1 `{name}` + plural-forms shape can't express. Exposed as `gna.t.icu()` (global), `self.t.icu()` (controller helper), and `tIcu` template filter (swig + nunjucks). Library loaded via dynamic `import()` from a module-level loader kicked off at bundle boot — sync API after first-call resolves. | `0.3.11-alpha` | 2026-05-08 |
|
|
40
|
-
|
|
|
40
|
+
| ✅ | **PWA scaffold** — `gina view:add` drops a `manifest.webmanifest` and a cache-first service worker stub (`sw.js`) into the bundle's `public/` directory, and adds the manifest `<link>`, a `theme-color` `<meta>`, an apple-touch-icon `<link>`, and an inline service-worker registration script to the default HTML layout. Zero runtime dependency — static files plus layout tags. Enables Gina apps to be installed on mobile as PWAs without additional tooling. | `0.3.13` | 2026-05-14 |
|
|
41
41
|
| ✅ | **Per-bundle framework version** — Declare `"gina_version": "0.1.8"` on any bundle entry in `manifest.json` to pin that bundle to a specific installed framework version. The socket server continues running its own version; only the spawned bundle process uses the declared version. Validated against the tracked version list in `main.json` before start. `--gina-version=X.Y.Z` flag on `bundle:start` provides the same override without touching config files. | `0.3.0` | 2026-03-31 |
|
|
42
42
|
| ✅ | **PATCH method** — `req.patch` populated with the parsed request body (JSON or form-encoded). `req.body` aliases `req.patch`. URI params merged. `"method": "PATCH"` valid in `routing.json`. Use PATCH for partial updates (only sent fields change) vs PUT which replaces the full resource. | `0.3.0` | 2026-03-31 |
|
|
43
43
|
| ✅ | **HEAD method** — `req.head` populated with query-string and URI params. Full controller action runs so all response headers are set correctly; body is suppressed before writing to the wire. Both `render()` and `renderJSON()` honour HEAD. Routes declared as `GET` automatically accept HEAD — no extra routing rule needed. | `0.3.0` | 2026-03-31 |
|
|
@@ -134,13 +134,13 @@ Four focused follow-up sessions to close the deferred gap left by the `0.3.7-alp
|
|
|
134
134
|
|
|
135
135
|
### Eval safety
|
|
136
136
|
|
|
137
|
-
Complete the removal of `eval` / `new Function` call sites from the published tarball. Four tranches shipped across `0.3.7-alpha.4` / `0.3.7-alpha.5` cleared 13 of 24 catalogued sites; 2 more were removed by deleting orphaned source during the toolbar cleanup (15 of 24 addressed). The validator structural refactor cleared 3 more on `0.3.13-alpha.2` (18 of 24).
|
|
137
|
+
Complete the removal of `eval` / `new Function` call sites from the published tarball. Four tranches shipped across `0.3.7-alpha.4` / `0.3.7-alpha.5` cleared 13 of 24 catalogued sites; 2 more were removed by deleting orphaned source during the toolbar cleanup (15 of 24 addressed). The validator structural refactor cleared 3 more on `0.3.13-alpha.2` (18 of 24). The two remaining clusters — the feature-intrinsic eval design pass and the logger circular-require refactor — completed the campaign in `0.3.13`. The single remaining eval is a load-bearing public-API site (user-defined form validators), kept by design with a documented trust model.
|
|
138
138
|
|
|
139
139
|
| Status | Feature | Version | Target |
|
|
140
140
|
| --- | --- | --- | --- |
|
|
141
141
|
| ✅ | **Validator structural refactor** — Refactored `makeObjectFromArgs` in the validator plugin: the previous string-accumulator path-build + runtime evaluation is replaced by a segments-array threaded through the recursion plus a local safe setter. Cleared 3 eval sites. +27 parity tests in `test/lib/validator-scs1f.test.js`. Browser bundle rebuilt. | `0.3.13-alpha.2` | 2026-05-13 |
|
|
142
|
-
|
|
|
143
|
-
|
|
|
142
|
+
| ✅ | **Feature-intrinsic eval design pass** — 6 sites that eval user-supplied JS by design, across 3 patterns (HTML event callbacks, user-defined form validators, conditional binding fallback). The design pass formalised the trust model; the coding slices dropped the HTML-event-callback evals and the conditional-binding fallback, and documented the user-defined-validator site as a load-bearing public API with an invariant test. | `0.3.13-alpha.3` | 2026-05-14 |
|
|
143
|
+
| ✅ | **Logger circular-require refactor** — 3 load-bearing `eval(fs.readFileSync(...))` fallbacks in the logger worked around a circular `merge → helpers → logger` require chain. Fixed at the source of the cycle: `merge.js` now requires the json-clone primitive directly instead of going through the helpers loader, so the circular chain never fires and the 3 eval fallbacks are unreachable and removed. | `0.3.13` | 2026-05-14 |
|
|
144
144
|
|
|
145
145
|
---
|
|
146
146
|
|
|
@@ -247,7 +247,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
|
|
|
247
247
|
| ✅ | **103 Early Hints** — send `Link` preload headers as informational response before the final response | `0.3.0-alpha.1` | 2026-03-31 | `self.setEarlyHints(links)` on SuperController. HTTP/2: `stream.additionalHeaders({ ':status': 103 })`; HTTP/1.1: `res.writeEarlyHints()` (Node.js 18.11+). Silent no-op on unsupported runtimes. |
|
|
248
248
|
| ✅ | **HTTP/2 session metrics** — expose active session count, stream count, GOAWAY and RST_STREAM totals via `/_gina/info` | `0.3.0-alpha.1` | 2026-04-01 | `server._h2Metrics` counter object instrumented via session event handlers; exposed under `"http2"` key in `/_gina/info` JSON. |
|
|
249
249
|
| ✅ | **Configurable `maxConcurrentStreams` and `initialWindowSize`** — move from hardcoded to `settings.json` `http2Options` | `0.3.0-alpha.1` | 2026-04-05 | All four HTTP/2 server settings configurable: `maxConcurrentStreams` (256), `initialWindowSize` (655350), `maxSessionRejectedStreams` (100), `maxSessionInvalidFrames` (1000). Security guards (`maxHeaderListSize`, `enablePush`) remain hardcoded. |
|
|
250
|
-
|
|
|
250
|
+
| ✅ | **Application-level rapid reset rate limiter** (CVE-2023-44487) — per-session stream creation counter | `0.3.13` | 2026-05-14 | The Isaac HTTP/2 session handler counts new streams in a rolling 1s window per session; over `maxStreamsPerSecond` (default 200) it sends a GOAWAY and closes the session. More targeted than `maxSessionRejectedStreams` (which counts refused streams, not created ones). Configurable via `settings.json` `http2Options.maxStreamsPerSecond`; `/_gina/info` exposes a `rapidResetBlocked` counter. |
|
|
251
251
|
| 📋 | **Trailer support** — `stream.sendTrailers()` + `waitForTrailers: true` | `0.4.0` | Q4 2026 | No trailer support today. Required for gRPC-style streaming (grpc-status trailer) and content integrity use cases. Opt-in: activated only when a controller calls `self.sendTrailers(fields)`. |
|
|
252
252
|
| 📋 | **Alt-Svc header** — advertise HTTP/3 availability | `0.5.0` | Q1 2027 | Set `Alt-Svc: h3=":443"; ma=86400` response header to advertise HTTP/3 (QUIC) availability via a QUIC-capable reverse proxy (nginx, Caddy, Cloudflare). Gina does not need to implement QUIC — just announce it. Opt-in via `settings.server.json`. Native HTTP/3 is out of scope: Node.js has no stable QUIC API, and the standard deployment topology (Gina → proxy → client) already delivers HTTP/3 at the edge. |
|
|
253
253
|
| 📋 | **RFC 9218 Extensible Priorities** — read `Priority: u=N, i` request header | `0.5.0` | Q1 2027 | Use the RFC 9218 priority header to order response writes for multiplexed API clients. Low value for typical HTML page loads; high value for parallel API requests with declared urgency. |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.3.13
|
|
@@ -64,15 +64,28 @@ var refreshCore = function() {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
// Update lib & helpers
|
|
68
|
-
|
|
69
|
-
require.cache[
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
// Update lib & helpers.
|
|
68
|
+
//
|
|
69
|
+
// `require.cache[<path>] = require(<path>)` would overwrite the cache entry
|
|
70
|
+
// — which Node expects to be a `Module` instance with an `.exports` property
|
|
71
|
+
// — with the lib registry's *exports object* directly. Subsequent plain
|
|
72
|
+
// `require('../../lib')` calls then read `require.cache[<path>].exports` and
|
|
73
|
+
// get `undefined` (the registry object has no `.exports` key), surfacing as
|
|
74
|
+
// `Cannot read properties of undefined (reading 'Collection')` / `(reading
|
|
75
|
+
// 'Cache')` etc. in the controller render delegates after a dev-mode hot
|
|
76
|
+
// reload. Fix: delete the entry and let the next require() rebuild a proper
|
|
77
|
+
// Module, then point gna.js's captured `.lib` at the fresh exports — the
|
|
78
|
+
// same `.exports`-preserving shape the loop above already uses.
|
|
79
|
+
var libIndexPath = _(libPath +'/index.js', true);
|
|
80
|
+
delete require.cache[require.resolve(libIndexPath)];
|
|
81
|
+
var freshLib = require( libIndexPath );
|
|
82
|
+
require.cache[_(corePath + '/gna.js', true)].exports.lib = freshLib;
|
|
83
|
+
|
|
84
|
+
// Update plugins — same fix as above.
|
|
85
|
+
var pluginsIndexPath = _(corePath +'/plugins/index.js', true);
|
|
86
|
+
delete require.cache[require.resolve(pluginsIndexPath)];
|
|
87
|
+
var freshPlugins = require( pluginsIndexPath );
|
|
88
|
+
require.cache[_(corePath + '/gna.js', true)].exports.plugins = freshPlugins;
|
|
76
89
|
}
|
|
77
90
|
|
|
78
91
|
// Express compatibility
|
|
@@ -325,6 +338,12 @@ function ServerEngineClass(options) {
|
|
|
325
338
|
// #H3 — CONTINUATION flood defense (CVE-2024-27316, CVE-2024-27983)
|
|
326
339
|
// #H7 — configurable via settings.json http2Options.maxSessionInvalidFrames (default 1000)
|
|
327
340
|
http2Options.maxSessionInvalidFrames = _h2Opts.maxSessionInvalidFrames || 1000;
|
|
341
|
+
// #H9 — rapid-reset rate limit: max new streams accepted per session per
|
|
342
|
+
// rolling 1s window before the session is GOAWAY'd + closed. Defends against
|
|
343
|
+
// CVE-2023-44487-style rapid-reset floods (open then immediately RST streams
|
|
344
|
+
// faster than maxConcurrentStreams alone can throttle). Configurable via
|
|
345
|
+
// settings.json http2Options.maxStreamsPerSecond (default 200).
|
|
346
|
+
var _maxStreamsPerSec = _h2Opts.maxStreamsPerSecond || 200;
|
|
328
347
|
var http2 = require('http2');
|
|
329
348
|
switch (options.scheme) {
|
|
330
349
|
case 'http':
|
|
@@ -345,7 +364,8 @@ function ServerEngineClass(options) {
|
|
|
345
364
|
activeSessions : 0,
|
|
346
365
|
totalStreams : 0,
|
|
347
366
|
goawayCount : 0,
|
|
348
|
-
rstCount : 0
|
|
367
|
+
rstCount : 0,
|
|
368
|
+
rapidResetBlocked : 0
|
|
349
369
|
};
|
|
350
370
|
server._h2Metrics = _h2Metrics;
|
|
351
371
|
|
|
@@ -369,6 +389,30 @@ function ServerEngineClass(options) {
|
|
|
369
389
|
|
|
370
390
|
session.on('stream', (stream) => {
|
|
371
391
|
_h2Metrics.totalStreams++;
|
|
392
|
+
|
|
393
|
+
// #H9 — rapid-reset rate limit. Count new streams in a rolling 1s
|
|
394
|
+
// window per session; on breach send GOAWAY(ENHANCE_YOUR_CALM) and
|
|
395
|
+
// close the session so a flood cannot exhaust the worker.
|
|
396
|
+
var _now = Date.now();
|
|
397
|
+
if (typeof session._streamWindowStart === 'undefined' || (_now - session._streamWindowStart) >= 1000) {
|
|
398
|
+
session._streamWindowStart = _now;
|
|
399
|
+
session._streamWindowCount = 0;
|
|
400
|
+
}
|
|
401
|
+
session._streamWindowCount++;
|
|
402
|
+
if (session._streamWindowCount > _maxStreamsPerSec) {
|
|
403
|
+
_h2Metrics.rapidResetBlocked++;
|
|
404
|
+
console.warn('[ SERVER ] HTTP/2 rapid-reset rate limit exceeded — ' + session._streamWindowCount + ' streams in <1s (limit ' + _maxStreamsPerSec + '); sending GOAWAY + closing session');
|
|
405
|
+
session.goaway(http2.constants.NGHTTP2_ENHANCE_YOUR_CALM);
|
|
406
|
+
session.close();
|
|
407
|
+
// Deliberately return before registering the per-stream
|
|
408
|
+
// `rstCode` listener below: the session is being torn down,
|
|
409
|
+
// so the breaching stream needs no per-stream accounting.
|
|
410
|
+
// Breached streams are counted by `rapidResetBlocked`, not
|
|
411
|
+
// `rstCount` — the two metrics stay cleanly separated
|
|
412
|
+
// (proactive block vs. observed client RST_STREAM).
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
372
416
|
stream.on('rstCode', (code) => {
|
|
373
417
|
if (code !== 0) _h2Metrics.rstCount++;
|
|
374
418
|
});
|
|
@@ -630,7 +674,8 @@ function ServerEngineClass(options) {
|
|
|
630
674
|
activeSessions : server._h2Metrics.activeSessions,
|
|
631
675
|
totalStreams : server._h2Metrics.totalStreams,
|
|
632
676
|
goawayCount : server._h2Metrics.goawayCount,
|
|
633
|
-
rstCount : server._h2Metrics.rstCount
|
|
677
|
+
rstCount : server._h2Metrics.rstCount,
|
|
678
|
+
rapidResetBlocked : server._h2Metrics.rapidResetBlocked
|
|
634
679
|
};
|
|
635
680
|
}
|
|
636
681
|
const infoStatus = JSON.stringify(infoPayload);
|