gina 0.5.1-alpha.1 → 0.5.1-alpha.2
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/ROADMAP.md +16 -16
- package/framework/v0.5.1-alpha.2/VERSION +1 -0
- package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.js +48 -1
- package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/package.json +1 -1
- package/gna.js +4 -4
- package/package.json +3 -3
- package/script/check_roadmap_consistency.js +290 -0
- package/framework/v0.5.1-alpha.1/VERSION +0 -1
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/AUTHORS +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/LICENSE +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/html/static.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/config.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/content.encoding +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/gna.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/currency.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/mime.types +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/entity.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/template/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/router.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/server.express.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/server.isaac.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/server.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/status.codes +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/_gitignore +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/env.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/console.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/context.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/path.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/prototypes.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/task.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/text.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/build.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/async/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/async/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/build.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/build.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/config.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cron/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cron/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/generator/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/i18n/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/instrument/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/job/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/job/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/math/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/merge/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/merge/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/metrics/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/model.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/proc.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/build.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/secrets/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/session-store.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/shell.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/state.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/url/README.md +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/url/index.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/url/routing.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/uuid/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/validator.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/watcher/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-session/src/main.js +0 -0
package/ROADMAP.md
CHANGED
|
@@ -23,8 +23,8 @@ 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
|
-
| **
|
|
27
|
-
| **Q2 2026** | `0.5.0` ✅ | ESM entry points (dual CJS/ESM `exports` map) · Mixed template engines per bundle (extension-keyed `.njk` / `.swig` dispatch) · Nunjucks Inspector parity — the other items originally targeted here shipped earlier: structured logging (`0.4.5`), Alt-Svc (`0.4.2`), WebSocket over HTTP/2 (`0.4.7`), Inspector production auth (`0.4.
|
|
26
|
+
| **Q2 2026** | `0.4.0` ✅ | Couchbase v2 removal (BREAKING — SDK v2 connector + session store dropped) · HTTP/2 response trailers · async-job primitive · CSP per-response nonce · `secrets:scan` / `secrets:check` CLI · SQL column-level index coverage — of the items originally targeted here: AI agents (MCP) shipped `0.3.7`, ScyllaDB `0.3.11`, CLI Tier 2 `0.4.1`, the docs offline ZIP is live on the docs site, and the Advanced tutorial · website redesign · Bun investigation moved to `0.5.x` |
|
|
27
|
+
| **Q2 2026** | `0.5.0` ✅ | ESM entry points (dual CJS/ESM `exports` map) · Mixed template engines per bundle (extension-keyed `.njk` / `.swig` dispatch) · Nunjucks Inspector parity — the other items originally targeted here shipped earlier: structured logging (`0.4.5`), Alt-Svc (`0.4.2`), WebSocket over HTTP/2 (`0.4.7`), Inspector production auth (`0.4.0`) |
|
|
28
28
|
| **Q1 2027** | `0.5.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · CLI Tier 3 (project:move, framework:update, backup/restore, man pages) · Beemaster admin + visual translation editor |
|
|
29
29
|
| **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
|
|
30
30
|
|
|
@@ -66,18 +66,18 @@ Stub commands confirmed in source — handler files exist but are empty or comme
|
|
|
66
66
|
| ✅ | **`protocol:remove`** — Revert a bundle to the project's default protocol/scheme by removing its `settings.json` override (no shared `ports*.json` mutation), with `--dry-run` / `--force`. | `0.4.1-alpha.2` | 2026-05-31 |
|
|
67
67
|
| ✅ | **`minion:list`** — List the running bundle child-processes ("minions") of a project, or of every project, grouped by project. `--format=json` supported. | `0.4.1-alpha.2` | 2026-05-31 |
|
|
68
68
|
| ✅ | **`minion:kill`** — Reap a project's running bundle child-processes ("minions") — both pidfile-tracked and `ps`-discovered orphans — with a graceful SIGTERM/SIGKILL escalation and a `--dry-run` preview. | `0.4.1-alpha.2` | 2026-05-31 |
|
|
69
|
-
| 📋 | **`gina --status` / `-t`** — Top-level health check: print whether the framework daemon is running, its version, and active bundle count. Requires adding `--status`/`-t` entries to `aliases.json` and implementing `framework/status.js`. | `0.
|
|
69
|
+
| 📋 | **`gina --status` / `-t`** — Top-level health check: print whether the framework daemon is running, its version, and active bundle count. Requires adding `--status`/`-t` entries to `aliases.json` and implementing `framework/status.js`. | `0.5.x` | Q4 2026 |
|
|
70
70
|
| ✅ | **`bundle:copy` / `bundle:cp`** — Duplicate a bundle (source files + config) under a new name within the same project, with a word-boundary name rewrite, a fresh full protocol/scheme/env port matrix, and `--dry-run` / `--force`. | `0.4.1-alpha.2` | 2026-05-31 |
|
|
71
71
|
| ✅ | **`project:status`** — Show the running/stopped state of each bundle in a project with PID and port info. | `0.4.1-alpha.2` | 2026-05-30 |
|
|
72
72
|
|
|
73
|
-
### Tier 3 — `0.5.
|
|
73
|
+
### Tier 3 — `0.5.x`
|
|
74
74
|
|
|
75
75
|
| Status | Feature | Version | Target |
|
|
76
76
|
| --- | --- | --- | --- |
|
|
77
|
-
| 📋 | **`project:move`** — Relocate a project's source directory and update all `~/.gina/` registry entries to the new path. Handler is 0 lines. | `0.5.
|
|
78
|
-
| 📋 | **`framework:update`** — Self-update the installed Gina framework to the latest (or a specified) version without reinstalling via npm. Handler is 0 lines. | `0.5.
|
|
79
|
-
| 📋 | **`project:backup` / `project:restore`** — Archive a project's source, config, and data to a tarball (`backup`), and restore from it (`restore`). Documented in `project/help.txt` as support-only. No handler files exist. | `0.5.
|
|
80
|
-
| 📋 | **`framework:man` / `project:man` / `bundle:man`** — Inline CLI manual pages. Mentioned in `framework/help.txt` but no handler files exist for any group. | `0.5.
|
|
77
|
+
| 📋 | **`project:move`** — Relocate a project's source directory and update all `~/.gina/` registry entries to the new path. Handler is 0 lines. | `0.5.x` | Q1 2027 |
|
|
78
|
+
| 📋 | **`framework:update`** — Self-update the installed Gina framework to the latest (or a specified) version without reinstalling via npm. Handler is 0 lines. | `0.5.x` | Q1 2027 |
|
|
79
|
+
| 📋 | **`project:backup` / `project:restore`** — Archive a project's source, config, and data to a tarball (`backup`), and restore from it (`restore`). Documented in `project/help.txt` as support-only. No handler files exist. | `0.5.x` | Q1 2027 |
|
|
80
|
+
| 📋 | **`framework:man` / `project:man` / `bundle:man`** — Inline CLI manual pages. Mentioned in `framework/help.txt` but no handler files exist for any group. | `0.5.x` | Q1 2027 |
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
@@ -112,7 +112,7 @@ Stub commands confirmed in source — handler files exist but are empty or comme
|
|
|
112
112
|
| ✅ | **Explicit exports for global helpers** — `getContext`, `setContext`, `_`, `requireJSON` etc. available as explicit `require('gina/gna').getContext` imports alongside the existing global injection. Enables IDE navigation and static analysis. | `0.3.3-alpha.3` | 2026-04-09 |
|
|
113
113
|
| ✅ | **TypeScript declaration files** — `.d.ts` declarations for the public surface: `SuperController`, `EntitySuper`, connector config shapes, `routing.json` schema, `PathObject`, `uuid`, all config file interfaces, `GinaRequest`/`GinaResponse`. No TS migration of internals — just declarations for consumer projects. `package.json` wired with `"types"` and `"typesVersions"`. | `0.3.3-alpha.3` | 2026-04-09 |
|
|
114
114
|
| ✅ | **Auto-generated `types/gna.d.ts` from JSDoc** (#M9) — `script/generate_gna_types.js` reads the `GLOBAL_EXPORTS` inventory from the gna-exports unit test plus the JSDoc on `framework/v*/core/gna.js` and emits `types/gna.d.ts` with one entry per global export. Two npm scripts: `npm run types:gen` regenerates, `npm run types:check` exits non-zero if drifted. A `gna-types-drift.test.js` unit test re-runs the generator in memory on every test pass — the JSDoc on `core/gna.js` is the single source of truth. Closes the #M8 → #M9 loop and removes the hand-written declaration. | `0.3.7-alpha.2` | 2026-04-18 |
|
|
115
|
-
| 📋 | **`gina connector:audit [@project]`** — reads `connectors.json`, maps each declared connector to its npm peer package (`mysql2`, `pg`, `ioredis`, `couchbase`, `openai`, `@anthropic-ai/sdk`, etc.), and runs `npm audit --json` scoped to those packages in the project's `node_modules`. Reports CVEs with severity and fix availability. If `socket` is installed in the project, delegates to it for supply-chain analysis (malware, typosquatting, protestware) instead of `npm audit`. Exit code 1 on any high/critical finding — CI-friendly. Only audits packages actually declared in `connectors.json`, not the full dependency tree. | `0.
|
|
115
|
+
| 📋 | **`gina connector:audit [@project]`** — reads `connectors.json`, maps each declared connector to its npm peer package (`mysql2`, `pg`, `ioredis`, `couchbase`, `openai`, `@anthropic-ai/sdk`, etc.), and runs `npm audit --json` scoped to those packages in the project's `node_modules`. Reports CVEs with severity and fix availability. If `socket` is installed in the project, delegates to it for supply-chain analysis (malware, typosquatting, protestware) instead of `npm audit`. Exit code 1 on any high/critical finding — CI-friendly. Only audits packages actually declared in `connectors.json`, not the full dependency tree. | `0.5.x` | Q4 2026 |
|
|
116
116
|
|
|
117
117
|
### Phase 5 — Future
|
|
118
118
|
|
|
@@ -287,7 +287,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
|
|
|
287
287
|
| ✅ | **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. |
|
|
288
288
|
| ✅ | **Trailer support** — `stream.sendTrailers()` + `waitForTrailers: true` | `0.4.0` | 2026-05-22 | Opt-in HTTP/2 response trailers via `self.sendTrailers(fields)`. The render pipeline sets `waitForTrailers` and emits the trailing headers after the body (in the `wantTrailers` event), across all render delegates. Activated only when a controller calls `self.sendTrailers(fields)`; HTTP/1.1 and the no-trailers path are unchanged. For gRPC-style streaming (`grpc-status`) and content-integrity (`Digest`) use cases. |
|
|
289
289
|
| ✅ | **Alt-Svc header** — advertise HTTP/3 availability | `0.4.2` | 2026-06-02 | 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. |
|
|
290
|
-
| 📋 | **RFC 9218 Extensible Priorities** — read `Priority: u=N, i` request header | `0.5.
|
|
290
|
+
| 📋 | **RFC 9218 Extensible Priorities** — read `Priority: u=N, i` request header | `0.5.x` | 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. |
|
|
291
291
|
| ✅ | **WebSocket over HTTP/2** (RFC 8441 extended CONNECT) — opt-in via `http2Options.enableConnectProtocol` (default off; https and cleartext h2c HTTP/2 bundles). From `onInitialize`, `app.onWebSocket(path, handler)` registers per-path WebSocket handlers; accepted streams arrive as full sessions backed by a built-in dependency-free RFC 6455 codec (auto-pong, timed close handshake, UTF-8 + close-code validation, payload/fragment DoS caps, backpressure passthrough, graceful shutdown drain). Unknown paths are refused with 404, plain CONNECT keeps its 405, and default-off deployments are byte-identical. | `0.4.7` | 2026-06-11 |
|
|
292
292
|
|
|
293
293
|
---
|
|
@@ -325,7 +325,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
|
|
|
325
325
|
| --- | --- | --- | --- | --- |
|
|
326
326
|
| ✅ | **`NODE_COMPILE_CACHE` — V8 bytecode startup cache** | `0.2.0` | Q2 2026 | Node.js 22.8+ caches compiled V8 bytecode to disk. Set once at startup — 30–60% faster cold start on subsequent runs with zero code changes to user bundles. No-op on Node < 22.8, so safe to ship unconditionally. |
|
|
327
327
|
| ✅ | **Route radix trie — compile `routing.json` at startup** | `0.3.0-alpha.1` | 2026-04-01 | `lib/routing/src/radix.js` builds a segment-level trie once at startup. O(m) candidate lookup per request (m = segment count). `Set.has()` check skips non-candidates in the `for…in` loop. Internal change — no user-facing API change. |
|
|
328
|
-
| 📋 | **Bun runtime compatibility investigation** | `0.
|
|
328
|
+
| 📋 | **Bun runtime compatibility investigation** | `0.5.x` | Q4 2026 | Prototype Gina under Bun. Two blockers to verify: `require.cache` deletion (dev hot-reload) and `node:http2` completeness. If both pass, Bun gives 3–10x faster startup and meaningful throughput gains. Deliverable: a compatibility report. |
|
|
329
329
|
| ✅ | **V8 pointer compression support** | `0.2.0` | Q2 2026 | Node.js built with `--experimental-enable-pointer-compression` (e.g. [node-caged](https://github.com/platformatic/node-caged) or a custom build) delivers ~50% heap memory reduction across all pointer-heavy structures. Gina is pure JS — compatible out of the box. Adds: startup detection + `GINA_V8_POINTER_COMPRESSED` env var, Dockerfile guide with custom build recipe (full-icu + pointer compression), 4 GB ceiling documentation, N-API-only connector policy. |
|
|
330
330
|
|
|
331
331
|
---
|
|
@@ -370,10 +370,10 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
|
|
|
370
370
|
|
|
371
371
|
| Status | Feature | Version | Target |
|
|
372
372
|
| --- | --- | --- | --- |
|
|
373
|
-
| ✅ | **`services/src/inspector/` standalone bundle** — ~~Rename `services/src/toolbar/` to `services/src/inspector/`~~ (done). **Authenticated WebSocket transport shipped** (`0.4.3-alpha`): the standalone Inspector connects to a bundle's `/_gina/agent` over a WebSocket (`?transport=ws`) as well as SSE — key-authenticated outside dev mode, with an optional `inspector.agent.allowedOrigins` Origin allowlist; it falls back to SSE automatically if the socket can't open. The embedded SPA at `/_gina/inspector/` remains for quick dev-mode access. **Dev auto-start shipped** (`0.4.3-alpha`): a `gina service:start` command plus a dev-only `gna.js server.on('started')` hook auto-start the standalone Inspector via the daemon-free `gina-container` launcher (gated on dev mode + not-already-running; local-only — no-ops in a fresh install since `services/` ships in neither git nor npm). | `0.
|
|
373
|
+
| ✅ | **`services/src/inspector/` standalone bundle** — ~~Rename `services/src/toolbar/` to `services/src/inspector/`~~ (done). **Authenticated WebSocket transport shipped** (`0.4.3-alpha`): the standalone Inspector connects to a bundle's `/_gina/agent` over a WebSocket (`?transport=ws`) as well as SSE — key-authenticated outside dev mode, with an optional `inspector.agent.allowedOrigins` Origin allowlist; it falls back to SSE automatically if the socket can't open. The embedded SPA at `/_gina/inspector/` remains for quick dev-mode access. **Dev auto-start shipped** (`0.4.3-alpha`): a `gina service:start` command plus a dev-only `gna.js server.on('started')` hook auto-start the standalone Inspector via the daemon-free `gina-container` launcher (gated on dev mode + not-already-running; local-only — no-ops in a fresh install since `services/` ships in neither git nor npm). | `0.4.3` | 2026-06-02 |
|
|
374
374
|
| ✅ | **Agent endpoint — dev-mode SSE (`/_gina/agent`)** — Combined data + log SSE stream. CORS, server.js + server.isaac.js (HTTP/2), Inspector SPA `tryAgent()` with `?target=` param. Named events (`event: data`, `event: log`). Manual connect form on "No source" overlay. | `0.3.0` | 2026-04-05 |
|
|
375
|
-
| ✅ | **Agent endpoint — production auth** — **Authenticated `/_gina/agent` + production-safe toggle shipped via the existing SSE transport** (opt-in `inspector.agent.enabled` + key in `settings.json`, constant-time compare, `${secret:KEY}`-capable; key via the `x-gina-inspector-key` header or a `?key=` query param; dev stays open + keyless). Authenticates remote server-log streaming outside dev mode. **WebSocket transport completed** (`0.4.3-alpha`): the standalone Inspector now connects over the #INS8 WebSocket by default (`?transport=sse` forces SSE) with automatic SSE fallback; auth + prod-toggle contract unchanged. | `0.
|
|
376
|
-
| ✅ | **Toggleable instrumentation** — Runtime toggle for query + flow instrumentation independent of `NODE_ENV_IS_DEV`: a time-boxed, key-authenticated window (`POST /_gina/instrument`) runs capture in production over the authenticated `/_gina/agent` channel, without full dev mode. Opt-in via `inspector.instrumentation`; 3600s hard cap with auto-revert. **v1 shipped 2026-05-26** (JSON/XHR + cross-bundle egress); the server-rendered HTML-page-render egress follow-up also shipped 2026-05-26 (a separate HTML-free emit path wired per render delegate). | `0.
|
|
375
|
+
| ✅ | **Agent endpoint — production auth** — **Authenticated `/_gina/agent` + production-safe toggle shipped via the existing SSE transport** (opt-in `inspector.agent.enabled` + key in `settings.json`, constant-time compare, `${secret:KEY}`-capable; key via the `x-gina-inspector-key` header or a `?key=` query param; dev stays open + keyless). Authenticates remote server-log streaming outside dev mode. **WebSocket transport completed** (`0.4.3-alpha`): the standalone Inspector now connects over the #INS8 WebSocket by default (`?transport=sse` forces SSE) with automatic SSE fallback; auth + prod-toggle contract unchanged. | `0.4.0` | 2026-06-02 |
|
|
376
|
+
| ✅ | **Toggleable instrumentation** — Runtime toggle for query + flow instrumentation independent of `NODE_ENV_IS_DEV`: a time-boxed, key-authenticated window (`POST /_gina/instrument`) runs capture in production over the authenticated `/_gina/agent` channel, without full dev mode. Opt-in via `inspector.instrumentation`; 3600s hard cap with auto-revert. **v1 shipped 2026-05-26** (JSON/XHR + cross-bundle egress); the server-rendered HTML-page-render egress follow-up also shipped 2026-05-26 (a separate HTML-free emit path wired per render delegate). | `0.4.0` | 2026-05-26 |
|
|
377
377
|
| 📋 | **Multi-bundle dashboard** — Discover all running bundles via `ports.json`, connect to each agent. Full-stack request tracing across bundle boundaries. | post-1.0.0 | — |
|
|
378
378
|
| 📋 | **Browser extension companion** — Chrome/Firefox DevTools panel. Thin UI shell connecting to the standalone Inspector via WebSocket. Optional — not a replacement. | post-1.0.0 | — |
|
|
379
379
|
|
|
@@ -387,7 +387,7 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
|
|
|
387
387
|
| ✅ | **Beginner — Notes API** — Your first REST API: scaffold a project, define 3 routes in `routing.json`, write synchronous controller actions, read `req.post` / `req.params`, return JSON with `renderJSON()`, handle errors with `throwError()`. In-memory store — no database needed. | ~15 min | `0.3.0` | 2026-04-01 |
|
|
388
388
|
| ✅ | **Tutorial locale detection** — `LocaleSettings` React component detects the reader's locale and timezone via `navigator.language` + `Intl` APIs and pre-fills the `settings.json` scaffold example. Inserted after the scaffold step in both tutorials. Falls back to `en_US`. | — | `0.3.0` | 2026-04-06 |
|
|
389
389
|
| ✅ | **Intermediate — Link Shortener** — SQLite ORM connector, async controller actions, `render()` + `renderJSON()` in same bundle, HTTP 302 redirect, route `requirements` guard. Includes downloadable project ZIP. | ~30 min | `0.3.0` | 2026-04-01 |
|
|
390
|
-
| 📋 | **Advanced** — Full production project: authentication, scoped data isolation, async/await, HTTP/2, structured logging, Docker/K8s deployment. Starts from the intermediate tutorial's finished state. | ~60 min | `0.
|
|
390
|
+
| 📋 | **Advanced** — Full production project: authentication, scoped data isolation, async/await, HTTP/2, structured logging, Docker/K8s deployment. Starts from the intermediate tutorial's finished state. | ~60 min | `0.5.x` | Q4 2026 |
|
|
391
391
|
|
|
392
392
|
---
|
|
393
393
|
|
|
@@ -395,7 +395,7 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
|
|
|
395
395
|
|
|
396
396
|
| Status | Feature | Version | Target |
|
|
397
397
|
| --- | --- | --- | --- |
|
|
398
|
-
| 📋 | **Official website redesign + docs integration** — Refactor gina.io as a proper project homepage (landing page, feature highlights, showcase) with the documentation fully integrated. Single coherent web presence. Prerequisite: tutorials complete. | `0.
|
|
398
|
+
| 📋 | **Official website redesign + docs integration** — Refactor gina.io as a proper project homepage (landing page, feature highlights, showcase) with the documentation fully integrated. Single coherent web presence. Prerequisite: tutorials complete. | `0.5.x` | Q4 2026 |
|
|
399
399
|
| ✅ | **Docs offline ZIP** — One-click download of the complete gina.io documentation as a static HTML ZIP archive. Generated at deploy time by the Docusaurus build pipeline — no server-side logic required. Targeted at users in regions with limited or expensive internet access (offline-first for the African market). | `0.4.0` | 2026-05-22 |
|
|
400
400
|
| ✅ | **Security & CVE compliance page** — Dedicated docs page listing the HTTP/2 CVEs addressed by Gina and the Node.js version required for each mitigation. Covers CVE-2023-44487 (Rapid Reset), CVE-2024-27316 / CVE-2024-27983 (CONTINUATION flood), CVE-2019-9514 (RST flood), HPACK bomb, and server push abuse. Docs only — no code changes. | `0.3.0-alpha.1` | 2026-04-01 |
|
|
401
401
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.5.1-alpha.2
|
|
@@ -161,12 +161,27 @@ function SuperController(options) {
|
|
|
161
161
|
* Returns `true` when response headers have already been sent.
|
|
162
162
|
* Checks both HTTP/2 stream and HTTP/1.1 `res.headersSent`.
|
|
163
163
|
*
|
|
164
|
+
* Also returns `true` when the per-request response refs were already
|
|
165
|
+
* released by a terminal exit (`local.res` is null) — a released response
|
|
166
|
+
* can no longer be written to, so callers' `!headersSent()` guards no-op
|
|
167
|
+
* instead of dereferencing null (#B31).
|
|
168
|
+
*
|
|
164
169
|
* @inner
|
|
165
170
|
* @param {object} [res] - Defaults to `local.res`
|
|
166
171
|
* @returns {boolean}
|
|
167
172
|
*/
|
|
168
173
|
var headersSent = function(res) {
|
|
169
174
|
var _res = ( typeof(res) != 'undefined' ) ? res : local.res;
|
|
175
|
+
// #B31 — the per-request response refs may already be released (the
|
|
176
|
+
// terminal-exit triplet: redirect()/renderTEXT()/throwError() and the
|
|
177
|
+
// render delegates set local.res = null once the response is out). A
|
|
178
|
+
// released response cannot be written to anymore, so report it as
|
|
179
|
+
// "sent": callers' existing !headersSent() guards then no-op instead
|
|
180
|
+
// of throwing `Cannot read properties of null (reading 'stream')` —
|
|
181
|
+
// an uncaughtException that proc.js escalates to SIGTERM (bundle kill).
|
|
182
|
+
if ( !_res ) {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
170
185
|
if (
|
|
171
186
|
typeof(_res.stream) != 'undefined'
|
|
172
187
|
&& typeof(_res.stream.headersSent) != 'undefined'
|
|
@@ -5266,11 +5281,17 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
5266
5281
|
* - `throwError(code, err)` — 2-arg form: HTTP status + Error|string
|
|
5267
5282
|
* - `throwError(res, code, msg)` — internal 3-arg form used by the router
|
|
5268
5283
|
*
|
|
5284
|
+
* Late calls: when throwError fires after a response terminal exit has
|
|
5285
|
+
* already released the per-request refs (`local.res` is null — e.g. an
|
|
5286
|
+
* entity/query callback resuming after a redirect() sent its 301), the
|
|
5287
|
+
* call is logged and ignored instead of crashing the bundle (#B31).
|
|
5288
|
+
*
|
|
5269
5289
|
* @param {object} [ res ]
|
|
5270
5290
|
* @param {number} code
|
|
5271
5291
|
* @param {string} msg
|
|
5272
5292
|
*
|
|
5273
|
-
* @returns {void}
|
|
5293
|
+
* @returns {void|boolean} `false` when the call is ignored (nested
|
|
5294
|
+
* rendering stack, or a late call on a released response)
|
|
5274
5295
|
* */
|
|
5275
5296
|
this.throwError = function(res, code, msg) {
|
|
5276
5297
|
|
|
@@ -5388,6 +5409,32 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
5388
5409
|
}
|
|
5389
5410
|
|
|
5390
5411
|
var responseHeaders = null;
|
|
5412
|
+
// #B31 — a late throwError (an entity/query callback, timer or catch
|
|
5413
|
+
// handler resuming after the action already responded) can fire AFTER
|
|
5414
|
+
// a terminal exit (redirect()/render*()/a previous throwError) released
|
|
5415
|
+
// local.req/res/next. Every call shape above has normalized `res` to
|
|
5416
|
+
// local.res by this point, so a null `res` means the response is gone:
|
|
5417
|
+
// reading getHeaders off it threw `Cannot read properties of null
|
|
5418
|
+
// (reading 'getHeaders')` — an uncaughtException that proc.js escalates
|
|
5419
|
+
// to SIGTERM, killing the bundle and every in-flight request with it
|
|
5420
|
+
// (same crash class as #B30: fix the throw site, never widen the
|
|
5421
|
+
// uncaughtException net). Log the swallowed error so the late failure
|
|
5422
|
+
// stays observable, then no-op — same return contract as the
|
|
5423
|
+
// renderingStack guard above.
|
|
5424
|
+
if ( !res ) {
|
|
5425
|
+
res = local.res;
|
|
5426
|
+
}
|
|
5427
|
+
if ( !res ) {
|
|
5428
|
+
var _lateError = errorObject || msg || code;
|
|
5429
|
+
var _lateErrorStr = '';
|
|
5430
|
+
try {
|
|
5431
|
+
_lateErrorStr = ( _lateError && typeof(_lateError) == 'object' ) ? JSON.stringify(_lateError) : String(_lateError || '');
|
|
5432
|
+
} catch (_lateJsonErr) {
|
|
5433
|
+
_lateErrorStr = String(_lateError);
|
|
5434
|
+
}
|
|
5435
|
+
console.warn('[ Controller ] throwError() called after the response was released — ignoring late error: '+ _lateErrorStr);
|
|
5436
|
+
return false;
|
|
5437
|
+
}
|
|
5391
5438
|
if ( typeof(res.getHeaders) == 'undefined' && typeof(res.stream) != 'undefined' ) {
|
|
5392
5439
|
responseHeaders = res.stream.sentHeader;
|
|
5393
5440
|
} else {
|
package/gna.js
CHANGED
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
'use strict';
|
|
16
16
|
|
|
17
17
|
// Framework core — the main gna module (lifecycle hooks, lib, etc.)
|
|
18
|
-
var _gna = require('./framework/v0.5.1-alpha.
|
|
18
|
+
var _gna = require('./framework/v0.5.1-alpha.2/core/gna');
|
|
19
19
|
|
|
20
20
|
// SuperController and EntitySuper — loaded from their source modules
|
|
21
|
-
var SuperController = require('./framework/v0.5.1-alpha.
|
|
22
|
-
var EntitySuper = require('./framework/v0.5.1-alpha.
|
|
21
|
+
var SuperController = require('./framework/v0.5.1-alpha.2/core/controller');
|
|
22
|
+
var EntitySuper = require('./framework/v0.5.1-alpha.2/core/model/entity');
|
|
23
23
|
|
|
24
24
|
// uuid — from the lib registry
|
|
25
|
-
var uuid = require('./framework/v0.5.1-alpha.
|
|
25
|
+
var uuid = require('./framework/v0.5.1-alpha.2/lib/uuid');
|
|
26
26
|
|
|
27
27
|
module.exports = {
|
|
28
28
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gina",
|
|
3
|
-
"version": "0.5.1-alpha.
|
|
3
|
+
"version": "0.5.1-alpha.2",
|
|
4
4
|
"description": "Node.js MVC framework with built-in HTTP/2, multi-bundle architecture, and scope-based data isolation — no Express dependency",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nodejs",
|
|
@@ -72,12 +72,12 @@
|
|
|
72
72
|
"gina-container": "bin/gina-container",
|
|
73
73
|
"gina-init": "bin/gina-init"
|
|
74
74
|
},
|
|
75
|
-
"main": "./framework/v0.5.1-alpha.
|
|
75
|
+
"main": "./framework/v0.5.1-alpha.2/core/gna",
|
|
76
76
|
"exports": {
|
|
77
77
|
".": {
|
|
78
78
|
"types": "./types/index.d.ts",
|
|
79
79
|
"import": "./index.mjs",
|
|
80
|
-
"require": "./framework/v0.5.1-alpha.
|
|
80
|
+
"require": "./framework/v0.5.1-alpha.2/core/gna.js"
|
|
81
81
|
},
|
|
82
82
|
"./gna": {
|
|
83
83
|
"types": "./types/gna.d.ts",
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* This file is part of the gina package.
|
|
5
|
+
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
6
|
+
*
|
|
7
|
+
* For the full copyright and license information, please view the LICENSE
|
|
8
|
+
* file that was distributed with this source code.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @file script/check_roadmap_consistency.js
|
|
13
|
+
*
|
|
14
|
+
* Pre-publish guard that asserts ROADMAP.md does not contradict the
|
|
15
|
+
* stable version being released. Wired into prepare_version.js as
|
|
16
|
+
* `self.checkRoadmapConsistency`, between `checkReadmeFreshness` and
|
|
17
|
+
* `checkDefFrameworkConsistency`. Also runnable standalone:
|
|
18
|
+
*
|
|
19
|
+
* node script/check_roadmap_consistency.js
|
|
20
|
+
*
|
|
21
|
+
* The check fires on stable publishes only — alpha cuts are intermediate
|
|
22
|
+
* and never make a roadmap row stale (rows reference stable versions or
|
|
23
|
+
* `X.Y.x` buckets). The skip is signalled via the `npm_config_tag` env
|
|
24
|
+
* var or `--tag=alpha` on the argv, mirroring check_readme_freshness.js.
|
|
25
|
+
*
|
|
26
|
+
* Three rules, scanned over status rows (lines starting `| 📋 |` or
|
|
27
|
+
* `| ✅ |`) and exact backtick-wrapped version tokens:
|
|
28
|
+
*
|
|
29
|
+
* 1. ABORT — an open (📋) row references the exact version being
|
|
30
|
+
* released. The release is about to ship without that item, so the
|
|
31
|
+
* row becomes a lie the moment the tag lands. Re-target the row
|
|
32
|
+
* (e.g. to the `X.Y.x` bucket) or reword the prose reference.
|
|
33
|
+
* Bucket tokens (`0.5.x`) never trip this rule by design — they
|
|
34
|
+
* are the sanctioned re-target form.
|
|
35
|
+
*
|
|
36
|
+
* 2. ABORT — a done (✅) row references a version NEWER than the one
|
|
37
|
+
* being released. A feature cannot have shipped in a version that
|
|
38
|
+
* does not exist yet; this catches target-version labels left on
|
|
39
|
+
* rows that were flipped to ✅ before the cut. Only tokens sharing
|
|
40
|
+
* the released version's MAJOR are compared, so dependency
|
|
41
|
+
* versions in prose (e.g. a `2.x` template-engine floor or a
|
|
42
|
+
* two-digit uuid major) cannot false-positive.
|
|
43
|
+
*
|
|
44
|
+
* 3. WARN — no timeline row marks the released version ✅
|
|
45
|
+
* (`` `X.Y.Z` ✅ ``). The timeline is coarse narrative, so this is
|
|
46
|
+
* advisory only and never aborts.
|
|
47
|
+
*
|
|
48
|
+
* Why this gate exists: a roadmap-accuracy sweep (2026-06-12) found two
|
|
49
|
+
* recurring drift classes that had survived multiple cuts — ✅ rows
|
|
50
|
+
* carrying their old TARGET version instead of the actual ship version
|
|
51
|
+
* (readers were told a feature needed `0.5.0` when `0.4.0` sufficed),
|
|
52
|
+
* and 📋 rows still targeting versions that had shipped without them
|
|
53
|
+
* (ten rows across `0.4.0`/`0.5.0`). Both are facts that only become
|
|
54
|
+
* checkable at cut time, and manual checklist steps decay (see the
|
|
55
|
+
* README-freshness precedent). This enforces them automatically.
|
|
56
|
+
*
|
|
57
|
+
* Failure mode: fail-closed on rules 1-2 (abort the publish with the
|
|
58
|
+
* offending rows listed). A missing or unreadable ROADMAP.md also
|
|
59
|
+
* aborts — investigate rather than publish with unverified state.
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
'use strict';
|
|
63
|
+
|
|
64
|
+
var fs = require('fs');
|
|
65
|
+
var nodePath = require('path');
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Regex for an exact backtick-wrapped version token: `X.Y.Z` with an
|
|
69
|
+
* optional `-alpha.N` suffix. Deliberately does NOT match:
|
|
70
|
+
* - bucket tokens (`0.5.x`) — the sanctioned open-row re-target form;
|
|
71
|
+
* - range-prefixed tokens (`^2.3.0`, `~1.2.0`) — dependency floors;
|
|
72
|
+
* - bare (un-backticked) versions in prose — too noisy to police.
|
|
73
|
+
*
|
|
74
|
+
* @constant {RegExp}
|
|
75
|
+
*/
|
|
76
|
+
var VERSION_TOKEN_RE = /`(\d+\.\d+\.\d+(?:-alpha\.\d+)?)`/g;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Regex matching a status row of any roadmap table — a markdown table
|
|
80
|
+
* line whose first cell is the 📋 (open) or ✅ (done) marker.
|
|
81
|
+
*
|
|
82
|
+
* @constant {RegExp}
|
|
83
|
+
*/
|
|
84
|
+
var STATUS_ROW_RE = /^\|\s*(📋|✅)\s*\|/;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Extract every exact backtick-wrapped version token from a line.
|
|
88
|
+
*
|
|
89
|
+
* @param {string} line one roadmap line
|
|
90
|
+
* @returns {string[]} version strings without backticks (may be empty)
|
|
91
|
+
* @example
|
|
92
|
+
* extractVersionTokens('| ✅ | x | `0.4.0` | 2026-05-29 |'); // ['0.4.0']
|
|
93
|
+
* extractVersionTokens('floor `^2.3.0` and bucket `0.5.x`'); // []
|
|
94
|
+
*/
|
|
95
|
+
function extractVersionTokens(line) {
|
|
96
|
+
var out = [];
|
|
97
|
+
var m;
|
|
98
|
+
VERSION_TOKEN_RE.lastIndex = 0;
|
|
99
|
+
while ((m = VERSION_TOKEN_RE.exec(line || '')) !== null) {
|
|
100
|
+
out.push(m[1]);
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Compare two version strings of the `X.Y.Z[-alpha.N]` shape.
|
|
107
|
+
* A prerelease sorts BEFORE its stable (`0.5.0-alpha.2` < `0.5.0`).
|
|
108
|
+
*
|
|
109
|
+
* @param {string} a
|
|
110
|
+
* @param {string} b
|
|
111
|
+
* @returns {number} -1 when a < b, 0 when equal, 1 when a > b
|
|
112
|
+
* @example
|
|
113
|
+
* compareVersions('0.5.1', '0.5.0'); // 1
|
|
114
|
+
* compareVersions('0.5.0-alpha.1', '0.5.0'); // -1
|
|
115
|
+
*/
|
|
116
|
+
function compareVersions(a, b) {
|
|
117
|
+
var pa = String(a).split('-');
|
|
118
|
+
var pb = String(b).split('-');
|
|
119
|
+
var na = pa[0].split('.').map(Number);
|
|
120
|
+
var nb = pb[0].split('.').map(Number);
|
|
121
|
+
for (var i = 0; i < 3; i++) {
|
|
122
|
+
if ((na[i] || 0) > (nb[i] || 0)) return 1;
|
|
123
|
+
if ((na[i] || 0) < (nb[i] || 0)) return -1;
|
|
124
|
+
}
|
|
125
|
+
// numeric cores equal — a bare version outranks its prereleases
|
|
126
|
+
if (!pa[1] && pb[1]) return 1;
|
|
127
|
+
if (pa[1] && !pb[1]) return -1;
|
|
128
|
+
if (!pa[1] && !pb[1]) return 0;
|
|
129
|
+
var aa = Number((pa[1].match(/\d+$/) || [0])[0]);
|
|
130
|
+
var ab = Number((pb[1].match(/\d+$/) || [0])[0]);
|
|
131
|
+
if (aa > ab) return 1;
|
|
132
|
+
if (aa < ab) return -1;
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Parse the roadmap content into status rows.
|
|
138
|
+
*
|
|
139
|
+
* @param {string} content full ROADMAP.md content
|
|
140
|
+
* @returns {Array<{status: string, lineNo: number, line: string, versions: string[]}>}
|
|
141
|
+
*/
|
|
142
|
+
function parseStatusRows(content) {
|
|
143
|
+
var rows = [];
|
|
144
|
+
var lines = String(content || '').split('\n');
|
|
145
|
+
for (var i = 0; i < lines.length; i++) {
|
|
146
|
+
var m = lines[i].match(STATUS_ROW_RE);
|
|
147
|
+
if (!m) continue;
|
|
148
|
+
rows.push({
|
|
149
|
+
status: m[1],
|
|
150
|
+
lineNo: i + 1,
|
|
151
|
+
line: lines[i],
|
|
152
|
+
versions: extractVersionTokens(lines[i])
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return rows;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Run the full consistency check over a roadmap content string.
|
|
160
|
+
* Pure function — callers supply the content and the targeted version,
|
|
161
|
+
* so tests need no filesystem.
|
|
162
|
+
*
|
|
163
|
+
* @param {object} opts
|
|
164
|
+
* @param {string} opts.roadmapContent full ROADMAP.md content
|
|
165
|
+
* @param {string} opts.targetedVersion stable version being released (e.g. "0.5.0")
|
|
166
|
+
* @returns {{ok: boolean, failures: Array<{rule: string, lineNo: number, excerpt: string}>, warnings: string[]}}
|
|
167
|
+
*/
|
|
168
|
+
function check(opts) {
|
|
169
|
+
opts = opts || {};
|
|
170
|
+
var content = opts.roadmapContent;
|
|
171
|
+
var version = opts.targetedVersion;
|
|
172
|
+
var failures = [];
|
|
173
|
+
var warnings = [];
|
|
174
|
+
var targetMajor = Number(String(version).split('.')[0]);
|
|
175
|
+
|
|
176
|
+
var rows = parseStatusRows(content);
|
|
177
|
+
for (var i = 0; i < rows.length; i++) {
|
|
178
|
+
var row = rows[i];
|
|
179
|
+
for (var v = 0; v < row.versions.length; v++) {
|
|
180
|
+
var token = row.versions[v];
|
|
181
|
+
if (row.status === '📋' && token === version) {
|
|
182
|
+
failures.push({
|
|
183
|
+
rule: 'open-row-references-released-version',
|
|
184
|
+
lineNo: row.lineNo,
|
|
185
|
+
excerpt: row.line.substring(0, 120)
|
|
186
|
+
});
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
if (row.status === '✅'
|
|
190
|
+
&& Number(token.split('.')[0]) === targetMajor
|
|
191
|
+
&& compareVersions(token, version) > 0
|
|
192
|
+
) {
|
|
193
|
+
failures.push({
|
|
194
|
+
rule: 'done-row-references-future-version',
|
|
195
|
+
lineNo: row.lineNo,
|
|
196
|
+
excerpt: row.line.substring(0, 120)
|
|
197
|
+
});
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// Rule 3 (warn-only): a timeline row should mark the release — `X.Y.Z` ✅
|
|
204
|
+
var timelineMark = new RegExp('`' + String(version).replace(/\./g, '\\.') + '`\\s*✅');
|
|
205
|
+
if (!timelineMark.test(String(content || ''))) {
|
|
206
|
+
warnings.push('no timeline row marks `' + version + '` as released (`' + version + '` ✅) — coarse narrative only, not blocking');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return { ok: failures.length === 0, failures: failures, warnings: warnings };
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* True when this invocation is part of an alpha publish. Mirrors
|
|
214
|
+
* check_readme_freshness.js — `npm_config_tag` env var with an argv
|
|
215
|
+
* fallback for direct script invocations.
|
|
216
|
+
*
|
|
217
|
+
* @returns {boolean}
|
|
218
|
+
*/
|
|
219
|
+
function isAlphaPublish() {
|
|
220
|
+
if (process.env.npm_config_tag === 'alpha') return true;
|
|
221
|
+
var argv = process.argv || [];
|
|
222
|
+
for (var i = 0; i < argv.length; i++) {
|
|
223
|
+
if (argv[i] === '--tag=alpha' || argv[i] === '--alpha') return true;
|
|
224
|
+
if (argv[i] === '--tag' && argv[i + 1] === 'alpha') return true;
|
|
225
|
+
}
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* CLI entry. Reads ROADMAP.md and the targeted version from the repo at
|
|
231
|
+
* cwd (or the path given as the first positional argv). Returns 0 on
|
|
232
|
+
* success, 1 on failure.
|
|
233
|
+
*
|
|
234
|
+
* @returns {number} exit code
|
|
235
|
+
*/
|
|
236
|
+
function main() {
|
|
237
|
+
if (isAlphaPublish()) {
|
|
238
|
+
console.log('[roadmap] Alpha publish — skipping roadmap consistency gate.');
|
|
239
|
+
return 0;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
var root = process.argv[2] && process.argv[2].indexOf('--') !== 0
|
|
243
|
+
? process.argv[2]
|
|
244
|
+
: process.cwd();
|
|
245
|
+
|
|
246
|
+
var content, version;
|
|
247
|
+
try {
|
|
248
|
+
content = fs.readFileSync(nodePath.join(root, 'ROADMAP.md'), 'utf8');
|
|
249
|
+
version = JSON.parse(fs.readFileSync(nodePath.join(root, 'package.json'), 'utf8')).version;
|
|
250
|
+
} catch (err) {
|
|
251
|
+
console.error('[roadmap] ERROR: could not read ROADMAP.md / package.json: ' + (err.message || err));
|
|
252
|
+
return 1;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
var result = check({ roadmapContent: content, targetedVersion: version });
|
|
256
|
+
|
|
257
|
+
for (var w = 0; w < result.warnings.length; w++) {
|
|
258
|
+
console.warn('[roadmap] WARN: ' + result.warnings[w]);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
if (result.ok) {
|
|
262
|
+
console.log('[roadmap] OK: ROADMAP.md is consistent with releasing ' + version + '.');
|
|
263
|
+
return 0;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
console.error('[roadmap] ERROR: ROADMAP.md contradicts releasing ' + version + ' — aborting publish.');
|
|
267
|
+
for (var f = 0; f < result.failures.length; f++) {
|
|
268
|
+
var fail = result.failures[f];
|
|
269
|
+
console.error(' [' + fail.rule + '] line ' + fail.lineNo + ': ' + fail.excerpt);
|
|
270
|
+
}
|
|
271
|
+
console.error('');
|
|
272
|
+
console.error(' Fix shape:');
|
|
273
|
+
console.error(' - open (📋) row naming ' + version + ': re-target it (e.g. to the `X.Y.x` bucket) or reword the reference;');
|
|
274
|
+
console.error(' - done (✅) row naming a version newer than ' + version + ': stamp the actual ship version.');
|
|
275
|
+
console.error(' Then commit on develop and re-run npm publish.');
|
|
276
|
+
return 1;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
module.exports = {
|
|
280
|
+
extractVersionTokens: extractVersionTokens,
|
|
281
|
+
compareVersions: compareVersions,
|
|
282
|
+
parseStatusRows: parseStatusRows,
|
|
283
|
+
check: check,
|
|
284
|
+
isAlphaPublish: isAlphaPublish,
|
|
285
|
+
main: main
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
if (require.main === module) {
|
|
289
|
+
process.exit(main());
|
|
290
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.5.1-alpha.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/android-chrome-192x192.png
RENAMED
|
File without changes
|
/package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/android-chrome-512x512.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|