gina 0.6.33 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/CONVENTIONS.md +1 -1
- package/README.md +61 -79
- package/ROADMAP.md +21 -16
- package/SECURITY.md +37 -0
- package/bin/gina +11 -7
- package/framework/v0.7.0/VERSION +1 -0
- package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.js +124 -90
- package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js +720 -0
- package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.33 → v0.7.0}/core/config.js +15 -0
- package/framework/v0.7.0/core/config.requirements-anchor.js +218 -0
- package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.js +101 -7
- package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-swig-async.js +7 -3
- package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-swig.js +53 -13
- package/framework/{v0.6.33 → v0.7.0}/core/gna.js +16 -3
- package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/src/form-validator.js +74 -16
- package/framework/{v0.6.33 → v0.7.0}/core/server.express.js +143 -10
- package/framework/{v0.6.33 → v0.7.0}/core/server.isaac.js +6 -1
- package/framework/{v0.6.33 → v0.7.0}/core/server.js +240 -255
- package/framework/v0.7.0/core/server.route-candidates.js +326 -0
- package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/connectors.json +1 -1
- package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/settings.json +6 -0
- package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/controllers/setup.js +9 -2
- package/framework/{v0.6.33 → v0.7.0}/helpers/path.js +36 -6
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/restart.js +100 -31
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/list.js +20 -2
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/add.js +34 -7
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/set.js +4 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/unset.js +4 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/init.js +76 -19
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/helper.js +16 -4
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/list.js +13 -4
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/reset.js +28 -7
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/add.js +63 -20
- package/framework/v0.7.0/lib/cmd/project/rename.js +285 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/set.js +3 -0
- package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/mq/listener.js +20 -5
- package/framework/{v0.6.33 → v0.7.0}/lib/routing/src/main.js +48 -71
- package/framework/{v0.6.33 → v0.7.0}/lib/swig-filters/src/main.js +85 -0
- package/framework/{v0.6.33 → v0.7.0}/package.json +1 -1
- package/gna.js +5 -4
- package/llms.txt +36 -34
- package/package.json +4 -4
- package/schema/routing.json +2 -2
- package/schema/settings.json +3 -3
- package/script/generate_gna_types.js +1 -1
- package/script/post_install.js +100 -26
- package/script/pre_install.js +49 -8
- package/types/globals.d.ts +3 -1
- package/types/gna.d.ts +8 -2
- package/types/index.d.ts +1 -0
- package/utils/helper.js +60 -10
- package/framework/v0.6.33/VERSION +0 -1
- package/framework/v0.6.33/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -721
- package/framework/v0.6.33/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.33/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.6.33/lib/cmd/project/rename.js +0 -199
- package/framework/v0.6.33/lib/routing/src/radix.js +0 -114
- /package/framework/{v0.6.33 → v0.7.0}/AUTHORS +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/content.encoding +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/controller.render-xml.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/inline-script.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/locales/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/mime.types +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/entity.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/router.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/server.isaac.rapid-reset.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/status.codes +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/console.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/context.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/task.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/helpers/text.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/async/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/inc/name.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/inc/name.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/conf-view/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/conf-view/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/config.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/duration/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/duration/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/idempotency/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/idempotency/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/job/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/job-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/math/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/message-validator/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/message-validator/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/model.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/money/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/money/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/multipart/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/multipart/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/priority/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/priority/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/proc.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/push/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/security-headers-emitter/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/security-headers-emitter/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/session-lifetime/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/session-lifetime/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/session-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/shell.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/sri/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/sri/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/state.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/url/README.md +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/url/index.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/validator.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.33 → v0.7.0}/lib/ws-session/src/main.js +0 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* Route-candidate index for the cold routing path of `server.js` (#P46).
|
|
4
|
+
*
|
|
5
|
+
* `_handleDispatch` matches a request by walking the bundle's routing table in
|
|
6
|
+
* declaration order and running `lib/routing`'s `compareUrls` on each rule: a cold
|
|
7
|
+
* match costs about 1.1 µs per rule scanned, and a request no rule matches pays for
|
|
8
|
+
* the whole table (≈ 440 µs at 380 rules, measured 2026-09-25). This module answers,
|
|
9
|
+
* for one request, the SET of rule names that could match it; the loop skips every
|
|
10
|
+
* other rule. The loop, its order and every per-rule check are unchanged, so the
|
|
11
|
+
* first match in declaration order still wins.
|
|
12
|
+
*
|
|
13
|
+
* The set is a SUPERSET of the rules the loop can accept, never a subset:
|
|
14
|
+
*
|
|
15
|
+
* - a URL variant is split on `,` exactly as `compareUrls` splits it (untrimmed);
|
|
16
|
+
* - a segment holding a `:` ANYWHERE is a parameter (`hasParams` in lib/routing
|
|
17
|
+
* tests `/\:/`), so an inline parameter such as `page:number` is one;
|
|
18
|
+
* - a static segment must equal the request's segment exactly, as `parseRouting`
|
|
19
|
+
* compares it;
|
|
20
|
+
* - the loop's own equality clause (`pathname == routing[name].url`) compares the
|
|
21
|
+
* RAW pathname with the WHOLE raw url string, so every rule is also indexed under
|
|
22
|
+
* its raw url and looked up with the raw pathname;
|
|
23
|
+
* - a rule the path index cannot model is evaluated for every request (`always`):
|
|
24
|
+
* one declaring two or more requirements that are not bound as a whole `:key`
|
|
25
|
+
* segment (for GET and DELETE, `parseRouting` writes each such request key over
|
|
26
|
+
* the compared segments from index 0, so two or more replace real path segments),
|
|
27
|
+
* one variant with a requirement of that kind that does not start with `/` (its
|
|
28
|
+
* index 0 is a real segment), a variant with surrounding whitespace, `?` or `#`,
|
|
29
|
+
* and a url that is not a string (the loop still evaluates it; `compareUrls`
|
|
30
|
+
* throws on it and the loop answers 500, which stays so).
|
|
31
|
+
*
|
|
32
|
+
* `lookup()` returns `null` — "no filter, scan every rule", today's behaviour — for
|
|
33
|
+
* a path the index does not model: one that does not start with `/`, holds `?` or
|
|
34
|
+
* `#` (express keeps the query in the pathname), or has an empty segment after the
|
|
35
|
+
* leading `/` (`/`, a trailing `/`, `//`: a parameter whose requirement accepts `''`
|
|
36
|
+
* can match an empty segment, and these paths are few and meet the warm route cache
|
|
37
|
+
* after their first request).
|
|
38
|
+
*
|
|
39
|
+
* A rule skipped by the index no longer runs `compareUrls`, so two things it used to
|
|
40
|
+
* do stop: its `validator::` requirements no longer run for that request (a throwing
|
|
41
|
+
* validator on a rule that cannot match the URL no longer answers 500), and it no
|
|
42
|
+
* longer leaves captured values in `req.params` / the method bag when no rule matches
|
|
43
|
+
* (visible only to a custom error page).
|
|
44
|
+
*
|
|
45
|
+
* The index is built once per routing table object and bundle (a `WeakMap`), from the
|
|
46
|
+
* table `config.getRouting()` returns. Nothing adds or removes a rule in that table
|
|
47
|
+
* after boot: the per-request writes go to copies (`router.js` per-rule copy,
|
|
48
|
+
* ws-query's `JSON.clone`), and a table object replaced by a reload is indexed anew.
|
|
49
|
+
*
|
|
50
|
+
* Server-only: not part of the browser bundle. It lives under `core/` on purpose — the
|
|
51
|
+
* pre-commit gate treats `lib/routing/src/` as bundled source.
|
|
52
|
+
*
|
|
53
|
+
* @module gina/core/server.route-candidates
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The result of classifying one URL variant of a rule.
|
|
58
|
+
*
|
|
59
|
+
* @constant
|
|
60
|
+
* @type {{TRIE: number, SKIP: number, ALWAYS: number}}
|
|
61
|
+
*/
|
|
62
|
+
var CLASS = { TRIE: 1, SKIP: 2, ALWAYS: 3 };
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* One node of the path index.
|
|
66
|
+
*
|
|
67
|
+
* @typedef {object} RouteIndexNode
|
|
68
|
+
* @property {Object<string, RouteIndexNode>} s - static children, keyed by the exact segment (a null-prototype map, so `toString` or `__proto__` is an ordinary key)
|
|
69
|
+
* @property {RouteIndexNode|null} p - the parameter child: any segment holding a `:`
|
|
70
|
+
* @property {string[]} n - the rule names whose url variant ends at this node
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* The candidate index of one bundle's rules in one routing table.
|
|
75
|
+
*
|
|
76
|
+
* @typedef {object} RouteIndex
|
|
77
|
+
* @property {RouteIndexNode} root - the path index; the leading empty segment is not stored
|
|
78
|
+
* @property {Object<string, string[]>} literal - raw url string → rule names (null-prototype map)
|
|
79
|
+
* @property {string[]} always - rule names evaluated for every request the index models
|
|
80
|
+
* @property {number} size - the number of rules indexed (all three parts together)
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Indexes built so far: routing table object → Map(bundle → RouteIndex).
|
|
85
|
+
*
|
|
86
|
+
* @type {WeakMap<object, Map<string, RouteIndex>>}
|
|
87
|
+
*/
|
|
88
|
+
var _indexes = new WeakMap();
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* A new, empty path-index node.
|
|
92
|
+
*
|
|
93
|
+
* @inner
|
|
94
|
+
* @returns {RouteIndexNode}
|
|
95
|
+
*/
|
|
96
|
+
function createNode() {
|
|
97
|
+
return { s: Object.create(null), p: null, n: [] };
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Counts a rule's own requirements that are NOT bound as a whole `:key` segment of
|
|
102
|
+
* one url variant — the keys `parseRouting` may write over the compared segments for
|
|
103
|
+
* a GET or DELETE request carrying them (#B650 limited them to the rule's OWN keys).
|
|
104
|
+
* A requirement used only inside a segment (`page:number`) counts, as it does there.
|
|
105
|
+
* Exported for the unit tests.
|
|
106
|
+
*
|
|
107
|
+
* @private
|
|
108
|
+
* @param {*} requirements - the rule's `requirements`
|
|
109
|
+
* @param {string[]} segments - the variant split on `/`
|
|
110
|
+
* @returns {number} the count, or `Infinity` when `requirements` is not an object
|
|
111
|
+
*/
|
|
112
|
+
function countUnboundRequirements(requirements, segments) {
|
|
113
|
+
if (typeof requirements === 'undefined' || requirements === null) {
|
|
114
|
+
return 0;
|
|
115
|
+
}
|
|
116
|
+
if (typeof requirements !== 'object') {
|
|
117
|
+
// lib/routing tests these with hasOwnProperty.call: a string or a function has
|
|
118
|
+
// own properties (`length`, `name`) that would count — never model it
|
|
119
|
+
return Infinity;
|
|
120
|
+
}
|
|
121
|
+
var keys = Object.getOwnPropertyNames(requirements), count = 0;
|
|
122
|
+
for (var i = 0; i < keys.length; i++) {
|
|
123
|
+
if (typeof requirements[keys[i]] === 'undefined') continue;
|
|
124
|
+
if (segments.indexOf(':' + keys[i]) < 0) ++count;
|
|
125
|
+
}
|
|
126
|
+
return count;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Decides how one url variant of a rule is indexed. Exported for the unit tests.
|
|
131
|
+
*
|
|
132
|
+
* @private
|
|
133
|
+
* @param {*} requirements - the rule's `requirements`
|
|
134
|
+
* @param {string} variant - one comma-separated part of the rule's url, untrimmed
|
|
135
|
+
* @returns {number} `CLASS.TRIE` (insert it), `CLASS.SKIP` (it cannot match a path the index models) or `CLASS.ALWAYS` (evaluate the rule for every request)
|
|
136
|
+
*/
|
|
137
|
+
function classifyVariant(requirements, variant) {
|
|
138
|
+
if (variant !== variant.trim() || /[?#]/.test(variant)) {
|
|
139
|
+
return CLASS.ALWAYS;
|
|
140
|
+
}
|
|
141
|
+
var segments = variant.split('/');
|
|
142
|
+
var unbound = countUnboundRequirements(requirements, segments);
|
|
143
|
+
if (unbound >= 2) {
|
|
144
|
+
return CLASS.ALWAYS;
|
|
145
|
+
}
|
|
146
|
+
if (variant.charAt(0) !== '/') {
|
|
147
|
+
// index 0 is a real segment here, and one unbound key replaces it; without
|
|
148
|
+
// one, the variant has one segment fewer than any path starting with `/`
|
|
149
|
+
return (unbound >= 1) ? CLASS.ALWAYS : CLASS.SKIP;
|
|
150
|
+
}
|
|
151
|
+
for (var i = 1; i < segments.length; i++) {
|
|
152
|
+
// an empty segment can only equal an empty request segment, and lookup()
|
|
153
|
+
// returns null for every path holding one
|
|
154
|
+
if (segments[i] === '') return CLASS.SKIP;
|
|
155
|
+
}
|
|
156
|
+
return CLASS.TRIE;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Inserts one url variant (starting with `/`, no empty segment after it).
|
|
161
|
+
*
|
|
162
|
+
* @inner
|
|
163
|
+
* @param {RouteIndexNode} root
|
|
164
|
+
* @param {string} variant
|
|
165
|
+
* @param {string} name - the rule name
|
|
166
|
+
* @returns {void}
|
|
167
|
+
*/
|
|
168
|
+
function insert(root, variant, name) {
|
|
169
|
+
var segments = variant.split('/'), node = root;
|
|
170
|
+
for (var i = 1; i < segments.length; i++) {
|
|
171
|
+
var s = segments[i];
|
|
172
|
+
if (s.indexOf(':') > -1) {
|
|
173
|
+
if (node.p === null) node.p = createNode();
|
|
174
|
+
node = node.p;
|
|
175
|
+
} else {
|
|
176
|
+
if (typeof node.s[s] === 'undefined') node.s[s] = createNode();
|
|
177
|
+
node = node.s[s];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (node.n.indexOf(name) < 0) node.n.push(name);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Builds the candidate index of one bundle's rules. Walks the table the way the
|
|
185
|
+
* routing loop does (`for…in`, non-object entries skipped, `bundle` compared with
|
|
186
|
+
* `!=`), so a rule the loop would skip for another bundle is left out.
|
|
187
|
+
*
|
|
188
|
+
* @param {object} routing - the table `config.getRouting(bundle, env)` returns
|
|
189
|
+
* @param {string} bundle - the bundle being routed
|
|
190
|
+
* @returns {RouteIndex}
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* var index = build({
|
|
194
|
+
* 'item@api': { bundle: 'api', url: '/items/:id', method: 'GET', param: { control: 'get', id: ':id' } }
|
|
195
|
+
* }, 'api');
|
|
196
|
+
* lookup(index, '/items/7', '/items/7'); // Set { 'item@api' }
|
|
197
|
+
*/
|
|
198
|
+
function build(routing, bundle) {
|
|
199
|
+
var index = { root: createNode(), literal: Object.create(null), always: [], size: 0 };
|
|
200
|
+
for (var name in routing) {
|
|
201
|
+
var rule = routing[name];
|
|
202
|
+
if (typeof rule !== 'object' || rule === null) continue;
|
|
203
|
+
if (rule.bundle != bundle) continue;
|
|
204
|
+
++index.size;
|
|
205
|
+
|
|
206
|
+
var url = rule.url;
|
|
207
|
+
if (typeof url !== 'string') {
|
|
208
|
+
index.always.push(name);
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
if (typeof index.literal[url] === 'undefined') index.literal[url] = [];
|
|
213
|
+
index.literal[url].push(name);
|
|
214
|
+
|
|
215
|
+
var variants = url.split(/\,/g), toInsert = [], always = false;
|
|
216
|
+
for (var v = 0; v < variants.length; v++) {
|
|
217
|
+
var c = classifyVariant(rule.requirements, variants[v]);
|
|
218
|
+
if (c === CLASS.ALWAYS) { always = true; break; }
|
|
219
|
+
if (c === CLASS.TRIE) toInsert.push(variants[v]);
|
|
220
|
+
}
|
|
221
|
+
if (always) {
|
|
222
|
+
index.always.push(name);
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
for (var i = 0; i < toInsert.length; i++) {
|
|
226
|
+
insert(index.root, toInsert[i], name);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return index;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Collects the rule names whose variant structurally matches `segments[i…]`.
|
|
234
|
+
*
|
|
235
|
+
* @inner
|
|
236
|
+
* @param {RouteIndexNode} node
|
|
237
|
+
* @param {string[]} segments - the decoded request path split on `/`
|
|
238
|
+
* @param {number} i - the next segment to match
|
|
239
|
+
* @param {Set<string>} out
|
|
240
|
+
* @returns {void}
|
|
241
|
+
*/
|
|
242
|
+
function collect(node, segments, i, out) {
|
|
243
|
+
if (i === segments.length) {
|
|
244
|
+
for (var k = 0; k < node.n.length; k++) out.add(node.n[k]);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
var child = node.s[segments[i]];
|
|
248
|
+
if (typeof child !== 'undefined') collect(child, segments, i + 1, out);
|
|
249
|
+
if (node.p !== null) collect(node.p, segments, i + 1, out);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* The candidate rule names for one request.
|
|
254
|
+
*
|
|
255
|
+
* @param {RouteIndex} index
|
|
256
|
+
* @param {string} rawPathname - the request path as the routing loop compares it (`pathname`)
|
|
257
|
+
* @param {string} decodedPathname - the same path through `safeDecodeURI`, as `compareUrls` receives it
|
|
258
|
+
* @returns {Set<string>|null} the candidates (possibly empty: no rule can match), or `null` when the path is one the index does not model — scan every rule
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* lookup(index, '/items/7', '/items/7'); // Set { 'item@api' }
|
|
262
|
+
* lookup(index, '/nothing', '/nothing'); // Set {} — a 404 without scanning
|
|
263
|
+
* lookup(index, '/items/', '/items/'); // null — full scan
|
|
264
|
+
*/
|
|
265
|
+
function lookup(index, rawPathname, decodedPathname) {
|
|
266
|
+
if (typeof decodedPathname !== 'string' || decodedPathname.charAt(0) !== '/' || /[?#]/.test(decodedPathname)) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
var segments = decodedPathname.split('/');
|
|
270
|
+
for (var i = 1; i < segments.length; i++) {
|
|
271
|
+
if (segments[i] === '') return null;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
var out = new Set();
|
|
275
|
+
collect(index.root, segments, 1, out);
|
|
276
|
+
|
|
277
|
+
var literal = index.literal[rawPathname];
|
|
278
|
+
if (typeof literal !== 'undefined') {
|
|
279
|
+
for (var l = 0; l < literal.length; l++) out.add(literal[l]);
|
|
280
|
+
}
|
|
281
|
+
for (var a = 0; a < index.always.length; a++) out.add(index.always[a]);
|
|
282
|
+
return out;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* The candidate rule names for one request against a routing table, building and
|
|
287
|
+
* caching the table's index on first use. Any unexpected error yields `null` (scan
|
|
288
|
+
* every rule, as before): the caller awaits nothing here and has no `try` around it.
|
|
289
|
+
*
|
|
290
|
+
* @param {object} routing - the table `config.getRouting(bundle, env)` returns
|
|
291
|
+
* @param {string} bundle - the bundle being routed
|
|
292
|
+
* @param {string} rawPathname - the request path as the routing loop compares it
|
|
293
|
+
* @param {string} decodedPathname - `safeDecodeURI(rawPathname)`
|
|
294
|
+
* @returns {Set<string>|null}
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* var candidates = candidatesFor(routing, bundle, pathname, safeDecodeURI(pathname));
|
|
298
|
+
* // in the loop: if ( candidates !== null && !candidates.has(name) ) continue;
|
|
299
|
+
*/
|
|
300
|
+
function candidatesFor(routing, bundle, rawPathname, decodedPathname) {
|
|
301
|
+
try {
|
|
302
|
+
if (routing === null || typeof routing !== 'object') return null;
|
|
303
|
+
var byBundle = _indexes.get(routing);
|
|
304
|
+
if (typeof byBundle === 'undefined') {
|
|
305
|
+
byBundle = new Map();
|
|
306
|
+
_indexes.set(routing, byBundle);
|
|
307
|
+
}
|
|
308
|
+
var index = byBundle.get(bundle);
|
|
309
|
+
if (typeof index === 'undefined') {
|
|
310
|
+
index = build(routing, bundle);
|
|
311
|
+
byBundle.set(bundle, index);
|
|
312
|
+
}
|
|
313
|
+
return lookup(index, rawPathname, decodedPathname);
|
|
314
|
+
} catch (err) {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
module.exports = {
|
|
320
|
+
CLASS : CLASS,
|
|
321
|
+
build : build,
|
|
322
|
+
lookup : lookup,
|
|
323
|
+
candidatesFor : candidatesFor,
|
|
324
|
+
classifyVariant : classifyVariant,
|
|
325
|
+
countUnboundRequirements : countUnboundRequirements
|
|
326
|
+
};
|
|
@@ -10,5 +10,11 @@
|
|
|
10
10
|
"date": "${dateFormat}",
|
|
11
11
|
// https://en.wikipedia.org/wiki/List_of_tz_database_time_zones — e.g. Africa/Douala, America/New_York, Europe/Paris
|
|
12
12
|
"timeZone": "${timeZone}"
|
|
13
|
+
},
|
|
14
|
+
// Swig output auto-escaping, an XSS defence: `true` HTML-escapes every {{ x }}.
|
|
15
|
+
// Mark a variable that carries HTML on purpose with `| safe`, e.g. {{ gina.csrfInput | safe }}.
|
|
16
|
+
// A bundle that leaves it unset renders unescaped until 0.8.0, which makes `true` the default.
|
|
17
|
+
"swig": {
|
|
18
|
+
"autoescape": true
|
|
13
19
|
}
|
|
14
20
|
}
|
|
@@ -47,6 +47,12 @@ function SetupClass(req, res, next){
|
|
|
47
47
|
* Will replace all `\n` by `<br/>`
|
|
48
48
|
* e.g.:
|
|
49
49
|
* {{ contact.address | nl2br }}
|
|
50
|
+
* With `settings.swig.autoescape: true` (this scaffold's setting) nl2br escapes the text
|
|
51
|
+
* and keeps the `<br/>` as markup: no `| safe` needed.
|
|
52
|
+
*
|
|
53
|
+
* [ | safe ]
|
|
54
|
+
* With `settings.swig.autoescape: true`, mark a variable that carries HTML on purpose:
|
|
55
|
+
* {{ gina.csrfInput | safe }}
|
|
50
56
|
*/
|
|
51
57
|
|
|
52
58
|
|
|
@@ -75,8 +81,9 @@ function SetupClass(req, res, next){
|
|
|
75
81
|
|
|
76
82
|
// /*
|
|
77
83
|
// * markdown filter
|
|
78
|
-
// * Usage
|
|
79
|
-
// *
|
|
84
|
+
// * Usage (`| safe` keeps the HTML as markup when autoescape is on — only for markdown you trust,
|
|
85
|
+
// * the converter does not sanitize it):
|
|
86
|
+
// * <p>{{ 'once **upon** a time\nthere was a princess' | markdownToHtml | safe }}</p>
|
|
80
87
|
// *
|
|
81
88
|
// * @param {string} text - markdown text string
|
|
82
89
|
// *
|
|
@@ -1187,8 +1187,9 @@ function PathHelper() {
|
|
|
1187
1187
|
* @param {Array} [excluded] - Filenames (strings) or RegExps to skip
|
|
1188
1188
|
*
|
|
1189
1189
|
* @callback callback
|
|
1190
|
-
* @param {boolean|Error} err - `false` on success, an `Error`
|
|
1191
|
-
* (was a plain string
|
|
1190
|
+
* @param {boolean|Error} err - `false` on success, an `Error` with a string
|
|
1191
|
+
* `stack` on failure (was a plain string
|
|
1192
|
+
* pre-#B227; could lack `stack` on Bun, #B654)
|
|
1192
1193
|
* @param {string} source
|
|
1193
1194
|
* @param {number} i
|
|
1194
1195
|
* */
|
|
@@ -1280,38 +1281,67 @@ function PathHelper() {
|
|
|
1280
1281
|
* never observe a truncated destination and a failed copy never destroys
|
|
1281
1282
|
* the previous content.
|
|
1282
1283
|
*
|
|
1284
|
+
* On failure the temp file is removed once its stream has closed, and only
|
|
1285
|
+
* then does the callback run (#B649): its open runs on a worker thread and
|
|
1286
|
+
* can create the file after the failure is reported.
|
|
1287
|
+
*
|
|
1283
1288
|
* @inner
|
|
1284
1289
|
* @param {string} source
|
|
1285
1290
|
* @param {string} destination
|
|
1286
1291
|
* @param {number} i - Caller's iteration cursor, passed back untouched
|
|
1287
1292
|
*
|
|
1288
1293
|
* @callback callback
|
|
1289
|
-
* @param {boolean|Error} err - `false` on success, an `Error`
|
|
1290
|
-
* (was a plain string
|
|
1294
|
+
* @param {boolean|Error} err - `false` on success, an `Error` with a string
|
|
1295
|
+
* `stack` on failure (was a plain string
|
|
1296
|
+
* pre-#B227; could lack `stack` on Bun, #B654)
|
|
1291
1297
|
* @param {number} i
|
|
1292
1298
|
* */
|
|
1293
1299
|
var copyFile = function(source, destination, i, callback) {
|
|
1294
1300
|
|
|
1295
1301
|
var _tmpTarget = destination + '.' + process.pid + '.' + Math.random().toString(36).slice(2, 8) + '.tmp';
|
|
1296
1302
|
var _settled = false;
|
|
1303
|
+
// #B649 — true once the temp stream has closed: only then is its open (an
|
|
1304
|
+
// O_CREAT on a worker thread) known to be over, so only then does a reap
|
|
1305
|
+
// find the file that open may have created
|
|
1306
|
+
var _tmpClosed = false;
|
|
1297
1307
|
|
|
1298
1308
|
var sourceStream = fs.createReadStream(source);
|
|
1299
1309
|
// #B227 — no direct write to the final name
|
|
1300
1310
|
// was: var destinationStream = fs.createWriteStream(destination);
|
|
1301
1311
|
var destinationStream = fs.createWriteStream(_tmpTarget);
|
|
1312
|
+
// #B649 — registered before the pipe's 'close' handler below, so the flag
|
|
1313
|
+
// is already set when that handler runs
|
|
1314
|
+
destinationStream.once('close', function() { _tmpClosed = true });
|
|
1302
1315
|
|
|
1303
1316
|
var onCopyError = function(err) {
|
|
1304
1317
|
if (_settled) return;
|
|
1305
1318
|
_settled = true;
|
|
1306
1319
|
try { destinationStream.destroy() } catch (_e) {}
|
|
1307
|
-
try { if ( fs.existsSync(_tmpTarget) ) fs.unlinkSync(_tmpTarget) } catch (_e) {}
|
|
1308
1320
|
// #B227 — propagate a real Error (was a plain string, so callers
|
|
1309
1321
|
// printing `err.stack` logged `undefined`); keep the historical
|
|
1310
1322
|
// message prefix for log continuity
|
|
1311
1323
|
if ( !(err instanceof Error) ) {
|
|
1312
1324
|
err = new Error('Error on Path.cp(...): could not copy `'+ source +'` to `'+ destination +'`');
|
|
1313
1325
|
}
|
|
1314
|
-
|
|
1326
|
+
// #B654 — Bun (1.3, 1.4) reports stream errors as an Error with no
|
|
1327
|
+
// `stack` at all, and callers print `err.stack`: give it one, keeping
|
|
1328
|
+
// the error itself (its `code` and message)
|
|
1329
|
+
else if ( typeof(err.stack) != 'string' ) {
|
|
1330
|
+
try { Error.captureStackTrace(err) } catch (_e) {}
|
|
1331
|
+
}
|
|
1332
|
+
// #B649 — reap and settle only once the temp stream has closed. A source
|
|
1333
|
+
// that fails at open can be reported before the temp file's own open has
|
|
1334
|
+
// run, so checking for the file here could find nothing and leave the
|
|
1335
|
+
// file that open created a moment later on disk (destroy() only closes
|
|
1336
|
+
// the descriptor).
|
|
1337
|
+
// was: try { if ( fs.existsSync(_tmpTarget) ) fs.unlinkSync(_tmpTarget) } catch (_e) {}
|
|
1338
|
+
// callback(err, i)
|
|
1339
|
+
var reapAndSettle = function() {
|
|
1340
|
+
try { fs.unlinkSync(_tmpTarget) } catch (_e) {} // ENOENT when the open never created it
|
|
1341
|
+
callback(err, i)
|
|
1342
|
+
};
|
|
1343
|
+
if (_tmpClosed) return reapAndSettle();
|
|
1344
|
+
destinationStream.once('close', reapAndSettle);
|
|
1315
1345
|
};
|
|
1316
1346
|
|
|
1317
1347
|
// #B227 — the source stream previously had NO error listener: an
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
var fs = require('fs');
|
|
2
2
|
const { runMain } = require('module');
|
|
3
|
-
|
|
3
|
+
// #B663 (2026-09-25) — execFile: bundle:stop and bundle:start run from argument vectors, without a shell.
|
|
4
|
+
// var exec = require('child_process').exec;
|
|
5
|
+
var execFile = require('child_process').execFile;
|
|
4
6
|
|
|
5
7
|
var CmdHelper = require('./../helper');
|
|
6
8
|
var console = lib.logger;
|
|
@@ -33,10 +35,16 @@ function Restart(opt, cmd) {
|
|
|
33
35
|
/**
|
|
34
36
|
* Validates configuration and triggers single-bundle or bulk restart.
|
|
35
37
|
*
|
|
38
|
+
* Takes the runtime and CLI script paths off `process.argv` as an argument pair
|
|
39
|
+
* (`self.cliArgv`), and keeps the `--` flags it was given as a list
|
|
40
|
+
* (`self.inheritedArgv`), for the stop and start children, which run without
|
|
41
|
+
* a shell (#B663).
|
|
42
|
+
*
|
|
36
43
|
* @inner
|
|
37
44
|
* @private
|
|
38
45
|
* @param {object} opt - Parsed command-line options
|
|
39
46
|
* @param {object} cmd - The cmd dispatcher object
|
|
47
|
+
* @returns {(boolean|void)} false when the CLI is not configured
|
|
40
48
|
*/
|
|
41
49
|
var init = function(opt, cmd) {
|
|
42
50
|
// import CMD helpers
|
|
@@ -45,7 +53,10 @@ function Restart(opt, cmd) {
|
|
|
45
53
|
// check CMD configuration
|
|
46
54
|
if (!isCmdConfigured()) return false;
|
|
47
55
|
|
|
48
|
-
|
|
56
|
+
// #B663 (2026-09-25) — the runtime and CLI script paths stay an argument pair: the
|
|
57
|
+
// children run without a shell (the pair was joined into a command line).
|
|
58
|
+
// self.cmdStr = process.argv.splice(0, 2).join(' ');
|
|
59
|
+
self.cliArgv = process.argv.splice(0, 2);
|
|
49
60
|
|
|
50
61
|
self.inheritedArgv = [];
|
|
51
62
|
for (let i = 0, len = process.argv.length; i < len; i++) {
|
|
@@ -54,7 +65,8 @@ function Restart(opt, cmd) {
|
|
|
54
65
|
}
|
|
55
66
|
}
|
|
56
67
|
|
|
57
|
-
|
|
68
|
+
// #B663 (2026-09-25) — kept as a list: each flag reaches bundle:start as one argument.
|
|
69
|
+
// self.inheritedArgv = self.inheritedArgv.join(' ');
|
|
58
70
|
|
|
59
71
|
// start all bundles
|
|
60
72
|
opt.onlineCount = 0;
|
|
@@ -76,11 +88,17 @@ function Restart(opt, cmd) {
|
|
|
76
88
|
/**
|
|
77
89
|
* Executes a stop-then-start sequence for one bundle, optionally in bulk.
|
|
78
90
|
*
|
|
91
|
+
* `bundle:stop` and `bundle:start` run as two `execFile` children of the same
|
|
92
|
+
* runtime and CLI script, each from an argument vector, without a shell (#B663).
|
|
93
|
+
* The start runs only once the stop has succeeded, and only the start gets the
|
|
94
|
+
* inherited `--` flags and the debug flag.
|
|
95
|
+
*
|
|
79
96
|
* @inner
|
|
80
97
|
* @private
|
|
81
98
|
* @param {object} opt - Parsed command-line options (includes client, debugPort)
|
|
82
|
-
* @param {object} cmd - Overwritten internally with the
|
|
99
|
+
* @param {object} cmd - Overwritten internally with a display string of the two commands (the debug line; nothing runs it)
|
|
83
100
|
* @param {number} [bundleIndex] - When provided, performs a bulk restart at this index
|
|
101
|
+
* @returns {void}
|
|
84
102
|
*/
|
|
85
103
|
var restart = function(opt, cmd, bundleIndex) {
|
|
86
104
|
|
|
@@ -120,44 +138,95 @@ function Restart(opt, cmd) {
|
|
|
120
138
|
//console.debug(' OPTIONS => ', opt.debugPort, opt.debugBrkEnabled);
|
|
121
139
|
//console.info('running: gina bundle:restart '+ bundle + '@' + self.projectName);
|
|
122
140
|
msg = 'Restarting, please wait ...';
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
141
|
+
// #B663 (2026-09-25) — two argument vectors run without a shell: bundle:stop, then
|
|
142
|
+
// bundle:start only once the stop has succeeded (what the shell's `&&` did). The
|
|
143
|
+
// command line spliced the CLI path, the bundle and project names and every
|
|
144
|
+
// inherited `--` flag in unquoted, so a path containing a space broke the restart
|
|
145
|
+
// and shell syntax in a flag ran.
|
|
146
|
+
// cmd = '$gina bundle:stop ' + bundle + ' @' + self.projectName + ' && $gina bundle:start ' + bundle + ' @' + self.projectName;
|
|
147
|
+
// if (self.inheritedArgv != '') {
|
|
148
|
+
// cmd += ' '+ self.inheritedArgv;
|
|
149
|
+
// }
|
|
150
|
+
// if (opt.debugPort) {
|
|
151
|
+
// cmd += ' --inspect';
|
|
152
|
+
// if (opt.debugBrkEnabled) {
|
|
153
|
+
// cmd += '-brk'
|
|
154
|
+
// }
|
|
155
|
+
// cmd += '='+ opt.debugPort;
|
|
156
|
+
// msg = 'You should now start your debug session on port #'+opt.debugPort;
|
|
157
|
+
// }
|
|
158
|
+
// cmd = cmd.replace(/\$(gina)/g, self.cmdStr);
|
|
159
|
+
var stopArgv = [self.cliArgv[1], 'bundle:stop', bundle, '@' + self.projectName];
|
|
160
|
+
var startArgv = [self.cliArgv[1], 'bundle:start', bundle, '@' + self.projectName].concat(self.inheritedArgv);
|
|
127
161
|
if (opt.debugPort) {
|
|
128
|
-
|
|
129
|
-
if (opt.debugBrkEnabled) {
|
|
130
|
-
cmd += '-brk'
|
|
131
|
-
}
|
|
132
|
-
cmd += '='+ opt.debugPort;
|
|
162
|
+
startArgv.push('--inspect' + (opt.debugBrkEnabled ? '-brk' : '') + '=' + opt.debugPort);
|
|
133
163
|
msg = 'You should now start your debug session on port #'+opt.debugPort;
|
|
134
164
|
}
|
|
135
|
-
|
|
165
|
+
// for the debug line only: nothing runs this string
|
|
166
|
+
cmd = [self.cliArgv[0]].concat(stopArgv).join(' ') + ' && ' + [self.cliArgv[0]].concat(startArgv).join(' ');
|
|
136
167
|
|
|
137
168
|
console.debug('Executing: '+cmd);
|
|
138
169
|
|
|
139
170
|
opt.client.write('\n\r'+msg +'\n');
|
|
140
171
|
|
|
141
|
-
|
|
142
|
-
|
|
172
|
+
/**
|
|
173
|
+
* Ends this bundle's restart on a failed step: logs the error, then moves on
|
|
174
|
+
* to the next bundle (bulk restart) or exits 1.
|
|
175
|
+
*
|
|
176
|
+
* @inner
|
|
177
|
+
* @private
|
|
178
|
+
* @param {Error} err - The failed child's error
|
|
179
|
+
* @returns {object} The pending timer
|
|
180
|
+
*/
|
|
181
|
+
var onFailed = function(err) {
|
|
182
|
+
error = err.toString();
|
|
183
|
+
console.error(error);
|
|
184
|
+
//opt.notStopped.push(bundle + '@' + self.projectName);
|
|
185
|
+
return setTimeout(() => {
|
|
186
|
+
end(opt, cmd, isBulkRestart, bundleIndex, true)
|
|
187
|
+
}, 250); // 500
|
|
188
|
+
};
|
|
143
189
|
|
|
190
|
+
// If it is stuck, the problem is not here ... cmd.start should be a good start
|
|
191
|
+
// #B663 (2026-09-25) — replaced by the two execFile calls below.
|
|
192
|
+
// exec(cmd, function(err, stdout, stderr) {
|
|
193
|
+
//
|
|
194
|
+
// if (err) {
|
|
195
|
+
// error = err.toString();
|
|
196
|
+
// console.error(error);
|
|
197
|
+
// //opt.notStopped.push(bundle + '@' + self.projectName);
|
|
198
|
+
// return setTimeout(() => {
|
|
199
|
+
// end(opt, cmd, isBulkRestart, bundleIndex, true)
|
|
200
|
+
// }, 250); // 500
|
|
201
|
+
// }
|
|
202
|
+
//
|
|
203
|
+
// // retrieve messages from the parent stdout
|
|
204
|
+
// if (stdout) {
|
|
205
|
+
// console.log(stdout.replace(/\n\rTrying to.*/gm, ''));
|
|
206
|
+
// }
|
|
207
|
+
// setTimeout(() => {
|
|
208
|
+
// //opt.client.write(' => bundle [ ' + bundle + '@' + self.projectName + ' ] restarted on port #'+ bundlePort+' :D\n');
|
|
209
|
+
// end(opt, cmd, isBulkRestart, bundleIndex)
|
|
210
|
+
// }, 250); // 500
|
|
211
|
+
// })
|
|
212
|
+
execFile(self.cliArgv[0], stopArgv, function onStopped(err, stopStdout) {
|
|
144
213
|
if (err) {
|
|
145
|
-
|
|
146
|
-
console.error(error);
|
|
147
|
-
//opt.notStopped.push(bundle + '@' + self.projectName);
|
|
148
|
-
return setTimeout(() => {
|
|
149
|
-
end(opt, cmd, isBulkRestart, bundleIndex, true)
|
|
150
|
-
}, 250); // 500
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// retrieve messages from the parent stdout
|
|
154
|
-
if (stdout) {
|
|
155
|
-
console.log(stdout.replace(/\n\rTrying to.*/gm, ''));
|
|
214
|
+
return onFailed(err);
|
|
156
215
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
216
|
+
execFile(self.cliArgv[0], startArgv, function onStarted(err, startStdout) {
|
|
217
|
+
if (err) {
|
|
218
|
+
return onFailed(err);
|
|
219
|
+
}
|
|
220
|
+
// retrieve messages from the parent stdout
|
|
221
|
+
var stdout = (stopStdout || '') + (startStdout || '');
|
|
222
|
+
if (stdout) {
|
|
223
|
+
console.log(stdout.replace(/\n\rTrying to.*/gm, ''));
|
|
224
|
+
}
|
|
225
|
+
setTimeout(() => {
|
|
226
|
+
//opt.client.write(' => bundle [ ' + bundle + '@' + self.projectName + ' ] restarted on port #'+ bundlePort+' :D\n');
|
|
227
|
+
end(opt, cmd, isBulkRestart, bundleIndex)
|
|
228
|
+
}, 250); // 500
|
|
229
|
+
})
|
|
161
230
|
})
|
|
162
231
|
})//EO isRealApp
|
|
163
232
|
}
|