gina 0.3.9 → 0.3.10
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/.github/scripts/scan-vendored-cves.js +1 -1
- package/.github/workflows/bundle-freshness.yml +3 -3
- package/.github/workflows/security.yml +52 -0
- package/.github/workflows/vendored-cve.yml +2 -2
- package/CHANGELOG.md +12 -4
- package/README.md +5 -8
- package/ROADMAP.md +1 -0
- package/framework/v0.3.10/VERSION +1 -0
- package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.js +396 -295
- package/framework/v0.3.10/core/asset/plugin/dist/vendor/gina/js/gina.min.js +548 -0
- package/framework/v0.3.10/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.10/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.v4.js +1 -1
- package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.js +19 -1
- package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-nunjucks.js +8 -8
- package/framework/{v0.3.9 → v0.3.10}/core/gna.js +1 -1
- package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/session/src/main.js +2 -2
- package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/src/main.js +388 -292
- package/framework/{v0.3.9 → v0.3.10}/core/server.isaac.js +16 -0
- package/framework/{v0.3.9 → v0.3.10}/core/server.js +4 -4
- package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/migrate.js +1 -1
- package/framework/{v0.3.9 → v0.3.10}/lib/cmd/inspector/help.txt +2 -2
- package/framework/{v0.3.9 → v0.3.10}/lib/collection/src/main.js +8 -3
- package/framework/{v0.3.9 → v0.3.10}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +21 -7
- package/package.json +3 -2
- package/resources/git-hooks/pre-commit +4 -1
- package/script/_load_private_tokens.js +77 -0
- package/script/check_no_local_leak.js +49 -21
- package/script/retry_lockfile_sync.js +85 -0
- package/framework/v0.3.9/VERSION +0 -1
- package/framework/v0.3.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -545
- package/framework/v0.3.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/AUTHORS +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/html/static.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/config.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/content.encoding +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/controller/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/deps/streamsearch-1.1.0/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/currency.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/locales/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/mime.types +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/entity.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/model/template/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/file/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/router.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/server.express.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/status.codes +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/_gitignore +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/env.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/console.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/context.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/path.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/prototypes.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/task.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/helpers/text.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/async/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/async/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/collection/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/collection/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/collection/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/config.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cron/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cron/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/generator/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/math/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/merge/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/merge/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/model.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/proc.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/build.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/session-store.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/shell.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/state.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/url/README.md +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/url/index.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/url/routing.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/uuid/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/validator.js +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/watcher/package.json +0 -0
- /package/framework/{v0.3.9 → v0.3.10}/lib/watcher/src/main.js +0 -0
|
@@ -23,39 +23,47 @@
|
|
|
23
23
|
* contributors, scaffolding template, framework AUTHORS, framework
|
|
24
24
|
* plugin package.json authors) — see ATTRIBUTION_PATHS.
|
|
25
25
|
*
|
|
26
|
+
* Plus a third gate that fires BEFORE the scan starts:
|
|
27
|
+
*
|
|
28
|
+
* 3. Stable-publish gate: if `npm_command=publish` AND `npm_config_tag=latest`
|
|
29
|
+
* (i.e. `npm publish` without `--tag alpha`) AND the maintainer-local
|
|
30
|
+
* sidecar `script/.private-tokens.json` is missing, fail closed before
|
|
31
|
+
* the scan starts. This prevents a fresh-clone or restored-machine
|
|
32
|
+
* stable publish from silently shipping with content-level scanning
|
|
33
|
+
* disabled. Alpha publish, npm pack, and contributor `npm install`
|
|
34
|
+
* flows continue to no-op silently — path-level scanning still runs.
|
|
35
|
+
* See llms.txt §92 for the rationale.
|
|
36
|
+
*
|
|
26
37
|
* `--ignore-scripts` prevents recursion into the `prepare` script (which
|
|
27
38
|
* would otherwise re-invoke `prepare_version.js` and commit a "Prerelease
|
|
28
39
|
* update").
|
|
29
40
|
*
|
|
30
41
|
* Exit codes:
|
|
31
42
|
* 0 — pack listing and contents are clean
|
|
32
|
-
* 1 — leakage detected
|
|
43
|
+
* 1 — leakage detected, check itself errored (fail closed), OR
|
|
44
|
+
* stable-publish gate triggered (sidecar missing on `npm publish`
|
|
45
|
+
* without `--tag alpha`)
|
|
33
46
|
*/
|
|
34
47
|
|
|
35
48
|
var execSync = require('child_process').execSync;
|
|
36
49
|
var fs = require('fs');
|
|
50
|
+
var path = require('path');
|
|
51
|
+
|
|
52
|
+
var loadPrivateTokens = require('./_load_private_tokens');
|
|
37
53
|
|
|
38
54
|
var PATH_PATTERN = /(^|\/)(CLAUDE\.md|\.claude[a-z]*)/i;
|
|
39
55
|
|
|
40
|
-
// Authoring/contributing context — files where
|
|
41
|
-
// is
|
|
42
|
-
// package.json contributors, scaffolding
|
|
43
|
-
// framework plugin package.json authors).
|
|
56
|
+
// Authoring/contributing context — files where a token marked
|
|
57
|
+
// allowInAttribution is permitted (public attribution: README, AUTHORS,
|
|
58
|
+
// GOVERNANCE, CONTRIBUTING, package.json contributors, scaffolding
|
|
59
|
+
// template, framework AUTHORS, framework plugin package.json authors).
|
|
44
60
|
var ATTRIBUTION_PATHS = /^(AUTHORS|CONTRIBUTING\.md|GOVERNANCE\.md|README\.md|package\.json|resources\/package\.json\.template|framework\/v[^/]+\/AUTHORS|framework\/v[^/]+\/core\/plugins\/lib\/[^/]+\/package\.json)$/;
|
|
45
61
|
|
|
46
62
|
// Private tokens that must not appear in published tarball contents.
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
50
|
-
var CONTENT_TOKENS =
|
|
51
|
-
{ name: 'private phone', pattern: /0618178647/ },
|
|
52
|
-
{ name: 'private email', pattern: /[\w.+-]*etouman@rhinostone/i },
|
|
53
|
-
{ name: 'private address', pattern: /Boulevard\s+Arago/i },
|
|
54
|
-
{ name: 'private domain', pattern: /freelancer\.app/i },
|
|
55
|
-
{ name: 'co-author legal name',
|
|
56
|
-
pattern: /Fabrice\s+Delaneau/i,
|
|
57
|
-
allowIn: ATTRIBUTION_PATHS }
|
|
58
|
-
];
|
|
63
|
+
// Patterns load from `script/.private-tokens.json` (gitignored,
|
|
64
|
+
// maintainer-local). If the sidecar is absent, content-level scanning
|
|
65
|
+
// is a no-op; path-level scanning still runs unchanged.
|
|
66
|
+
var CONTENT_TOKENS = loadPrivateTokens(ATTRIBUTION_PATHS);
|
|
59
67
|
|
|
60
68
|
// Heuristic: only read files that are likely text. Saves time on binary
|
|
61
69
|
// assets (images, compiled JARs, compressed .br/.gz) and prevents
|
|
@@ -80,17 +88,17 @@ function isTextPath(p) {
|
|
|
80
88
|
return false;
|
|
81
89
|
}
|
|
82
90
|
|
|
83
|
-
function scanContent(
|
|
91
|
+
function scanContent(filePath) {
|
|
84
92
|
var stat;
|
|
85
|
-
try { stat = fs.statSync(
|
|
93
|
+
try { stat = fs.statSync(filePath); } catch (e) { return []; }
|
|
86
94
|
if (!stat.isFile() || stat.size > MAX_SCAN_BYTES) return [];
|
|
87
95
|
|
|
88
96
|
var content;
|
|
89
|
-
try { content = fs.readFileSync(
|
|
97
|
+
try { content = fs.readFileSync(filePath, 'utf8'); } catch (e) { return []; }
|
|
90
98
|
|
|
91
99
|
var hits = [];
|
|
92
100
|
for (var i = 0; i < CONTENT_TOKENS.length; i++) {
|
|
93
|
-
if (CONTENT_TOKENS[i].allowIn && CONTENT_TOKENS[i].allowIn.test(
|
|
101
|
+
if (CONTENT_TOKENS[i].allowIn && CONTENT_TOKENS[i].allowIn.test(filePath)) continue;
|
|
94
102
|
if (CONTENT_TOKENS[i].pattern.test(content)) {
|
|
95
103
|
hits.push(CONTENT_TOKENS[i].name);
|
|
96
104
|
}
|
|
@@ -98,6 +106,26 @@ function scanContent(path) {
|
|
|
98
106
|
return hits;
|
|
99
107
|
}
|
|
100
108
|
|
|
109
|
+
// Stable-publish gate (§92 follow-up (a)). Fires BEFORE the scan starts.
|
|
110
|
+
// `npm publish` without `--tag alpha` (i.e. tag=latest) requires the
|
|
111
|
+
// maintainer-local sidecar to be present; otherwise the content-level
|
|
112
|
+
// scan would be silently disabled, and the publish could ship leaked
|
|
113
|
+
// tokens. Alpha publish, npm pack, and contributor flows are unaffected
|
|
114
|
+
// — path-level scanning still runs in those cases.
|
|
115
|
+
var sidecarPath = path.join(__dirname, '.private-tokens.json');
|
|
116
|
+
if (
|
|
117
|
+
process.env.npm_command === 'publish'
|
|
118
|
+
&& (process.env.npm_config_tag === 'latest' || !process.env.npm_config_tag)
|
|
119
|
+
&& !fs.existsSync(sidecarPath)
|
|
120
|
+
) {
|
|
121
|
+
console.error('[prepack] STABLE PUBLISH BLOCKED: ' + sidecarPath + ' missing.');
|
|
122
|
+
console.error('[prepack] The maintainer-local sidecar is required for stable publish.');
|
|
123
|
+
console.error('[prepack] Recreate from a personal backup outside the repo, or rebuild');
|
|
124
|
+
console.error('[prepack] from the schema documented in script/_load_private_tokens.js.');
|
|
125
|
+
console.error('[prepack] (Alpha publish, npm pack, and contributor flows are not affected.)');
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
|
|
101
129
|
try {
|
|
102
130
|
var raw = execSync('npm pack --dry-run --json --ignore-scripts', {
|
|
103
131
|
stdio: ['ignore', 'pipe', 'pipe']
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* This file is part of the gina package.
|
|
5
|
+
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
6
|
+
*
|
|
7
|
+
* For the full copyright and license information, please view the LICENSE
|
|
8
|
+
* file that was distributed with this source code.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @file script/retry_lockfile_sync.js
|
|
13
|
+
*
|
|
14
|
+
* Retry-with-backoff wrapper used by `script/post_publish.js → syncDocs`
|
|
15
|
+
* to absorb the npm registry's eventual-consistency window after a stable
|
|
16
|
+
* publish. Without this, intermittent
|
|
17
|
+
* "package-lock.json: gina@<old> does not satisfy gina@<new>" failures
|
|
18
|
+
* commit a stale lockfile alongside the bumped package.json, breaking the
|
|
19
|
+
* next Vercel docs deploy.
|
|
20
|
+
*
|
|
21
|
+
* Background: the failure mode hit `gina@0.3.7` and `gina@0.3.9` stable
|
|
22
|
+
* publishes (the second occurrence proved it was a recurring deterministic
|
|
23
|
+
* ordering bug, not transient registry lag — see `llms.txt §87`).
|
|
24
|
+
*
|
|
25
|
+
* Helpers exported via `module.exports` for unit testing with injected
|
|
26
|
+
* `execDriver` / `sleepDriver` / `logger` — no real-repo or registry
|
|
27
|
+
* fixtures needed.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
'use strict';
|
|
31
|
+
|
|
32
|
+
var execSync = require('child_process').execSync;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Retry a shell command with backoff. Returns the first successful
|
|
37
|
+
* invocation, or a failure result after all attempts are exhausted.
|
|
38
|
+
*
|
|
39
|
+
* @param {object} opts
|
|
40
|
+
* @param {string} opts.cmd shell command to run
|
|
41
|
+
* @param {number[]} [opts.delaysSec] sleep seconds between attempts (default [5, 15, 30, 30] — ~80s ceiling)
|
|
42
|
+
* @param {function} [opts.execDriver] injected execSync replacement (test-only)
|
|
43
|
+
* @param {function} [opts.sleepDriver] injected sleep(seconds) (test-only)
|
|
44
|
+
* @param {object} [opts.logger] injected `{ info }` logger (test-only)
|
|
45
|
+
* @returns {{ ok: boolean, attempts: number, lastErr: (Error|null) }}
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* var retry = require('./retry_lockfile_sync');
|
|
49
|
+
* var result = retry.retryWithBackoff({
|
|
50
|
+
* cmd: '$(which npm) install --package-lock-only --ignore-scripts'
|
|
51
|
+
* });
|
|
52
|
+
* if (!result.ok) {
|
|
53
|
+
* console.warn('lockfile sync failed after ' + result.attempts + ' attempts');
|
|
54
|
+
* }
|
|
55
|
+
*/
|
|
56
|
+
function retryWithBackoff(opts) {
|
|
57
|
+
opts = opts || {};
|
|
58
|
+
if (!opts.cmd) throw new Error('retryWithBackoff: opts.cmd is required');
|
|
59
|
+
var delays = opts.delaysSec || [5, 15, 30, 30];
|
|
60
|
+
var exec = opts.execDriver || function (c) { return execSync(c, { stdio: 'pipe' }); };
|
|
61
|
+
var sleep = opts.sleepDriver || function (s) { execSync('sleep ' + s); };
|
|
62
|
+
var log = opts.logger || console;
|
|
63
|
+
|
|
64
|
+
var lastErr = null;
|
|
65
|
+
var totalAttempts = delays.length;
|
|
66
|
+
for (var i = 0; i < totalAttempts; i++) {
|
|
67
|
+
try {
|
|
68
|
+
exec(opts.cmd);
|
|
69
|
+
return { ok: true, attempts: i + 1, lastErr: null };
|
|
70
|
+
} catch (err) {
|
|
71
|
+
lastErr = err;
|
|
72
|
+
if (i + 1 < totalAttempts) {
|
|
73
|
+
var brief = (err && err.message) ? err.message.split('\n')[0] : String(err);
|
|
74
|
+
log.info('[retry] attempt ' + (i + 1) + '/' + totalAttempts + ' failed (' + brief + '), retrying in ' + delays[i] + 's');
|
|
75
|
+
sleep(delays[i]);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return { ok: false, attempts: totalAttempts, lastErr: lastErr };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
module.exports = {
|
|
84
|
+
retryWithBackoff: retryWithBackoff
|
|
85
|
+
};
|
package/framework/v0.3.9/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.3.9
|