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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gina",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "MVC framework for Node.js and Bun with built-in HTTP/2, multi-bundle architecture, and scope-based data isolation — no Express dependency",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nodejs",
|
|
@@ -76,12 +76,12 @@
|
|
|
76
76
|
"gina-container": "bin/gina-container",
|
|
77
77
|
"gina-init": "bin/gina-init"
|
|
78
78
|
},
|
|
79
|
-
"main": "./framework/v0.7.
|
|
79
|
+
"main": "./framework/v0.7.1/core/gna",
|
|
80
80
|
"exports": {
|
|
81
81
|
".": {
|
|
82
82
|
"types": "./types/index.d.ts",
|
|
83
83
|
"import": "./index.mjs",
|
|
84
|
-
"require": "./framework/v0.7.
|
|
84
|
+
"require": "./framework/v0.7.1/core/gna.js"
|
|
85
85
|
},
|
|
86
86
|
"./gna": {
|
|
87
87
|
"types": "./types/gna.d.ts",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
}
|
|
100
100
|
},
|
|
101
101
|
"scripts": {
|
|
102
|
-
"test": "node --test --test-timeout=120000 $GINA_TEST_FLAGS test/core/*.test.js test/lib/*.test.js test/bin/*.test.js test/integration/helper.test.js test/integration/container-boot.test.js test/integration/container-boot-init-failure.test.js test/integration/container-boot-request-parsing.test.js test/integration/container-boot-route-method.test.js test/integration/container-boot-route-confusion.test.js test/integration/container-boot-route-candidates.test.js test/integration/container-boot-head-b675.test.js test/integration/container-boot-swig-autoescape.test.js test/integration/logger-log-integrity.test.js framework/v*/test/unit/*.test.js",
|
|
102
|
+
"test": "node --test --test-timeout=120000 $GINA_TEST_FLAGS test/core/*.test.js test/lib/*.test.js test/bin/*.test.js test/integration/helper.test.js test/integration/container-boot.test.js test/integration/container-boot-init-failure.test.js test/integration/container-boot-request-parsing.test.js test/integration/container-boot-route-method.test.js test/integration/container-boot-route-confusion.test.js test/integration/container-boot-route-candidates.test.js test/integration/container-boot-head-b675.test.js test/integration/container-boot-swig-autoescape.test.js test/integration/container-boot-admin-guard-b708.test.js test/integration/container-boot-storage-query-b710.test.js test/integration/container-boot-admin-proxy-b709.test.js test/integration/container-boot-maintenance-allowfrom-b711.test.js test/integration/container-boot-maintenance-left-to-server-b715.test.js test/integration/container-boot-gina-endpoints-query-head-b717.test.js test/integration/container-boot-gina-endpoints-query-anchor-b712.test.js test/integration/container-boot-sse-h2-b722.test.js test/integration/container-boot-routing-case-b707.test.js test/integration/logger-log-integrity.test.js framework/v*/test/unit/*.test.js",
|
|
103
103
|
"test:coverage": "GINA_TEST_FLAGS=--experimental-test-coverage npm test",
|
|
104
104
|
"pretest:e2e": "playwright install chromium",
|
|
105
105
|
"test:e2e": "playwright test test/e2e",
|
package/schema/app.json
CHANGED
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
},
|
|
53
53
|
"allowFrom": {
|
|
54
54
|
"type": "array",
|
|
55
|
-
"description": "IP allowlist for the metrics endpoint. Requests from any other source receive 403. Defaults to localhost only.",
|
|
55
|
+
"description": "IP allowlist for the metrics endpoint. Requests from any other source receive 403. Defaults to localhost only. Since 0.7.1 a loopback entry admits a scrape only when it connects directly — one relayed by a reverse proxy on the bundle's own host is refused, the same rule as `admin.allowFrom`.",
|
|
56
56
|
"items": { "type": "string" },
|
|
57
57
|
"default": ["127.0.0.1", "::1"]
|
|
58
58
|
},
|
|
@@ -70,12 +70,12 @@
|
|
|
70
70
|
},
|
|
71
71
|
"admin": {
|
|
72
72
|
"type": "object",
|
|
73
|
-
"description": "Admin-grade /_gina/* endpoint access control. Gates /_gina/info
|
|
73
|
+
"description": "Admin-grade /_gina/* endpoint access control. Gates /_gina/info, /_gina/cache/stats, /_gina/cache/clear, /_gina/storage/*, /_gina/release/* and /_gina/maintenance on a per-bundle IP allowlist. Same shape as `metrics.allowFrom` but a separate axis — admin endpoints expose process state (memory, uptime, HTTP/2 session counters, cache contents) and are scope-separately from Prometheus scrapes.",
|
|
74
74
|
"additionalProperties": false,
|
|
75
75
|
"properties": {
|
|
76
76
|
"allowFrom": {
|
|
77
77
|
"type": "array",
|
|
78
|
-
"description": "IP allowlist for admin /_gina/* endpoints (/_gina/info, /_gina/cache/
|
|
78
|
+
"description": "IP allowlist for admin /_gina/* endpoints (/_gina/info, /_gina/cache/*, /_gina/storage/*, /_gina/release/*, /_gina/maintenance). Requests from any other source receive 403. Defaults to localhost only (127.0.0.1, ::1). Empty array `[]` denies everyone — explicit lockdown choice. Reads from req.socket.remoteAddress only — X-Forwarded-For is NOT trusted because reverse proxies could spoof it. Since 0.7.1 a loopback entry admits a caller only when it connects directly: a request from 127.0.0.1 or ::1 that carries a proxy signal (an X-Forwarded-* or Forwarded header, or a port-less Host unless server.proxy.requireForwardedHeaders is true) comes from a reverse proxy on the bundle's own host and is refused. List the address of a proxy running on another host to admit what it relays.",
|
|
79
79
|
"items": { "type": "string" },
|
|
80
80
|
"default": ["127.0.0.1", "::1"]
|
|
81
81
|
}
|
package/script/post_install.js
CHANGED
|
@@ -23,6 +23,22 @@ var runtime = require(__dirname + '/../utils/runtime.js');
|
|
|
23
23
|
var isWin32 = function() {
|
|
24
24
|
return (process.platform === 'win32') ? true : false;
|
|
25
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Escapes the regular-expression metacharacters of `s`, so an install prefix or a home
|
|
28
|
+
* directory is matched as the literal path it is (#B665): a path holding `+` or `[`
|
|
29
|
+
* threw, and its `.` matched any character. The same one-liner as
|
|
30
|
+
* `lib/cmd/bundle/inc/name-rewrite.js`'s `escapeRegex`, kept here because this script
|
|
31
|
+
* runs before a framework directory can be relied on.
|
|
32
|
+
*
|
|
33
|
+
* @param {string} s - A path
|
|
34
|
+
* @returns {string} `s` with every metacharacter backslash-escaped
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* new RegExp('^' + escapeRegex('/opt/c++/.npm-global')).test('/opt/c++/.npm-global/lib') // → true
|
|
38
|
+
*/
|
|
39
|
+
var escapeRegex = function(s) {
|
|
40
|
+
return String(s).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
41
|
+
};
|
|
26
42
|
var isWritableSync = function(path) {
|
|
27
43
|
var canWrite = false;
|
|
28
44
|
if ( fs.accessSync && typeof(fs.accessSync) != 'undefined' ) {
|
|
@@ -331,7 +347,8 @@ function PostInstall() {
|
|
|
331
347
|
// OK ... found installed gina but on a different prefix
|
|
332
348
|
// In this case, let's assume that it is not really installed
|
|
333
349
|
console.info('A previous version of gina has been detected');
|
|
334
|
-
if ( !new RegExp('^'+ self.prefix).test(hasFoundGina.dependencies.gina.path) ) {
|
|
350
|
+
// was: if ( !new RegExp('^'+ self.prefix).test(hasFoundGina.dependencies.gina.path) ) {
|
|
351
|
+
if ( !new RegExp('^'+ escapeRegex(self.prefix)).test(hasFoundGina.dependencies.gina.path) ) {
|
|
335
352
|
self.isGinaInstalled = false;
|
|
336
353
|
console.info('Ignoring previous because of a mismatching install prefix');
|
|
337
354
|
}
|
|
@@ -775,7 +792,8 @@ function PostInstall() {
|
|
|
775
792
|
}
|
|
776
793
|
|
|
777
794
|
var inFile = null;
|
|
778
|
-
var patt = _(self.prefix.replace( new RegExp( '^' +getUserHome() ), '(.*)[$]HOME') + '/bin', true);
|
|
795
|
+
// was: var patt = _(self.prefix.replace( new RegExp( '^' +getUserHome() ), '(.*)[$]HOME') + '/bin', true);
|
|
796
|
+
var patt = _(self.prefix.replace( new RegExp( '^' + escapeRegex(getUserHome()) ), '(.*)[$]HOME') + '/bin', true);
|
|
779
797
|
try {
|
|
780
798
|
inFile = execSync("cat ~/.profile | grep -Eo '" + patt +"'", {shell: "/bin/bash"}).toString();
|
|
781
799
|
} catch (err) {
|
package/script/pre_install.js
CHANGED
|
@@ -247,7 +247,8 @@ function PreInstall() {
|
|
|
247
247
|
|
|
248
248
|
// OK ... found installed gina but on a different prefix
|
|
249
249
|
// In this case, let's assume that it is not really installed
|
|
250
|
-
if ( !new RegExp('^'+ self.prefix).test(hasFoundGina.dependencies.gina.path) ) {
|
|
250
|
+
// was: if ( !new RegExp('^'+ self.prefix).test(hasFoundGina.dependencies.gina.path) ) {
|
|
251
|
+
if ( !new RegExp('^'+ escapeRegex(self.prefix)).test(hasFoundGina.dependencies.gina.path) ) {
|
|
251
252
|
self.isGinaInstalled = false;
|
|
252
253
|
}
|
|
253
254
|
}
|
|
@@ -597,6 +598,24 @@ function PreInstall() {
|
|
|
597
598
|
return (process.platform === 'win32') ? true : false;
|
|
598
599
|
};
|
|
599
600
|
|
|
601
|
+
/**
|
|
602
|
+
* Escapes the regular-expression metacharacters of `s`, so an install prefix is
|
|
603
|
+
* matched as the literal path it is (#B665): a prefix holding `+` or `[` threw and
|
|
604
|
+
* failed the install, and its `.` matched any character. The same one-liner as
|
|
605
|
+
* `lib/cmd/bundle/inc/name-rewrite.js`'s `escapeRegex`, kept here because this script
|
|
606
|
+
* runs before a framework directory can be relied on.
|
|
607
|
+
*
|
|
608
|
+
* @inner
|
|
609
|
+
* @param {string} s - A path
|
|
610
|
+
* @returns {string} `s` with every metacharacter backslash-escaped
|
|
611
|
+
*
|
|
612
|
+
* @example
|
|
613
|
+
* new RegExp('^' + escapeRegex('/opt/c++/.npm-global')).test('/opt/c++/.npm-global/var') // → true
|
|
614
|
+
*/
|
|
615
|
+
var escapeRegex = function(s) {
|
|
616
|
+
return String(s).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
617
|
+
};
|
|
618
|
+
|
|
600
619
|
var existsSync = function(path) {
|
|
601
620
|
if ( fs.accessSync && typeof(fs.accessSync) != 'undefined' ) {
|
|
602
621
|
try {
|
|
@@ -644,7 +663,9 @@ function PreInstall() {
|
|
|
644
663
|
// Means `/usr/local/var/lock` or `/usr/local/var/run` by default.
|
|
645
664
|
var runDir = (isWin32()) ? getUserHome() + '\\.gina\\run' : prefix+'/var/lock';
|
|
646
665
|
|
|
647
|
-
|
|
666
|
+
// #B665 — the prefix is matched literally (see escapeRegex): a `c++` prefix threw here.
|
|
667
|
+
// was: if ( !isWin32() && new RegExp('^'+ prefix).test(runDir) && !isWritableSync(prefix) ) {
|
|
668
|
+
if ( !isWin32() && new RegExp('^'+ escapeRegex(prefix)).test(runDir) && !isWritableSync(prefix) ) {
|
|
648
669
|
runDir = getUserHome() +'/.gina/run';
|
|
649
670
|
if ( !existsSync(runDir) ) {
|
|
650
671
|
fs.mkdirSync(runDir)
|
|
@@ -717,14 +738,16 @@ function PreInstall() {
|
|
|
717
738
|
prefix+'/var/tmp'
|
|
718
739
|
;
|
|
719
740
|
|
|
720
|
-
if ( new RegExp('^'+ prefix).test(tmpDir) && !isWritableSync(prefix) ) {
|
|
741
|
+
// was: if ( new RegExp('^'+ prefix).test(tmpDir) && !isWritableSync(prefix) ) {
|
|
742
|
+
if ( new RegExp('^'+ escapeRegex(prefix)).test(tmpDir) && !isWritableSync(prefix) ) {
|
|
721
743
|
tmpDir = getUserHome() +'/.gina/tmp';
|
|
722
744
|
if ( !existsSync(tmpDir) ) {
|
|
723
745
|
fs.mkdirSync(tmpDir)
|
|
724
746
|
}
|
|
725
747
|
}
|
|
726
748
|
|
|
727
|
-
if ( new RegExp('^'+ prefix +'/var').test(tmpDir) && !existsSync(prefix+'/var') ) {
|
|
749
|
+
// was: if ( new RegExp('^'+ prefix +'/var').test(tmpDir) && !existsSync(prefix+'/var') ) {
|
|
750
|
+
if ( new RegExp('^'+ escapeRegex(prefix +'/var')).test(tmpDir) && !existsSync(prefix+'/var') ) {
|
|
728
751
|
fs.mkdirSync(prefix+'/var');
|
|
729
752
|
}
|
|
730
753
|
}
|
|
@@ -775,7 +798,8 @@ function PreInstall() {
|
|
|
775
798
|
prefix+'/var/log'
|
|
776
799
|
;
|
|
777
800
|
|
|
778
|
-
if ( new RegExp('^'+ prefix).test(logDir) && !isWritableSync(prefix) ) {
|
|
801
|
+
// was: if ( new RegExp('^'+ prefix).test(logDir) && !isWritableSync(prefix) ) {
|
|
802
|
+
if ( new RegExp('^'+ escapeRegex(prefix)).test(logDir) && !isWritableSync(prefix) ) {
|
|
779
803
|
logDir = getUserHome() +'/.gina/log';
|
|
780
804
|
if ( !existsSync(logDir) ) {
|
|
781
805
|
fs.mkdirSync(logDir)
|
|
@@ -784,7 +808,8 @@ function PreInstall() {
|
|
|
784
808
|
return logDir
|
|
785
809
|
}
|
|
786
810
|
|
|
787
|
-
if ( new RegExp('^'+ prefix +'/var').test(logDir) && !existsSync(prefix+'/var') ) {
|
|
811
|
+
// was: if ( new RegExp('^'+ prefix +'/var').test(logDir) && !existsSync(prefix+'/var') ) {
|
|
812
|
+
if ( new RegExp('^'+ escapeRegex(prefix +'/var')).test(logDir) && !existsSync(prefix+'/var') ) {
|
|
788
813
|
fs.mkdirSync(prefix+'/var');
|
|
789
814
|
}
|
|
790
815
|
|
package/utils/helper.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
var fs = require('fs');
|
|
2
2
|
var os = require('os');
|
|
3
|
-
|
|
3
|
+
// #B665 S2 (2026-09-27) — npm runs from an argument vector, the form #B663 gave the install
|
|
4
|
+
// scripts: `$(which npm)` split an npm installed under a path holding a space.
|
|
5
|
+
// var { execSync } = require('child_process');
|
|
6
|
+
var { execFileSync } = require('child_process');
|
|
4
7
|
|
|
5
8
|
var lib = null;
|
|
6
9
|
var console = null;
|
|
@@ -39,7 +42,8 @@ function MainHelper(opt) {
|
|
|
39
42
|
|
|
40
43
|
try {
|
|
41
44
|
pkg = packObj;
|
|
42
|
-
self.defaultPrefix = ( typeof(packObj.config) != 'undefined' && typeof(packObj.config.prefix) != 'undefined' ) ? packObj.config.prefix : execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
45
|
+
// was: self.defaultPrefix = ( typeof(packObj.config) != 'undefined' && typeof(packObj.config.prefix) != 'undefined' ) ? packObj.config.prefix : execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
46
|
+
self.defaultPrefix = ( typeof(packObj.config) != 'undefined' && typeof(packObj.config.prefix) != 'undefined' ) ? packObj.config.prefix : execFileSync('npm', ['config', 'get', 'prefix', '--quiet']).toString().replace(/\n$/g, '');
|
|
43
47
|
self.defaultPrefix = self.defaultPrefix.replace(/^\~/, getUserHome());
|
|
44
48
|
prefix = getEnvVar('GINA_PREFIX') || self.defaultPrefix;
|
|
45
49
|
self.optionalPrefix = pkg.config.optionalPrefix.replace(/^\~/, getUserHome());
|
|
@@ -47,13 +51,18 @@ function MainHelper(opt) {
|
|
|
47
51
|
console.warn('MainHelper::Init() Execption: '+ err.stack);
|
|
48
52
|
console.debug('Trying alternative config');
|
|
49
53
|
try {
|
|
50
|
-
self.defaultPrefix = execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
54
|
+
// was: self.defaultPrefix = execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
55
|
+
self.defaultPrefix = execFileSync('npm', ['config', 'get', 'prefix', '--quiet']).toString().replace(/\n$/g, '');
|
|
51
56
|
prefix = getEnvVar('GINA_PREFIX') || self.defaultPrefix;
|
|
52
|
-
|
|
57
|
+
// #B665 S2 (2026-09-27) — an argument vector: the prefix reaches npm whole.
|
|
58
|
+
// was: cmd = 'npm list gina --long --json --prefix='+ prefix;
|
|
59
|
+
cmd = ['list', 'gina', '--long', '--json', '--prefix='+ prefix];
|
|
53
60
|
if (self.isGlobalInstall) {
|
|
54
|
-
cmd += ' -g';
|
|
61
|
+
// was: cmd += ' -g';
|
|
62
|
+
cmd.push('-g');
|
|
55
63
|
}
|
|
56
|
-
pkg = execSync(cmd).toString().replace(/\n$/g, '');
|
|
64
|
+
// was: pkg = execSync(cmd).toString().replace(/\n$/g, '');
|
|
65
|
+
pkg = execFileSync('npm', cmd).toString().replace(/\n$/g, '');
|
|
57
66
|
self.optionalPrefix = JSON.parse(pkg).dependencies.gina.config.optionalPrefix.replace(/^\~/, getUserHome());
|
|
58
67
|
} catch (_err) {
|
|
59
68
|
throw new Error(_err.stack +'\n'+ err.stack)
|
|
@@ -245,7 +254,8 @@ function MainHelper(opt) {
|
|
|
245
254
|
return logDir
|
|
246
255
|
}
|
|
247
256
|
|
|
248
|
-
var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
257
|
+
// was: var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
258
|
+
var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execFileSync('npm', ['config', 'get', 'prefix', '--quiet']).toString().replace(/\n$/g, '');
|
|
249
259
|
|
|
250
260
|
if ( isWin32() ) {
|
|
251
261
|
logDir = process.env.LOG ||
|
|
@@ -321,7 +331,8 @@ function MainHelper(opt) {
|
|
|
321
331
|
return runDir
|
|
322
332
|
}
|
|
323
333
|
|
|
324
|
-
var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
334
|
+
// was: var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
335
|
+
var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execFileSync('npm', ['config', 'get', 'prefix', '--quiet']).toString().replace(/\n$/g, '');
|
|
325
336
|
|
|
326
337
|
runDir = (isWin32()) ? getUserHome() + '\\.gina\\run' : prefix + '/var/lock';
|
|
327
338
|
|
|
@@ -386,7 +397,8 @@ function MainHelper(opt) {
|
|
|
386
397
|
return dir
|
|
387
398
|
}
|
|
388
399
|
|
|
389
|
-
var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
400
|
+
// was: var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execSync('$(which npm) config get prefix --quiet').toString().replace(/\n$/g, '');
|
|
401
|
+
var prefix = getEnvVar('GINA_PREFIX') || self.prefix || self.defaultPrefix || execFileSync('npm', ['config', 'get', 'prefix', '--quiet']).toString().replace(/\n$/g, '');
|
|
390
402
|
|
|
391
403
|
// support for node 0.10.x & 0.11.x
|
|
392
404
|
var tmp = (os.tmpdir) ? os.tmpdir : function() {
|
package/framework/v0.7.0/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.7.0
|
|
Binary file
|
|
Binary file
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* This file is part of the gina package.
|
|
3
|
-
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
4
|
-
*
|
|
5
|
-
* For the full copyright and license information, please view the LICENSE
|
|
6
|
-
* file that was distributed with this source code.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* @module gina/lib/admin
|
|
11
|
-
*
|
|
12
|
-
* Admin /_gina/* IP-allowlist gate (#S7). Single source of truth for the
|
|
13
|
-
* access check on the admin-grade /_gina/* endpoints (`/_gina/info`,
|
|
14
|
-
* `/_gina/cache/stats`). Both server engines (`server.js` and
|
|
15
|
-
* `server.isaac.js`) previously carried a byte-identical copy of this
|
|
16
|
-
* helper; this module is now the single source and both engines call
|
|
17
|
-
* `lib.admin.isClientAllowed(req)`.
|
|
18
|
-
*
|
|
19
|
-
* The allowlist is resolved from `process.gina._adminAllowList`, which
|
|
20
|
-
* `gna.js` populates at bundle init from `app.json` `admin.allowFrom`
|
|
21
|
-
* (defaults to loopback `['127.0.0.1', '::1']`). Sibling of
|
|
22
|
-
* `lib.metrics.isClientAllowed` on a separate axis — admin endpoints expose
|
|
23
|
-
* process state (memory, uptime, HTTP/2 session counters, cache contents)
|
|
24
|
-
* and are gated separately from Prometheus scrapes.
|
|
25
|
-
*
|
|
26
|
-
* Also the home of the cross-origin WRITE guard (#B384) that fronts the same
|
|
27
|
-
* family. The two are complementary and neither subsumes the other: the IP
|
|
28
|
-
* allowlist answers "may this address talk to admin endpoints at all", while
|
|
29
|
-
* {@link isCrossOriginWrite} answers "did this state-changing request actually
|
|
30
|
-
* originate from the operator, or from a page that merely borrowed their
|
|
31
|
-
* browser's ambient IP". Kept as a SEPARATE function rather than folded into
|
|
32
|
-
* `isClientAllowed` so the six admin GET endpoints keep their existing
|
|
33
|
-
* semantics and the name never over-promises.
|
|
34
|
-
*
|
|
35
|
-
* Registered as a PLAIN `require` in `lib/index.js` (not `_require`): a
|
|
36
|
-
* stateless pure-function leaf with no instance/singleton state to
|
|
37
|
-
* hot-reload — same #B32-residual precedent as merge / uuid / Collection.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* // from an engine handler (lib is the framework lib registry)
|
|
41
|
-
* if (!lib.admin.isClientAllowed(request)) {
|
|
42
|
-
* response.statusCode = 403;
|
|
43
|
-
* return response.end(JSON.stringify({ error: 'forbidden' }));
|
|
44
|
-
* }
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Default allowlist used when `admin.allowFrom` is unset — loopback only.
|
|
49
|
-
* @constant {string[]}
|
|
50
|
-
*/
|
|
51
|
-
var DEFAULT_ALLOW_LIST = ['127.0.0.1', '::1'];
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Decide whether a request's client IP is in an explicit allowlist. Inner
|
|
55
|
-
* seam exposed for branch testing without mutating `process.gina` state.
|
|
56
|
-
*
|
|
57
|
-
* Reads the client IP from `req.socket.remoteAddress` only — never trusts
|
|
58
|
-
* `X-Forwarded-For` (reverse proxies could spoof it). Normalises
|
|
59
|
-
* `::ffff:IPv4` (IPv6-mapped IPv4) → `IPv4` so listing `127.0.0.1` matches
|
|
60
|
-
* both forms. An empty list (`[]`) denies everyone (explicit lockdown).
|
|
61
|
-
*
|
|
62
|
-
* @inner
|
|
63
|
-
* @param {http.IncomingMessage|http2.Http2ServerRequest} req
|
|
64
|
-
* @param {string[]} list the allowlist to test against
|
|
65
|
-
* @returns {boolean} true if the client IP is in `list`
|
|
66
|
-
* @example
|
|
67
|
-
* _isAllowedWithList({ socket: { remoteAddress: '127.0.0.1' } }, ['127.0.0.1']); // true
|
|
68
|
-
* _isAllowedWithList({ socket: { remoteAddress: '10.0.0.1' } }, []); // false
|
|
69
|
-
*/
|
|
70
|
-
function _isAllowedWithList(req, list) {
|
|
71
|
-
if (list.length === 0) return false;
|
|
72
|
-
var ip = (req.socket && req.socket.remoteAddress)
|
|
73
|
-
|| (req.connection && req.connection.remoteAddress)
|
|
74
|
-
|| '';
|
|
75
|
-
if (ip.indexOf('::ffff:') === 0) ip = ip.slice(7);
|
|
76
|
-
return list.indexOf(ip) >= 0;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* IP-allowlist check for the admin-grade /_gina/* endpoints.
|
|
81
|
-
*
|
|
82
|
-
* Resolves the allowlist from `process.gina._adminAllowList` (set by
|
|
83
|
-
* `gna.js` from `app.json` admin.allowFrom), falling back to loopback-only
|
|
84
|
-
* when the global is missing (init not yet fired — the safest default).
|
|
85
|
-
*
|
|
86
|
-
* @param {http.IncomingMessage|http2.Http2ServerRequest} req
|
|
87
|
-
* @returns {boolean} true if the client IP is allowed, false otherwise
|
|
88
|
-
* @example
|
|
89
|
-
* if (!lib.admin.isClientAllowed(request)) { return self.throwError(403); }
|
|
90
|
-
*/
|
|
91
|
-
function isClientAllowed(req) {
|
|
92
|
-
var list = (typeof process.gina === 'object' && process.gina && Array.isArray(process.gina._adminAllowList))
|
|
93
|
-
? process.gina._adminAllowList
|
|
94
|
-
: DEFAULT_ALLOW_LIST;
|
|
95
|
-
return _isAllowedWithList(req, list);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Request methods that cannot mutate state (RFC 9110 §9.2.1). Mirrors the set
|
|
100
|
-
* in `core/controller/controller.js` — a cross-origin GET is not a CSRF vector,
|
|
101
|
-
* and refusing one would break the Inspector's deliberately cross-origin
|
|
102
|
-
* GET/SSE channels (`/_gina/agent`, `/_gina/logs`, `/_gina/indexes`), where
|
|
103
|
-
* `core/server.js` documents that "cross-origin is the norm here".
|
|
104
|
-
* @constant {Object.<string, boolean>}
|
|
105
|
-
*/
|
|
106
|
-
var SAFE_HTTP_METHODS = { GET: true, HEAD: true, OPTIONS: true, TRACE: true };
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Decide whether a request method is SAFE (non-mutating).
|
|
110
|
-
*
|
|
111
|
-
* @param {string} method - the HTTP method
|
|
112
|
-
* @returns {boolean} true when the method cannot mutate state
|
|
113
|
-
* @example
|
|
114
|
-
* isSafeMethod('get'); // true
|
|
115
|
-
* isSafeMethod('POST'); // false
|
|
116
|
-
* isSafeMethod(null); // false
|
|
117
|
-
*/
|
|
118
|
-
function isSafeMethod(method) {
|
|
119
|
-
return SAFE_HTTP_METHODS[ String(method || '').toUpperCase() ] === true;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Detect a browser-driven CROSS-ORIGIN WRITE to the `/_gina/*` control family
|
|
124
|
-
* (#B384).
|
|
125
|
-
*
|
|
126
|
-
* These endpoints authenticate with an AMBIENT credential — the client's IP,
|
|
127
|
-
* via {@link isClientAllowed} — and a browser attaches that automatically to
|
|
128
|
-
* every request a page makes. That is precisely the precondition for CSRF: an
|
|
129
|
-
* operator browsing from an allowlisted address (loopback by DEFAULT, i.e. the
|
|
130
|
-
* machine running the bundle) can be lured to a page that silently writes to
|
|
131
|
-
* `/_gina/storage/gc`, `/_gina/cache/clear`, `/_gina/release/rebuild` or
|
|
132
|
-
* `/_gina/maintenance`. The first three take their entire input from the QUERY
|
|
133
|
-
* STRING and read no body at all, so the attack needs no `fetch` and no CORS
|
|
134
|
-
* reasoning — a plain auto-submitting `<form>` suffices, and browsers have
|
|
135
|
-
* always permitted a form to POST cross-origin.
|
|
136
|
-
*
|
|
137
|
-
* Two signals, in order of trustworthiness:
|
|
138
|
-
*
|
|
139
|
-
* 1. `Sec-Fetch-Site` — computed by the browser and a FORBIDDEN header name,
|
|
140
|
-
* so page script cannot forge it. It is also independent of how a reverse
|
|
141
|
-
* proxy rewrites `Host`, which is why it is preferred. `same-origin`
|
|
142
|
-
* passes; `none` passes (a user-initiated navigation — typed URL or
|
|
143
|
-
* bookmark — is not a forged request); `same-site` and `cross-site` are
|
|
144
|
-
* REFUSED, since a sibling subdomain is still a different origin and can
|
|
145
|
-
* still forge.
|
|
146
|
-
* 2. `Origin` compared against the authority the client actually connected
|
|
147
|
-
* to — the fallback for browsers predating Fetch Metadata. Built from
|
|
148
|
-
* `:authority` (HTTP/2) or `Host` (HTTP/1.1) ONLY, NEVER from
|
|
149
|
-
* `X-Forwarded-Host` or any other forwarded header: #B367 established
|
|
150
|
-
* those are attacker-controlled, and a guard comparing against a value the
|
|
151
|
-
* attacker supplies is no guard. `Origin: null` (sandboxed iframe,
|
|
152
|
-
* `file://` page) is refused — the #CSRF3 precedent.
|
|
153
|
-
*
|
|
154
|
-
* NO browser signal at all ⇒ ALLOWED. CSRF attacks ambient browser
|
|
155
|
-
* credentials; a client sending neither header is not a browser (curl, the
|
|
156
|
-
* gina CLI's own probes, a deploy script), so refusing it would break every
|
|
157
|
-
* documented operator workflow while stopping nothing.
|
|
158
|
-
*
|
|
159
|
-
* ⚠️ Residual, deliberately pinned: a browser old enough to send NEITHER
|
|
160
|
-
* `Sec-Fetch-Site` NOR `Origin` on a POST would pass. Every current browser
|
|
161
|
-
* sends `Origin` on cross-origin POSTs, so this is a legacy-only gap — and a
|
|
162
|
-
* narrower one than the IP allowlist already fronting these endpoints.
|
|
163
|
-
*
|
|
164
|
-
* ⚠️ Second residual: a reverse proxy that REWRITES `Host` to an internal
|
|
165
|
-
* upstream name desynchronises the fallback comparison, which would refuse a
|
|
166
|
-
* legitimate same-origin write from a pre-Fetch-Metadata browser. Modern
|
|
167
|
-
* browsers are unaffected (signal 1 never consults `Host`), and these
|
|
168
|
-
* endpoints are IP-gated on `req.socket.remoteAddress`, which behind a proxy
|
|
169
|
-
* is the PROXY's address — so the deployment must already have opted in by
|
|
170
|
-
* listing it.
|
|
171
|
-
*
|
|
172
|
-
* @param {http.IncomingMessage|http2.Http2ServerRequest} req
|
|
173
|
-
* @returns {boolean} true when the request is a browser-driven cross-origin
|
|
174
|
-
* write and must be refused
|
|
175
|
-
* @example
|
|
176
|
-
* isCrossOriginWrite({ headers: { 'sec-fetch-site': 'same-origin' } }); // false
|
|
177
|
-
* isCrossOriginWrite({ headers: { 'sec-fetch-site': 'cross-site' } }); // true
|
|
178
|
-
* isCrossOriginWrite({ headers: {} }); // false (curl)
|
|
179
|
-
* isCrossOriginWrite({ headers: { origin: 'http://evil.tld', host: 'app.tld' } }); // true
|
|
180
|
-
* isCrossOriginWrite({ headers: { origin: 'http://app.tld', host: 'app.tld' } }); // false
|
|
181
|
-
*/
|
|
182
|
-
function isCrossOriginWrite(req) {
|
|
183
|
-
if ( typeof(req) != 'object' || req === null ) {
|
|
184
|
-
return true; // malformed ⇒ fail CLOSED
|
|
185
|
-
}
|
|
186
|
-
var headers = req.headers || {};
|
|
187
|
-
|
|
188
|
-
var site = headers['sec-fetch-site'];
|
|
189
|
-
if ( typeof(site) == 'string' && site.trim() !== '' ) {
|
|
190
|
-
site = site.trim().toLowerCase();
|
|
191
|
-
return !( site === 'same-origin' || site === 'none' );
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
var origin = headers['origin'];
|
|
195
|
-
if ( typeof(origin) != 'string' || origin.trim() === '' ) {
|
|
196
|
-
return false; // no browser signal ⇒ not a browser ⇒ not CSRF
|
|
197
|
-
}
|
|
198
|
-
origin = origin.trim();
|
|
199
|
-
if ( origin.toLowerCase() === 'null' ) {
|
|
200
|
-
return true; // sandboxed iframe / file:// — #CSRF3 precedent
|
|
201
|
-
}
|
|
202
|
-
var authority = headers[':authority'] || headers['host'] || '';
|
|
203
|
-
if ( typeof(authority) != 'string' || authority === '' ) {
|
|
204
|
-
return true; // nothing trustworthy to compare against ⇒ fail CLOSED
|
|
205
|
-
}
|
|
206
|
-
var originHost = origin.replace(/^[a-z0-9+.\-]+:\/\//i, '');
|
|
207
|
-
return ( originHost.toLowerCase() !== authority.toLowerCase() );
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
module.exports = {
|
|
211
|
-
isClientAllowed : isClientAllowed,
|
|
212
|
-
isCrossOriginWrite : isCrossOriginWrite,
|
|
213
|
-
isSafeMethod : isSafeMethod,
|
|
214
|
-
_isAllowedWithList : _isAllowedWithList,
|
|
215
|
-
DEFAULT_ALLOW_LIST : DEFAULT_ALLOW_LIST,
|
|
216
|
-
SAFE_HTTP_METHODS : SAFE_HTTP_METHODS
|
|
217
|
-
};
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
var exec = require('child_process').exec;
|
|
2
|
-
|
|
3
|
-
var CmdHelper = require('./../helper');
|
|
4
|
-
var console = lib.logger;
|
|
5
|
-
/**
|
|
6
|
-
* @module gina/lib/cmd/project/restart
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Restarts all bundles in a project.
|
|
10
|
-
* Delegates to `gina bundle:restart @<project>` (bulk mode).
|
|
11
|
-
*
|
|
12
|
-
* Usage:
|
|
13
|
-
* gina project:restart @<project_name>
|
|
14
|
-
*
|
|
15
|
-
* @class Restart
|
|
16
|
-
* @constructor
|
|
17
|
-
* @param {object} opt - Parsed command-line options
|
|
18
|
-
* @param {object} opt.client - Socket client or process.stdout for terminal output
|
|
19
|
-
* @param {string[]} opt.argv - Full argv array
|
|
20
|
-
* @param {number} [opt.debugPort] - Node.js inspector port
|
|
21
|
-
* @param {boolean} [opt.debugBrkEnabled] - True when --inspect-brk is active
|
|
22
|
-
* @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
|
|
23
|
-
*/
|
|
24
|
-
function Restart(opt, cmd) {
|
|
25
|
-
|
|
26
|
-
var self = {};
|
|
27
|
-
|
|
28
|
-
var init = function(opt, cmd) {
|
|
29
|
-
// import CMD helpers
|
|
30
|
-
new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
|
|
31
|
-
|
|
32
|
-
// check CMD configuration
|
|
33
|
-
if (!isCmdConfigured()) return false;
|
|
34
|
-
|
|
35
|
-
self.cmdStr = process.argv.splice(0, 2).join(' ');
|
|
36
|
-
|
|
37
|
-
// collect --flags to forward
|
|
38
|
-
self.inheritedArgv = [];
|
|
39
|
-
for (var i = 0, len = process.argv.length; i < len; i++) {
|
|
40
|
-
if ( /^\-\-/.test(process.argv[i]) ) {
|
|
41
|
-
self.inheritedArgv.push(process.argv[i])
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
self.inheritedArgv = self.inheritedArgv.join(' ');
|
|
45
|
-
|
|
46
|
-
restart(opt, cmd);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
var restart = function(opt, cmd) {
|
|
50
|
-
|
|
51
|
-
var _cmd = '$gina bundle:restart @' + self.projectName;
|
|
52
|
-
if (self.inheritedArgv != '') {
|
|
53
|
-
_cmd += ' ' + self.inheritedArgv;
|
|
54
|
-
}
|
|
55
|
-
if (opt.debugPort) {
|
|
56
|
-
_cmd += ' --inspect';
|
|
57
|
-
if (opt.debugBrkEnabled) {
|
|
58
|
-
_cmd += '-brk'
|
|
59
|
-
}
|
|
60
|
-
_cmd += '=' + opt.debugPort;
|
|
61
|
-
}
|
|
62
|
-
_cmd = _cmd.replace(/\$(gina)/g, self.cmdStr);
|
|
63
|
-
|
|
64
|
-
console.info('Restarting all bundles in @' + self.projectName + ' ...');
|
|
65
|
-
console.debug('Executing: ' + _cmd);
|
|
66
|
-
|
|
67
|
-
// Re-export the home: the bootstrap env sweep strips GINA_* from
|
|
68
|
-
// process.env, so the delegated bundle command would otherwise act
|
|
69
|
-
// on the default home (see linkGina in project/add.js).
|
|
70
|
-
exec(_cmd, { maxBuffer: 1024 * 500, env: Object.assign({}, process.env, { GINA_HOMEDIR: GINA_HOMEDIR }) }, function(err, stdout, stderr) {
|
|
71
|
-
if (stdout) {
|
|
72
|
-
console.log(stdout.replace(/\n\rTrying to.*/gm, ''));
|
|
73
|
-
}
|
|
74
|
-
if (err) {
|
|
75
|
-
console.error(err.toString());
|
|
76
|
-
return process.exit(1);
|
|
77
|
-
}
|
|
78
|
-
process.exit(0);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
init(opt, cmd);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
module.exports = Restart
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
var exec = require('child_process').exec;
|
|
2
|
-
|
|
3
|
-
var CmdHelper = require('./../helper');
|
|
4
|
-
var console = lib.logger;
|
|
5
|
-
/**
|
|
6
|
-
* @module gina/lib/cmd/project/start
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Starts all bundles in a project.
|
|
10
|
-
* Delegates to `gina bundle:start @<project>` (bulk mode).
|
|
11
|
-
*
|
|
12
|
-
* Usage:
|
|
13
|
-
* gina project:start @<project_name> [ --env=dev, --scope=local, --inspect-brk=5000 ]
|
|
14
|
-
*
|
|
15
|
-
* @class Start
|
|
16
|
-
* @constructor
|
|
17
|
-
* @param {object} opt - Parsed command-line options
|
|
18
|
-
* @param {object} opt.client - Socket client or process.stdout for terminal output
|
|
19
|
-
* @param {string[]} opt.argv - Full argv array
|
|
20
|
-
* @param {number} [opt.debugPort] - Node.js inspector port
|
|
21
|
-
* @param {boolean} [opt.debugBrkEnabled] - True when --inspect-brk is active
|
|
22
|
-
* @param {object} cmd - The cmd dispatcher object (lib/cmd/index.js)
|
|
23
|
-
*/
|
|
24
|
-
function Start(opt, cmd) {
|
|
25
|
-
|
|
26
|
-
var self = {};
|
|
27
|
-
|
|
28
|
-
var init = function(opt, cmd) {
|
|
29
|
-
// import CMD helpers
|
|
30
|
-
new CmdHelper(self, opt.client, { port: opt.debugPort, brkEnabled: opt.debugBrkEnabled });
|
|
31
|
-
|
|
32
|
-
// check CMD configuration
|
|
33
|
-
if (!isCmdConfigured()) return false;
|
|
34
|
-
|
|
35
|
-
self.cmdStr = process.argv.splice(0, 2).join(' ');
|
|
36
|
-
|
|
37
|
-
// collect --flags to forward
|
|
38
|
-
self.inheritedArgv = [];
|
|
39
|
-
for (var i = 0, len = process.argv.length; i < len; i++) {
|
|
40
|
-
if ( /^\-\-/.test(process.argv[i]) ) {
|
|
41
|
-
self.inheritedArgv.push(process.argv[i])
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
self.inheritedArgv = self.inheritedArgv.join(' ');
|
|
45
|
-
|
|
46
|
-
start(opt, cmd);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
var start = function(opt, cmd) {
|
|
50
|
-
|
|
51
|
-
var _cmd = '$gina bundle:start @' + self.projectName;
|
|
52
|
-
if (self.inheritedArgv != '') {
|
|
53
|
-
_cmd += ' ' + self.inheritedArgv;
|
|
54
|
-
}
|
|
55
|
-
if (opt.debugPort) {
|
|
56
|
-
_cmd += ' --inspect';
|
|
57
|
-
if (opt.debugBrkEnabled) {
|
|
58
|
-
_cmd += '-brk'
|
|
59
|
-
}
|
|
60
|
-
_cmd += '=' + opt.debugPort;
|
|
61
|
-
}
|
|
62
|
-
_cmd = _cmd.replace(/\$(gina)/g, self.cmdStr);
|
|
63
|
-
|
|
64
|
-
console.info('Starting all bundles in @' + self.projectName + ' ...');
|
|
65
|
-
console.debug('Executing: ' + _cmd);
|
|
66
|
-
|
|
67
|
-
// Re-export the home: the bootstrap env sweep strips GINA_* from
|
|
68
|
-
// process.env, so the delegated bundle command would otherwise act
|
|
69
|
-
// on the default home (see linkGina in project/add.js).
|
|
70
|
-
exec(_cmd, { maxBuffer: 1024 * 500, env: Object.assign({}, process.env, { GINA_HOMEDIR: GINA_HOMEDIR }) }, function(err, stdout, stderr) {
|
|
71
|
-
if (stdout) {
|
|
72
|
-
console.log(stdout);
|
|
73
|
-
}
|
|
74
|
-
if (err) {
|
|
75
|
-
console.error(err.toString());
|
|
76
|
-
return process.exit(1);
|
|
77
|
-
}
|
|
78
|
-
process.exit(0);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
init(opt, cmd);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
module.exports = Start
|