gina 0.7.0 → 0.7.1
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 +39 -0
- package/README.md +45 -61
- package/ROADMAP.md +3 -2
- package/bin/cli +5 -2
- package/bin/gina +10 -25
- package/framework/v0.7.1/VERSION +1 -0
- package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +21 -8
- package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.js +8 -11
- package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +160 -160
- package/framework/v0.7.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.7.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.7.0 → v0.7.1}/core/config.js +10 -1
- package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.js +67 -15
- package/framework/{v0.7.0 → v0.7.1}/core/router.js +68 -8
- package/framework/{v0.7.0 → v0.7.1}/core/server.isaac.js +183 -45
- package/framework/{v0.7.0 → v0.7.1}/core/server.js +173 -55
- package/framework/{v0.7.0 → v0.7.1}/helpers/context.js +93 -32
- package/framework/{v0.7.0 → v0.7.1}/helpers/path.js +61 -43
- package/framework/{v0.7.0 → v0.7.1}/helpers/task.js +47 -35
- package/framework/v0.7.1/lib/admin/src/main.js +451 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/add.js +24 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/copy.js +14 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/help.txt +11 -0
- package/framework/v0.7.1/lib/cmd/bundle/inc/boot-lines.js +263 -0
- package/framework/v0.7.1/lib/cmd/bundle/inc/name.js +70 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/remove.js +8 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/rename.js +14 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/start.js +47 -12
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/stop.js +64 -8
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/remove.js +7 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/add.js +37 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/build.js +20 -5
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/dot.js +10 -4
- package/framework/v0.7.1/lib/cmd/framework/inc/ps-titles.js +113 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/init.js +7 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/link.js +10 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/open.js +30 -6
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/restart.js +24 -69
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/start.js +6 -24
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/status.js +44 -25
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/tail.js +1 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/helper.js +56 -13
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/help.txt +2 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/open.js +93 -30
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/kill.js +52 -25
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/list.js +15 -6
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/reset.js +11 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/add.js +50 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/help.txt +8 -8
- package/framework/v0.7.1/lib/cmd/project/inc/name.js +71 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/remove.js +5 -1
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/rename.js +12 -0
- package/framework/v0.7.1/lib/cmd/project/restart.js +126 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/restore.js +19 -0
- package/framework/v0.7.1/lib/cmd/project/start.js +125 -0
- package/framework/v0.7.1/lib/cmd/project/stop.js +98 -0
- package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/set.js +7 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/inherits/src/main.js +8 -11
- package/framework/{v0.7.0 → v0.7.1}/lib/maintenance/src/main.js +3 -2
- package/framework/{v0.7.0 → v0.7.1}/lib/metrics/src/main.js +30 -6
- package/framework/{v0.7.0 → v0.7.1}/lib/shell.js +58 -25
- package/framework/{v0.7.0 → v0.7.1}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +13 -13
- package/package.json +4 -4
- package/schema/app.json +3 -3
- package/script/post_install.js +20 -2
- package/script/pre_install.js +31 -6
- package/utils/helper.js +21 -9
- package/framework/v0.7.0/VERSION +0 -1
- 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.7.0/lib/admin/src/main.js +0 -217
- package/framework/v0.7.0/lib/cmd/project/restart.js +0 -85
- package/framework/v0.7.0/lib/cmd/project/start.js +0 -85
- package/framework/v0.7.0/lib/cmd/project/stop.js +0 -66
- /package/framework/{v0.7.0 → v0.7.1}/AUTHORS +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/html/static.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/config.requirements-anchor.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/content.encoding +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-xml.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/inline-script.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/gna.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/currency.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/locales/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/mime.types +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/entity.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/model/template/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/server.express.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/server.isaac.rapid-reset.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/server.route-candidates.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/status.codes +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/_gitignore +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/env.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/console.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/prototypes.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/helpers/text.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/admin/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/async/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/async/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/audit/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/audit-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/inc/name.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/inc/name.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/conf-view/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/conf-view/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/config.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cron/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cron/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/duration/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/duration/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/generator/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/i18n/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/idempotency/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/idempotency/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/image-build/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/instrument/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/job/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/job/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/job-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/kv/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/kv-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/math/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/merge/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/merge/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/message-validator/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/message-validator/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/metrics/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/model.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/money/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/money/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/multipart/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/multipart/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/priority/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/priority/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/proc.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/push/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/push/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/build.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/security-headers-emitter/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/security-headers-emitter/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/session-lifetime/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/session-lifetime/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/session-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/sri/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/sri/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/state.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/storage-store.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/url/README.md +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/url/index.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/url/routing.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/uuid/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/validator.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/watcher/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.7.0 → v0.7.1}/lib/ws-session/src/main.js +0 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
var fs = require('fs');
|
|
2
2
|
const {spawn} = require('child_process');
|
|
3
|
-
|
|
3
|
+
// #B665 S2 (2026-09-27) — no shell: the daemons are listed through inc/ps-titles.js, and a pid's
|
|
4
|
+
// liveness is checked with process.kill(pid, 0).
|
|
5
|
+
// const {execSync} = require('child_process');
|
|
4
6
|
//const { debug } = require('console');
|
|
5
7
|
|
|
6
8
|
var CmdHelper = require('./../helper');
|
|
9
|
+
var psTitles = require('./inc/ps-titles');
|
|
7
10
|
var console = lib.logger;
|
|
8
11
|
/**
|
|
9
12
|
* @module gina/lib/cmd/framework/status
|
|
@@ -46,41 +49,43 @@ function Status(opt, cmd) {
|
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
/**
|
|
49
|
-
* Discovers
|
|
50
|
-
* and writes PID files for them, or kills
|
|
52
|
+
* Discovers the current user's framework daemons (`gina-v<version>` titles)
|
|
53
|
+
* that are not tracked by PID files and writes PID files for them, or kills
|
|
54
|
+
* any zombie processes. The listing comes from `inc/ps-titles.js`, which runs
|
|
55
|
+
* `ps` without a shell and accepts only a daemon title (#B677).
|
|
51
56
|
* @inner
|
|
52
57
|
* @private
|
|
53
58
|
* @param {string[]} pidFiles - Array of PID filenames already found in GINA_RUNDIR
|
|
54
59
|
*/
|
|
55
60
|
var checkUnregistered = function(pidFiles) {
|
|
56
61
|
// Those not in file
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
// #B677 (2026-09-27) — the current user's processes only, and a daemon title only:
|
|
63
|
+
// `ps -ef` listed every user's processes, and any `gina-`-titled process's title became
|
|
64
|
+
// a pid-file name that `_()` normalises, so `gina-v/../../x` wrote outside the run
|
|
65
|
+
// directory. `ps` runs from an argument vector (#B665 S2).
|
|
66
|
+
// was: var list = execSync("ps -ef | grep -v grep | grep 'gina-v' | awk '{print $2\" \"$8\" \"$9}'").toString().replace(/\n$/, '').split(/\n/g);
|
|
67
|
+
var list = psTitles.listOwnDaemons();
|
|
63
68
|
|
|
64
69
|
// console.debug('pids list ', list);
|
|
65
70
|
for (let p=0, len=list.length; p<len; p++) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
let pidArr = list[p].split(/\s/);
|
|
71
|
-
let pid = pidArr[0];
|
|
72
|
-
let title = pidArr[1];
|
|
73
|
-
let isZombie = ( typeof(pidArr[2]) != 'undefined' && /defunct/.test(pidArr[2]) ) ? true : false;
|
|
71
|
+
let pid = list[p].pid;
|
|
72
|
+
let title = list[p].title;
|
|
74
73
|
|
|
75
74
|
// remove defunct process
|
|
76
|
-
if (
|
|
77
|
-
execSync("kill -9 "+ pid);
|
|
75
|
+
if (list[p].zombie) {
|
|
76
|
+
// was: execSync("kill -9 "+ pid);
|
|
77
|
+
try {
|
|
78
|
+
process.kill(pid, 'SIGKILL');
|
|
79
|
+
} catch (killErr) {
|
|
80
|
+
console.debug('Could not signal defunct process '+ pid +': '+ killErr.message);
|
|
81
|
+
}
|
|
78
82
|
continue;
|
|
79
83
|
}
|
|
80
84
|
|
|
81
85
|
let file = title +'.pid';
|
|
82
86
|
if ( pidFiles.indexOf( file ) < 0) {
|
|
83
|
-
|
|
87
|
+
// a string: writeFileSync refuses a number
|
|
88
|
+
fs.writeFileSync( _(GINA_RUNDIR +'/'+ file, true), ''+ pid );
|
|
84
89
|
pidFiles.push(title +'.pid');
|
|
85
90
|
}
|
|
86
91
|
}
|
|
@@ -88,7 +93,9 @@ function Status(opt, cmd) {
|
|
|
88
93
|
}
|
|
89
94
|
|
|
90
95
|
/**
|
|
91
|
-
* Reads PID files and prints running framework versions to the logger.
|
|
96
|
+
* Reads PID files and prints running framework versions to the logger. On
|
|
97
|
+
* macOS and Linux a pid is running when `process.kill(pid, 0)` succeeds or
|
|
98
|
+
* fails with EPERM; any other pid file is removed.
|
|
92
99
|
* @inner
|
|
93
100
|
* @private
|
|
94
101
|
* @param {object} opt
|
|
@@ -116,12 +123,24 @@ function Status(opt, cmd) {
|
|
|
116
123
|
}
|
|
117
124
|
|
|
118
125
|
if ( !isWin32() ) {
|
|
126
|
+
// #B665 S2 (2026-09-27) — liveness in-process, as framework:init's checkRunningPids:
|
|
127
|
+
// the pid file's content reached `ps -a <content>` through sh, and on a host
|
|
128
|
+
// without `ps` (a slim container image) every live framework pid file was
|
|
129
|
+
// removed. EPERM means alive (another user's process); ESRCH, or content that is
|
|
130
|
+
// not a pid, removes the file, as a failing `ps -a` did.
|
|
131
|
+
// was: let found = execSync("ps -a "+ pid).toString().replace(/\n$/, '').split(/\n/g);
|
|
132
|
+
var n = psTitles.parsePid(pid);
|
|
119
133
|
try {
|
|
120
|
-
|
|
134
|
+
if (n === null) {
|
|
135
|
+
throw new Error('not a pid: '+ pid);
|
|
136
|
+
}
|
|
137
|
+
process.kill(n, 0);
|
|
121
138
|
} catch (err) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
139
|
+
if ( !err || err.code !== 'EPERM' ) {
|
|
140
|
+
console.debug('file to remove: '+ _(GINA_RUNDIR +'/'+ file));
|
|
141
|
+
fs.unlinkSync(_(GINA_RUNDIR +'/'+ file));
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
125
144
|
}
|
|
126
145
|
}
|
|
127
146
|
|
|
@@ -41,7 +41,7 @@ function Tail(opt, cmd) {
|
|
|
41
41
|
process.title = 'gina-tail';
|
|
42
42
|
var self = {};
|
|
43
43
|
var nIntervId = null;
|
|
44
|
-
var mqPortFile = _(
|
|
44
|
+
var mqPortFile = _(getArgvDir() +'/mq-listener-v'+ GINA_VERSION +'.port', true); // #B704 — the framework home's run dir, never the shared tmp dir
|
|
45
45
|
// To allow auto restart on: JavaScript heap out of memory
|
|
46
46
|
var cmdUsedToStart = null;
|
|
47
47
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
const { execSync } = require('child_process');
|
|
2
|
+
// #B665 (2026-09-27) — execFileSync: the auto-link children run from argument vectors.
|
|
3
|
+
const { execFileSync } = require('child_process');
|
|
2
4
|
var fs = require('fs');
|
|
3
5
|
var os = require('os');
|
|
4
6
|
const { promisify } = require('util');
|
|
@@ -7,6 +9,7 @@ var merge = lib.merge;
|
|
|
7
9
|
var inherits = lib.inherits;
|
|
8
10
|
var Collection = lib.Collection;
|
|
9
11
|
var helpers = require( getPath('gina').helpers);
|
|
12
|
+
var escapeRegex = require('./bundle/inc/name-rewrite').escapeRegex;
|
|
10
13
|
/**
|
|
11
14
|
* @module gina/lib/cmd/helper
|
|
12
15
|
*/
|
|
@@ -67,6 +70,9 @@ function CmdHelper(cmd, client, debug) {
|
|
|
67
70
|
// Params forward: when a command line is running another command line
|
|
68
71
|
// E.g: gina link or gina link-node-modules
|
|
69
72
|
paramsStringified: '',
|
|
73
|
+
// The same params as a list, one argument each: the argument vector the
|
|
74
|
+
// link and link-node-modules children run from, without a shell (#B665)
|
|
75
|
+
paramsArgv: [],
|
|
70
76
|
nodeParams : [],
|
|
71
77
|
debugPort: debug.port,
|
|
72
78
|
debugBrkEnabled: debug.brkEnabled,
|
|
@@ -136,7 +142,10 @@ function CmdHelper(cmd, client, debug) {
|
|
|
136
142
|
/**
|
|
137
143
|
* Parses process.argv for `--key[=value]` tokens.
|
|
138
144
|
* Tokens listed in the command group's arguments.json are stored in
|
|
139
|
-
* cmd.params
|
|
145
|
+
* cmd.params, and forwarded as `--key=value` both in cmd.paramsStringified
|
|
146
|
+
* (a string, for display) and in cmd.paramsArgv (one list entry per token:
|
|
147
|
+
* the argument vector of the auto-link children, #B665); all other `--`
|
|
148
|
+
* tokens go to cmd.nodeParams (forwarded to Node).
|
|
140
149
|
* Also detects --inspect-brk and sets cmd.debugBrkEnabled accordingly.
|
|
141
150
|
*
|
|
142
151
|
* @inner
|
|
@@ -203,6 +212,7 @@ function CmdHelper(cmd, client, debug) {
|
|
|
203
212
|
if ( cmdArguments.indexOf('--' + arr[0]) > -1 ) {
|
|
204
213
|
cmd.params[arr[0]] = arr[1];
|
|
205
214
|
cmd.paramsStringified += ' --' + arr[0] +'='+ arr[1];
|
|
215
|
+
cmd.paramsArgv.push('--' + arr[0] +'='+ arr[1]);
|
|
206
216
|
} else {
|
|
207
217
|
cmd.nodeParams.push('--' + arr[0] +'='+ arr[1]);
|
|
208
218
|
}
|
|
@@ -212,6 +222,7 @@ function CmdHelper(cmd, client, debug) {
|
|
|
212
222
|
if ( cmdArguments.indexOf(process.argv[a]) > -1 ) {
|
|
213
223
|
cmd.params[ process.argv[a].replace(/--/, '') ] = true;
|
|
214
224
|
cmd.paramsStringified += ' '+process.argv[a] +'='+ true;
|
|
225
|
+
cmd.paramsArgv.push(process.argv[a] +'='+ true);
|
|
215
226
|
} else {
|
|
216
227
|
cmd.nodeParams.push(process.argv[a]);
|
|
217
228
|
}
|
|
@@ -440,19 +451,27 @@ function CmdHelper(cmd, client, debug) {
|
|
|
440
451
|
return false;
|
|
441
452
|
}
|
|
442
453
|
cmd.projects[cmd.projectName].def_prefix = realGinaPrefix;
|
|
454
|
+
// #B665 — the old paths are matched literally and the new ones
|
|
455
|
+
// inserted verbatim: a path holding `(` or `[` failed its own prefix
|
|
456
|
+
// test, a `.` matched any character, and a `$&` in the new path
|
|
457
|
+
// expanded to the matched text.
|
|
443
458
|
let oldHomedir = cmd.projects[cmd.projectName].homedir;
|
|
444
|
-
let reOldHomedir = new RegExp('^'+ oldHomedir);
|
|
459
|
+
// was: let reOldHomedir = new RegExp('^'+ oldHomedir);
|
|
460
|
+
let reOldHomedir = new RegExp('^' + escapeRegex(oldHomedir));
|
|
445
461
|
let oldProjectPath = cmd.projects[cmd.projectName].path;
|
|
446
|
-
let reOldProjectPath = new RegExp('^'+ oldProjectPath);
|
|
462
|
+
// was: let reOldProjectPath = new RegExp('^'+ oldProjectPath);
|
|
463
|
+
let reOldProjectPath = new RegExp('^' + escapeRegex(oldProjectPath));
|
|
447
464
|
for ( let p in cmd.projects[cmd.projectName] ) {
|
|
448
465
|
if ( typeof(cmd.projects[cmd.projectName][p]) == 'string' ) {
|
|
449
466
|
if ( reOldHomedir.test(cmd.projects[cmd.projectName][p]) ) {
|
|
450
|
-
cmd.projects[cmd.projectName][p] = cmd.projects[cmd.projectName][p].replace(reOldHomedir, newHomeDir);
|
|
467
|
+
// was: cmd.projects[cmd.projectName][p] = cmd.projects[cmd.projectName][p].replace(reOldHomedir, newHomeDir);
|
|
468
|
+
cmd.projects[cmd.projectName][p] = cmd.projects[cmd.projectName][p].replace(reOldHomedir, function() { return newHomeDir; });
|
|
451
469
|
continue;
|
|
452
470
|
}
|
|
453
471
|
|
|
454
472
|
if ( reOldProjectPath.test(cmd.projects[cmd.projectName][p]) ) {
|
|
455
|
-
cmd.projects[cmd.projectName][p] = cmd.projects[cmd.projectName][p].replace(reOldProjectPath, pathValue);
|
|
473
|
+
// was: cmd.projects[cmd.projectName][p] = cmd.projects[cmd.projectName][p].replace(reOldProjectPath, pathValue);
|
|
474
|
+
cmd.projects[cmd.projectName][p] = cmd.projects[cmd.projectName][p].replace(reOldProjectPath, function() { return pathValue; });
|
|
456
475
|
continue;
|
|
457
476
|
}
|
|
458
477
|
}
|
|
@@ -511,7 +530,10 @@ function CmdHelper(cmd, client, debug) {
|
|
|
511
530
|
if ( isValidName(cmd.bundles[0]) ) {
|
|
512
531
|
cmd.name = cmd.bundles[0]
|
|
513
532
|
} else {
|
|
514
|
-
|
|
533
|
+
// #B665 — name the rejected bundle: `cmd.name` is set only on success,
|
|
534
|
+
// so the message read `[ undefined ]`.
|
|
535
|
+
// was: console.error('[ ' + cmd.name + ' ] is not a valid bundle name.');
|
|
536
|
+
console.error('[ ' + cmd.bundles[0] + ' ] is not a valid bundle name.');
|
|
515
537
|
process.exit(1)
|
|
516
538
|
}
|
|
517
539
|
} // else, might be a bulk operation: look for `isBulkOperation`
|
|
@@ -1174,7 +1196,11 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1174
1196
|
//console.debug('[ ConfigAssetsLoaderHelper ] Loaded bundles list\n'+ JSON.stringify(cmd.bundles, null, 4));
|
|
1175
1197
|
|
|
1176
1198
|
// protocols & schemes list: for the project
|
|
1177
|
-
|
|
1199
|
+
// #B665 — the project name is matched literally and must end at the `/` that
|
|
1200
|
+
// follows it in a `<bundle>@<project>/<env>` value: `@shop` matched the ports
|
|
1201
|
+
// of `@shopping/...`, which then counted as this project's.
|
|
1202
|
+
// was: re = new RegExp('\@' + cmd.projectName, '');
|
|
1203
|
+
re = new RegExp('@' + escapeRegex(cmd.projectName) + '/', '');
|
|
1178
1204
|
|
|
1179
1205
|
for (let protocol in ports) {
|
|
1180
1206
|
if ( typeof(cmd.portsData[protocol]) == 'undefined')
|
|
@@ -1235,7 +1261,11 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1235
1261
|
var _linkEnv = Object.assign({}, process.env, { GINA_HOMEDIR: GINA_HOMEDIR });
|
|
1236
1262
|
console.info('[helper] Running: '+ process.execPath +' '+ selfCli +' link-node-modules @'+cmd.projectName +cmd.paramsStringified);
|
|
1237
1263
|
try {
|
|
1238
|
-
|
|
1264
|
+
// #B665 (2026-09-27) — an argument vector, without a shell: the project name
|
|
1265
|
+
// and every forwarded flag reached `sh` unquoted, so a value holding a space
|
|
1266
|
+
// was split and shell syntax in a flag ran.
|
|
1267
|
+
// was: execSync('"'+ process.execPath +'" "'+ selfCli +'" link-node-modules @'+cmd.projectName +cmd.paramsStringified, …);
|
|
1268
|
+
execFileSync(process.execPath, [selfCli, 'link-node-modules', '@' + cmd.projectName].concat(cmd.paramsArgv), { env: _linkEnv });
|
|
1239
1269
|
} catch (linkErr) {
|
|
1240
1270
|
var linkErrOutput = (linkErr.stderr) ? linkErr.stderr.toString().trim() : (linkErr.message || linkErr.stack);
|
|
1241
1271
|
console.error(linkErrOutput);
|
|
@@ -1244,7 +1274,9 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1244
1274
|
|
|
1245
1275
|
console.info('[helper] Running: '+ process.execPath +' '+ selfCli +' link @'+cmd.projectName +cmd.paramsStringified);
|
|
1246
1276
|
try {
|
|
1247
|
-
|
|
1277
|
+
// #B665 (2026-09-27) — the same argument vector as link-node-modules above.
|
|
1278
|
+
// was: console.debug(execSync('"'+ process.execPath +'" "'+ selfCli +'" link @'+cmd.projectName +cmd.paramsStringified, …).toString().trim());
|
|
1279
|
+
console.debug(execFileSync(process.execPath, [selfCli, 'link', '@' + cmd.projectName].concat(cmd.paramsArgv), { env: _linkEnv }).toString().trim());
|
|
1248
1280
|
} catch (err) {
|
|
1249
1281
|
var errOutput = (err.stderr) ? err.stderr.toString().trim() : (err.message || err.stack);
|
|
1250
1282
|
console.emerg(errOutput);
|
|
@@ -1325,10 +1357,14 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1325
1357
|
var hasProject = false, re = null;
|
|
1326
1358
|
if ( cmd.projectName != null && typeof(cmd.projects[cmd.projectName]) != 'undefined' ) {
|
|
1327
1359
|
hasProject = true;
|
|
1328
|
-
|
|
1360
|
+
// #B665 — the names are matched literally, and a bundle's from the start of the
|
|
1361
|
+
// value: `api@shop/` matched `myapi@shop/dev`.
|
|
1362
|
+
// was: re = new RegExp('\@'+ cmd.projectName +'\/', '');
|
|
1363
|
+
re = new RegExp('@' + escapeRegex(cmd.projectName) + '/', '');
|
|
1329
1364
|
|
|
1330
1365
|
if ( cmd.name != null ) {
|
|
1331
|
-
re = new RegExp(cmd.name + '\@'+ cmd.projectName +'\/', '');
|
|
1366
|
+
// was: re = new RegExp(cmd.name + '\@'+ cmd.projectName +'\/', '');
|
|
1367
|
+
re = new RegExp('^' + escapeRegex(cmd.name + '@' + cmd.projectName + '/'), '');
|
|
1332
1368
|
}
|
|
1333
1369
|
}
|
|
1334
1370
|
|
|
@@ -1981,14 +2017,21 @@ function CmdHelper(cmd, client, debug) {
|
|
|
1981
2017
|
|
|
1982
2018
|
|
|
1983
2019
|
let stringifiedScheme = JSON.stringify(ports[protocol][scheme]);
|
|
1984
|
-
|
|
2020
|
+
// #B665 — the assignment is matched as one whole JSON string of the
|
|
2021
|
+
// scheme's text: unescaped and unanchored, `api@shop/dev` was found
|
|
2022
|
+
// inside `"api@shop/devel"` or `"myapi@shop/dev"`, and the port of the
|
|
2023
|
+
// first such value in the text was taken over for this one.
|
|
2024
|
+
// was: let patt = new RegExp(bundle +'@'+ cmd.projectName +'/'+ env);
|
|
2025
|
+
let patt = new RegExp(escapeRegex(JSON.stringify(bundle +'@'+ cmd.projectName +'/'+ env)));
|
|
1985
2026
|
let found = false;
|
|
1986
2027
|
let portToAssign = null;
|
|
1987
2028
|
// do not override if existing
|
|
1988
2029
|
if ( patt.test(stringifiedScheme) ) { // there can multiple matches
|
|
1989
2030
|
found = true;
|
|
1990
2031
|
// reusing the same for portsReverse
|
|
1991
|
-
let re = new RegExp('([0-9]+)\"\:(|\s+)\"('+ bundle +'\@'+ cmd.projectName +'\/'+ env +')', 'g');
|
|
2032
|
+
// was: let re = new RegExp('([0-9]+)\"\:(|\s+)\"('+ bundle +'\@'+ cmd.projectName +'\/'+ env +')', 'g');
|
|
2033
|
+
// (`\s` in that string literal is a plain `s`)
|
|
2034
|
+
let re = new RegExp('([0-9]+)":(|\\s+)(' + escapeRegex(JSON.stringify(bundle +'@'+ cmd.projectName +'/'+ env)) + ')', 'g');
|
|
1992
2035
|
let m;
|
|
1993
2036
|
while ((m = re.exec(stringifiedScheme)) !== null) {
|
|
1994
2037
|
// This is necessary to avoid infinite loops with zero-width matches
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
|
|
10
10
|
<bundle> Registered bundle name; resolved to http://localhost:<port>
|
|
11
11
|
<http|https URL> Full URL used as the target origin directly
|
|
12
|
-
(e.g. bundles running on Docker or a remote env)
|
|
12
|
+
(e.g. bundles running on Docker or a remote env);
|
|
13
|
+
its query string and fragment are dropped
|
|
13
14
|
|
|
14
15
|
Options:
|
|
15
16
|
|
|
@@ -197,8 +197,11 @@ function detectDarwin() {
|
|
|
197
197
|
|
|
198
198
|
if (!fs.existsSync(plistPath)) return 'safari';
|
|
199
199
|
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
// #B665 S2 (2026-09-27) — an argument vector: the path reaches plutil whole.
|
|
201
|
+
// was: var raw = child.execSync(
|
|
202
|
+
// was: 'plutil -convert json -o - "' + plistPath + '"'
|
|
203
|
+
var raw = child.execFileSync(
|
|
204
|
+
'plutil', ['-convert', 'json', '-o', '-', plistPath]
|
|
202
205
|
, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }
|
|
203
206
|
);
|
|
204
207
|
var plist = JSON.parse(raw);
|
|
@@ -225,8 +228,11 @@ function detectDarwin() {
|
|
|
225
228
|
*/
|
|
226
229
|
function detectLinux() {
|
|
227
230
|
try {
|
|
228
|
-
|
|
229
|
-
|
|
231
|
+
// #B665 S2 (2026-09-27) — no shell; stderr is piped, as `2>/dev/null` discarded it.
|
|
232
|
+
// was: var desktop = child.execSync(
|
|
233
|
+
// was: 'xdg-settings get default-web-browser 2>/dev/null'
|
|
234
|
+
var desktop = child.execFileSync(
|
|
235
|
+
'xdg-settings', ['get', 'default-web-browser']
|
|
230
236
|
, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }
|
|
231
237
|
).trim().toLowerCase();
|
|
232
238
|
for (var prefix in DESKTOP_MAP) {
|
|
@@ -283,10 +289,17 @@ function detectDefaultBrowser() {
|
|
|
283
289
|
*/
|
|
284
290
|
function hasBin(bin) {
|
|
285
291
|
try {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
292
|
+
// #B665 S2 (2026-09-27) — `which` from an argument vector on macOS and Linux; Windows
|
|
293
|
+
// keeps `where` through cmd.exe (#B694).
|
|
294
|
+
// var cmd = (os.platform() === 'win32')
|
|
295
|
+
// ? 'where ' + bin + ' 2>nul'
|
|
296
|
+
// : 'which ' + bin + ' 2>/dev/null';
|
|
297
|
+
// child.execSync(cmd, { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
298
|
+
if (os.platform() === 'win32') {
|
|
299
|
+
child.execSync('where ' + bin + ' 2>nul', { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
300
|
+
} else {
|
|
301
|
+
child.execFileSync('which', [bin], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
302
|
+
}
|
|
290
303
|
return true;
|
|
291
304
|
} catch (e) { return false; }
|
|
292
305
|
}
|
|
@@ -320,12 +333,14 @@ function resolveWindowsPath(winDef) {
|
|
|
320
333
|
}
|
|
321
334
|
|
|
322
335
|
/**
|
|
323
|
-
* Build the
|
|
336
|
+
* Build the launch that opens a URL in a specific browser: an argument vector
|
|
337
|
+
* (`bin` + `args`, run without a shell) on macOS and Linux, and a `start`
|
|
338
|
+
* command line (`cmd`, run through cmd.exe) on Windows (#B665, #B694).
|
|
324
339
|
*
|
|
325
340
|
* @inner
|
|
326
341
|
* @param {string} shortName - Browser short name from BROWSERS
|
|
327
342
|
* @param {string} url - The URL to open
|
|
328
|
-
* @returns {{ cmd: string, appMode: boolean }|null}
|
|
343
|
+
* @returns {{ bin: string, args: string[], appMode: boolean }|{ cmd: string, appMode: boolean }|null}
|
|
329
344
|
*/
|
|
330
345
|
function buildLaunchCmd(shortName, url) {
|
|
331
346
|
var browser = BROWSERS[shortName];
|
|
@@ -345,14 +360,19 @@ function buildLaunchCmd(shortName, url) {
|
|
|
345
360
|
// regular navigation, ignoring --app=.
|
|
346
361
|
var binPath = '/Applications/' + platDef.app + '.app/Contents/MacOS/' + platDef.app;
|
|
347
362
|
if (!fs.existsSync(binPath)) return null;
|
|
363
|
+
// #B665 S2 (2026-09-27) — an argument vector: the URL reaches the browser whole.
|
|
364
|
+
// was: cmd : '"' + binPath + '" --app="' + url + '"'
|
|
348
365
|
return {
|
|
349
|
-
|
|
366
|
+
bin : binPath
|
|
367
|
+
, args : ['--app=' + url]
|
|
350
368
|
, appMode : true
|
|
351
369
|
};
|
|
352
370
|
}
|
|
353
371
|
// Non-app-mode browsers (Firefox, Safari): use `open -a`
|
|
372
|
+
// was: cmd : 'open -a "' + platDef.app + '" "' + url + '"'
|
|
354
373
|
return {
|
|
355
|
-
|
|
374
|
+
bin : 'open'
|
|
375
|
+
, args : ['-a', platDef.app, url]
|
|
356
376
|
, appMode : false
|
|
357
377
|
};
|
|
358
378
|
}
|
|
@@ -364,10 +384,12 @@ function buildLaunchCmd(shortName, url) {
|
|
|
364
384
|
if (hasBin(bins[i])) { bin = bins[i]; break; }
|
|
365
385
|
}
|
|
366
386
|
if (!bin) return null;
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
387
|
+
// #B665 S2 (2026-09-27) — an argument vector: the URL reaches the browser whole.
|
|
388
|
+
// var linuxArgs = browser.appMode
|
|
389
|
+
// ? bin + ' --app="' + url + '"'
|
|
390
|
+
// : bin + ' "' + url + '"';
|
|
391
|
+
// return { cmd: linuxArgs, appMode: browser.appMode };
|
|
392
|
+
return { bin: bin, args: browser.appMode ? ['--app=' + url] : [url], appMode: browser.appMode };
|
|
371
393
|
}
|
|
372
394
|
|
|
373
395
|
if (platform === 'win32') {
|
|
@@ -383,6 +405,28 @@ function buildLaunchCmd(shortName, url) {
|
|
|
383
405
|
return null;
|
|
384
406
|
}
|
|
385
407
|
|
|
408
|
+
/**
|
|
409
|
+
* Opens a URL in the system default browser: `open` on macOS and `xdg-open`
|
|
410
|
+
* elsewhere, each from an argument vector, and `start` through cmd.exe on
|
|
411
|
+
* Windows (#B665, #B694). Used by both fallbacks of `inspector:open`.
|
|
412
|
+
*
|
|
413
|
+
* @inner
|
|
414
|
+
* @param {string} url - The URL to open
|
|
415
|
+
* @returns {void}
|
|
416
|
+
* @example
|
|
417
|
+
* openInDefaultBrowser('http://localhost:3100/_gina/inspector/');
|
|
418
|
+
*/
|
|
419
|
+
function openInDefaultBrowser(url) {
|
|
420
|
+
var platform = os.platform();
|
|
421
|
+
if (platform === 'win32') {
|
|
422
|
+
child.exec('start "" "' + url + '"');
|
|
423
|
+
} else if (platform === 'darwin') {
|
|
424
|
+
child.execFile('open', [url]);
|
|
425
|
+
} else {
|
|
426
|
+
child.execFile('xdg-open', [url]);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
386
430
|
|
|
387
431
|
/**
|
|
388
432
|
* Reads `inspector.url` from `~/.gina/${shortVersion}/settings.json`
|
|
@@ -527,6 +571,9 @@ function Open(opt, cmd) {
|
|
|
527
571
|
} else if (/^https?:\/\//i.test(arg)) {
|
|
528
572
|
// Positional URL → target origin for cross-origin inspection
|
|
529
573
|
// (Inspector on host, bundles on Docker, remote envs, …).
|
|
574
|
+
// #B719 — drop a query string or fragment first: the SPA appends
|
|
575
|
+
// `/_gina/...` to the target, which would otherwise land in the query.
|
|
576
|
+
arg = arg.replace(/[?#].*$/, '');
|
|
530
577
|
// Strip trailing slashes so the SPA can append `/_gina/...` cleanly.
|
|
531
578
|
targetOverride = arg.replace(/\/+$/, '');
|
|
532
579
|
} else if (!/^--/.test(arg) && !/^@/.test(arg)) {
|
|
@@ -613,12 +660,14 @@ function Open(opt, cmd) {
|
|
|
613
660
|
'No app-mode browser found. '
|
|
614
661
|
+ 'Opening in system default browser.'
|
|
615
662
|
);
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
663
|
+
// #B665 S2 (2026-09-27) — openInDefaultBrowser(): an argument vector on macOS and Linux
|
|
664
|
+
// var fallbackCmd = (os.platform() === 'win32')
|
|
665
|
+
// ? 'start "" "' + url + '"'
|
|
666
|
+
// : (os.platform() === 'darwin')
|
|
667
|
+
// ? 'open "' + url + '"'
|
|
668
|
+
// : 'xdg-open "' + url + '"';
|
|
669
|
+
// child.exec(fallbackCmd);
|
|
670
|
+
openInDefaultBrowser(url);
|
|
622
671
|
process.exit(0);
|
|
623
672
|
return;
|
|
624
673
|
}
|
|
@@ -630,18 +679,32 @@ function Open(opt, cmd) {
|
|
|
630
679
|
);
|
|
631
680
|
console.log(url);
|
|
632
681
|
|
|
633
|
-
|
|
682
|
+
// #B665 S2 (2026-09-27) — the launch runs from an argument vector on macOS and Linux;
|
|
683
|
+
// Windows keeps its `start` command line (#B694).
|
|
684
|
+
// child.exec(launch.cmd, function (err) {
|
|
685
|
+
// if (err) {
|
|
686
|
+
// console.warn('Browser launch failed, trying system default.');
|
|
687
|
+
// var fallback = (os.platform() === 'win32')
|
|
688
|
+
// ? 'start "" "' + url + '"'
|
|
689
|
+
// : (os.platform() === 'darwin')
|
|
690
|
+
// ? 'open "' + url + '"'
|
|
691
|
+
// : 'xdg-open "' + url + '"';
|
|
692
|
+
// child.exec(fallback);
|
|
693
|
+
// }
|
|
694
|
+
// process.exit(0);
|
|
695
|
+
// });
|
|
696
|
+
var onLaunched = function (err) {
|
|
634
697
|
if (err) {
|
|
635
698
|
console.warn('Browser launch failed, trying system default.');
|
|
636
|
-
|
|
637
|
-
? 'start "" "' + url + '"'
|
|
638
|
-
: (os.platform() === 'darwin')
|
|
639
|
-
? 'open "' + url + '"'
|
|
640
|
-
: 'xdg-open "' + url + '"';
|
|
641
|
-
child.exec(fallback);
|
|
699
|
+
openInDefaultBrowser(url);
|
|
642
700
|
}
|
|
643
701
|
process.exit(0);
|
|
644
|
-
}
|
|
702
|
+
};
|
|
703
|
+
if (launch.cmd) {
|
|
704
|
+
child.exec(launch.cmd, onLaunched);
|
|
705
|
+
} else {
|
|
706
|
+
child.execFile(launch.bin, launch.args, onLaunched);
|
|
707
|
+
}
|
|
645
708
|
};
|
|
646
709
|
|
|
647
710
|
init();
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
// #B665 (2026-09-27) — execFileSync: the ps sweep lists processes without a shell.
|
|
2
|
+
// const { execSync } = require('child_process');
|
|
3
|
+
const { execFileSync } = require('child_process');
|
|
2
4
|
var fs = require('fs');
|
|
3
5
|
var console = lib.logger;
|
|
4
6
|
var fmt = lib.cmdStatusFormat;
|
|
5
7
|
|
|
6
8
|
var CmdHelper = require('./../helper');
|
|
9
|
+
// #B665 (2026-09-27) — the ps sweep matches the project name as literal text
|
|
10
|
+
var escapeRegex = require('./../bundle/inc/name-rewrite').escapeRegex;
|
|
7
11
|
|
|
8
12
|
/**
|
|
9
13
|
* Grace period (ms) between the first SIGTERM and the follow-up SIGKILL for
|
|
@@ -15,6 +19,17 @@ var CmdHelper = require('./../helper');
|
|
|
15
19
|
*/
|
|
16
20
|
var KILL_GRACE_MS = 1500;
|
|
17
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Output cap for the `ps -ef` listing of the orphan sweep, which is read whole
|
|
24
|
+
* since the shell pipeline that filtered it is gone: Node's 1 MB default could
|
|
25
|
+
* be exceeded on a host running many processes with long command lines (#B665).
|
|
26
|
+
*
|
|
27
|
+
* @constant
|
|
28
|
+
* @inner
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
var PS_MAX_BUFFER = 64 * 1024 * 1024;
|
|
32
|
+
|
|
18
33
|
/**
|
|
19
34
|
* @module gina/lib/cmd/minion/kill
|
|
20
35
|
*/
|
|
@@ -116,7 +131,8 @@ function Kill(opt, cmd) {
|
|
|
116
131
|
/**
|
|
117
132
|
* Builds the kill set for the project by unioning two sources:
|
|
118
133
|
* 1. run-dir pidfiles (`<bundle>@<project>.pid`) whose process is alive;
|
|
119
|
-
* 2. a `ps` sweep for live `gina: <bundle>@<project>` titles (orphans)
|
|
134
|
+
* 2. a `ps` sweep for live `gina: <bundle>@<project>` titles (orphans):
|
|
135
|
+
* `ps -ef` run without a shell, its lines filtered here (#B665).
|
|
120
136
|
* Targets are keyed by PID so a process tracked by both sources is counted
|
|
121
137
|
* once. Stale pidfiles (file present, process gone) are collected separately
|
|
122
138
|
* for clean-up. The handler's own PID / parent PID are never targeted.
|
|
@@ -168,31 +184,42 @@ function Kill(opt, cmd) {
|
|
|
168
184
|
|
|
169
185
|
// --- ps pass (POSIX only) ---
|
|
170
186
|
if ( !isWin32() ) {
|
|
187
|
+
// Match `gina: <bundle>@<project>` precisely: the trailing
|
|
188
|
+
// (\s|$) boundary stops `@foo` matching project `foobar`.
|
|
189
|
+
// #B665 (2026-09-27) — `ps` runs from an argument vector, without a shell, and its
|
|
190
|
+
// listing is filtered here: the project name reached a single-quoted `grep -E`
|
|
191
|
+
// command line unescaped, so a `'` in it broke out into the shell and a `.` in it
|
|
192
|
+
// matched any character. Lines naming `grep` are skipped as `grep -v grep` did;
|
|
193
|
+
// column 2 of `ps -ef` is the PID, its last column the `<bundle>@<project>` title.
|
|
194
|
+
// was: var psCmd = "ps -ef | grep -v grep | grep -E 'gina: [^ ]+@" + self.projectName + "([[:space:]]|$)' | awk '{print $2\"|\"$NF}'";
|
|
195
|
+
// was: var out = execSync(psCmd).toString().replace(/\n$/, '');
|
|
196
|
+
var titleRe = new RegExp('gina: [^ ]+@' + escapeRegex(self.projectName) + '(\\s|$)');
|
|
197
|
+
var out = '';
|
|
171
198
|
try {
|
|
172
|
-
|
|
173
|
-
// ([[:space:]]|$) boundary stops `@foo` matching project `foobar`.
|
|
174
|
-
var psCmd = "ps -ef | grep -v grep | grep -E 'gina: [^ ]+@" + self.projectName + "([[:space:]]|$)' | awk '{print $2\"|\"$NF}'";
|
|
175
|
-
var out = execSync(psCmd).toString().replace(/\n$/, '');
|
|
176
|
-
if ( out.length > 0 ) {
|
|
177
|
-
var lines = out.split(/\n/);
|
|
178
|
-
for (var j = 0; j < lines.length; j++) {
|
|
179
|
-
var parts = lines[j].split(/\|/);
|
|
180
|
-
var pid = ~~parts[0];
|
|
181
|
-
if ( !pid || pid === process.pid || pid === process.ppid ) {
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
var titleTail = parts[1] || ''; // <bundle>@<project>
|
|
185
|
-
var psAt = titleTail.lastIndexOf('@');
|
|
186
|
-
var psBundle = (psAt > 0) ? titleTail.substring(0, psAt) : titleTail;
|
|
187
|
-
if ( targets[pid] ) {
|
|
188
|
-
targets[pid].sources.push('ps');
|
|
189
|
-
} else {
|
|
190
|
-
targets[pid] = { bundle: psBundle, pid: pid, sources: ['ps'] };
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
199
|
+
out = execFileSync('ps', ['-ef'], { maxBuffer: PS_MAX_BUFFER }).toString();
|
|
194
200
|
} catch (e) {
|
|
195
|
-
//
|
|
201
|
+
// no `ps` (a slim container image) -> no orphans, fine; a `ps` that failed
|
|
202
|
+
// after printing keeps what it printed, as the pipeline did
|
|
203
|
+
out = (e && e.stdout) ? e.stdout.toString() : '';
|
|
204
|
+
}
|
|
205
|
+
var lines = out.split(/\n/);
|
|
206
|
+
for (var j = 0; j < lines.length; j++) {
|
|
207
|
+
if ( lines[j].indexOf('grep') > -1 || !titleRe.test(lines[j]) ) {
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
var cols = lines[j].trim().split(/\s+/);
|
|
211
|
+
var pid = ~~cols[1];
|
|
212
|
+
if ( !pid || pid === process.pid || pid === process.ppid ) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
var titleTail = cols[cols.length - 1] || ''; // <bundle>@<project>
|
|
216
|
+
var psAt = titleTail.lastIndexOf('@');
|
|
217
|
+
var psBundle = (psAt > 0) ? titleTail.substring(0, psAt) : titleTail;
|
|
218
|
+
if ( targets[pid] ) {
|
|
219
|
+
targets[pid].sources.push('ps');
|
|
220
|
+
} else {
|
|
221
|
+
targets[pid] = { bundle: psBundle, pid: pid, sources: ['ps'] };
|
|
222
|
+
}
|
|
196
223
|
}
|
|
197
224
|
}
|
|
198
225
|
|