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
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module gina/lib/cmd/bundle/inc/boot-lines
|
|
3
|
+
*
|
|
4
|
+
* The boot lines `gina bundle:start` passes on to its client (#B691).
|
|
5
|
+
*
|
|
6
|
+
* A bundle started through the framework daemon writes each levelled line twice:
|
|
7
|
+
* to its own stdout (the logger's `default` container) and to the MQ listener (the
|
|
8
|
+
* `mq` container), which forwards the line to the `gina tail` sessions attached at
|
|
9
|
+
* that instant and keeps no backlog. The daemon reads the bundle's stdout only as a
|
|
10
|
+
* startup watchdog (`start.js`), and until 0.7.1 it passed on nothing from it but an
|
|
11
|
+
* emerg and the started and URL lines. So a warning the bundle logged while it
|
|
12
|
+
* booted reached no operator whose tail attached after the boot: the ordinary
|
|
13
|
+
* `gina bundle:start`, then `gina tail`, and a container whose init script starts
|
|
14
|
+
* the bundle before its tail.
|
|
15
|
+
*
|
|
16
|
+
* `createBootLineFilter()` reads that stdout during the boot and returns the entries
|
|
17
|
+
* logged at warn and above, for `start.js` to write to its client. Each entry comes
|
|
18
|
+
* back as the bundle rendered it, colour codes included. `emerg` is left to the
|
|
19
|
+
* abort path in `start.js`; info, notice and debug stay out.
|
|
20
|
+
*
|
|
21
|
+
* No `fs`, no framework globals: require-by-path unit-testable. It lives in `inc/`
|
|
22
|
+
* so the command loader never takes it for a `bundle:<action>` handler.
|
|
23
|
+
*/
|
|
24
|
+
'use strict';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The level names passed on: every name the logger defines at severity 1 to 4. The
|
|
28
|
+
* logger renders the name the caller used, and it recommends `warning` and `err`
|
|
29
|
+
* over their deprecated aliases `warn` and `error`, so all six are matched.
|
|
30
|
+
*
|
|
31
|
+
* @constant
|
|
32
|
+
* @type {string[]}
|
|
33
|
+
*/
|
|
34
|
+
var FORWARDED_LEVELS = ['alert', 'crit', 'error', 'err', 'warn', 'warning'];
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The longest line read, in characters. A longer line is dropped, up to its
|
|
38
|
+
* newline: no boot warning is that long, and the daemon must not buffer a
|
|
39
|
+
* bundle's output without bound.
|
|
40
|
+
*
|
|
41
|
+
* @constant
|
|
42
|
+
* @type {number}
|
|
43
|
+
*/
|
|
44
|
+
var MAX_PENDING = 64 * 1024;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* The longest entry passed on, in characters. An entry reaching it is passed on as
|
|
48
|
+
* read so far, and the rest of it is dropped.
|
|
49
|
+
*
|
|
50
|
+
* @constant
|
|
51
|
+
* @type {number}
|
|
52
|
+
*/
|
|
53
|
+
var MAX_ENTRY = 64 * 1024;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* The start of an entry once colour codes are stripped: the logger's default
|
|
57
|
+
* template `[%d] [%s][%a] %m`, whose level name is padded to a fixed width, as in
|
|
58
|
+
* `[2026 Sep 27 06:17:10] [warn ][api@shop] …`. Group 1 is the level name.
|
|
59
|
+
*
|
|
60
|
+
* @constant
|
|
61
|
+
* @type {RegExp}
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
var HEADER_RE = /^\[[^\]\n]+\] \[([a-z]+) *\]\[/;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Every SGR (colour or style) escape sequence, for stripping.
|
|
68
|
+
*
|
|
69
|
+
* @constant
|
|
70
|
+
* @type {RegExp}
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
var SGR_ALL_RE = /\x1b\[[0-9;]*m/g;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Whether a line holds an SGR escape sequence.
|
|
77
|
+
*
|
|
78
|
+
* @constant
|
|
79
|
+
* @type {RegExp}
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
var SGR_ANY_RE = /\x1b\[[0-9;]*m/;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* An SGR sequence closing a colour or style at the end of a line. The logger's
|
|
86
|
+
* `format()` wraps a whole message in ONE colour block, so the line that carries
|
|
87
|
+
* the close is the entry's last.
|
|
88
|
+
*
|
|
89
|
+
* @constant
|
|
90
|
+
* @type {RegExp}
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
93
|
+
var SGR_CLOSE_AT_END_RE = /\x1b\[(?:0|22|23|24|27|28|29|39|49)?m[ \t]*$/;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Reads the level of a line that starts an entry: a text header, or a JSON line
|
|
97
|
+
* (a logger rendering JSON writes one object per entry).
|
|
98
|
+
*
|
|
99
|
+
* @inner
|
|
100
|
+
* @private
|
|
101
|
+
* @param {string} line - One complete line, without its line ending
|
|
102
|
+
* @returns {?{level: string, closed: boolean}} The entry's level and whether this
|
|
103
|
+
* line is also its last, or null when the line starts no entry
|
|
104
|
+
*/
|
|
105
|
+
function readHeader(line) {
|
|
106
|
+
if ( line.charAt(0) == '{' ) {
|
|
107
|
+
try {
|
|
108
|
+
var obj = JSON.parse(line);
|
|
109
|
+
if ( obj && typeof(obj.level) == 'string' ) {
|
|
110
|
+
return { level: obj.level.toLowerCase(), closed: true };
|
|
111
|
+
}
|
|
112
|
+
} catch (parseErr) {
|
|
113
|
+
// not JSON: no entry starts here
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
var m = line.replace(SGR_ALL_RE, '').match(HEADER_RE);
|
|
119
|
+
if (!m) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
level : m[1],
|
|
124
|
+
// without colour codes nothing marks where the entry ends: the line is all of it
|
|
125
|
+
closed: !SGR_ANY_RE.test(line) || SGR_CLOSE_AT_END_RE.test(line)
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* The filter `createBootLineFilter()` returns.
|
|
131
|
+
*
|
|
132
|
+
* @typedef {object} BootLineFilter
|
|
133
|
+
* @property {function((string|Buffer)): string[]} push - Reads one chunk of the
|
|
134
|
+
* bundle's stdout; returns the entries at warn and above that the chunk
|
|
135
|
+
* completed, in order, each as rendered and without a trailing newline
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Creates the filter for one bundle's boot. A chunk may split a line or carry
|
|
140
|
+
* several: a line is read once its newline arrives, and an entry spanning several
|
|
141
|
+
* lines is returned once its colour block closes or the next entry starts.
|
|
142
|
+
*
|
|
143
|
+
* @returns {BootLineFilter} A filter holding the state of this bundle's output only
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* var bootLines = require('./inc/boot-lines');
|
|
147
|
+
* var filter = bootLines.createBootLineFilter();
|
|
148
|
+
*
|
|
149
|
+
* child.stdout.on('data', function(data) {
|
|
150
|
+
* var entries = filter.push(data);
|
|
151
|
+
* // e.g. ['\x1b[33m[2026 Sep 27 06:17:11] [warn ][api@shop] [ SWIG ] … \x1b[39m']
|
|
152
|
+
* if (entries.length) client.write('\n' + entries.join('\n') + '\n');
|
|
153
|
+
* });
|
|
154
|
+
*/
|
|
155
|
+
function createBootLineFilter() {
|
|
156
|
+
var pending = '' // the start of a line whose newline has not arrived yet
|
|
157
|
+
, skipping = false // dropping the rest of a line longer than MAX_PENDING
|
|
158
|
+
, entry = null // the entry being read: { forward: boolean, text: string }
|
|
159
|
+
;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Ends the entry being read; keeps it when it is passed on.
|
|
163
|
+
*
|
|
164
|
+
* @inner
|
|
165
|
+
* @private
|
|
166
|
+
* @param {string[]} out - The entries this push completed
|
|
167
|
+
*/
|
|
168
|
+
function finish(out) {
|
|
169
|
+
if (entry && entry.forward) {
|
|
170
|
+
out.push(entry.text);
|
|
171
|
+
}
|
|
172
|
+
entry = null;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Reads one complete line.
|
|
177
|
+
*
|
|
178
|
+
* @inner
|
|
179
|
+
* @private
|
|
180
|
+
* @param {string} line - Without its newline
|
|
181
|
+
* @param {string[]} out - The entries this push completed
|
|
182
|
+
*/
|
|
183
|
+
function readLine(line, out) {
|
|
184
|
+
if ( line.charCodeAt(line.length - 1) === 13 ) { // a CRLF line ending
|
|
185
|
+
line = line.slice(0, -1);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
var header = readHeader(line);
|
|
189
|
+
if (header) {
|
|
190
|
+
finish(out); // a new entry ends the one before it
|
|
191
|
+
var forward = FORWARDED_LEVELS.indexOf(header.level) > -1;
|
|
192
|
+
entry = { forward: forward, text: forward ? line : '' };
|
|
193
|
+
if (header.closed) {
|
|
194
|
+
finish(out);
|
|
195
|
+
}
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (!entry) { // a line outside any entry: a raw write
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
var closes = SGR_CLOSE_AT_END_RE.test(line);
|
|
203
|
+
if (entry.forward) {
|
|
204
|
+
if ( entry.text.length + 1 + line.length > MAX_ENTRY ) {
|
|
205
|
+
finish(out); // passed on as read so far,
|
|
206
|
+
entry = { forward: false, text: '' }; // and the rest of it read and dropped
|
|
207
|
+
} else {
|
|
208
|
+
entry.text += '\n' + line;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (closes) {
|
|
212
|
+
finish(out);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Reads one chunk of the bundle's stdout.
|
|
218
|
+
*
|
|
219
|
+
* @param {string|Buffer} chunk - As read from the child's stdout
|
|
220
|
+
* @returns {string[]} The entries at warn and above this chunk completed, in order
|
|
221
|
+
*/
|
|
222
|
+
function push(chunk) {
|
|
223
|
+
var out = [];
|
|
224
|
+
if ( chunk === null || typeof(chunk) == 'undefined' ) {
|
|
225
|
+
return out;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
var text = String(chunk), start = 0, nl = -1, line = null;
|
|
229
|
+
while ( (nl = text.indexOf('\n', start)) > -1 ) {
|
|
230
|
+
line = pending + text.slice(start, nl);
|
|
231
|
+
start = nl + 1;
|
|
232
|
+
pending = '';
|
|
233
|
+
if (skipping) { // the end of a line too long to read
|
|
234
|
+
skipping = false;
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
if (line.length > MAX_PENDING) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
readLine(line, out);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
if (!skipping) {
|
|
244
|
+
var rest = text.slice(start);
|
|
245
|
+
if ( pending.length + rest.length > MAX_PENDING ) {
|
|
246
|
+
pending = '';
|
|
247
|
+
skipping = true;
|
|
248
|
+
} else {
|
|
249
|
+
pending += rest;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return out;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return { push: push };
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
module.exports = {
|
|
259
|
+
createBootLineFilter: createBootLineFilter,
|
|
260
|
+
FORWARDED_LEVELS : FORWARDED_LEVELS,
|
|
261
|
+
MAX_PENDING : MAX_PENDING,
|
|
262
|
+
MAX_ENTRY : MAX_ENTRY
|
|
263
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module gina/lib/cmd/bundle/inc/name
|
|
3
|
+
*
|
|
4
|
+
* The rule a NEW bundle name must pass (#B665): `gina bundle:add` and the destination of
|
|
5
|
+
* `gina bundle:copy` and `gina bundle:rename` apply it before they write anything. A bundle
|
|
6
|
+
* name becomes a key in the project's `manifest.json` and `env.json`, the source directory
|
|
7
|
+
* `src/<name>`, part of every `<bundle>@<project>` string in `ports.json` and
|
|
8
|
+
* `ports.reverse.json`, and part of its process title. The CLI used to check only a name's
|
|
9
|
+
* first character, so it registered names holding shell and regular-expression syntax, and
|
|
10
|
+
* names every object inherits (`constructor`), which the manifest's
|
|
11
|
+
* `typeof(bundles[name]) != 'undefined'` tests take for an existing bundle.
|
|
12
|
+
*
|
|
13
|
+
* The rule is the scope-name rule (`lib/cmd/scope/inc/name.js`, #B626, #B639). A name
|
|
14
|
+
* registered before it existed keeps working: the commands apply it to a name the manifest
|
|
15
|
+
* does not hold yet.
|
|
16
|
+
*
|
|
17
|
+
* No `fs`, no framework globals — require-by-path unit-testable. It lives in `inc/` so the
|
|
18
|
+
* command loader never takes it for a `bundle:<action>` handler.
|
|
19
|
+
*/
|
|
20
|
+
'use strict';
|
|
21
|
+
|
|
22
|
+
var scopeName = require('../../scope/inc/name');
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Whether `name` is a bundle name the CLI may register: letters, digits, `_`, `.` and `-`,
|
|
26
|
+
* starting with a lowercase letter, a digit, `_` or `.`; neither `.` nor `..`; and not a
|
|
27
|
+
* property every object inherits.
|
|
28
|
+
*
|
|
29
|
+
* @param {*} name - Candidate bundle name
|
|
30
|
+
* @returns {boolean} True when the scope-name rule accepts it
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* isValidBundleName('api'); // true
|
|
34
|
+
* isValidBundleName('design-system'); // true
|
|
35
|
+
* isValidBundleName('Admin'); // false — starts with an uppercase letter
|
|
36
|
+
* isValidBundleName('a$b'); // false — `$` is not allowed
|
|
37
|
+
* isValidBundleName('constructor'); // false — every object inherits it
|
|
38
|
+
*/
|
|
39
|
+
function isValidBundleName(name) {
|
|
40
|
+
return scopeName.isValidScopeName(name);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The refusal message for a name `isValidBundleName()` rejects. A reserved name is named as
|
|
45
|
+
* such; any other name gets the character rule. The value is JSON-quoted, so whitespace and
|
|
46
|
+
* control characters stay visible.
|
|
47
|
+
*
|
|
48
|
+
* @param {*} name - The rejected name
|
|
49
|
+
* @returns {string} The message, naming the value
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* describeInvalidBundleName('constructor');
|
|
53
|
+
* // '"constructor" is not a valid bundle name: it is a property every object inherits, ...'
|
|
54
|
+
* describeInvalidBundleName('a b');
|
|
55
|
+
* // '"a b" is not a valid bundle name: use letters, digits, ...'
|
|
56
|
+
*/
|
|
57
|
+
function describeInvalidBundleName(name) {
|
|
58
|
+
var shown = JSON.stringify(String(name));
|
|
59
|
+
if ( scopeName.isReservedName(name) ) {
|
|
60
|
+
return shown + ' is not a valid bundle name: it is a property every object inherits, so it'
|
|
61
|
+
+ ' cannot be used as a key in the project manifest.';
|
|
62
|
+
}
|
|
63
|
+
return shown + ' is not a valid bundle name: use letters, digits, `_`, `.` and `-`, starting with a'
|
|
64
|
+
+ ' lowercase letter, a digit, `_` or `.` (`.` and `..` are refused).';
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
module.exports = {
|
|
68
|
+
isValidBundleName : isValidBundleName,
|
|
69
|
+
describeInvalidBundleName : describeInvalidBundleName
|
|
70
|
+
};
|
|
@@ -4,6 +4,7 @@ var rl = readline.createInterface(process.stdin, process.stdout);
|
|
|
4
4
|
|
|
5
5
|
var CmdHelper = require('./../helper');
|
|
6
6
|
var console = lib.logger;
|
|
7
|
+
var escapeRegex = require('./inc/name-rewrite').escapeRegex;
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @module gina/lib/cmd/bundle/remove
|
|
@@ -218,7 +219,10 @@ function Remove(opt, cmd) {
|
|
|
218
219
|
for (let protocol in ports) {
|
|
219
220
|
for (let scheme in ports[protocol]) {
|
|
220
221
|
for (let port in ports[protocol][scheme]) {
|
|
221
|
-
|
|
222
|
+
// #B665 — the names are matched literally, from the start of the value:
|
|
223
|
+
// `api@shop/` matched `myapi@shop/dev`, whose ports went with this bundle's.
|
|
224
|
+
// was: re = new RegExp(bundle +"\@"+ self.projectName +"\/");
|
|
225
|
+
re = new RegExp('^' + escapeRegex(bundle +'@'+ self.projectName +'/'));
|
|
222
226
|
if ( re.test(ports[protocol][scheme][port]) ) {
|
|
223
227
|
delete ports[protocol][scheme][port];
|
|
224
228
|
}
|
|
@@ -227,7 +231,9 @@ function Remove(opt, cmd) {
|
|
|
227
231
|
}
|
|
228
232
|
|
|
229
233
|
for (let bundleAddress in portsReverse) {
|
|
230
|
-
|
|
234
|
+
// #B665 — the whole key, literally: `api@shop` matched `myapi@shop` and `api@shopping`.
|
|
235
|
+
// was: re = new RegExp(bundle +"\@"+ self.projectName);
|
|
236
|
+
re = new RegExp('^' + escapeRegex(bundle +'@'+ self.projectName) + '$');
|
|
231
237
|
if ( re.test(bundleAddress) ) {
|
|
232
238
|
delete portsReverse[bundleAddress];
|
|
233
239
|
}
|
|
@@ -3,6 +3,7 @@ var console = lib.logger;
|
|
|
3
3
|
|
|
4
4
|
var CmdHelper = require('./../helper');
|
|
5
5
|
var nameRewrite = require('./inc/name-rewrite');
|
|
6
|
+
var bundleNameRule = require('./inc/name');
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @module gina/lib/cmd/bundle/rename
|
|
@@ -350,6 +351,9 @@ function Rename(opt, cmd) {
|
|
|
350
351
|
* (unless `--dry-run`) moves the directory, rewrites the name footprint, and
|
|
351
352
|
* rekeys every registry surface — all snapshot-guarded for rollback.
|
|
352
353
|
*
|
|
354
|
+
* A new name the manifest does not hold yet must pass the bundle-name rule
|
|
355
|
+
* (`inc/name.js`), before the dry-run report and before anything moves (#B665).
|
|
356
|
+
*
|
|
353
357
|
* @inner
|
|
354
358
|
* @private
|
|
355
359
|
*/
|
|
@@ -373,6 +377,16 @@ function Rename(opt, cmd) {
|
|
|
373
377
|
process.exit(1);
|
|
374
378
|
return;
|
|
375
379
|
}
|
|
380
|
+
// #B665 — the whole new name must pass the bundle-name rule (`inc/name.js`):
|
|
381
|
+
// isValidName() checks only its first character. A name the manifest already
|
|
382
|
+
// holds, as an own key (a destination overwritten under --force), keeps working.
|
|
383
|
+
var destRegistered = !!(self.projectData && self.projectData.bundles)
|
|
384
|
+
&& Object.prototype.hasOwnProperty.call(self.projectData.bundles, dest);
|
|
385
|
+
if ( !destRegistered && !bundleNameRule.isValidBundleName(dest) ) {
|
|
386
|
+
console.error( bundleNameRule.describeInvalidBundleName(dest) );
|
|
387
|
+
process.exit(1);
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
376
390
|
|
|
377
391
|
// source must exist (registered + on disk)
|
|
378
392
|
var srcEntry = (self.bundlesByProject && self.bundlesByProject[project])
|
|
@@ -2,6 +2,8 @@ const fs = require('fs');
|
|
|
2
2
|
const { EventEmitter } = require('events');
|
|
3
3
|
const { spawn } = require('child_process');
|
|
4
4
|
const { execSync } = require('child_process');
|
|
5
|
+
// #B665 (2026-09-27) — execFileSync: the reinstall's framework:link step runs from an argument vector.
|
|
6
|
+
const { execFileSync } = require('child_process');
|
|
5
7
|
const util = require('util');
|
|
6
8
|
const promisify = require('util').promisify;
|
|
7
9
|
|
|
@@ -9,6 +11,10 @@ var CmdHelper = require('./../helper');
|
|
|
9
11
|
// Runtime detection (Bun vs Node) for the PM-aware reinstall below. Required by a
|
|
10
12
|
// plain relative path (the bare `lib/<name>` form is unavailable in CLI/daemon scope).
|
|
11
13
|
var runtime = require(__dirname + '/../../../../../utils/runtime.js');
|
|
14
|
+
// #B691 (2026-09-27) — picks a bundle's warn-and-above boot lines out of its stdout for the
|
|
15
|
+
// client. Relative path: the bare `lib/<name>` form is unavailable in CLI/daemon scope.
|
|
16
|
+
var bootLines = require('./inc/boot-lines');
|
|
17
|
+
var escapeRegex = require('./inc/name-rewrite').escapeRegex;
|
|
12
18
|
// `lib` is previously defiened as this file is required by anoth
|
|
13
19
|
// For user output
|
|
14
20
|
var terminal = lib.logger;
|
|
@@ -84,8 +90,10 @@ function Start(opt, cmd) {
|
|
|
84
90
|
|
|
85
91
|
/**
|
|
86
92
|
* Checks if the project's node_modules need to be reinstalled due to an arch/platform mismatch.
|
|
87
|
-
* Reinstalls via `npm install` (or `bun install` under Bun) if needed,
|
|
88
|
-
*
|
|
93
|
+
* Reinstalls via `npm install` (or `bun install` under Bun) if needed, re-links
|
|
94
|
+
* gina with this install's own `bin/gina framework:link`, run under the current
|
|
95
|
+
* runtime from an argument vector without a shell (#B665), then calls cb(false)
|
|
96
|
+
* to proceed.
|
|
89
97
|
* @inner
|
|
90
98
|
* @private
|
|
91
99
|
* @param {object} opt
|
|
@@ -193,14 +201,18 @@ function Start(opt, cmd) {
|
|
|
193
201
|
var result = null; resultError = false;
|
|
194
202
|
try {
|
|
195
203
|
result = execSync(npmCmd).toString();
|
|
196
|
-
|
|
197
|
-
//
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
+
// #B665 (2026-09-27) — this install's own bin/gina, run from an argument vector,
|
|
205
|
+
// without a shell: `which gina` could find no gina or a different install, and
|
|
206
|
+
// the project name reached `sh` unquoted. runtimeBinary() keeps the Bun
|
|
207
|
+
// behaviour (the running Bun binary, so a no-node image never meets the
|
|
208
|
+
// `#!/usr/bin/env node` shebang); under Node it returns the running node.
|
|
209
|
+
// was: var ginaBin = execSync('which gina').toString().trim();
|
|
210
|
+
// was: var linkCmd = runtime.isBun()
|
|
211
|
+
// was: ? runtime.runtimeBinary() +' '+ ginaBin +' framework:link @'+ self.projectName
|
|
212
|
+
// was: : ginaBin +' framework:link @'+ self.projectName;
|
|
213
|
+
// was: execSync(linkCmd);
|
|
214
|
+
var ginaBin = require('path').resolve(__dirname, '../../../../..', 'bin/gina');
|
|
215
|
+
execFileSync(runtime.runtimeBinary(process.execPath), [ginaBin, 'framework:link', '@' + self.projectName]);
|
|
204
216
|
} catch (err) {
|
|
205
217
|
resultError = err;
|
|
206
218
|
}
|
|
@@ -257,7 +269,8 @@ function Start(opt, cmd) {
|
|
|
257
269
|
|
|
258
270
|
|
|
259
271
|
/**
|
|
260
|
-
* Spawns the bundle process, monitors stdout for start/error signals,
|
|
272
|
+
* Spawns the bundle process, monitors stdout for start/error signals, passes the
|
|
273
|
+
* bundle's warn-and-above boot lines on to the client (#B691), and calls end().
|
|
261
274
|
* @inner
|
|
262
275
|
* @private
|
|
263
276
|
* @param {object} opt
|
|
@@ -437,11 +450,19 @@ function Start(opt, cmd) {
|
|
|
437
450
|
var checkCaseCount = 2
|
|
438
451
|
// The 2 flags we need to free the child.stdout if we do not want the command to wait for a timeout
|
|
439
452
|
// NB.: you can place flag by using terminal.notice
|
|
440
|
-
|
|
453
|
+
// #B665 — the name is matched literally: `a+b` never matched its own
|
|
454
|
+
// `mounted !` line, so the start never counted the bundle as mounted and
|
|
455
|
+
// killed it after its timeout, and a `(` threw.
|
|
456
|
+
// was: , checkCaseRe = new RegExp('('+bundle + '@' + self.projectName + ' mounted !|Bundle started !)', 'g')
|
|
457
|
+
, checkCaseRe = new RegExp('('+ escapeRegex(bundle + '@' + self.projectName) + ' mounted !|Bundle started !)', 'g')
|
|
441
458
|
, url = null
|
|
442
459
|
, debuggerOn = null
|
|
443
460
|
;
|
|
444
461
|
var port = '', errorFound = false;
|
|
462
|
+
// #B691 (2026-09-27) — one filter per spawned bundle. The MQ listener keeps no
|
|
463
|
+
// backlog, so a line the bundle logs while it boots reaches only a `gina tail`
|
|
464
|
+
// attached before it: the bundle's warn-and-above boot lines go to this client too.
|
|
465
|
+
var bootLineFilter = bootLines.createBootLineFilter(), bootLinesShown = false;
|
|
445
466
|
child.stdout.on('data', function(data) {
|
|
446
467
|
// terminal.log(data);
|
|
447
468
|
|
|
@@ -450,6 +471,20 @@ function Start(opt, cmd) {
|
|
|
450
471
|
// 'default' container) triggers child.kill('SIGKILL') and silences the error.
|
|
451
472
|
if (isStarting) return;
|
|
452
473
|
|
|
474
|
+
// #B691 — pass the bundle's warn-and-above boot lines on to the client, ahead
|
|
475
|
+
// of the checks below, so a warning comes before the started or aborted line.
|
|
476
|
+
// The first one starts a new line: `Trying to start bundle [ … ]` ends without
|
|
477
|
+
// one. A fault here must never break a start.
|
|
478
|
+
try {
|
|
479
|
+
var _bootEntries = bootLineFilter.push(data);
|
|
480
|
+
if ( _bootEntries.length && !opt.client.destroyed ) {
|
|
481
|
+
opt.client.write( (bootLinesShown ? '' : '\n') + _bootEntries.join('\n') + '\n' );
|
|
482
|
+
bootLinesShown = true;
|
|
483
|
+
}
|
|
484
|
+
} catch (bootLinesErr) {
|
|
485
|
+
terminal.debug('[bundle:start] boot lines not passed on: '+ bootLinesErr.message);
|
|
486
|
+
}
|
|
487
|
+
|
|
453
488
|
// handle errors
|
|
454
489
|
if ( /EADDRINUSE.*port/i.test(data) && !errorFound ) {
|
|
455
490
|
terminal.log(data);
|
|
@@ -1,9 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
// #B665 (2026-09-27) — execFileSync: the ps fallback 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
|
+
// #B665 S2 (2026-09-27) — the SIGKILL is sent with process.kill, not through sh.
|
|
6
|
+
// var exec = require('child_process').exec;
|
|
4
7
|
|
|
5
8
|
var CmdHelper = require('./../helper');
|
|
9
|
+
// #B665 (2026-09-27) — the ps fallback matches the names as literal text
|
|
10
|
+
var escapeRegex = require('./inc/name-rewrite').escapeRegex;
|
|
6
11
|
var console = lib.logger;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Output cap for the `ps -ef` listing of the missing-pid-file fallback, which is
|
|
15
|
+
* read whole since the shell pipeline that filtered it is gone: Node's 1 MB
|
|
16
|
+
* default could be exceeded on a host running many processes with long command
|
|
17
|
+
* lines (#B665).
|
|
18
|
+
*
|
|
19
|
+
* @constant
|
|
20
|
+
* @inner
|
|
21
|
+
* @type {number}
|
|
22
|
+
*/
|
|
23
|
+
var PS_MAX_BUFFER = 64 * 1024 * 1024;
|
|
24
|
+
|
|
7
25
|
/**
|
|
8
26
|
* @module gina/lib/cmd/bundle/stop
|
|
9
27
|
*/
|
|
@@ -59,6 +77,11 @@ function Stop(opt, cmd) {
|
|
|
59
77
|
|
|
60
78
|
/**
|
|
61
79
|
* Reads the bundle PID file and sends SIGKILL, or falls back to ps lookup.
|
|
80
|
+
* Only a positive integer is read as a pid (#B693), and the signal is sent
|
|
81
|
+
* with `process.kill`, not through a shell (#B665).
|
|
82
|
+
* The fallback runs `ps -ef` without a shell and keeps the first process whose
|
|
83
|
+
* title is exactly `gina: <bundle>@<project>`, ending at whitespace or the end
|
|
84
|
+
* of the line, skipping lines that name `grep` (#B665).
|
|
62
85
|
* @inner
|
|
63
86
|
* @private
|
|
64
87
|
* @param {object} opt
|
|
@@ -90,14 +113,37 @@ function Stop(opt, cmd) {
|
|
|
90
113
|
var pidPath = _(GINA_RUNDIR +'/'+ bundle +'@'+ self.projectName +'.pid', true);
|
|
91
114
|
try {
|
|
92
115
|
proc = fs.readFileSync(_(GINA_RUNDIR+'/'+bundle + '@' + self.projectName +'.pid')).toString().replace(/\n/g, '');
|
|
93
|
-
|
|
116
|
+
// #B693 (2026-09-27) — only a positive integer is a pid: parseInt made `-1` a
|
|
117
|
+
// broadcast to every process the user may signal, and `12abc` pid 12. Anything
|
|
118
|
+
// else reads as "is not running", as NaN did.
|
|
119
|
+
// was: proc = parseInt(proc);
|
|
120
|
+
proc = ( /^[1-9]\d*$/.test(proc.trim()) ) ? parseInt(proc.trim(), 10) : null;
|
|
94
121
|
|
|
95
122
|
} catch(err) {
|
|
96
123
|
isSpecialCase = true;
|
|
97
124
|
// Some how pid file could have been deleted leaving a zombie process running
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
125
|
+
// #B665 (2026-09-27) — `ps` runs from an argument vector, without a shell, and its
|
|
126
|
+
// listing is filtered here: the names reached a `ps | grep | awk` command line
|
|
127
|
+
// single-quoted, so a `'` in a name broke out into the shell. The title must end
|
|
128
|
+
// at whitespace or the end of the line, so `api@shop` no longer matches the
|
|
129
|
+
// process of `api@shopping` (measured on macOS and Linux); lines naming `grep`
|
|
130
|
+
// are skipped as `grep -v grep` did.
|
|
131
|
+
// was: var list = execSync("ps -ef | grep -v grep | grep 'gina: "+ bundle + '@' + self.projectName +"' | awk '{print $2\" \"$8$9}'").toString().replace(/\n$/, '').split(/\n/g);
|
|
132
|
+
var titleRe = new RegExp('gina: ' + escapeRegex(bundle + '@' + self.projectName) + '(\\s|$)');
|
|
133
|
+
var psOut = '';
|
|
134
|
+
try {
|
|
135
|
+
psOut = execFileSync('ps', ['-ef'], { maxBuffer: PS_MAX_BUFFER }).toString();
|
|
136
|
+
} catch (psErr) {
|
|
137
|
+
// no `ps` (a slim container image): nothing matches, as before; a `ps` that
|
|
138
|
+
// failed after printing keeps what it printed, as the pipeline did
|
|
139
|
+
psOut = (psErr && psErr.stdout) ? psErr.stdout.toString() : '';
|
|
140
|
+
}
|
|
141
|
+
var list = psOut.split(/\n/).filter(function(line) {
|
|
142
|
+
return line.indexOf('grep') < 0 && titleRe.test(line);
|
|
143
|
+
});
|
|
144
|
+
if (list.length) {
|
|
145
|
+
// column 2 of `ps -ef` is the PID
|
|
146
|
+
proc = ~~list[0].trim().split(/\s+/)[1];
|
|
101
147
|
} else {
|
|
102
148
|
error = err.toString();
|
|
103
149
|
console.debug(error);
|
|
@@ -112,7 +158,17 @@ function Stop(opt, cmd) {
|
|
|
112
158
|
//console.debug('\n'+ row.join('\n'));
|
|
113
159
|
//console.debug('kill -TERM ', proc, arr);
|
|
114
160
|
|
|
115
|
-
|
|
161
|
+
// #B665 S2 (2026-09-27) — the SIGKILL is sent in-process: `kill -9 <pid>` ran through
|
|
162
|
+
// sh. Its outcome is handled on the next turn of the event loop, as the exec
|
|
163
|
+
// callback was, and a failed signal (ESRCH, EPERM) is the callback's error.
|
|
164
|
+
// was: exec('kill -9 ' + proc, function(err, data) {
|
|
165
|
+
var killErr = null;
|
|
166
|
+
try {
|
|
167
|
+
process.kill(proc, 'SIGKILL');
|
|
168
|
+
} catch (e) {
|
|
169
|
+
killErr = e;
|
|
170
|
+
}
|
|
171
|
+
setImmediate(function(err) {
|
|
116
172
|
// just in case
|
|
117
173
|
if ( new _(pidPath).existsSync() ) {
|
|
118
174
|
isSpecialCase = true;
|
|
@@ -135,7 +191,7 @@ function Stop(opt, cmd) {
|
|
|
135
191
|
end(opt, cmd, isBulkStop, bundleIndex)
|
|
136
192
|
}
|
|
137
193
|
}
|
|
138
|
-
})
|
|
194
|
+
}, killErr)
|
|
139
195
|
} else { // not running
|
|
140
196
|
//console.info('Bundle `' + bundle + '@' + self.projectName + '` is not running');
|
|
141
197
|
opt.client.write(' [ ' + bundle + '@' + self.projectName + ' ] is not running\n');
|
|
@@ -2,6 +2,7 @@ var fs = require('fs');
|
|
|
2
2
|
|
|
3
3
|
var CmdHelper = require('./../helper');
|
|
4
4
|
var console = lib.logger;
|
|
5
|
+
var escapeRegex = require('./../bundle/inc/name-rewrite').escapeRegex;
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* @module gina/lib/cmd/env/remove
|
|
@@ -111,7 +112,10 @@ function Remove(opt, cmd) {
|
|
|
111
112
|
, envs = requireJSON(envsPath);
|
|
112
113
|
|
|
113
114
|
|
|
114
|
-
|
|
115
|
+
// #B665 — the project and environment names are matched literally: a `.` matched
|
|
116
|
+
// any character, so removing `dev` from `my.app` also removed `my-app`'s entries.
|
|
117
|
+
// was: var patt = new RegExp("\@"+ self.projectName +"/"+ env +"$");
|
|
118
|
+
var patt = new RegExp('@' + escapeRegex(self.projectName +'/'+ env) + '$');
|
|
115
119
|
for (let protocol in ports) {
|
|
116
120
|
for (let scheme in ports[protocol]) {
|
|
117
121
|
for (let p in ports[protocol][scheme]) {
|
|
@@ -122,7 +126,8 @@ function Remove(opt, cmd) {
|
|
|
122
126
|
}
|
|
123
127
|
}
|
|
124
128
|
|
|
125
|
-
patt = new RegExp("\@"+ self.projectName +"$");
|
|
129
|
+
// was: patt = new RegExp("\@"+ self.projectName +"$");
|
|
130
|
+
patt = new RegExp('@' + escapeRegex(self.projectName) + '$');
|
|
126
131
|
for (let bundle in portsReverse) {
|
|
127
132
|
if ( patt.test(bundle) ) {
|
|
128
133
|
for (let e in portsReverse[bundle]) {
|