gina 0.6.24 → 0.6.25
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 +14 -0
- package/README.md +23 -13
- package/ROADMAP.md +10 -9
- package/framework/v0.6.25/VERSION +1 -0
- package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.js +554 -4
- package/framework/v0.6.25/core/asset/plugin/dist/vendor/gina/js/gina.min.js +665 -0
- package/framework/v0.6.25/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.25/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.24 → v0.6.25}/core/config.js +11 -0
- package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.js +114 -2
- package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-json.js +9 -0
- package/framework/v0.6.25/core/controller/controller.render-xml.js +226 -0
- package/framework/{v0.6.24 → v0.6.25}/core/controller/inline-script.js +54 -3
- package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/src/form-validator.js +163 -0
- package/framework/{v0.6.24 → v0.6.25}/core/router.js +88 -4
- package/framework/{v0.6.24 → v0.6.25}/core/server.js +115 -0
- package/framework/v0.6.25/lib/idempotency/package.json +6 -0
- package/framework/v0.6.25/lib/idempotency/src/main.js +514 -0
- package/framework/{v0.6.24 → v0.6.25}/lib/index.js +11 -0
- package/framework/v0.6.25/lib/message-validator/package.json +6 -0
- package/framework/v0.6.25/lib/message-validator/src/main.js +340 -0
- package/framework/v0.6.25/lib/money/package.json +17 -0
- package/framework/v0.6.25/lib/money/src/main.js +355 -0
- package/framework/{v0.6.24 → v0.6.25}/lib/routing/src/main.js +26 -2
- package/framework/{v0.6.24 → v0.6.25}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +13 -6
- package/package.json +3 -3
- package/schema/settings.json +44 -1
- package/types/index.d.ts +38 -0
- package/framework/v0.6.24/VERSION +0 -1
- package/framework/v0.6.24/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -655
- package/framework/v0.6.24/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.24/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/AUTHORS +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/kv-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/settle-once.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/kv-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/content.encoding +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/gna.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/locales/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/mime.types +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/entity.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/csrf/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coep/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coop/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/corp/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/csp/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hsts/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/session/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/server.express.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/status.codes +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/console.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/context.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/path.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/task.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/helpers/text.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/admin/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/async/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/audit/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd-status-format/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/config.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-config/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-error/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-registry/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cron/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-types/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/i18n/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/image-build/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-redact/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/job/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/job-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/json-config-header/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/kv/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/kv/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/kv-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/logger/src/redact.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/maintenance/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/math/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-dispatch/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-http/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-server/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/merge/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/metrics/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/model.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/net-locality/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-filters/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-resolver/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/proc.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/push/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/rate-limit/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/rate-limit/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/release-watch/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/render-cache/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing-introspect/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/backends/exec.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/declaration.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/secrets/src/sources.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/security-headers-emitter/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/security-headers-emitter/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/session-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/shell.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/sri/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/sri/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/state.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-resolver/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/url/README.md +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/url/index.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/validator.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/watcher/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-framing/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-query/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-session/package.json +0 -0
- /package/framework/{v0.6.24 → v0.6.25}/lib/ws-session/src/main.js +0 -0
|
@@ -3173,6 +3173,8 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
3173
3173
|
'isStringMinLength': 'Should be at least %s characters',
|
|
3174
3174
|
'isStringMaxLength': 'Should not be more than %s characters',
|
|
3175
3175
|
'isJsonWebToken': 'Must be a valid JSON Web Token',
|
|
3176
|
+
'isIban': 'A valid IBAN is required',
|
|
3177
|
+
'isBic': 'A valid BIC is required',
|
|
3176
3178
|
'query': 'Must be a valid response',
|
|
3177
3179
|
// #B233 rider - dropped: `isApiError` is not a rule, so nothing ever consulted this
|
|
3178
3180
|
// label. The API-error path assigns the SERVER's message straight onto the error
|
|
@@ -3181,6 +3183,30 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
3181
3183
|
//'isApiError': 'Condition not satisfied',
|
|
3182
3184
|
'isInList': 'Must be one of: %s'
|
|
3183
3185
|
};
|
|
3186
|
+
/**
|
|
3187
|
+
* ISO 13616 registry - official IBAN length per country code, consumed by
|
|
3188
|
+
* the `isIban` rule. Countries absent from this table are validated on
|
|
3189
|
+
* shape + MOD-97 checksum alone (deliberate: the registry grows over time
|
|
3190
|
+
* and an unknown country must not hard-fail a well-formed IBAN).
|
|
3191
|
+
* @constant
|
|
3192
|
+
* @inner
|
|
3193
|
+
* @type {Object.<string, number>}
|
|
3194
|
+
*/
|
|
3195
|
+
var _ibanLengths = {
|
|
3196
|
+
'AD': 24, 'AE': 23, 'AL': 28, 'AT': 20, 'AZ': 28, 'BA': 20, 'BE': 16,
|
|
3197
|
+
'BG': 22, 'BH': 22, 'BI': 27, 'BR': 29, 'BY': 28, 'CH': 21, 'CR': 22,
|
|
3198
|
+
'CY': 28, 'CZ': 24, 'DE': 22, 'DJ': 27, 'DK': 18, 'DO': 28, 'EE': 20,
|
|
3199
|
+
'EG': 29, 'ES': 24, 'FI': 18, 'FK': 18, 'FO': 18, 'FR': 27, 'GB': 22,
|
|
3200
|
+
'GE': 22, 'GI': 23, 'GL': 18, 'GR': 27, 'GT': 28, 'HR': 21, 'HU': 28,
|
|
3201
|
+
'IE': 22, 'IL': 23, 'IQ': 23, 'IS': 26, 'IT': 27, 'JO': 30, 'KW': 30,
|
|
3202
|
+
'KZ': 20, 'LB': 28, 'LC': 32, 'LI': 21, 'LT': 20, 'LU': 20, 'LV': 21,
|
|
3203
|
+
'LY': 25, 'MC': 27, 'MD': 24, 'ME': 22, 'MK': 19, 'MN': 20, 'MR': 27,
|
|
3204
|
+
'MT': 31, 'MU': 30, 'NI': 28, 'NL': 18, 'NO': 15, 'OM': 23, 'PK': 24,
|
|
3205
|
+
'PL': 28, 'PS': 29, 'PT': 25, 'QA': 29, 'RO': 24, 'RS': 22, 'RU': 33,
|
|
3206
|
+
'SA': 24, 'SC': 31, 'SD': 18, 'SE': 24, 'SI': 19, 'SK': 24, 'SM': 27,
|
|
3207
|
+
'SO': 23, 'ST': 25, 'SV': 28, 'TL': 23, 'TN': 24, 'TR': 26, 'UA': 29,
|
|
3208
|
+
'VA': 22, 'VG': 24, 'XK': 20
|
|
3209
|
+
};
|
|
3184
3210
|
/**
|
|
3185
3211
|
* Rules already warned about by `replace()`'s fail-soft guard, so one mistyped label
|
|
3186
3212
|
* emits one warning and not one per debounced keystroke. Scoped to this engine
|
|
@@ -4588,6 +4614,143 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
4588
4614
|
return self[this['name']]
|
|
4589
4615
|
}
|
|
4590
4616
|
|
|
4617
|
+
/**
|
|
4618
|
+
* Validates the field value as an IBAN (ISO 13616).
|
|
4619
|
+
*
|
|
4620
|
+
* Tolerant read: validation runs on an uppercased copy with spaces and
|
|
4621
|
+
* hyphens stripped (the ISO 13616 print format groups characters in
|
|
4622
|
+
* blocks of four) - the stored field value and the DOM are NEVER
|
|
4623
|
+
* mutated, so the application receives exactly what the user typed.
|
|
4624
|
+
* Three checks, in order: the ISO shape, the official per-country
|
|
4625
|
+
* length when the country code is in the `_ibanLengths` registry
|
|
4626
|
+
* (unknown countries pass on shape + checksum alone - the registry
|
|
4627
|
+
* grows over time and an unknown country must not hard-fail a
|
|
4628
|
+
* well-formed IBAN), and the ISO 7064 MOD 97-10 checksum.
|
|
4629
|
+
* An empty value is adjudicated by `isRequired` alone (#B78).
|
|
4630
|
+
*
|
|
4631
|
+
* @returns {object} the field object (chainable)
|
|
4632
|
+
*
|
|
4633
|
+
* @example
|
|
4634
|
+
* // rule file
|
|
4635
|
+
* "accountIban": { "isRequired": true, "isIban": true }
|
|
4636
|
+
*/
|
|
4637
|
+
self[el]['isIban'] = function() {
|
|
4638
|
+
|
|
4639
|
+
// #B200 - TYPE-guarded, not merely truthy-guarded: see the isEmail
|
|
4640
|
+
// note above. The guard folds into isValid (rather than letting the
|
|
4641
|
+
// regex coerce) because the checks below call string methods on the
|
|
4642
|
+
// candidate - a toString-spoofing object must record an invalid,
|
|
4643
|
+
// never throw into the rule driver.
|
|
4644
|
+
var candidate = ( this.value && typeof(this.value) == 'string' )
|
|
4645
|
+
? this.value.toUpperCase().replace(/[\s-]+/g, '')
|
|
4646
|
+
: this.value;
|
|
4647
|
+
|
|
4648
|
+
var rgx = /^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/;
|
|
4649
|
+
var isValid = ( typeof(candidate) == 'string' && rgx.test(candidate) ) ? true : false;
|
|
4650
|
+
|
|
4651
|
+
// Official per-country length when the country is registered;
|
|
4652
|
+
// unknown countries pass on shape + checksum alone.
|
|
4653
|
+
if (isValid) {
|
|
4654
|
+
var country = candidate.slice(0, 2);
|
|
4655
|
+
if ( typeof(_ibanLengths[country]) != 'undefined' && candidate.length !== _ibanLengths[country] ) {
|
|
4656
|
+
isValid = false;
|
|
4657
|
+
}
|
|
4658
|
+
}
|
|
4659
|
+
|
|
4660
|
+
// ISO 7064 MOD 97-10: move the first four characters to the end,
|
|
4661
|
+
// expand letters (A=10 ... Z=35), then fold the digit string
|
|
4662
|
+
// modulo 97 in <= 7-digit chunks so every intermediate stays far
|
|
4663
|
+
// inside Number.MAX_SAFE_INTEGER - plain Number math only (the
|
|
4664
|
+
// browser-bundle build chain constrains bundled source).
|
|
4665
|
+
if (isValid) {
|
|
4666
|
+
var rearranged = candidate.slice(4) + candidate.slice(0, 4);
|
|
4667
|
+
var expanded = '';
|
|
4668
|
+
for (var i = 0, len = rearranged.length; i < len; ++i) {
|
|
4669
|
+
var code = rearranged.charCodeAt(i);
|
|
4670
|
+
expanded += ( code >= 65 ) ? (code - 55).toString() : rearranged.charAt(i);
|
|
4671
|
+
}
|
|
4672
|
+
var remainder = 0;
|
|
4673
|
+
for (var p = 0, pLen = expanded.length; p < pLen; p += 7) {
|
|
4674
|
+
remainder = parseInt(remainder.toString() + expanded.slice(p, p + 7), 10) % 97;
|
|
4675
|
+
}
|
|
4676
|
+
isValid = (remainder === 1);
|
|
4677
|
+
}
|
|
4678
|
+
|
|
4679
|
+
var errors = self[this['name']]['errors'] || {};
|
|
4680
|
+
|
|
4681
|
+
// #B78 - an empty value is adjudicated by isRequired alone: bypass on empty so a
|
|
4682
|
+
// required+empty field records only isRequired, not a second 'invalid' message.
|
|
4683
|
+
// #B199 - strict: only the literal empty string is "empty".
|
|
4684
|
+
if ( this.value === '' ) {
|
|
4685
|
+
isValid = true;
|
|
4686
|
+
}
|
|
4687
|
+
|
|
4688
|
+
local['data'][this.name] = this.value;
|
|
4689
|
+
|
|
4690
|
+
if (!isValid) {
|
|
4691
|
+
errors['isIban'] = replace(this['error'] || local.errorLabels['isIban'], this, 'isIban')
|
|
4692
|
+
}
|
|
4693
|
+
else if ( isValid && typeof(errors['isIban']) != 'undefined' ) {
|
|
4694
|
+
delete errors['isIban'];
|
|
4695
|
+
}
|
|
4696
|
+
|
|
4697
|
+
// #B78 - keep .valid consistent with a surviving isRequired error.
|
|
4698
|
+
this.valid = isValid && !errors['isRequired'];
|
|
4699
|
+
|
|
4700
|
+
if ( errors.count() > 0 )
|
|
4701
|
+
this['errors'] = errors;
|
|
4702
|
+
|
|
4703
|
+
return self[this['name']]
|
|
4704
|
+
}
|
|
4705
|
+
|
|
4706
|
+
/**
|
|
4707
|
+
* Validates the field value as a BIC (ISO 9362): a 4-letter business
|
|
4708
|
+
* party prefix, a 2-letter country code, a 2-character alphanumeric
|
|
4709
|
+
* location code, and an optional 3-character alphanumeric branch code
|
|
4710
|
+
* (8 or 11 characters). Case-insensitive by regex - the stored field
|
|
4711
|
+
* value and the DOM are NEVER mutated.
|
|
4712
|
+
* An empty value is adjudicated by `isRequired` alone (#B78).
|
|
4713
|
+
*
|
|
4714
|
+
* @returns {object} the field object (chainable)
|
|
4715
|
+
*
|
|
4716
|
+
* @example
|
|
4717
|
+
* // rule file
|
|
4718
|
+
* "bankBic": { "isRequired": true, "isBic": true }
|
|
4719
|
+
*/
|
|
4720
|
+
self[el]['isBic'] = function() {
|
|
4721
|
+
|
|
4722
|
+
// #B200 - non-strings are adjudicated by the regex (every
|
|
4723
|
+
// non-string coerces to a string that fails the shape), so they
|
|
4724
|
+
// record an invalid - they never throw into the rule driver.
|
|
4725
|
+
var rgx = /^[A-Za-z]{4}[A-Za-z]{2}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;
|
|
4726
|
+
var isValid = rgx.test(this['value']) ? true : false;
|
|
4727
|
+
var errors = self[this['name']]['errors'] || {};
|
|
4728
|
+
|
|
4729
|
+
// #B78 - an empty value is adjudicated by isRequired alone: bypass on empty so a
|
|
4730
|
+
// required+empty field records only isRequired, not a second 'invalid' message.
|
|
4731
|
+
// #B199 - strict: only the literal empty string is "empty".
|
|
4732
|
+
if ( this.value === '' ) {
|
|
4733
|
+
isValid = true;
|
|
4734
|
+
}
|
|
4735
|
+
|
|
4736
|
+
local['data'][this.name] = this.value;
|
|
4737
|
+
|
|
4738
|
+
if (!isValid) {
|
|
4739
|
+
errors['isBic'] = replace(this['error'] || local.errorLabels['isBic'], this, 'isBic')
|
|
4740
|
+
}
|
|
4741
|
+
else if ( isValid && typeof(errors['isBic']) != 'undefined' ) {
|
|
4742
|
+
delete errors['isBic'];
|
|
4743
|
+
}
|
|
4744
|
+
|
|
4745
|
+
// #B78 - keep .valid consistent with a surviving isRequired error.
|
|
4746
|
+
this.valid = isValid && !errors['isRequired'];
|
|
4747
|
+
|
|
4748
|
+
if ( errors.count() > 0 )
|
|
4749
|
+
this['errors'] = errors;
|
|
4750
|
+
|
|
4751
|
+
return self[this['name']]
|
|
4752
|
+
}
|
|
4753
|
+
|
|
4591
4754
|
/**
|
|
4592
4755
|
* Check if boolean and convert to `true/false` boolean if value is a string or a number.
|
|
4593
4756
|
* Accepts `true`/`'true'`/`1` and `false`/`'false'`/`0` — the documented set.
|
|
@@ -6029,6 +6192,15 @@ function Routing() {
|
|
|
6029
6192
|
params.rateLimit = routeObject.rateLimit;
|
|
6030
6193
|
}
|
|
6031
6194
|
|
|
6195
|
+
// #FIN6 — propagate the per-route idempotency opt-in to
|
|
6196
|
+
// req.routing.idempotency (top-level, NOT req.routing.param.* — the
|
|
6197
|
+
// #CSRF2 trap). typeof-guarded so `false` survives the copy;
|
|
6198
|
+
// assigned only when declared, so a routing.json that never
|
|
6199
|
+
// mentions `idempotency` produces a byte-identical params object.
|
|
6200
|
+
if ( typeof(routeObject.idempotency) != 'undefined' ) {
|
|
6201
|
+
params.idempotency = routeObject.idempotency;
|
|
6202
|
+
}
|
|
6203
|
+
|
|
6032
6204
|
// isRoute
|
|
6033
6205
|
return self.compareUrls(params, routeObject.url, req);
|
|
6034
6206
|
}
|
|
@@ -7258,6 +7430,13 @@ function Routing() {
|
|
|
7258
7430
|
* `false` sentinel for every url. Await this method (or `.then()` it); the
|
|
7259
7431
|
* old "unresolved promises" caveat that used to sit here was this defect.
|
|
7260
7432
|
*
|
|
7433
|
+
* Browser context, on a miss (#B462): when a rendered `404:` marker or an
|
|
7434
|
+
* alternate-route lookup identifies the missing rule, the composed
|
|
7435
|
+
* "route not found inside your view" diagnostic is registered on the
|
|
7436
|
+
* notFound registry — keyed per rule, `count` incremented on repeats —
|
|
7437
|
+
* and emitted via `console.warn` on the FIRST sighting of each key.
|
|
7438
|
+
* Server context warns on every miss (unchanged).
|
|
7439
|
+
*
|
|
7261
7440
|
* @function getRouteByUrl
|
|
7262
7441
|
* @async
|
|
7263
7442
|
*
|
|
@@ -7527,6 +7706,7 @@ function Routing() {
|
|
|
7527
7706
|
count: 1,
|
|
7528
7707
|
message: msg
|
|
7529
7708
|
};
|
|
7709
|
+
console.warn(msg); // #B462 — announce the composed diagnostic on the FIRST sighting of each key (the registry dedups repeats)
|
|
7530
7710
|
} else if ( isMethodProvidedByDefault && typeof(self.notFound[notFound]) != 'undefined' ) {
|
|
7531
7711
|
++self.notFound[notFound].count;
|
|
7532
7712
|
}
|
|
@@ -7553,7 +7733,7 @@ function Routing() {
|
|
|
7553
7733
|
count: 1,
|
|
7554
7734
|
message: msg
|
|
7555
7735
|
};
|
|
7556
|
-
|
|
7736
|
+
console.warn(msg); // #B462 — re-enabled: emit once per new registry key
|
|
7557
7737
|
} else if ( isMethodProvidedByDefault && typeof(self.notFound[notFound]) != 'undefined' ) {
|
|
7558
7738
|
++self.notFound[notFound].count;
|
|
7559
7739
|
}
|
|
@@ -7571,7 +7751,14 @@ function Routing() {
|
|
|
7571
7751
|
notFound = method.toUpperCase() +'::'+ altRoute.request.routing.rule;
|
|
7572
7752
|
if ( typeof(self.notFound[notFound]) == 'undefined' ) {
|
|
7573
7753
|
msg = msg.replace(/\%r/, notFound);
|
|
7574
|
-
//
|
|
7754
|
+
// #B462 — the registry write was missing here, leaving the
|
|
7755
|
+
// increment arm below unreachable; aligned with the sibling
|
|
7756
|
+
// arms (create + emit once per key)
|
|
7757
|
+
self.notFound[notFound] = {
|
|
7758
|
+
count: 1,
|
|
7759
|
+
message: msg
|
|
7760
|
+
};
|
|
7761
|
+
console.warn(msg); // #B462
|
|
7575
7762
|
} else {
|
|
7576
7763
|
++self.notFound[notFound].count;
|
|
7577
7764
|
}
|
|
@@ -7673,6 +7860,362 @@ if ((typeof (module) !== 'undefined') && module.exports) {
|
|
|
7673
7860
|
return Routing();
|
|
7674
7861
|
});
|
|
7675
7862
|
};
|
|
7863
|
+
/*
|
|
7864
|
+
* This file is part of the gina package.
|
|
7865
|
+
* Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
|
|
7866
|
+
*
|
|
7867
|
+
* For the full copyright and license information, please view the LICENSE
|
|
7868
|
+
* file that was distributed with this source code.
|
|
7869
|
+
*/
|
|
7870
|
+
|
|
7871
|
+
/**
|
|
7872
|
+
* @module money
|
|
7873
|
+
*
|
|
7874
|
+
* Exact-money primitive (#FIN5) — ISO 4217 minor-unit integer arithmetic,
|
|
7875
|
+
* BigInt-safe, dependency-free, dual-context (server + browser bundle).
|
|
7876
|
+
*
|
|
7877
|
+
* The one rule this module exists to enforce: an amount of money is an
|
|
7878
|
+
* INTEGER count of a currency's minor units (cents, fils, yen...), never an
|
|
7879
|
+
* IEEE 754 float. `0.10 + 0.20` is wrong out of the box in JavaScript; this
|
|
7880
|
+
* module makes the correct pattern cheap:
|
|
7881
|
+
*
|
|
7882
|
+
* wire (string, byte-exact) -> parse() -> { minor: BigInt } -> arithmetic
|
|
7883
|
+
* |
|
|
7884
|
+
* wire (string) <- format() / toMinor() <
|
|
7885
|
+
*
|
|
7886
|
+
* What it deliberately does NOT do:
|
|
7887
|
+
* - Display formatting (locale symbols, grouping): that is the i18n layer's
|
|
7888
|
+
* job — `Intl.NumberFormat(culture, { style: 'currency', currency: code })`
|
|
7889
|
+
* is native on both runtimes. `format()` here returns the CANONICAL wire
|
|
7890
|
+
* string ("1234.50"), locale-independent.
|
|
7891
|
+
* - Rounding policy: `parse()` REJECTS excess precision instead of rounding
|
|
7892
|
+
* (whether "1.005" rounds up, down or banker's is application domain), and
|
|
7893
|
+
* `multiply()` accepts INTEGER factors only for the same reason. An
|
|
7894
|
+
* application that needs fractional factors owns its rounding explicitly,
|
|
7895
|
+
* on minor units.
|
|
7896
|
+
* - Currency conversion: rates are application data.
|
|
7897
|
+
*
|
|
7898
|
+
* Amounts internally use BigInt so totals beyond `Number.MAX_SAFE_INTEGER`
|
|
7899
|
+
* minor units stay exact. BigInt values are created exclusively through the
|
|
7900
|
+
* `BigInt()` constructor — no BigInt literals — so the source stays parseable
|
|
7901
|
+
* by every tool in the browser-bundle build chain.
|
|
7902
|
+
*
|
|
7903
|
+
* @example
|
|
7904
|
+
* var money = require('lib/money'); // server: bare module | browser: gina.money
|
|
7905
|
+
* var a = money.parse('19.99', 'EUR');
|
|
7906
|
+
* var b = money.parse('0.01', 'EUR');
|
|
7907
|
+
* money.format(money.add(a, b)); // '20.00'
|
|
7908
|
+
* money.toMinor(money.add(a, b)); // '2000'
|
|
7909
|
+
* money.parse('100', 'JPY').exponent; // 0 — no minor unit
|
|
7910
|
+
* money.add(a, money.parse('1', 'USD')); // throws TypeError (currency mismatch)
|
|
7911
|
+
* */
|
|
7912
|
+
|
|
7913
|
+
var Money = (function() {
|
|
7914
|
+
|
|
7915
|
+
var self = {};
|
|
7916
|
+
|
|
7917
|
+
/**
|
|
7918
|
+
* ISO 4217 minor-unit exponents that differ from the default of 2.
|
|
7919
|
+
* Sourced from the ISO 4217 active-currency table; funds and precious-
|
|
7920
|
+
* metal codes (XAU, XDR, ...) carry no minor unit and are not listed —
|
|
7921
|
+
* they resolve to the default like any unlisted well-formed code.
|
|
7922
|
+
*
|
|
7923
|
+
* @constant
|
|
7924
|
+
* @type {Object<string, number>}
|
|
7925
|
+
* @inner
|
|
7926
|
+
* */
|
|
7927
|
+
var EXPONENT_EXCEPTIONS = {
|
|
7928
|
+
// 0 — no minor unit
|
|
7929
|
+
'BIF': 0, 'CLP': 0, 'DJF': 0, 'GNF': 0, 'ISK': 0, 'JPY': 0,
|
|
7930
|
+
'KMF': 0, 'KRW': 0, 'PYG': 0, 'RWF': 0, 'UGX': 0, 'UYI': 0,
|
|
7931
|
+
'VND': 0, 'VUV': 0, 'XAF': 0, 'XOF': 0, 'XPF': 0,
|
|
7932
|
+
// 3 — mills
|
|
7933
|
+
'BHD': 3, 'IQD': 3, 'JOD': 3, 'KWD': 3, 'LYD': 3, 'OMR': 3, 'TND': 3,
|
|
7934
|
+
// 4
|
|
7935
|
+
'CLF': 4, 'UYW': 4
|
|
7936
|
+
};
|
|
7937
|
+
|
|
7938
|
+
/**
|
|
7939
|
+
* Wire-amount shape: an optional sign, an integer part, an optional
|
|
7940
|
+
* fraction. Nothing else — no grouping separators, no exponent notation,
|
|
7941
|
+
* no currency symbols (those are display concerns).
|
|
7942
|
+
*
|
|
7943
|
+
* @constant
|
|
7944
|
+
* @inner
|
|
7945
|
+
* */
|
|
7946
|
+
var RE_AMOUNT = /^(-?)(\d+)(?:\.(\d+))?$/;
|
|
7947
|
+
|
|
7948
|
+
/**
|
|
7949
|
+
* Well-formed ISO 4217 alphabetic code.
|
|
7950
|
+
*
|
|
7951
|
+
* @constant
|
|
7952
|
+
* @inner
|
|
7953
|
+
* */
|
|
7954
|
+
var RE_CODE = /^[A-Za-z]{3}$/;
|
|
7955
|
+
|
|
7956
|
+
/**
|
|
7957
|
+
* Normalizes and validates a currency code.
|
|
7958
|
+
*
|
|
7959
|
+
* @inner
|
|
7960
|
+
* @param {string} code - ISO 4217 alphabetic code, any case
|
|
7961
|
+
* @returns {string} the upper-cased code
|
|
7962
|
+
* @throws {TypeError} when `code` is not a 3-letter string
|
|
7963
|
+
* */
|
|
7964
|
+
var normalizeCode = function(code) {
|
|
7965
|
+
if ( typeof(code) != 'string' || !RE_CODE.test(code) ) {
|
|
7966
|
+
throw new TypeError('[ money ] invalid currency code: expected a 3-letter ISO 4217 code, got `' + code + '`');
|
|
7967
|
+
}
|
|
7968
|
+
return code.toUpperCase();
|
|
7969
|
+
};
|
|
7970
|
+
|
|
7971
|
+
/**
|
|
7972
|
+
* Asserts a value is a money amount produced by this module.
|
|
7973
|
+
*
|
|
7974
|
+
* @inner
|
|
7975
|
+
* @param {object} a
|
|
7976
|
+
* @returns {object} `a`
|
|
7977
|
+
* @throws {TypeError} when the shape is not a money amount
|
|
7978
|
+
* */
|
|
7979
|
+
var assertAmount = function(a) {
|
|
7980
|
+
if ( !a || typeof(a) != 'object' || typeof(a.minor) != 'bigint' || typeof(a.currency) != 'string' ) {
|
|
7981
|
+
throw new TypeError('[ money ] not a money amount: expected the { currency, exponent, minor } shape from parse()/fromMinor()');
|
|
7982
|
+
}
|
|
7983
|
+
return a;
|
|
7984
|
+
};
|
|
7985
|
+
|
|
7986
|
+
/**
|
|
7987
|
+
* Asserts two amounts share one currency.
|
|
7988
|
+
*
|
|
7989
|
+
* @inner
|
|
7990
|
+
* @param {object} a
|
|
7991
|
+
* @param {object} b
|
|
7992
|
+
* @throws {TypeError} on a currency mismatch — mixed-currency arithmetic
|
|
7993
|
+
* is the corruption this module exists to prevent, so it always throws
|
|
7994
|
+
* */
|
|
7995
|
+
var assertSameCurrency = function(a, b) {
|
|
7996
|
+
assertAmount(a); assertAmount(b);
|
|
7997
|
+
if (a.currency !== b.currency) {
|
|
7998
|
+
throw new TypeError('[ money ] currency mismatch: `' + a.currency + '` vs `' + b.currency + '` — convert explicitly before operating');
|
|
7999
|
+
}
|
|
8000
|
+
};
|
|
8001
|
+
|
|
8002
|
+
/**
|
|
8003
|
+
* Returns the minor-unit exponent for a currency.
|
|
8004
|
+
* Unlisted well-formed codes resolve to the ISO default of 2.
|
|
8005
|
+
*
|
|
8006
|
+
* @param {string} code - ISO 4217 alphabetic code, any case
|
|
8007
|
+
* @returns {number} 0, 2, 3 or 4
|
|
8008
|
+
* @throws {TypeError} when `code` is not a 3-letter string
|
|
8009
|
+
*
|
|
8010
|
+
* @example
|
|
8011
|
+
* money.exponent('EUR'); // 2
|
|
8012
|
+
* money.exponent('jpy'); // 0
|
|
8013
|
+
* money.exponent('BHD'); // 3
|
|
8014
|
+
* */
|
|
8015
|
+
self.exponent = function(code) {
|
|
8016
|
+
code = normalizeCode(code);
|
|
8017
|
+
return ( typeof(EXPONENT_EXCEPTIONS[code]) != 'undefined' ) ? EXPONENT_EXCEPTIONS[code] : 2;
|
|
8018
|
+
};
|
|
8019
|
+
|
|
8020
|
+
/**
|
|
8021
|
+
* Parses a canonical wire string into an exact amount.
|
|
8022
|
+
*
|
|
8023
|
+
* The input is the decimal string an API carries on the wire (`"19.99"`,
|
|
8024
|
+
* `"-0.05"`, `"1234"`). Excess fractional digits are an ERROR, not a
|
|
8025
|
+
* rounding opportunity: `parse('1.005', 'EUR')` throws.
|
|
8026
|
+
*
|
|
8027
|
+
* @param {string} value - decimal string; sign + digits + optional fraction
|
|
8028
|
+
* @param {string} code - ISO 4217 alphabetic code, any case
|
|
8029
|
+
* @returns {{currency: string, exponent: number, minor: bigint}}
|
|
8030
|
+
* @throws {TypeError} on a non-string / malformed value, a malformed
|
|
8031
|
+
* code, or more fractional digits than the currency's exponent
|
|
8032
|
+
*
|
|
8033
|
+
* @example
|
|
8034
|
+
* money.parse('19.99', 'EUR'); // { currency:'EUR', exponent:2, minor: 1999n }
|
|
8035
|
+
* money.parse('19.9', 'EUR'); // minor 1990n — short fractions scale up
|
|
8036
|
+
* money.parse('100', 'JPY'); // { currency:'JPY', exponent:0, minor: 100n }
|
|
8037
|
+
* money.parse('1.005', 'EUR'); // throws — precision beyond the exponent
|
|
8038
|
+
* money.parse(19.99, 'EUR'); // throws — floats are the hazard, not an input
|
|
8039
|
+
* */
|
|
8040
|
+
self.parse = function(value, code) {
|
|
8041
|
+
code = normalizeCode(code);
|
|
8042
|
+
if ( typeof(value) != 'string' ) {
|
|
8043
|
+
throw new TypeError('[ money ] parse() takes the WIRE STRING, not a number — a float has already lost exactness (`' + value + '`)');
|
|
8044
|
+
}
|
|
8045
|
+
var m = RE_AMOUNT.exec(value.trim());
|
|
8046
|
+
if (!m) {
|
|
8047
|
+
throw new TypeError('[ money ] malformed amount `' + value + '`: expected digits with an optional sign and `.` fraction');
|
|
8048
|
+
}
|
|
8049
|
+
var exp = self.exponent(code);
|
|
8050
|
+
var fraction = m[3] || '';
|
|
8051
|
+
if (fraction.length > exp) {
|
|
8052
|
+
throw new TypeError('[ money ] `' + value + '` carries ' + fraction.length + ' fractional digit(s) but ' + code + ' has ' + exp + ' — rounding is the application\'s decision, apply it before parse()');
|
|
8053
|
+
}
|
|
8054
|
+
while (fraction.length < exp) {
|
|
8055
|
+
fraction += '0';
|
|
8056
|
+
}
|
|
8057
|
+
var minor = BigInt(m[2] + fraction);
|
|
8058
|
+
if (m[1] === '-') {
|
|
8059
|
+
minor = -minor;
|
|
8060
|
+
}
|
|
8061
|
+
return { currency: code, exponent: exp, minor: minor };
|
|
8062
|
+
};
|
|
8063
|
+
|
|
8064
|
+
/**
|
|
8065
|
+
* Builds an amount directly from a minor-unit count.
|
|
8066
|
+
*
|
|
8067
|
+
* @param {string|number|bigint} minor - integer minor units (`1999`, `'1999'`)
|
|
8068
|
+
* @param {string} code - ISO 4217 alphabetic code, any case
|
|
8069
|
+
* @returns {{currency: string, exponent: number, minor: bigint}}
|
|
8070
|
+
* @throws {TypeError} on a malformed code, a non-integer number, or a
|
|
8071
|
+
* string that is not a plain signed integer
|
|
8072
|
+
*
|
|
8073
|
+
* @example
|
|
8074
|
+
* money.fromMinor(1999, 'EUR'); // 19.99 EUR
|
|
8075
|
+
* money.fromMinor('250', 'JPY'); // 250 JPY
|
|
8076
|
+
* */
|
|
8077
|
+
self.fromMinor = function(minor, code) {
|
|
8078
|
+
code = normalizeCode(code);
|
|
8079
|
+
var big;
|
|
8080
|
+
if ( typeof(minor) == 'bigint' ) {
|
|
8081
|
+
big = minor;
|
|
8082
|
+
} else if ( typeof(minor) == 'number' ) {
|
|
8083
|
+
if ( !isFinite(minor) || Math.floor(minor) !== minor ) {
|
|
8084
|
+
throw new TypeError('[ money ] fromMinor() takes an INTEGER minor-unit count, got `' + minor + '`');
|
|
8085
|
+
}
|
|
8086
|
+
big = BigInt(minor);
|
|
8087
|
+
} else if ( typeof(minor) == 'string' && /^-?\d+$/.test(minor.trim()) ) {
|
|
8088
|
+
big = BigInt(minor.trim());
|
|
8089
|
+
} else {
|
|
8090
|
+
throw new TypeError('[ money ] fromMinor() takes an integer as bigint, number or string, got `' + minor + '`');
|
|
8091
|
+
}
|
|
8092
|
+
return { currency: code, exponent: self.exponent(code), minor: big };
|
|
8093
|
+
};
|
|
8094
|
+
|
|
8095
|
+
/**
|
|
8096
|
+
* Exact addition. Same-currency only.
|
|
8097
|
+
*
|
|
8098
|
+
* @param {object} a - amount from parse()/fromMinor()
|
|
8099
|
+
* @param {object} b - amount from parse()/fromMinor()
|
|
8100
|
+
* @returns {{currency: string, exponent: number, minor: bigint}}
|
|
8101
|
+
* @throws {TypeError} on a currency mismatch or a non-amount
|
|
8102
|
+
*
|
|
8103
|
+
* @example
|
|
8104
|
+
* money.format(money.add(money.parse('0.10','EUR'), money.parse('0.20','EUR'))); // '0.30'
|
|
8105
|
+
* */
|
|
8106
|
+
self.add = function(a, b) {
|
|
8107
|
+
assertSameCurrency(a, b);
|
|
8108
|
+
return { currency: a.currency, exponent: a.exponent, minor: a.minor + b.minor };
|
|
8109
|
+
};
|
|
8110
|
+
|
|
8111
|
+
/**
|
|
8112
|
+
* Exact subtraction (`a - b`). Same-currency only.
|
|
8113
|
+
*
|
|
8114
|
+
* @param {object} a - amount from parse()/fromMinor()
|
|
8115
|
+
* @param {object} b - amount from parse()/fromMinor()
|
|
8116
|
+
* @returns {{currency: string, exponent: number, minor: bigint}}
|
|
8117
|
+
* @throws {TypeError} on a currency mismatch or a non-amount
|
|
8118
|
+
* */
|
|
8119
|
+
self.subtract = function(a, b) {
|
|
8120
|
+
assertSameCurrency(a, b);
|
|
8121
|
+
return { currency: a.currency, exponent: a.exponent, minor: a.minor - b.minor };
|
|
8122
|
+
};
|
|
8123
|
+
|
|
8124
|
+
/**
|
|
8125
|
+
* Exact multiplication by an INTEGER factor (a quantity, a line count).
|
|
8126
|
+
* A fractional factor (a rate, a percentage) needs a rounding decision
|
|
8127
|
+
* the application owns — apply it on minor units, then fromMinor().
|
|
8128
|
+
*
|
|
8129
|
+
* @param {object} a - amount from parse()/fromMinor()
|
|
8130
|
+
* @param {string|number|bigint} factor - integer multiplier
|
|
8131
|
+
* @returns {{currency: string, exponent: number, minor: bigint}}
|
|
8132
|
+
* @throws {TypeError} on a non-amount or a non-integer factor
|
|
8133
|
+
*
|
|
8134
|
+
* @example
|
|
8135
|
+
* money.format(money.multiply(money.parse('19.99','EUR'), 3)); // '59.97'
|
|
8136
|
+
* */
|
|
8137
|
+
self.multiply = function(a, factor) {
|
|
8138
|
+
assertAmount(a);
|
|
8139
|
+
var big;
|
|
8140
|
+
if ( typeof(factor) == 'bigint' ) {
|
|
8141
|
+
big = factor;
|
|
8142
|
+
} else if ( typeof(factor) == 'number' && isFinite(factor) && Math.floor(factor) === factor ) {
|
|
8143
|
+
big = BigInt(factor);
|
|
8144
|
+
} else if ( typeof(factor) == 'string' && /^-?\d+$/.test(factor.trim()) ) {
|
|
8145
|
+
big = BigInt(factor.trim());
|
|
8146
|
+
} else {
|
|
8147
|
+
throw new TypeError('[ money ] multiply() takes an INTEGER factor, got `' + factor + '` — a fractional rate needs the application\'s own rounding, on minor units');
|
|
8148
|
+
}
|
|
8149
|
+
return { currency: a.currency, exponent: a.exponent, minor: a.minor * big };
|
|
8150
|
+
};
|
|
8151
|
+
|
|
8152
|
+
/**
|
|
8153
|
+
* Three-way comparison. Same-currency only.
|
|
8154
|
+
*
|
|
8155
|
+
* @param {object} a - amount from parse()/fromMinor()
|
|
8156
|
+
* @param {object} b - amount from parse()/fromMinor()
|
|
8157
|
+
* @returns {number} -1 when a < b, 0 when equal, 1 when a > b
|
|
8158
|
+
* @throws {TypeError} on a currency mismatch or a non-amount
|
|
8159
|
+
* */
|
|
8160
|
+
self.compare = function(a, b) {
|
|
8161
|
+
assertSameCurrency(a, b);
|
|
8162
|
+
if (a.minor < b.minor) { return -1; }
|
|
8163
|
+
if (a.minor > b.minor) { return 1; }
|
|
8164
|
+
return 0;
|
|
8165
|
+
};
|
|
8166
|
+
|
|
8167
|
+
/**
|
|
8168
|
+
* Renders the canonical wire string: sign, integer part, and EXACTLY the
|
|
8169
|
+
* currency's exponent in fractional digits (`'20.00'`, `'-0.05'`, `'150'`
|
|
8170
|
+
* for a 0-exponent currency). Locale display belongs to the i18n layer
|
|
8171
|
+
* (`Intl.NumberFormat`); this string is for wires, stores and logs.
|
|
8172
|
+
*
|
|
8173
|
+
* @param {object} a - amount from parse()/fromMinor()
|
|
8174
|
+
* @returns {string}
|
|
8175
|
+
* @throws {TypeError} on a non-amount
|
|
8176
|
+
*
|
|
8177
|
+
* @example
|
|
8178
|
+
* money.format(money.fromMinor(-5, 'EUR')); // '-0.05'
|
|
8179
|
+
* money.format(money.fromMinor(150, 'JPY')); // '150'
|
|
8180
|
+
* */
|
|
8181
|
+
self.format = function(a) {
|
|
8182
|
+
assertAmount(a);
|
|
8183
|
+
var neg = a.minor < BigInt(0);
|
|
8184
|
+
var s = (neg ? -a.minor : a.minor).toString();
|
|
8185
|
+
if (a.exponent === 0) {
|
|
8186
|
+
return (neg ? '-' : '') + s;
|
|
8187
|
+
}
|
|
8188
|
+
while (s.length <= a.exponent) {
|
|
8189
|
+
s = '0' + s;
|
|
8190
|
+
}
|
|
8191
|
+
var cut = s.length - a.exponent;
|
|
8192
|
+
return (neg ? '-' : '') + s.substring(0, cut) + '.' + s.substring(cut);
|
|
8193
|
+
};
|
|
8194
|
+
|
|
8195
|
+
/**
|
|
8196
|
+
* Returns the minor-unit count as a JSON-safe decimal string.
|
|
8197
|
+
*
|
|
8198
|
+
* @param {object} a - amount from parse()/fromMinor()
|
|
8199
|
+
* @returns {string} e.g. `'1999'`, `'-5'`
|
|
8200
|
+
* @throws {TypeError} on a non-amount
|
|
8201
|
+
* */
|
|
8202
|
+
self.toMinor = function(a) {
|
|
8203
|
+
assertAmount(a);
|
|
8204
|
+
return a.minor.toString();
|
|
8205
|
+
};
|
|
8206
|
+
|
|
8207
|
+
return self;
|
|
8208
|
+
|
|
8209
|
+
})();
|
|
8210
|
+
|
|
8211
|
+
if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
|
|
8212
|
+
// Publish as node.js module
|
|
8213
|
+
module.exports = Money
|
|
8214
|
+
} else if ( typeof(define) === 'function' && define.amd) {
|
|
8215
|
+
// Publish as AMD module
|
|
8216
|
+
define('lib/money',[],function() { return Money })
|
|
8217
|
+
}
|
|
8218
|
+
;
|
|
7676
8219
|
function registerEvents(plugin, events) {
|
|
7677
8220
|
if ( typeof(gina) == 'undefined' && typeof(window.gina) != 'undefined' ) {
|
|
7678
8221
|
gina = window.gina;
|
|
@@ -9382,7 +9925,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
|
|
|
9382
9925
|
// Publish as AMD module
|
|
9383
9926
|
define( 'helpers/dateFormat',[],function() { return DateFormatHelper })
|
|
9384
9927
|
};
|
|
9385
|
-
define('gina', [ 'require', 'lib/merge', 'lib/uuid', 'lib/routing', 'utils/events', 'helpers/prototypes', 'helpers/dateFormat' ], function (require) {
|
|
9928
|
+
define('gina', [ 'require', 'lib/merge', 'lib/uuid', 'lib/routing', 'lib/money', 'utils/events', 'helpers/prototypes', 'helpers/dateFormat' ], function (require) {
|
|
9386
9929
|
|
|
9387
9930
|
/**
|
|
9388
9931
|
* Imports & definitions
|
|
@@ -9391,6 +9934,7 @@ define('gina', [ 'require', 'lib/merge', 'lib/uuid', 'lib/routing', 'utils/event
|
|
|
9391
9934
|
var merge = require('lib/merge');
|
|
9392
9935
|
var uuid = require('lib/uuid');
|
|
9393
9936
|
var routing = require('lib/routing');
|
|
9937
|
+
var money = require('lib/money'); // #FIN5 — exposed as gina.money below
|
|
9394
9938
|
var dateFormat = require('helpers/dateFormat')();
|
|
9395
9939
|
var prototypes = require('helpers/prototypes')({ dateFormat: dateFormat });
|
|
9396
9940
|
if (!window.process ) {
|
|
@@ -9484,7 +10028,13 @@ define('gina', [ 'require', 'lib/merge', 'lib/uuid', 'lib/routing', 'utils/event
|
|
|
9484
10028
|
'registeredEvents' : {},
|
|
9485
10029
|
'events' : {},
|
|
9486
10030
|
|
|
9487
|
-
'setOptions' : setOptions
|
|
10031
|
+
'setOptions' : setOptions,
|
|
10032
|
+
// #FIN5 — exact-money primitive (ISO 4217 minor-unit BigInt
|
|
10033
|
+
// arithmetic), the same module the server registers as lib.money:
|
|
10034
|
+
// gina.money.parse('19.99','EUR') / add / subtract / multiply /
|
|
10035
|
+
// compare / format / toMinor / fromMinor / exponent. Display
|
|
10036
|
+
// formatting stays with Intl.NumberFormat.
|
|
10037
|
+
'money' : money
|
|
9488
10038
|
};
|
|
9489
10039
|
|
|
9490
10040
|
// iframe case
|