gina 0.6.11 → 0.6.12
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/AUTHORS +1 -1
- package/CHANGELOG.md +6 -0
- package/CONTRIBUTING.md +1 -1
- package/GOVERNANCE.md +1 -1
- package/README.md +17 -22
- package/ROADMAP.md +1 -0
- package/framework/{v0.6.11 → v0.6.12}/AUTHORS +1 -1
- package/framework/v0.6.12/VERSION +1 -0
- package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/README.md +2 -2
- package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/js/gina.js +68 -4
- package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +48 -48
- package/framework/v0.6.12/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.12/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/{v0.6.11 → v0.6.12}/core/locales/README.md +7 -7
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/csrf/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/coep/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/coop/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/corp/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/csp/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/hide-powered-by/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/hsts/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/referrer-policy/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-content-type-options/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-download-options/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-frame-options/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-xss-protection/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/session/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/storage/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/validator/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/validator/src/form-validator.js +19 -4
- package/framework/{v0.6.11 → v0.6.12}/helpers/data/LICENSE +1 -1
- package/framework/{v0.6.11 → v0.6.12}/helpers/data/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/helpers/json/LICENSE +1 -1
- package/framework/{v0.6.11 → v0.6.12}/helpers/json/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/helpers/plugins/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/admin/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/archiver/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/async/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/audit/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/cache/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/cmd/gina-dev.1.md +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/cmd/gina-framework.1.md +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/cmd/gina.1.md +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/cmd-status-format/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/collection/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/collection/src/main.js +49 -0
- package/framework/{v0.6.11 → v0.6.12}/lib/connector-config/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/connector-error/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/connector-registry/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/cron/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/domain/LICENSE +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/domain/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/dto/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/dto-types/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/i18n/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/image-build/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/inspector-redact/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/job/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/json-config-header/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/logger/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/maintenance/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/mcp-dispatch/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/mcp-http/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/mcp-server/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/merge/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/metrics/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/net-locality/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/nunjucks-filters/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/nunjucks-resolver/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/push/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/release-watch/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/render-cache/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/routing/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/routing-introspect/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/secrets/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/swig-filters/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/swig-resolver/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/template-loaders/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/watcher/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/ws-framing/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/ws-query/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/lib/ws-session/package.json +1 -1
- package/framework/{v0.6.11 → v0.6.12}/package.json +1 -1
- package/gna.js +4 -4
- package/llms.txt +4 -2
- package/package.json +5 -5
- package/resources/package.json.template +2 -2
- package/framework/v0.6.11/VERSION +0 -1
- package/framework/v0.6.11/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.6.11/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/LICENSE +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/html/static.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/config.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/couchbase/lib/storage-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/duckdb/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/duckdb/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/mongodb/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/mongodb/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/mongodb/lib/job-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/mongodb/lib/session-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/param-redact.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/redis/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/redis/lib/job-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/redis/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/scylladb/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/scylladb/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/scylladb/lib/session-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/sqlite/lib/job-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/content.encoding +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.render-nunjucks-async.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.render-nunjucks.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.render-swig-async.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/inspector-window-emit.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/controller/release-banner.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/dev/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/gna.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/locales/currency.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/locales/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/mime.types +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/model/entity.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/model/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/model/template/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/csrf/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/csrf/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/coep/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/coop/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/corp/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/csp/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/hsts/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/session/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/session/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/router.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/server.express.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/server.isaac.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/server.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/status.codes +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/_gitignore +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle/locales/en.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_public/sw.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/conf/env.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/conf/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/console.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/context.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/data/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/json/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/path.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/prototypes.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/task.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/helpers/text.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/admin/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/archiver/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/archiver/build.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/async/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/audit/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/audit-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/authn/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/authn/src/lockout.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/authn/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/authn/src/totp.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/authz-gate/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/authz-gate/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cache/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cache/build.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/audit/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/audit/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/audit/verify.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/man.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/mcp-start.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/mcp.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/oas.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/openapi.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/bundle/types.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/cache/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/cache/clear.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/cache/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/infer.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/migrate.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/models.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/rm.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/connector/test.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/container/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/container/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/container/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/container/man.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/container/ps.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/container/stop.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/inc/args.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/inc/namespace.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/inc/reference-scan.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/inc/scaffold.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/rename.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/controller/rm.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/man.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/reset.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/i18n/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/i18n/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/i18n/export.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/i18n/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/i18n/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/i18n/import.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/i18n/scan.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/_host.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/build.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/man.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/rm.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/image/run.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/inspector/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/inspector/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/inspector/open.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/man-render.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/minion/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/minion/kill.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/minion/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/backup.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/man.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/restore.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/protocol/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/protocol/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/secrets/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/secrets/check.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/secrets/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/secrets/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/secrets/scan.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/service/help.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/service/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/service/list.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/service/man.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/service/start.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/storage/arguments.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/storage/gc.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/storage/help.txt +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/storage/stats.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/storage/verify.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cmd-status-format/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/collection/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/collection/build.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/config.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/connector-config/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/connector-error/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/connector-registry/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cron/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/domain/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/dto/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/dto-pipe/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/dto-pipe/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/dto-types/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/generator/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/i18n/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/image-build/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/inherits/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/inherits/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/inspector-events/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/inspector-events/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/inspector-redact/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/instrument/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/instrument/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/job/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/job-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/json-config-header/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/loading-state/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/loading-state/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/maintenance/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/math/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/mcp-dispatch/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/mcp-http/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/mcp-server/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/merge/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/metrics/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/model.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/net-locality/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/nunjucks-filters/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/nunjucks-filters/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/nunjucks-resolver/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/proc.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/push/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/release-watch/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/render-cache/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/render-cache-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/routing/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/routing/build.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/routing-introspect/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/secrets/src/backends/env.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/secrets/src/backends/file.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/secrets/src/env-file.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/secrets/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/session-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/shell.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/sqlite-driver.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/state.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/src/local-cas.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/src/local-stream.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/src/local.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/src/meta-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/src/s3.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage/src/util.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/storage-store.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/swig-resolver/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/template-loaders/src/loaders/http.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/template-loaders/src/loaders/memory.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/template-loaders/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/url/README.md +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/url/index.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/url/routing.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/uuid/package.json +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/uuid/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/validator.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/ws-framing/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/ws-query/src/main.js +0 -0
- /package/framework/{v0.6.11 → v0.6.12}/lib/ws-session/src/main.js +0 -0
package/AUTHORS
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,12 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|
|
6
6
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
## 0.6.12 - 2026-08-20
|
|
10
|
+
### Fixed
|
|
11
|
+
* Refreshed the external references carried by the framework READMEs. The country-codes locale README pointed at a Simple Data Format specification URL that no longer exists (404); it now names the Tabular Data Package specification that superseded it, matching the upstream dataset the file mirrors. Every remaining plain-HTTP reference in the locales and frontend-asset READMEs is now HTTPS, with the geonames.org link resolved to the www host because the bare domain redirects back down to HTTP. Documentation only; no runtime or API change.
|
|
12
|
+
* Collection.find(), findOne(), or() and update() now throw a descriptive Error - naming the offending key - when a filter object carries an undefined value, instead of silently dropping the key. Previously the internal JSON round-trip stripped such keys before matching, so a single-key filter degraded to the match-everything {} filter: findOne({ id: source.missingId }) returned the collection's FIRST row instead of null, and update() with such a filter mutated EVERY record. ACTION REQUIRED if you relied on the old behaviour: build filters conditionally (only add a key when its value is defined) - an explicitly empty {} filter still means "no constraint" and null values remain legal needles. The refusal also hardens the FormValidator's conditional-case rules lookup, which could previously merge the first condition's rules when the case field was absent from the form.
|
|
13
|
+
* A non-string field value no longer aborts the whole form validation pass. The isEmail, isJsonWebToken and trim rules called a string method on the field value without checking its type, so a value like 123, true or [] - reachable from a JSON request body, or from a checkbox on the client - threw, and the rule driver re-threw, killing every remaining field: server-side the request went unvalidated, client-side the boot-time binding loop died and later forms silently lost validation and CSRF token injection. All three now leave a non-string untouched: isEmail and isJsonWebToken record a normal rule error for it (it is invalid, not silently accepted), and trim passes it through untransformed, matching how isFloat already behaved. Whitespace trimming of real strings is unchanged.
|
|
14
|
+
|
|
9
15
|
## 0.6.11 - 2026-08-19
|
|
10
16
|
### Fixed
|
|
11
17
|
* The Inspector's View tab could show two badges instead of three, dropping the page-weight badge until the Inspector was refreshed, and its Flow tab could be missing the template-compile, execute, response-write and total bars (#B386). Both came from one cause: the dev statusbar hands the page payload to the Inspector before the render delegates append their late-bind patch script above `</body>`, and that patch only mutated the in-memory object. Every channel the Inspector can read therefore kept the emit-time payload for the life of the page, with the page weight left null (it is unknown at emit, since the response body length is not final until the render completes) and the late timeline entries absent. The asymmetry is what made it look intermittent rather than broken: the server-side processing time IS known at emit, so the load badge always rendered while the weight badge silently did not. Both of the Inspector's data channels are now refreshed at the end of that patch, after the values are written: the localStorage fallback mirror, and the per-tab broadcast channel a statusbar-launched Inspector actually binds to. The broadcast channel is keyed from per-tab session storage rather than the shared cross-tab advert, so one tab can never publish onto another tab's channel. The nunjucks delegate additionally now injects its patch through a function replacer rather than a string one, so a timeline entry containing a dollar-sequence can no longer corrupt the emitted script. Development-mode only; no configuration change is required.
|
package/CONTRIBUTING.md
CHANGED
|
@@ -270,5 +270,5 @@ Open a GitHub issue describing the use case **before** writing code. Features th
|
|
|
270
270
|
|
|
271
271
|
| Name | Role | Profile |
|
|
272
272
|
| --- | --- | --- |
|
|
273
|
-
| Martin Luther | Lead maintainer | [rhinostone.com](https://rhinostone.com) |
|
|
273
|
+
| Martin Luther ETOUMAN NDAMBWE | Lead maintainer | [rhinostone.com](https://rhinostone.com) |
|
|
274
274
|
| Fabrice DELANEAU | Co-author | [fdelaneau.com](https://fdelaneau.com) |
|
package/GOVERNANCE.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Gina follows the **BDFL** (Benevolent Dictator For Life) model with a commitment to transparency.
|
|
4
4
|
|
|
5
|
-
Gina is co-authored by **Martin Luther** ([Rhinostone](https://rhinostone.com)) and **Fabrice DELANEAU** ([fdelaneau.com](https://fdelaneau.com)). Final decisions on direction, API design, and releases rest with Martin Luther. Community contributions and RFCs are welcome and taken seriously.
|
|
5
|
+
Gina is co-authored by **Martin Luther ETOUMAN NDAMBWE** ([Rhinostone](https://rhinostone.com)) and **Fabrice DELANEAU** ([fdelaneau.com](https://fdelaneau.com)). Final decisions on direction, API design, and releases rest with Martin Luther. Community contributions and RFCs are welcome and taken seriously.
|
|
6
6
|
|
|
7
7
|
## How decisions are made
|
|
8
8
|
|
package/README.md
CHANGED
|
@@ -61,33 +61,28 @@ open https://localhost:3100
|
|
|
61
61
|
|
|
62
62
|
> **npm 12+** blocks install scripts by default, and gina's post-install bootstraps `~/.gina` and the framework dependencies. Install with `npm install -g gina@latest --allow-scripts=gina`, or allow it once for all global installs with `npm config set allow-scripts=gina --location=user`. (Not needed on npm ≤ 11.)
|
|
63
63
|
|
|
64
|
-
## What's in 0.6.
|
|
64
|
+
## What's in 0.6.12
|
|
65
65
|
|
|
66
66
|
> **Restart your bundles AND rebuild them.** The browser bundle changed in this
|
|
67
|
-
> release (`
|
|
68
|
-
> so a restart alone keeps serving the old client
|
|
69
|
-
> for each bundle as well as `gina bundle:restart`.
|
|
67
|
+
> release — both code fixes below ship in it (`lib/collection` and the
|
|
68
|
+
> FormValidator rule engine), so a restart alone keeps serving the old client
|
|
69
|
+
> code. Run `gina bundle:build` for each bundle as well as `gina bundle:restart`.
|
|
70
70
|
|
|
71
|
-
> **No settings reset.** `0.6.
|
|
71
|
+
> **No settings reset.** `0.6.12` is a patch — the `shortVersion` stays `0.6`, so
|
|
72
72
|
> your `~/.gina/0.6/settings.json` is untouched. (`0.6.0` was the reset.)
|
|
73
73
|
|
|
74
|
-
**This is a fixes-only release:
|
|
75
|
-
issues (#
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- **Fixed —
|
|
85
|
-
- **Fixed —
|
|
86
|
-
- **Fixed — FormValidator: fast typing into a Safari `autocomplete="off"` field no longer scrambles the text (#B389, issue #63), plus three position-0 edge cases in the same interception (#B390, #B391, #B392).** The keydown interception restored the caret two timer hops after each programmatic value rebuild — and a value assignment parks the caret at the end of the field — so a quick second keystroke read a stale position and characters landed at the end instead of at the caret. Every rebuild now commits the caret synchronously and records the intended position; while a deferred restore is in flight the interception trusts that record, and the restore re-asserts the latest committed position instead of a stale capture. In the same switch, Backspace at position 0 no longer deletes the first character (native is a no-op), Delete with a selection starting at position 0 no longer removes one character more than the selection, and ArrowLeft at position 0 no longer teleports the caret to the end of the field. Browser-bundled.
|
|
87
|
-
- **Fixed — FormValidator: a refused submit's answer stays visible and focused on async-`query` forms (#B387).** On a form with an async `query` rule and a committed error, a refused submit's answer could render, take focus, and then be hidden again milliseconds later when the click landed while a previous validation round was still settling — the late completion's display refresh read the answered field as "being typed in" (it was the active element, because the answer had just focused it) and re-hid the very message the answer had rendered. The framework now records that the focus was placed by the answer rather than by the user, both display-refresh paths honour that record however late they run, and the first genuine user interaction (typing, clicking, tabbing away) releases it — so the deliberate hide-while-typing behaviour is unchanged. Browser-bundled.
|
|
88
|
-
- **Fixed — FormValidator: a stale not-ready submit marker can no longer refuse every click until reload (#B348).** On a form whose async `query` rule rides a field that is not declared last, the display-only validation pass answering a refused submit click could silently never complete — its result matched no completion route — so the stale not-ready marker on the submit trigger was never re-synced and a fully valid form kept refusing every click. That pass now carries its own completion identity and always completes: the refused click renders the current validation state, the trigger state re-syncs from the fresh result, and the next click on a valid form goes through. Field declaration order no longer decides whether a stale marker can heal. Browser-bundled.
|
|
89
|
-
- **Fixed — Inspector (development mode): the View tab's page-weight badge and the Flow tab's late timeline bars no longer go missing until the Inspector is refreshed (#B386).** The dev statusbar hands the page payload to the Inspector before the render delegates append their late-bind patch script above `</body>`, and that patch only mutated the in-memory object — so every channel the Inspector can read kept the emit-time payload for the life of the page, with the page weight left null (it is unknown at emit) and the template-compile, execute, response-write and total bars absent. Both of the Inspector's data channels — the localStorage fallback mirror and the per-tab broadcast channel a statusbar-launched Inspector actually binds to — are now refreshed at the end of that patch, after the values are written; the broadcast channel is keyed from per-tab session storage rather than the shared cross-tab advert, so one tab can never publish onto another tab's channel. The nunjucks delegate additionally injects its patch through a function replacer rather than a string one, so a timeline entry containing a dollar sequence can no longer corrupt the emitted script. Server-side; development mode only; no configuration change is required.
|
|
90
|
-
|
|
74
|
+
**This is a fixes-only release: three fixes, two of them reported through GitHub
|
|
75
|
+
issues (#62, #65).** It closes a silent match-everything defect in the
|
|
76
|
+
`Collection` filter path and a crash in three validator rules that took the rest
|
|
77
|
+
of the validation pass down with it. **Two behaviour changes to check before you
|
|
78
|
+
upgrade** — an undefined-valued `Collection` filter key now throws where it
|
|
79
|
+
previously matched every record, and `isEmail` / `isJsonWebToken` / `trim` now
|
|
80
|
+
record a normal verdict for a non-string value instead of aborting the pass.
|
|
81
|
+
Details are in the [migration guide](https://gina.io/docs/migration).
|
|
82
|
+
|
|
83
|
+
- **Fixed — `Collection.find()`, `findOne()`, `or()` and `update()` refuse an undefined-valued filter key instead of matching everything (#B396, issue #65).** `find()` round-trips its filter objects through `JSON.stringify`, which silently **drops** keys whose value is `undefined` — so a single-key filter built from a possibly-absent field degraded to the match-everything `{}` filter. `findOne({ id: source.missingId })` returned the collection's **first row** instead of the `null` the calling guard was written for, and `update()` with such a filter wrote its `set` onto **every** record. The refusal always intended for this input could never fire, because the serialization stripped the key before the matcher ran. All four entry points now throw a descriptive error naming the offending key. **ACTION REQUIRED if you relied on the old behaviour** (an undefined value acting as "no constraint"): build the filter conditionally, adding a key only when its value is defined. Deliberately unchanged — an explicitly empty `{}` filter still means "no constraint", `null` remains a legal needle, and `delete()` / `notIn()` never had the defect. The same refusal also hardens the FormValidator's conditional-case rules lookup, which could previously merge the first condition's rules when the case field was absent from the form. Browser-bundled.
|
|
84
|
+
- **Fixed — a non-string field value no longer aborts the whole form validation pass (#B200).** The `isEmail`, `isJsonWebToken` and `trim` rules called a string method on the field value without checking its type, so a value that was not a string — a `123`, `true` or `[]` arriving from a JSON request body, or a checkbox boolean on the client — threw, and the rule driver re-threw, **killing every remaining field in the pass**. Server-side the request went unvalidated; client-side the boot-time binding loop died, and forms bound after the failing one silently lost both validation and CSRF token injection. All three now leave a non-string untouched: `isEmail` and `isJsonWebToken` record their normal rule error for it (the value is *invalid*, not silently accepted), and `trim`, being a transform rather than a check, passes it through untransformed — matching how `isFloat` already behaved. Whitespace trimming of real strings is unchanged. No action is required; if you added a defensive upstream coercion to work around the crash, you can remove it. Browser-bundled.
|
|
85
|
+
- **Fixed — the external references carried by the framework READMEs are current again (issue #62).** The country-codes locale README pointed at a Simple Data Format specification URL that no longer resolves; it now names the Tabular Data Package specification that superseded it, matching the upstream dataset the file mirrors. Every remaining plain-HTTP reference in the locales and frontend-asset READMEs is now HTTPS, with the geonames.org link resolved to the `www` host because the bare domain redirects back down to HTTP. Documentation only — no runtime or API change.
|
|
91
86
|
## Documentation
|
|
92
87
|
|
|
93
88
|
Full installation guide, tutorials, configuration reference, and API docs at **[gina.io/docs](https://gina.io/docs/)**.
|
package/ROADMAP.md
CHANGED
|
@@ -63,6 +63,7 @@ This roadmap covers planned features, architectural improvements, new connectors
|
|
|
63
63
|
| **Q4 2026** | `0.6.9` ✅ | **Security**: an engine.io socket's session identity is derived server-side from the upgrade request's own cookie instead of a field the browser asserts on every message — any client could previously claim another user's session and receive the pushes addressed to it, which took strictly less than stealing the cookie, since a rendered page carries the bare session id while the cookie carries the signed form; the binding replays the bundle's own session middleware (same secret, store and cookie name, no new configuration) and fails closed, so an id-less socket receives only deliberate broadcasts · **Added**: `gina.pushToSession()` gives code with no request context — a job handler, a cron tick, a boot hook — a sanctioned route to a user's socket, with a required recipient, no reachable broadcast, and delivery reported rather than assumed; and a bundle can declare which scopes it is deployed in through a `scopes` allow-list on its manifest entry, so one still under development stays out of every other scope · **Fixed**: `engine: "express"` bundles boot and serve on Express 5, with the supported range declared for the first time (`>= 4 < 6`, both majors verified live) · `project:add`/`project:import` no longer empty a project's `bundles` block on a declared-count mismatch, no longer adopt a bundle's invalid `server.protocol`/`server.scheme` into the project's registry lists, and no longer resolve one project's bundles against another project's path · `project:add` writes the `.gitignore` the shipped template's underscore prefix has always implied · the path helper's copier stages to a temp sibling and publishes with an atomic rename, so a failed copy can no longer destroy the destination it was replacing · the secrets resolver reads its two environment tiers independently, so a swept boolean no longer lets a plaintext file shadow `process.env`, and three malformed `settings.secrets.file` shapes that used to pass in silence are caught (ACTION REQUIRED — two of them now refuse to boot) · a bundle whose release tree cannot be linked refuses by name instead of dying as an opaque TypeError · `self.push()` refuses by name when the server instance has no engine.io channel |
|
|
64
64
|
| **Q4 2026** | `0.6.10` ✅ | **Added**: maintenance mode — a bundle can be closed to the public without being stopped. When it is active every request except the framework's own built-in endpoints is answered `503` with a `Retry-After` header and a self-contained maintenance page, and the response is marked never to be stored so a cached copy cannot outlive the window. The gate runs on both engines ahead of static assets, the output cache and routing, so it also covers files and URLs that a route middleware never sees. The liveness endpoint deliberately keeps answering normally, so an orchestrator does not restart healthy instances over a declared window. Chosen visitors can still browse: a shared bypass key presented as a header or once in the address bar (which then sets a short-lived cookie and redirects without the secret) works under any deployment, while the supplementary IP allowlist applies only to requests that did not arrive through a reverse proxy — behind one, every address is the proxy's, so an unconditioned list would let either everybody or nobody through. Maintenance can be flipped at runtime through an administrator-gated endpoint with an optional expiry; a runtime flip is not persisted, and an expiry reverts to the configured state rather than to off, so a forgotten timer cannot re-open a site that configuration says is closed. **Fixed**: boot-time bundle mounts are idempotent, atomic and concurrency-safe — a mount symlink that already resolves to its source is left untouched (so the steady-state boot writes nothing), a wrong or missing one is published atomically through a temp sibling and a rename, and a process that loses the race to another publishing the identical link treats that as success instead of refusing to boot. Previously every boot re-created every declared bundle's link in two non-atomic steps with no mutual exclusion, so several processes sharing one project tree raced the same directory entries and a contended link could fail a boot or abort the shared configuration load for every bundle in the project. The same race is closed on the directory creation that accompanies a mount. Behaviour change: a real directory occupying a mount path is now refused by name instead of silently deleted. **Security**: cross-origin writes to the administrator-gated built-in endpoints are refused. Those endpoints authorise callers by network address alone — a credential a browser attaches automatically — so an operator browsing from an allowed machine could be lured to a page that silently issued writes to them; and because several of them read their whole input from the address rather than from a request body, the attack needed no scripting and no cross-origin negotiation at all. Such a write is now refused on both engines, using the browser's own request-context signal where it is sent, and otherwise comparing the stated origin against the address the client actually connected to — never against a forwarded header, which an attacker controls. Clients that send no browser origin signal, such as command-line tooling and deployment scripts, are deliberately unaffected, as are safe methods, so existing cross-origin read channels keep working. | `0.6.10` | 2026-08-16 |
|
|
65
65
|
| **Q4 2026** | `0.6.11` ✅ | **Fixed**: `Collection.replace()` no longer silently discards the write when the stored entry carries an internal `_uuid` and the caller's `set` does not — the comparison key is now resolved from both sides (falling back to `id` when both carry one) and the call throws instead of returning quietly when the two sides share no usable key; an explicitly supplied key is honoured exactly as before (issue #64). Concurrent `util.promisify(entity.method)` calls on the same method no longer cross-deliver results or leave a caller hanging — the promisify fast-path now uses the same FIFO queue and single persistent dispatcher as the entity-context path, so every caller settles and in-order completion gives each its own result; out-of-order completion still pairs by arrival order, for which the per-call-identity path is a Promise-returning method. FormValidator: fast typing into a Safari `autocomplete="off"` field no longer scrambles the text (the caret is committed synchronously on every rebuild and the deferred restore re-asserts the latest committed position; issue #63), with three position-0 edge cases in the same interception corrected to native behaviour (Backspace, Delete with a selection, ArrowLeft); a refused submit's answer on an async-`query` form stays visible and focused instead of being re-hidden by a late completion (answer-placed focus is told from user-placed focus until the first genuine interaction); and a stale not-ready submit marker can no longer refuse every click until reload on a form whose async `query` field is not declared last (the reveal pass now carries its own completion identity and always completes). Inspector (development mode): the View tab's page-weight badge and the Flow tab's late timeline bars no longer go missing until a refresh — both data channels are refreshed at the end of the late-bind patch, keyed per tab. Pickup: restart **and** rebuild your bundles (the browser bundle changed). |
|
|
66
|
+
| **Q4 2026** | `0.6.12` ✅ | **Fixed**: an undefined-valued filter key no longer makes a `Collection` query match every record — `find()`, `findOne()`, `or()` and `update()` round-tripped their filter object through `JSON.stringify`, which silently drops keys whose value is `undefined`, so a filter built from a possibly-absent field degraded to the match-everything `{}` filter: `findOne()` returned the collection's first row instead of the `null` the calling guard expected, and `update()` wrote its `set` onto every record. All four now throw a descriptive error naming the offending key (ACTION REQUIRED if you relied on an undefined value meaning "no constraint" — build the filter conditionally; an explicitly empty `{}` still means no constraint, and `null` remains a legal needle). A non-string field value no longer aborts the whole form validation pass — `isEmail`, `isJsonWebToken` and `trim` called a string method on the value without a type check, so a `123`, `true` or `[]` arriving from a JSON body or a checkbox threw and the rule driver re-threw, killing every remaining field: the request went unvalidated server-side, and client-side the boot-time binding loop died so forms bound after it silently lost both validation and CSRF token injection. All three now leave a non-string untouched — the two checks record their normal rule error and `trim` passes it through untransformed, matching how `isFloat` already behaved (no action required; a defensive upstream coercion added to work around the crash can be removed). Documentation: the external references carried by the framework READMEs are current again, the retired Simple Data Format specification link replaced by the Tabular Data Package specification that superseded it, and every remaining plain-HTTP reference moved to HTTPS. Pickup: restart **and** rebuild your bundles (the browser bundle changed). |
|
|
66
67
|
| **Q1 2027** | `0.6.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
|
|
67
68
|
| **2027** | `0.7.0` | Performance — remaining measure-gated candidates: multipart & WebSocket fast paths, render/log cleanups, SIMD scanner (the render-path deep-clone & id-mint reduction shipped early in `0.6.2` with a measured 4.4× render-throughput gain; the profiling baseline itself also shipped in `0.6.2`) |
|
|
68
69
|
| **2027** | `0.8.0` | Financial-messaging foundations — XML request/response handling · pluggable message-schema validation · IBAN/BIC validation rules · money & ISO 4217 minor-unit utilities · idempotency keys · sequence primitive · OAuth2 client-credentials egress |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.6.12
|
|
@@ -4,8 +4,8 @@ Last updated October 16th, 2016
|
|
|
4
4
|
|
|
5
5
|
## Requirements
|
|
6
6
|
|
|
7
|
-
- [Requirejs](
|
|
8
|
-
- [sass](
|
|
7
|
+
- [Requirejs](https://requirejs.org/)
|
|
8
|
+
- [sass](https://sass-lang.com/install)
|
|
9
9
|
- [sass-lint](https://www.npmjs.com/package/sass-lint)
|
|
10
10
|
- [csso](https://github.com/css/csso)
|
|
11
11
|
- Java (for [Google Closure Compiler](https://developers.google.com/closure/compiler/))
|
|
@@ -4315,7 +4315,14 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
4315
4315
|
self[el]['isEmail'] = function() {
|
|
4316
4316
|
|
|
4317
4317
|
|
|
4318
|
-
|
|
4318
|
+
// #B200 - TYPE-guarded, not merely truthy-guarded: a truthy non-string
|
|
4319
|
+
// (a JSON body's 123 / true / [], or a checkbox boolean client-side —
|
|
4320
|
+
// see the #B87 note on the `query` rule) reached .toLowerCase() and
|
|
4321
|
+
// threw, and the rule driver RE-THROWS, so the whole validation pass
|
|
4322
|
+
// died. Non-strings now pass through untouched and the regex below
|
|
4323
|
+
// adjudicates them (measured: every non-string tests false, so this
|
|
4324
|
+
// records an invalid — it does not open a #B199-style silent bypass).
|
|
4325
|
+
this.value = local['data'][this.name] = (this.value && typeof(this.value) == 'string') ? this.value.toLowerCase() : this.value;
|
|
4319
4326
|
// Apply on current field upper -> lower
|
|
4320
4327
|
if (
|
|
4321
4328
|
isGFFCtx
|
|
@@ -4361,7 +4368,9 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
4361
4368
|
self[el]['isJsonWebToken'] = function() {
|
|
4362
4369
|
|
|
4363
4370
|
|
|
4364
|
-
|
|
4371
|
+
// #B200 - TYPE-guarded, not merely truthy-guarded: see the isEmail
|
|
4372
|
+
// note above. Same defect, same fix, same in-file precedent (#B87).
|
|
4373
|
+
this.value = local['data'][this.name] = (this.value && typeof(this.value) == 'string') ? this.value.toLowerCase() : this.value;
|
|
4365
4374
|
// Apply on current field upper -> lower
|
|
4366
4375
|
if (
|
|
4367
4376
|
isGFFCtx
|
|
@@ -5219,13 +5228,19 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
|
|
|
5219
5228
|
* */
|
|
5220
5229
|
self[el]['trim'] = function(isApplicable) {
|
|
5221
5230
|
if ( typeof(isApplicable) == 'boolean' && isApplicable ) {
|
|
5222
|
-
//
|
|
5231
|
+
// #B200 - the type guard below was present but COMMENTED OUT, which
|
|
5232
|
+
// made this the widest of the three sites: with no truthy guard
|
|
5233
|
+
// either, EVERY non-string threw (a falsy 0 included, unlike the
|
|
5234
|
+
// isEmail/isJsonWebToken pair), and the driver re-throws, killing
|
|
5235
|
+
// the whole pass. Restored — a non-string is now left untouched,
|
|
5236
|
+
// matching how `isFloat` guards the identical .replace() call.
|
|
5237
|
+
if ( typeof(this.value) == 'string' ) {
|
|
5223
5238
|
// was: this.value = this.value.replace(/^\s+|\s+$/, '');
|
|
5224
5239
|
// #B245 - without the global flag, replace() rewrote only the FIRST
|
|
5225
5240
|
// match: " x " came back "x " (leading stripped, trailing kept).
|
|
5226
5241
|
this.value = this.value.replace(/^\s+|\s+$/g, '');
|
|
5227
5242
|
local.data[this.name] = local.data[this.name] = this.value;
|
|
5228
|
-
|
|
5243
|
+
}
|
|
5229
5244
|
return self[this.name]
|
|
5230
5245
|
}
|
|
5231
5246
|
}
|
|
@@ -26872,6 +26887,13 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
|
|
|
26872
26887
|
/**
|
|
26873
26888
|
* In-memory document collection with query and mutation methods.
|
|
26874
26889
|
*
|
|
26890
|
+
* Filter values must be defined: `find`/`findOne`/`or`/`update` throw an
|
|
26891
|
+
* `Error` naming the offending key when a filter object carries an
|
|
26892
|
+
* `undefined` value — build such filters conditionally (add a key only when
|
|
26893
|
+
* its value is defined). An explicitly empty `{}` filter is legal and
|
|
26894
|
+
* matches every record; `null` is a legal needle comparing strictly
|
|
26895
|
+
* against stored values.
|
|
26896
|
+
*
|
|
26875
26897
|
* @class Collection
|
|
26876
26898
|
* @constructor
|
|
26877
26899
|
* @this {Collection}
|
|
@@ -26898,6 +26920,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
|
|
|
26898
26920
|
* col.or().find({ name: 'Alice' }, { name: 'Bob' });
|
|
26899
26921
|
*
|
|
26900
26922
|
* col.findOne({ id: 1 }); // { id:1, … }
|
|
26923
|
+
* col.findOne({ id: undefined }); // throws — filter values must be defined
|
|
26901
26924
|
* col.update({ id: 1 }, { name: 'Alicia' });
|
|
26902
26925
|
* col.insert({ id: 3, name: 'Carol' });
|
|
26903
26926
|
* col.delete({ id: 2 });
|
|
@@ -27098,6 +27121,25 @@ function Collection(content, options) {
|
|
|
27098
27121
|
}
|
|
27099
27122
|
|
|
27100
27123
|
|
|
27124
|
+
/**
|
|
27125
|
+
* find
|
|
27126
|
+
*
|
|
27127
|
+
* Filters the collection content with one or more filter objects.
|
|
27128
|
+
* Passing more than one filter object acts as an OR clause.
|
|
27129
|
+
*
|
|
27130
|
+
* Every filter value must be DEFINED. A key whose value is `undefined`
|
|
27131
|
+
* makes the whole call throw an Error naming the offending key: the JSON
|
|
27132
|
+
* round-trip below would otherwise silently drop the key, degrading the
|
|
27133
|
+
* filter to a weaker one — a single-key filter degraded to `{}` and
|
|
27134
|
+
* matched EVERY record (#B396, gh #65). An explicitly empty `{}` filter
|
|
27135
|
+
* stays legal and matches everything (no constraint). `null` values are
|
|
27136
|
+
* legal needles and compare strictly against stored values.
|
|
27137
|
+
*
|
|
27138
|
+
* @param {...object} filters - filter object(s); values compare with `===`
|
|
27139
|
+
* @param {boolean} [withOrClause] - trailing boolean, forces OR mode
|
|
27140
|
+
* @throws {Error} when any filter key's value is `undefined`
|
|
27141
|
+
* @returns {array} result - decorated result set (chainable)
|
|
27142
|
+
*/
|
|
27101
27143
|
instance['find'] = function() {
|
|
27102
27144
|
// reset
|
|
27103
27145
|
withOrClause = false;
|
|
@@ -27108,6 +27150,24 @@ function Collection(content, options) {
|
|
|
27108
27150
|
--arguments.length;
|
|
27109
27151
|
}
|
|
27110
27152
|
|
|
27153
|
+
// #B396 (gh #65) — refuse undefined-valued filter keys BEFORE the JSON
|
|
27154
|
+
// round-trip below: JSON.stringify() silently DROPS such keys, so the
|
|
27155
|
+
// in-loop guard further down could never see them. `findOne`, `or` and
|
|
27156
|
+
// `update` all delegate here, so this single gate covers the family
|
|
27157
|
+
// (`update` would otherwise mass-mutate every record on such a filter).
|
|
27158
|
+
var _fIdx = 0, _fLen = arguments.length, _fObj = null, _fKey = null;
|
|
27159
|
+
for (; _fIdx < _fLen; ++_fIdx) {
|
|
27160
|
+
_fObj = arguments[_fIdx];
|
|
27161
|
+
if ( _fObj && typeof(_fObj) == 'object' && !Array.isArray(_fObj) ) {
|
|
27162
|
+
for (_fKey in _fObj) {
|
|
27163
|
+
if ( typeof(_fObj[_fKey]) == 'undefined' ) {
|
|
27164
|
+
throw new Error('filter `'+ _fKey +'` cannot be left undefined');
|
|
27165
|
+
}
|
|
27166
|
+
}
|
|
27167
|
+
}
|
|
27168
|
+
}
|
|
27169
|
+
_fObj = null;
|
|
27170
|
+
|
|
27111
27171
|
var filtersStr = null;
|
|
27112
27172
|
var filters = null;
|
|
27113
27173
|
var filtersCount = null;
|
|
@@ -27415,6 +27475,10 @@ function Collection(content, options) {
|
|
|
27415
27475
|
matched = 0;
|
|
27416
27476
|
|
|
27417
27477
|
for (var f in filter) {
|
|
27478
|
+
// Belt only since #B396: undefined-valued keys are refused at
|
|
27479
|
+
// the method entry, before the JSON round-trip that used to
|
|
27480
|
+
// strip them — and JSON.parse can never produce such a value
|
|
27481
|
+
// here, so this in-loop guard is unreachable by construction.
|
|
27418
27482
|
if ( typeof(filter[f]) == 'undefined' ) throw new Error('filter `'+f+'` cannot be left undefined');
|
|
27419
27483
|
|
|
27420
27484
|
localeLowerCase = ( filter[f] !== null && !/(boolean|number)/.test(typeof(filter[f])) ) ? filter[f].toLocaleLowerCase() : filter[f];
|
|
@@ -87,27 +87,27 @@ jb;++ha)typeof l[Fa[ha]]!='undefined'&&Fa[ha]&&(ta=new RegExp('\\$'+Fa[ha]+'(?!\
|
|
|
87
87
|
var za=typeof H=='string'?H.match(ua):null;if(za){ua=function(gb){var yb=gb.replace(/^\s+|\s+$/g,'');if(yb==='null')return null;if(yb!=='undefined'){if(yb==='true')return!0;if(yb==='false')return!1;if(/^"[^"]*"$/.test(yb))return yb.slice(1,-1);var mb=Number(yb);if(!isNaN(mb)&&yb!=='')return mb;throw Error('Invalid operand: `'+gb+'`');}};var Oa=ua(za[1]),qb=za[2],Wa=ua(za[3]);switch(qb){case '===':ia=Oa===Wa;break;case '!==':ia=Oa!==Wa;break;case '==':ia=Oa==Wa;break;case '!=':ia=Oa!=Wa;break;case '<':ia=
|
|
88
88
|
Oa<Wa;break;case '>':ia=Oa>Wa;break;case '<=':ia=Oa<=Wa;break;case '>=':ia=Oa>=Wa}}else console.warn('[FormValidator] Could not evaluate condition `'+H+'` - treating field as invalid.\n(grammar: <operand><op><operand>; operand \u2208 number | "string" | true | false | null | undefined; op \u2208 === !== == != < > <= >=)'),ia=!1}}catch(gb){throw Error(gb.stack||gb.message);}}}else if(H instanceof RegExp)ia=H.test(this.value)?!0:!1;else if(typeof H=='boolean')ia=H?!0:!1;else try{if(/\/(.*)\//.test(H))ta=
|
|
89
89
|
H.match(/\/(.*)\//).pop(),Fa=H.replace('/'+ta+'/',''),ia=(new RegExp(ta,Fa)).test(this.value);else throw Error('[FormValidator] Unsupported condition shape \u2014 supported: binary comparison (a OP b), RegExp, boolean, /regex/flags literal. Got: `'+H+'`');}catch(gb){throw Error(gb.stack||gb.message);}}ia?ia&&typeof sa[xa]!='undefined'&&delete sa[xa]:(sa[xa]=Y(this.error||da||w.errorLabels[xa]||w.errorLabels.is,this,xa),typeof ma!='undefined'&&(sa.stack=ma));this.valid=ia&&!sa.isRequired;sa.count()>
|
|
90
|
-
0&&(this.errors=sa);return l[this.name]};l[C].set=function(H){this.value=w.data[this.name]=H;this.target.setAttribute('value',H);return l[this.name]};l[C].isEmail=function(){this.value=w.data[this.name]=this.value?this.value.toLowerCase():this.value;q&&this.target&&this.target.value!=''&&/[A-Z]+/.test(this.target.value)&&(this.target.value=this.value);var H=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(this.value)?
|
|
91
|
-
!0:!1,da=l[this.name].errors||{};this.value===''&&(H=!0);H?H&&typeof da.isEmail!='undefined'&&delete da.isEmail:da.isEmail=Y(this.error||w.errorLabels.isEmail,this,'isEmail');this.valid=H&&!da.isRequired;da.count()>0&&(this.errors=da);return l[this.name]};l[C].isJsonWebToken=function(){this.value=w.data[this.name]=this.value?this.value.toLowerCase():this.value;q&&this.target&&this.target.value!=''&&/[A-Z]+/.test(this.target.value)&&(this.target.value=this.value);var H
|
|
92
|
-
|
|
93
|
-
this.value=w.data[this.name]=!1}ma=H!==null?!0:!1;H!==null&&da.isRequired&&delete da.isRequired}ma?ma&&typeof da.isBoolean!='undefined'&&delete da.isBoolean:da.isBoolean=Y(this.error||w.errorLabels.isBoolean,this,'isBoolean');this.valid=ma&&!da.isRequired;da.count()>0&&(this.errors=da);return l[this.name]};l[C].isNumber=function(H,da){var ma=this.value,ia=!1,sa=!0,xa=!0,ta=l[this.name].errors||{};try{typeof ma=='string'&&/,|\./g.test(ma)?
|
|
94
|
-
'.').replace(/\s+/g,'')):typeof ma=='string'&&ma!=''&&(ma=w.data[this.name]=this.value=parseInt(ma.replace(/\s+/g,'')))}catch(ha){ta.isNumber=Y(this.error||w.errorLabels.isNumber,this,'isNumber'),this.valid=!1,ta.count()>0&&(this.errors=ta)}if(+ma===+ma&&(ia=!0,!ta.isRequired&&ma!=='')){var Fa=ma.toString().length;H&&typeof H=='number'&&Fa<H&&(sa=!1,this.size=H);da&&typeof da=='number'&&Fa>da&&(xa=!1,this.size=da)}ia&&sa&&xa||(ia||(ta.isNumber=
|
|
95
|
-
sa&&xa||(sa||(ta.isNumberLength=Y(this.error||w.errorLabels.isNumberMinLength,this,'isNumberMinLength')),xa||(ta.isNumberLength=Y(this.error||w.errorLabels.isNumberMaxLength,this,'isNumberMaxLength')),H===da&&(ta.isNumberLength=Y(this.error||w.errorLabels.isNumberLength,this,'isNumberLength'))),ia=!1);ia&&typeof ta.isNumberLength!='undefined'&&delete ta.isNumberLength;this.valid=ia;this.value=w.data[this.name]=ma!=''?Number(ma):ma;ta.count()>
|
|
96
|
-
function(){var H=this.value,da=l[this.name].errors||{};if(H)try{this.value=w.data[this.name]=Math.round(H)}catch(ma){da.toInteger=Y(this.error||w.errorLabels.toInteger,this,'toInteger'),this.valid=!1,da.count()>0&&(this.errors=da)}return l[this.name]};l[C].isInteger=function(H,da){var ma=this.value,ia=!1,sa=!0,xa=!0,ta=l[this.name].errors||{};+ma===+ma&&ma%1===0&&(ia=!0,ta.isRequired||ma===''||(H&&typeof H=='number'&&ma.toString().length<H&&
|
|
97
|
-
da&&(xa=!1,this.size=da)));ia&&sa&&xa||(ia||(ta.isInteger=Y(this.error||w.errorLabels.isInteger,this,'isInteger')),sa&&xa||(sa||(ta.isIntegerLength=Y(this.error||w.errorLabels.isIntegerMinLength,this,'isIntegerMinLength'),ia=!1),xa||(ta.isIntegerLength=Y(this.error||w.errorLabels.isIntegerMaxLength,this,'isIntegerMaxLength'),ia=!1),H===da&&(ta.isIntegerLength=Y(this.error||w.errorLabels.isIntegerLength,this,'isIntegerLength'),ia=!1)));
|
|
98
|
-
0&&(this.errors=ta);return l[this.name]};l[C].toFloat=function(H){var da=document.getElementById(this.target.getAttribute('id')).value||this.value;isFloatingWithCommas=!1;typeof da=='string'&&(da=da.replace(/\s+/g,''),/,/.test(da)&&/\./.test(da)?da=da.replace(/,/g,''):/,/.test(da)&&(da=da.replace(/,/g,'.'),isFloatingWithCommas=!0));w.data[this.name]=da;var ma=l[this.name].errors||{},ia=!0;H?this.decimals=parseInt(H):typeof this.decimals==
|
|
99
|
-
(da=new Number(parseFloat(da.match(/[0-9.,]+/g).join('').replace(/,/,'.'))))}catch(sa){ia=!1,ma.toFloat=Y(this.error||w.errorLabels.toFloat,this,'toFloat'),this.valid=!1,ma.count()>0&&(this.errors=ma)}else ia=!1,ma.toFloat=Y(this.error||w.errorLabels.toFloatNAN,this,'toFloatNAN');else return l[this.name];this.decimals&&da&&!ma.toFloat&&(da=parseFloat(da.toFixed(this.decimals)));this.value=w.data[this.name]=da;q&&
|
|
100
|
-
da));this.valid=ia;ma.count()>0&&(this.errors=ma);return l[this.name]};l[C].isFloat=function(H){typeof this.value=='string'&&(this.value=this.value.replace(/\s+/g,''));var da=w.data[this.name]=this.value;H=l[this.name].errors||{};typeof da=='string'&&/\./.test(da)&&Number.isFinite(Number(da));typeof da=='string'&&/,/g.test(da)&&(da=this.value=w.data[this.name]=Number(da.replace(/,/g,'.')));da=Number(da);Number.isFinite(da)&&
|
|
101
|
-
|
|
102
|
-
function(sa){return sa.form===da.form});for(var ma=0,ia=H.length;ma<ia;++ma)if(H[ma].checked){/true|false/.test(H[ma].value)?this.value=w.data[this.name]=/true/.test(H[ma].value)?!0:!1:this.value=w.data[this.name]=H[ma].value;this.valid=!0;break}}H=typeof this.value=='undefined'||this.value==null||this.value==''||/^\s+$/.test(this.value)?!1:!0;ma=l[this.name].errors||{};H?H&&typeof ma.isRequired!='undefined'&&delete ma.isRequired:
|
|
103
|
-
this.valid=H;ma.count()>0&&(this.errors=ma);return l[this.name]};l[C].isString=function(H,da){var ma=w.data[this.name]=this.value,ia=!1,sa=!0,xa=!0,ta=l[this.name].errors||{};typeof ma!='string'||ta.isRequired||ma==''||(ia=!0,H&&typeof H=='number'&&ma.length<H&&(sa=!1,this.size=H),da&&typeof da=='number'&&ma.length>da&&(xa=!1,this.size=da));ia&&sa&&xa||(!ia&&ta.isRequired&&ma==''?ia=!1:ia||ta.isRequired||(ia=!0),sa&&xa||(ia=!1,
|
|
104
|
-
'isStringMinLength')),xa||(ta.isStringLength=Y(this.error||w.errorLabels.isStringMaxLength,this,'isStringMaxLength')),H===da&&(ta.isStringLength=Y(this.error||w.errorLabels.isStringLength,this,'isStringLength'))));this.valid=ia;ta.count()>0&&(this.errors=ta);return l[this.name]};l[C].isDate=function(H){var da=this.value,ma=!1,ia=l[this.name].errors||{},sa=null;if(!da||da==''||/NaN|Invalid Date/i.test(da))return/NaN|Invalid Date/i.test(da)&&
|
|
105
|
-
this.name+'` is not allowed: `'+da+'`'),ia.isDate=Y(this.error||w.errorLabels.isDate,this,'isDate')),this.valid=ma,ia.count()>0&&(this.errors=ia),l[this.name];if(typeof H=='undefined'||typeof H!='undefined'&&/true/i.test(H))H='yyyy-mm-dd';if(da instanceof Date)da.format(H);else{try{sa=H.match(/[^\/\- ]+/g)}catch(Oa){throw Error('[FormValidator::isDate] Provided mask not allowed: `'+H+'`');}var xa={},ta,Fa=null,ha=H=NaN,jb=NaN;try{Fa=
|
|
106
|
-
Fa[ua]}catch(Oa){throw Error('[FormValidator::isDate] Provided value not allowed: `'+da+'`'+Oa);}for(var za in xa)/y/i.test(za)?H=parseInt(xa[za],10):/m/i.test(za)?ha=parseInt(xa[za],10):/d/i.test(za)&&(jb=parseInt(xa[za],10));if(!Number.isFinite(H)||!Number.isFinite(ha)||!Number.isFinite(jb)||ha<1||ha>12||jb<1||jb>31)da=this.value=w.data[this.name]=new Date(NaN);else{da=new Date(H,ha-1,jb);if(da.getFullYear()!==H||da.getMonth()!==
|
|
107
|
-
da}if(/Invalid Date/i.test(da)||da instanceof Date===!1)return ia.isRequired||this.value!=''?ia.isDate=Y(this.error||w.errorLabels.isDate,this,'isDate'):ma=!0,this.valid=ma,ia.count()>0&&(this.errors=ia),l[this.name];ma=!0}this.valid=ma;return l[this.name]};l[C].isInList=function(){for(var H=l[this.name].errors||{},da=[],ma=0,ia=arguments.length;ma<ia;++ma){var sa=typeof arguments[ma];if(sa!=='string'&&sa!=='number'&&sa!=='boolean')throw Error('`isInList` requires an array of allowed primitive values; got '+
|
|
90
|
+
0&&(this.errors=sa);return l[this.name]};l[C].set=function(H){this.value=w.data[this.name]=H;this.target.setAttribute('value',H);return l[this.name]};l[C].isEmail=function(){this.value=w.data[this.name]=this.value&&typeof this.value=='string'?this.value.toLowerCase():this.value;q&&this.target&&this.target.value!=''&&/[A-Z]+/.test(this.target.value)&&(this.target.value=this.value);var H=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(this.value)?
|
|
91
|
+
!0:!1,da=l[this.name].errors||{};this.value===''&&(H=!0);H?H&&typeof da.isEmail!='undefined'&&delete da.isEmail:da.isEmail=Y(this.error||w.errorLabels.isEmail,this,'isEmail');this.valid=H&&!da.isRequired;da.count()>0&&(this.errors=da);return l[this.name]};l[C].isJsonWebToken=function(){this.value=w.data[this.name]=this.value&&typeof this.value=='string'?this.value.toLowerCase():this.value;q&&this.target&&this.target.value!=''&&/[A-Z]+/.test(this.target.value)&&(this.target.value=this.value);var H=
|
|
92
|
+
/^[A-Za-z0-9-_=]+\.[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*$/.test(this.value)?!0:!1,da=l[this.name].errors||{};this.value===''&&(H=!0);H?H&&typeof da.isJsonWebToken!='undefined'&&delete da.isJsonWebToken:da.isJsonWebToken=Y(this.error||w.errorLabels.isJsonWebToken,this,'isJsonWebToken');this.valid=H&&!da.isRequired;da.count()>0&&(this.errors=da);return l[this.name]};l[C].isBoolean=function(){var H=null,da=l[this.name].errors||{};if(this.value==='')var ma=!0;else{switch(this.value){case 'true':case !0:case 1:H=
|
|
93
|
+
this.value=w.data[this.name]=!0;break;case 'false':case !1:case 0:H=this.value=w.data[this.name]=!1}ma=H!==null?!0:!1;H!==null&&da.isRequired&&delete da.isRequired}ma?ma&&typeof da.isBoolean!='undefined'&&delete da.isBoolean:da.isBoolean=Y(this.error||w.errorLabels.isBoolean,this,'isBoolean');this.valid=ma&&!da.isRequired;da.count()>0&&(this.errors=da);return l[this.name]};l[C].isNumber=function(H,da){var ma=this.value,ia=!1,sa=!0,xa=!0,ta=l[this.name].errors||{};try{typeof ma=='string'&&/,|\./g.test(ma)?
|
|
94
|
+
ma=w.data[this.name]=this.value=parseFloat(ma.replace(/,/g,'.').replace(/\s+/g,'')):typeof ma=='string'&&ma!=''&&(ma=w.data[this.name]=this.value=parseInt(ma.replace(/\s+/g,'')))}catch(ha){ta.isNumber=Y(this.error||w.errorLabels.isNumber,this,'isNumber'),this.valid=!1,ta.count()>0&&(this.errors=ta)}if(+ma===+ma&&(ia=!0,!ta.isRequired&&ma!=='')){var Fa=ma.toString().length;H&&typeof H=='number'&&Fa<H&&(sa=!1,this.size=H);da&&typeof da=='number'&&Fa>da&&(xa=!1,this.size=da)}ia&&sa&&xa||(ia||(ta.isNumber=
|
|
95
|
+
Y(this.error||w.errorLabels.isNumber,this,'isNumber')),sa&&xa||(sa||(ta.isNumberLength=Y(this.error||w.errorLabels.isNumberMinLength,this,'isNumberMinLength')),xa||(ta.isNumberLength=Y(this.error||w.errorLabels.isNumberMaxLength,this,'isNumberMaxLength')),H===da&&(ta.isNumberLength=Y(this.error||w.errorLabels.isNumberLength,this,'isNumberLength'))),ia=!1);ia&&typeof ta.isNumberLength!='undefined'&&delete ta.isNumberLength;this.valid=ia;this.value=w.data[this.name]=ma!=''?Number(ma):ma;ta.count()>
|
|
96
|
+
0&&(this.errors=ta);return l[this.name]};l[C].toInteger=function(){var H=this.value,da=l[this.name].errors||{};if(H)try{this.value=w.data[this.name]=Math.round(H)}catch(ma){da.toInteger=Y(this.error||w.errorLabels.toInteger,this,'toInteger'),this.valid=!1,da.count()>0&&(this.errors=da)}return l[this.name]};l[C].isInteger=function(H,da){var ma=this.value,ia=!1,sa=!0,xa=!0,ta=l[this.name].errors||{};+ma===+ma&&ma%1===0&&(ia=!0,ta.isRequired||ma===''||(H&&typeof H=='number'&&ma.toString().length<H&&
|
|
97
|
+
(sa=!1,this.size=H),da&&typeof da=='number'&&ma.toString().length>da&&(xa=!1,this.size=da)));ia&&sa&&xa||(ia||(ta.isInteger=Y(this.error||w.errorLabels.isInteger,this,'isInteger')),sa&&xa||(sa||(ta.isIntegerLength=Y(this.error||w.errorLabels.isIntegerMinLength,this,'isIntegerMinLength'),ia=!1),xa||(ta.isIntegerLength=Y(this.error||w.errorLabels.isIntegerMaxLength,this,'isIntegerMaxLength'),ia=!1),H===da&&(ta.isIntegerLength=Y(this.error||w.errorLabels.isIntegerLength,this,'isIntegerLength'),ia=!1)));
|
|
98
|
+
this.valid=ia;this.value=w.data[this.name]=Number(ma);ta.count()>0&&(this.errors=ta);return l[this.name]};l[C].toFloat=function(H){var da=document.getElementById(this.target.getAttribute('id')).value||this.value;isFloatingWithCommas=!1;typeof da=='string'&&(da=da.replace(/\s+/g,''),/,/.test(da)&&/\./.test(da)?da=da.replace(/,/g,''):/,/.test(da)&&(da=da.replace(/,/g,'.'),isFloatingWithCommas=!0));w.data[this.name]=da;var ma=l[this.name].errors||{},ia=!0;H?this.decimals=parseInt(H):typeof this.decimals==
|
|
99
|
+
'undefined'&&(this.decimals=2);if(da)if(this.isNumber().valid)try{Number.isFinite(da)||(da=new Number(parseFloat(da.match(/[0-9.,]+/g).join('').replace(/,/,'.'))))}catch(sa){ia=!1,ma.toFloat=Y(this.error||w.errorLabels.toFloat,this,'toFloat'),this.valid=!1,ma.count()>0&&(this.errors=ma)}else ia=!1,ma.toFloat=Y(this.error||w.errorLabels.toFloatNAN,this,'toFloatNAN');else return l[this.name];this.decimals&&da&&!ma.toFloat&&(da=parseFloat(da.toFixed(this.decimals)));this.value=w.data[this.name]=da;q&&
|
|
100
|
+
(isFloatingWithCommas&&(da=(''+da).replace(/\./g,',')),this.target.setAttribute('value',da));this.valid=ia;ma.count()>0&&(this.errors=ma);return l[this.name]};l[C].isFloat=function(H){typeof this.value=='string'&&(this.value=this.value.replace(/\s+/g,''));var da=w.data[this.name]=this.value;H=l[this.name].errors||{};typeof da=='string'&&/\./.test(da)&&Number.isFinite(Number(da));typeof da=='string'&&/,/g.test(da)&&(da=this.value=w.data[this.name]=Number(da.replace(/,/g,'.')));da=Number(da);Number.isFinite(da)&&
|
|
101
|
+
da%1!==0?(this.value=w.data[this.name]=da,da=!0):da=!1;this.value===''&&(da=!0);da||(H.isFloat=Y(this.error||w.errorLabels.isFloat,this,'isFloat'));this.valid=da&&!H.isRequired;H.count()>0&&(this.errors=H);return l[this.name]};l[C].isRequired=function(H){if(typeof H=='boolean'&&!H)return this.valid=!0,H=w.excluded.indexOf(this.name),H>-1&&w.excluded.splice(H,1),l[this.name];if(q&&this.target&&this.target.tagName=='INPUT'&&typeof this.target.type!='undefined'&&this.target.type=='radio'){var da=this.target;
|
|
102
|
+
H=document.getElementsByName(this.name);H=Array.prototype.filter.call(H,function(sa){return sa.form===da.form});for(var ma=0,ia=H.length;ma<ia;++ma)if(H[ma].checked){/true|false/.test(H[ma].value)?this.value=w.data[this.name]=/true/.test(H[ma].value)?!0:!1:this.value=w.data[this.name]=H[ma].value;this.valid=!0;break}}H=typeof this.value=='undefined'||this.value==null||this.value==''||/^\s+$/.test(this.value)?!1:!0;ma=l[this.name].errors||{};H?H&&typeof ma.isRequired!='undefined'&&delete ma.isRequired:
|
|
103
|
+
ma.isRequired=Y(this.error||w.errorLabels.isRequired,this,'isRequired');this.valid=H;ma.count()>0&&(this.errors=ma);return l[this.name]};l[C].isString=function(H,da){var ma=w.data[this.name]=this.value,ia=!1,sa=!0,xa=!0,ta=l[this.name].errors||{};typeof ma!='string'||ta.isRequired||ma==''||(ia=!0,H&&typeof H=='number'&&ma.length<H&&(sa=!1,this.size=H),da&&typeof da=='number'&&ma.length>da&&(xa=!1,this.size=da));ia&&sa&&xa||(!ia&&ta.isRequired&&ma==''?ia=!1:ia||ta.isRequired||(ia=!0),sa&&xa||(ia=!1,
|
|
104
|
+
sa||(ta.isStringLength=Y(this.error||w.errorLabels.isStringMinLength,this,'isStringMinLength')),xa||(ta.isStringLength=Y(this.error||w.errorLabels.isStringMaxLength,this,'isStringMaxLength')),H===da&&(ta.isStringLength=Y(this.error||w.errorLabels.isStringLength,this,'isStringLength'))));this.valid=ia;ta.count()>0&&(this.errors=ta);return l[this.name]};l[C].isDate=function(H){var da=this.value,ma=!1,ia=l[this.name].errors||{},sa=null;if(!da||da==''||/NaN|Invalid Date/i.test(da))return/NaN|Invalid Date/i.test(da)&&
|
|
105
|
+
(console.warn('[FormValidator::isDate] Provided value for field `'+this.name+'` is not allowed: `'+da+'`'),ia.isDate=Y(this.error||w.errorLabels.isDate,this,'isDate')),this.valid=ma,ia.count()>0&&(this.errors=ia),l[this.name];if(typeof H=='undefined'||typeof H!='undefined'&&/true/i.test(H))H='yyyy-mm-dd';if(da instanceof Date)da.format(H);else{try{sa=H.match(/[^\/\- ]+/g)}catch(Oa){throw Error('[FormValidator::isDate] Provided mask not allowed: `'+H+'`');}var xa={},ta,Fa=null,ha=H=NaN,jb=NaN;try{Fa=
|
|
106
|
+
da.match(/[^\/\- ]+/g);var ua=0;for(ta=sa.length;ua<ta;++ua)xa[sa[ua]]=Fa[ua]}catch(Oa){throw Error('[FormValidator::isDate] Provided value not allowed: `'+da+'`'+Oa);}for(var za in xa)/y/i.test(za)?H=parseInt(xa[za],10):/m/i.test(za)?ha=parseInt(xa[za],10):/d/i.test(za)&&(jb=parseInt(xa[za],10));if(!Number.isFinite(H)||!Number.isFinite(ha)||!Number.isFinite(jb)||ha<1||ha>12||jb<1||jb>31)da=this.value=w.data[this.name]=new Date(NaN);else{da=new Date(H,ha-1,jb);if(da.getFullYear()!==H||da.getMonth()!==
|
|
107
|
+
ha-1||da.getDate()!==jb)da=new Date(NaN);this.value=w.data[this.name]=da}if(/Invalid Date/i.test(da)||da instanceof Date===!1)return ia.isRequired||this.value!=''?ia.isDate=Y(this.error||w.errorLabels.isDate,this,'isDate'):ma=!0,this.valid=ma,ia.count()>0&&(this.errors=ia),l[this.name];ma=!0}this.valid=ma;return l[this.name]};l[C].isInList=function(){for(var H=l[this.name].errors||{},da=[],ma=0,ia=arguments.length;ma<ia;++ma){var sa=typeof arguments[ma];if(sa!=='string'&&sa!=='number'&&sa!=='boolean')throw Error('`isInList` requires an array of allowed primitive values; got '+
|
|
108
108
|
sa+' at position '+ma+'. Use `isInList: ["a", "b", "c"]` form.');da.push(arguments[ma])}ma=w.data[this.name]=this.value;ia=!1;ma===''||ma==null?ia=!0:da.indexOf(ma)>-1&&(ia=!0);ia?typeof H.isInList!='undefined'&&delete H.isInList:(this.size=da.join(', '),H.isInList=Y(this.error||w.errorLabels.isInList,this,'isInList'));this.valid=ia&&!H.isRequired;H.count()>0&&(this.errors=H);return l[this.name]};l[C].format=function(H,da){var ma=this.value;return ma?ma.format(H,da):l[this.name]};l[C].setFlash=function(H,
|
|
109
|
-
da){typeof da!='undefined'&&da!=''&&(this.error=da);return l[this.name]};l[C].setLabel=function(H){typeof H!='undefined'&&H!=''&&(this.label=H);return l[this.name]};l[C].trim=function(H){if(typeof H=='boolean'&&H)return this.value=this.value.replace(/^\s+|\s+$/g,''),w.data[this.name]=w.data[this.name]=this.value,l[this.name]};l[C].exclude=function(H){if(typeof H=='boolean'&&!H)return/^true|false$/i.test(this.value)&&(this.value=/^true$/i.test(this.value)?!0:!1,w.data[this.name]=
|
|
110
|
-
this.isExcluded=!1;w.excluded.indexOf(this.name)<0&&(w.excluded.push(this.name),this.isExcluded=!0);return l[this.name]};l[C].query=T;l[C].getValidationContext=function(){return{isGFFCtx:q,self:l,local:w,replace:Y}};if(J()){la=I=null;try{for(let H in gina.forms.validators)la='/validators/'+H+'/main.js',typeof w.errorLabels[H]=='undefined'&&(w.errorLabels[H]='Condition not satisfied'),q?(I=M(gina.forms.validators[H].data),I=I.replace(/(\)\s+\{|\)\{){1}/,'$&\n\tvar validationContext = this.getValidationContext(),isGFFCtx = validationContext.isGFFCtx,self = validationContext.self,local = validationContext.local,replace = validationContext.replace;')):
|
|
109
|
+
da){typeof da!='undefined'&&da!=''&&(this.error=da);return l[this.name]};l[C].setLabel=function(H){typeof H!='undefined'&&H!=''&&(this.label=H);return l[this.name]};l[C].trim=function(H){if(typeof H=='boolean'&&H)return typeof this.value=='string'&&(this.value=this.value.replace(/^\s+|\s+$/g,''),w.data[this.name]=w.data[this.name]=this.value),l[this.name]};l[C].exclude=function(H){if(typeof H=='boolean'&&!H)return/^true|false$/i.test(this.value)&&(this.value=/^true$/i.test(this.value)?!0:!1,w.data[this.name]=
|
|
110
|
+
this.value),l[this.name];this.isExcluded=!1;w.excluded.indexOf(this.name)<0&&(w.excluded.push(this.name),this.isExcluded=!0);return l[this.name]};l[C].query=T;l[C].getValidationContext=function(){return{isGFFCtx:q,self:l,local:w,replace:Y}};if(J()){la=I=null;try{for(let H in gina.forms.validators)la='/validators/'+H+'/main.js',typeof w.errorLabels[H]=='undefined'&&(w.errorLabels[H]='Condition not satisfied'),q?(I=M(gina.forms.validators[H].data),I=I.replace(/(\)\s+\{|\)\{){1}/,'$&\n\tvar validationContext = this.getValidationContext(),isGFFCtx = validationContext.isGFFCtx,self = validationContext.self,local = validationContext.local,replace = validationContext.replace;')):
|
|
111
111
|
I=gina.forms.validators[H].toString(),l[C][H]=eval('('+I+')\n//# sourceURL='+H+'.js')}catch(H){throw Error('[UserFormValidator] Could not evaluate: `'+la+'`\n'+H.stack);}}};for(let C in l)N(C,l[C]);l.addField=function(C,I){typeof l[C]=='undefined'&&N(C,I)};l.isValid=function(){return l.getErrors().count()>0?!1:!0};l.setErrors=function(C){if(!C)return{};for(var I in l)if(typeof l[I]=='object'){for(var la in l[I])typeof C[I]=='object'&&typeof C[I][la]!='undefined'&&(typeof l[I].valid!='undefined'&&
|
|
112
112
|
/^true$/i.test(l[I].valid)?delete C[I][la]:(typeof l[I].errors=='undefined'&&(l[I].errors={}),l[I].errors[la]=C[I][la]));(typeof l[I].errors=='undefined'&&typeof C[I]!='undefined'||typeof l[I].errors!='undefined'&&l[I].errors.count()==0&&typeof C[I]!='undefined')&&delete C[I]}return C};l.getErrors=function(C){var I={};if(typeof C!='undefined')return typeof l[C]!='undefined'&&l[C]&&typeof l[C].errors!='undefined'&&l[C].errors.count()>0&&(I[C]=l[C].errors),I;for(var la in l)typeof l[la]=='object'&&
|
|
113
113
|
typeof l[la].errors!='undefined'&&l[la].errors.count()>0&&(I[la]=l[la].errors);return I};l.toData=function(){if(w.excluded.length>0)for(var C=0,I=w.excluded.length;C<I;++C)typeof w.data[w.excluded[C]]!='undefined'&&delete w.data[w.excluded[C]];return w.data};var Y=function(C,I,la){if(typeof C!=='string'){var va=la&&typeof w.errorLabels[la]==='string'?w.errorLabels[la]:la&&typeof m[la]==='string'?m[la]:'';la=la||'(unknown rule)';oa[la]||(oa[la]=!0,console.warn('[FormValidator] error label for rule `'+
|
|
@@ -606,34 +606,34 @@ J=function(v){var y=v.match(/^\s*new\s+Date\("([^"]*)"\)\s*$/);if(y)return new D
|
|
|
606
606
|
l=y[2],ja=J(y[3]);if(l==='<'||l==='>'||l==='<='||l==='>=')z instanceof Date&&(z=z.getTime()),ja instanceof Date&&(ja=ja.getTime());switch(l){case '===':return z===ja;case '!==':return z!==ja;case '==':return z==ja;case '!=':return z!=ja;case '<':return z<ja;case '>':return z>ja;case '<=':return z<=ja;case '>=':return z>=ja}}catch(M){throw Error('Could not evaluate condition `'+v+'`.\n'+M.stack);}};if(typeof h=='undefined'||h==''||h==null)h=[];if(!Array.isArray(h))throw Error('`new Collection([content] [, options] )`: `content` argument must be an Array !');
|
|
607
607
|
h=h?JSON.clone(h):[];for(var m=[],oa=F=0,S=h.length;oa<S;++oa)h[oa]||(h[oa]={}),typeof h[oa]._uuid!='undefined'?h[oa]._hasItsOwnUuid=!0:h[oa]._uuid=L(16),m[F]=h[oa]._uuid,++F;var r=h;r.setSearchOption=function(){if(!arguments.length)throw Error('searchOption cannot be left blank');if(arguments.length>3||arguments.length<3&&arguments.length>1)throw Error('argument length mismatch');var v=0,y=arguments.length;if(y==1){if(typeof arguments[0]!='object')throw Error('searchOption must be an object');for(var z in arguments[0])if(typeof q[z]==
|
|
608
608
|
'undefined')throw Error(arguments[1]+' is not an allowed searchOption !');P=arguments[0]}else for(P||={};v<y;++v){if(typeof q[arguments[1]]=='undefined')throw Error(arguments[1]+' is not an allowed searchOption !');typeof P[arguments[0]]=='undefined'&&(P[arguments[0]]={});/true|false/i.test(arguments[2])?P[arguments[0]][arguments[1]]=/true/i.test(arguments[2])?!0:!1:P[arguments[0]][arguments[1]]=arguments[2]}return r};r.find=function(){O=!1;typeof arguments[arguments.length-1]=='boolean'&&(O=arguments[arguments.length-
|
|
609
|
-
1],delete arguments[arguments.length-1],--arguments.length);var v=
|
|
610
|
-
typeof ta!='undefined'&&typeof ta!=='object'&&ta!='null'&&ta!='undefined')M.indexOf(ta)<0&&++Fa;else if(typeof ta!='undefined'&&typeof ta!=='object'&&/(<|>|=)/.test(sa)&&!/undefined|function/.test(typeof ta)&&!ha.skipEval)xa=sa,ha=ta+sa,typeof sa=='string'&&typeof ta=='string'&&(ha=sa.replace(/^(<=|>=|!==|!=|===|!==)/g,
|
|
611
|
-
w(ta.replace(/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/,'new Date("$&")')+sa.replace(/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/,'new Date("$&")'))&&++Fa:w(ha)&&++Fa;else if(typeof ta!='undefined'&&typeof ta!=='object'&&ta===sa&&!Y||typeof ta!=
|
|
612
|
-
'undefined'){var jb=0;var ua=Y[xa].count();for(let za in Y[xa])typeof ha[za][Y[xa][za]]!='undefined'&&(ha[za][Y[xa][za]].re=ha[za][Y[xa][za]].re.replace(/%s/,sa),N=ha[za][Y[xa][za]].modifiers?new RegExp(ha[za][Y[xa][za]].re,ha[za][Y[xa][za]].modifiers):new RegExp(ha[za][Y[xa][za]].re),
|
|
613
|
-
xa+'`');var jb=xa.split('.');xa=ta;for(ta=0;xa!=null&&ta<jb.length;ta++)xa=xa[jb[ta]];ha=xa}}catch(ua){}ha&&(Array.isArray(ha)?ha=ha[1].split(/:/)[1]:typeof ha=='string'&&/:/.test(ha)&&(ha=ha.split(/:/)[1]),/(<|>|=)/.test(sa)?/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/.test(ha)
|
|
614
|
-
'new Date("$&")'))&&++Fa:w(ha+sa)&&++Fa:ha==sa&&++Fa);return{matched:Fa}},da=function(sa,xa,ta,Fa,ha){xa=xa.split(/\[\*\]/g);ha=xa[0].replace(/\[\*\]/,'');ta=ta[ha];xa=xa[1];/^\./.test(xa)&&(xa=xa.substring(1));ha=0;if(ta)for(var jb=0,ua=ta.length;jb<ua&&!(la=/\./.test(xa)?H(sa,
|
|
615
|
-
I=0;for(var ia in
|
|
616
|
-
r.insert;M.notIn=r.notIn;M.find=this.find;M.update=r.update;M.replace=r.replace;M.or=r.or;M.findOne=r.findOne;M.limit=r.limit;M.orderBy=r.orderBy;M.delete=r.delete;M.toRaw=r.toRaw;M.filter=r.filter;return M};r.findOne=function(){var v=null;typeof arguments[arguments.length-1]=='string'&&
|
|
617
|
-
v=null;var y=Array.isArray(arguments[0])?arguments[0]:r.find.apply(this,arguments)||[];y.length>0&&(v=y.limit(1).toRaw()[0]);return v};r.or=function(){arguments[arguments.length]=!0;++arguments.length;return r.find.apply(this,arguments)};r.limit=function(v){if(typeof v==
|
|
618
|
-
y.replace=r.replace;y.notIn=r.notIn;y.findOne=r.findOne;y.orderBy=r.orderBy;y.max=r.max;y.delete=r.delete;y.toRaw=r.toRaw;y.filter=r.filter;return y};r.notIn=function(){var v=null,y=null,z=!0;typeof arguments[arguments.length-1]=='string'&&(v=arguments[arguments.length-
|
|
619
|
-
if(typeof y=='undefined'||!y||typeof y!='object')throw Error('[ Collection ][ notIn ] `filters` argument must be defined: Array or Filter Object(s) expected');var l=JSON.clone(Array.isArray(this)?this:h);if(Array.isArray(arguments[0]))var ja=arguments[0];else A=!0,ja=
|
|
620
|
-
'undefined'&&(v='id');if(!v||typeof ja[0][v]=='undefined')throw Error('No comparison key defined !');var M=0,T=ja.length,N=0,Y,C=y.count(),I;if(z&&typeof l[N]!='undefined'&&l[N].hasOwnProperty(v))for(;M<T&&l.length;++M)for(N=0,z=l.length;N<z;++N){if(typeof l[N]!=
|
|
621
|
-
'undefined')throw Error('filter `'+Y+'` cannot be left undefined');var la=y[Y].count();var va=0;for(v in y[Y])l[N].hasOwnProperty(v)&&l[N][v]===ja[M][v]&&++va;va==la&&++I}if(I){l.splice(N,1);break}}}v=l;v.notIn=r.notIn;v.limit=r.limit;v.find=r.find;v.findOne=
|
|
622
|
-
var y=Array.isArray(this)?this:h;v._uuid=L(16);y.push(v);y.limit=r.limit;y.find=r.find;y.findOne=r.findOne;y.update=r.update;y.replace=r.replace;y.orderBy=r.orderBy;y.max=r.max;y.notIn=r.notIn;y.delete=r.delete;y.toRaw=r.toRaw;y.filter=r.filter;return y};r.update=
|
|
623
|
-
1],delete arguments[arguments.length-1],--arguments.length);arguments.length>0&&(y=arguments);if(typeof y=='undefined'||!y||typeof y!='object')throw Error('[ Collection ][ update ] `filters` argument must be defined: Array or Filter Object(s) expected');
|
|
624
|
-
if(l.length>0){l=l.toRaw();for(var ja=0,M=l.length;ja<M;++ja){l[ja]=U(JSON.clone(z),l[ja]);for(var T=0,N=y.length;T<N;++T)if(typeof y[T][v]=='undefined'&&v=='_uuid'&&typeof y[T].id!='undefined'&&(v='id'),y[T][v]==l[ja][v]){y[T]=l[ja];break}}}y.limit=
|
|
625
|
-
z=null;typeof arguments[arguments.length-1]=='string'&&(v=arguments[arguments.length-1],y=!0,delete arguments[arguments.length-1],--arguments.length);typeof arguments[arguments.length-1]=='object'&&(l=arguments[arguments.length-1],delete arguments[arguments.length-
|
|
626
|
-
|
|
627
|
-
'undefined'||typeof ja[M][C]=='undefined'))throw Error('No comparison key defined !');if(z[N][C]==ja[M][C]){z[N]=ja[M];break}}}}z.limit=r.limit;z.find=r.find;z.findOne=r.findOne;z.insert=r.insert;z.update=r.update;z.replace=r.replace;z.orderBy=r.orderBy;z.max=
|
|
628
|
-
v.orderBy=r.orderBy;v.max=r.max;v.notIn=r.notIn;v.toRaw=r.toRaw;v.filter=r.filter;v.delete=this.delete;return v};r.orderBy=function(){if(typeof arguments=='undefined'||arguments.length<1)throw Error('[ Collection->orderBy(filter) ] where `filter` must not be empty or null');
|
|
629
|
-
arguments.length<1)throw Error('[ Collection->max(filter) ] where `filter` must not be empty or null');if(arguments.length>1||Array.isArray(arguments[0])||typeof arguments[0]=='object'&&arguments[0].count()>1)throw Error('[ Collection->max(filter) ] only accept one filter length, and fileter count must be equal to 1');
|
|
630
|
-
var z={},l=null,ja=null,M=l=null;l=[];if(v.count()==0)return null;z.asc=function(T,N){var Y=N.map(function(C,I){var la={};la.index=I;la[T]=C[T];return la});Y.sort(function(C,I){var la=function(va,H){/^(true|false)$/i.test(va)&&(va=/true/i.test(va)?1:0);/^(true|false)$/i.test(H)&&
|
|
631
|
-
void 0,{sensitivity:'case',caseFirst:'upper'})}return va>H?1:va<H?-1:0};return typeof C=='object'?la(C[T],I[T]):la(C,I)});return Y.map(function(C,I,la){return N[C.index]})};z.desc=function(T,N){return z.asc(T,N).reverse()};l=function(T,N){var Y=[],C=[];if(Array.isArray(N))for(var I=
|
|
632
|
-
|
|
633
|
-
sa==0?-1:1:da.length-1>ia?ja(va,H,da,ma,ia+1):0):va[da[ia]]>H[da[ia]]?sa==0?1:-1:va[da[ia]]<H[da[ia]]?sa==0?-1:1:da.length-1>ia?ja(va,H,da,ma,ia+1):0};return T.sort(function(va,H){return ja(va,H,Y,C,0)})};Array.isArray(v)||v.count()>1?l=l(y,v):(M=Object.keys(v)[0],l=v[M],l=z[l](M,
|
|
634
|
-
r.toRaw=function(){for(var v=Array.isArray(this)?this.slice():h.slice(),y=0,z=v.length;y<z;++y){if(v[y]._hasItsOwnUuid){let l=/^true$/i.test(v[y]._hasItsOwnUuid)?!0:!1;delete v[y]._hasItsOwnUuid;if(l)continue}v[y]._uuid&&delete v[y]._uuid}return v};r.filter=function(v){if(typeof v==
|
|
635
|
-
for(T=0;T<N;++T)typeof y[z][v[T]]!='undefined'&&(typeof ja[M]=='undefined'&&(ja[M]={}),ja[M][v[T]]=y[z][v[T]],Y=!0);Y&&++M}else for(;z<l;++z)typeof y[z][v]!='undefined'&&(typeof ja[M]=='undefined'&&(ja[M]={}),ja[M][v]=y[z][v],++M);return JSON.clone(ja)};return r}
|
|
636
|
-
var readyList=[{name:'gina',ctx:window.gina,fn:window.onGinaLoaded}],readyFired=!1,readyEventHandlersInstalled=!1;
|
|
609
|
+
1],delete arguments[arguments.length-1],--arguments.length);for(var v=0,y=arguments.length,z=null,l=null;v<y;++v)if((z=arguments[v])&&typeof z=='object'&&!Array.isArray(z))for(l in z)if(typeof z[l]=='undefined')throw Error('filter `'+l+'` cannot be left undefined');z=v=y=z=null;try{y=JSON.stringify(arguments),v=JSON.parse(y),z=v.count()}catch(sa){throw Error('filter must be an object\n'+sa.stack);}if(typeof v!='undefined'&&z>0){z>1&&(O=!0);z=y=null;l=0;var ja=Array.isArray(this)?this:JSON.clone(h),
|
|
610
|
+
M=[],T='',N=null,Y=P,C=G.searchOptionRules,I=null,la=[],va=function(sa,xa,ta,Fa,ha){P&&typeof P[xa]!='undefined'&&(ha=U(P,ha));if(sa===null&&ta===null)++Fa;else if(sa&&ba.indexOf(T)>-1&&T=='not null'&&typeof ta!='undefined'&&typeof ta!=='object'&&ta!='null'&&ta!='undefined')M.indexOf(ta)<0&&++Fa;else if(typeof ta!='undefined'&&typeof ta!=='object'&&/(<|>|=)/.test(sa)&&!/undefined|function/.test(typeof ta)&&!ha.skipEval)xa=sa,ha=ta+sa,typeof sa=='string'&&typeof ta=='string'&&(ha=sa.replace(/^(<=|>=|!==|!=|===|!==)/g,
|
|
611
|
+
''),typeof ta!='string'||/^"(.*)"$/.test(ha)||(sa=sa.replace(ha,'"'+ha+'"')),ha='"'+ta+'"'+sa,sa=xa),/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/.test(ta)&&/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/.test(sa)?w(ta.replace(/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/,'new Date("$&")')+sa.replace(/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/,'new Date("$&")'))&&++Fa:w(ha)&&++Fa;else if(typeof ta!='undefined'&&typeof ta!=='object'&&ta===sa&&!Y||typeof ta!=
|
|
612
|
+
'undefined'&&typeof ta!=='object'&&ta===sa&&typeof Y[xa]=='undefined'||typeof ta!='undefined'&&typeof ta!=='object'&&ta===sa&&typeof Y[xa]!='undefined'&&ha.skipEval)++Fa;else if(typeof ta!='undefined'&&typeof ta!=='object'&&Y&&typeof Y[xa]!='undefined'){var jb=0;var ua=Y[xa].count();for(let za in Y[xa])typeof ha[za][Y[xa][za]]!='undefined'&&(ha[za][Y[xa][za]].re=ha[za][Y[xa][za]].re.replace(/%s/,sa),N=ha[za][Y[xa][za]].modifiers?new RegExp(ha[za][Y[xa][za]].re,ha[za][Y[xa][za]].modifiers):new RegExp(ha[za][Y[xa][za]].re),
|
|
613
|
+
N.test(ta)&&++jb);jb==ua&&++Fa}return{matched:Fa}},H=function(sa,xa,ta,Fa){var ha=xa.split(/\./g);ha=ha[ha.length-1];N=new RegExp('("'+ha+'":\\w+)');ha=null;try{if(ta){if(!/^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*)*$/.test(xa))throw Error('Invalid property path: `'+xa+'`');var jb=xa.split('.');xa=ta;for(ta=0;xa!=null&&ta<jb.length;ta++)xa=xa[jb[ta]];ha=xa}}catch(ua){}ha&&(Array.isArray(ha)?ha=ha[1].split(/:/)[1]:typeof ha=='string'&&/:/.test(ha)&&(ha=ha.split(/:/)[1]),/(<|>|=)/.test(sa)?/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/.test(ha)&&
|
|
614
|
+
/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/.test(sa)?w(ha.replace(/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/,'new Date("$&")')+sa.replace(/(\d{4})\-(\d{2})\-(\d{2})(\s+|T)(\d{2}):(\d{2}):(\d{2})/,'new Date("$&")'))&&++Fa:w(ha+sa)&&++Fa:ha==sa&&++Fa);return{matched:Fa}},da=function(sa,xa,ta,Fa,ha){xa=xa.split(/\[\*\]/g);ha=xa[0].replace(/\[\*\]/,'');ta=ta[ha];xa=xa[1];/^\./.test(xa)&&(xa=xa.substring(1));ha=0;if(ta)for(var jb=0,ua=ta.length;jb<ua&&!(la=/\./.test(xa)?H(sa,
|
|
615
|
+
xa,ta[jb],ha):va(sa,xa,ta[jb],ha,C),ha=la.matched,ha>0);++jb);return{matched:Fa+ha}},ma;for(ma in ja)if(ja[ma]||(ja[ma]={}),!/undefined|function/.test(typeof ja[ma]))for(let sa=0,xa=v.count();sa<xa;++sa){y=v[sa];z=y.count();I=0;for(var ia in y){if(typeof y[ia]=='undefined')throw Error('filter `'+ia+'` cannot be left undefined');T=y[ia]===null||/(boolean|number)/.test(typeof y[ia])?y[ia]:y[ia].toLocaleLowerCase();la=/\./.test(ia)?/\[\*\]/.test(ia)?da(y[ia],ia,ja[ma],I,0):H(y[ia],ia,ja[ma],I):va(y[ia],
|
|
616
|
+
ia,ja[ma][ia],I,C);I=la.matched}if(I==z)if(O&&A&&m.indexOf(ja[ma]._uuid)<0||A||!O){if(!O||O&&M.indexOf(ja[ma]._uuid)<0||A)M[l]=ja[ma],++l}else O&&!A&&M.indexOf(ja[ma]._uuid)<0&&(M[l]=ja[ma],++l)}}else M=h;P=null;M.insert=r.insert;M.notIn=r.notIn;M.find=this.find;M.update=r.update;M.replace=r.replace;M.or=r.or;M.findOne=r.findOne;M.limit=r.limit;M.orderBy=r.orderBy;M.delete=r.delete;M.toRaw=r.toRaw;M.filter=r.filter;return M};r.findOne=function(){var v=null;typeof arguments[arguments.length-1]=='string'&&
|
|
617
|
+
(delete arguments[arguments.length-1],--arguments.length);arguments.length>0&&(v=arguments);if(typeof v=='undefined'||!v||typeof v!='object')throw Error('[ Collection ][ findOne ] `filters` argument must be defined: Array or Filter Object(s) expected');v=null;var y=Array.isArray(arguments[0])?arguments[0]:r.find.apply(this,arguments)||[];y.length>0&&(v=y.limit(1).toRaw()[0]);return v};r.or=function(){arguments[arguments.length]=!0;++arguments.length;return r.find.apply(this,arguments)};r.limit=function(v){if(typeof v==
|
|
618
|
+
'undefined'||typeof v!='number')throw Error('[Collection::result->limit(resultLimit)] : `resultLimit` parametter must by a `number`');var y=Array.isArray(this)?this:JSON.clone(h);y=y.splice(0,v);y.insert=r.insert;y.update=r.update;y.replace=r.replace;y.notIn=r.notIn;y.findOne=r.findOne;y.orderBy=r.orderBy;y.max=r.max;y.delete=r.delete;y.toRaw=r.toRaw;y.filter=r.filter;return y};r.notIn=function(){var v=null,y=null,z=!0;typeof arguments[arguments.length-1]=='string'&&(v=arguments[arguments.length-
|
|
619
|
+
1],delete arguments[arguments.length-1],--arguments.length);typeof arguments[arguments.length-1]=='boolean'&&(z=arguments[arguments.length-1],delete arguments[arguments.length-1],--arguments.length);arguments.length>0&&(y=arguments);if(typeof y=='undefined'||!y||typeof y!='object')throw Error('[ Collection ][ notIn ] `filters` argument must be defined: Array or Filter Object(s) expected');var l=JSON.clone(Array.isArray(this)?this:h);if(Array.isArray(arguments[0]))var ja=arguments[0];else A=!0,ja=
|
|
620
|
+
r.find.apply(this,arguments)||[],A=!1;if(ja.length>0){if(z&&v&&typeof ja[0]=='undefined'&&typeof ja[0][v]=='undefined')throw Error('[ Collection ][ notIn ] `key` not valid');z&&!v&&typeof ja[0]._uuid!='undefined'?v='_uuid':typeof ja[0].id!='undefined'&&(v='id');if(!v||typeof ja[0][v]=='undefined')throw Error('No comparison key defined !');var M=0,T=ja.length,N=0,Y,C=y.count(),I;if(z&&typeof l[N]!='undefined'&&l[N].hasOwnProperty(v))for(;M<T&&l.length;++M)for(N=0,z=l.length;N<z;++N){if(typeof l[N]!=
|
|
621
|
+
'undefined'&&typeof ja[M]!='undefined'&&l[N][v]===ja[M][v]){l.splice(N,1);break}}else if(typeof l[N]=='undefined')l=JSON.clone(ja);else for(;M<T&&l.length;++M)for(N=0,z=l.length;N<z;++N)if(typeof l[N]!='undefined'){for(Y=I=0;Y<C;++Y){if(typeof y[Y]=='undefined')throw Error('filter `'+Y+'` cannot be left undefined');var la=y[Y].count();var va=0;for(v in y[Y])l[N].hasOwnProperty(v)&&l[N][v]===ja[M][v]&&++va;va==la&&++I}if(I){l.splice(N,1);break}}}v=l;v.notIn=r.notIn;v.limit=r.limit;v.find=r.find;v.findOne=
|
|
622
|
+
r.findOne;v.insert=r.insert;v.replace=r.replace;v.update=r.update;v.orderBy=r.orderBy;v.max=r.max;v.delete=r.delete;v.toRaw=r.toRaw;v.filter=r.filter;return v};r.insert=function(v){if(typeof v!=='object')throw Error('filter must be an object');var y=Array.isArray(this)?this:h;v._uuid=L(16);y.push(v);y.limit=r.limit;y.find=r.find;y.findOne=r.findOne;y.update=r.update;y.replace=r.replace;y.orderBy=r.orderBy;y.max=r.max;y.notIn=r.notIn;y.delete=r.delete;y.toRaw=r.toRaw;y.filter=r.filter;return y};r.update=
|
|
623
|
+
function(){var v='_uuid',y,z=y=null;typeof arguments[arguments.length-1]=='string'&&(v=arguments[arguments.length-1],delete arguments[arguments.length-1],--arguments.length);typeof arguments[arguments.length-1]=='object'&&(z=arguments[arguments.length-1],delete arguments[arguments.length-1],--arguments.length);arguments.length>0&&(y=arguments);if(typeof y=='undefined'||!y||typeof y!='object')throw Error('[ Collection ][ update ] `filters` argument must be defined: Array or Filter Object(s) expected');
|
|
624
|
+
if(typeof z=='undefined'||!z||typeof z!='object')throw Error('[ Collection ][ update ] `set` argument must be defined: Object expected');var l=Array.isArray(arguments[0])?arguments[0]:r.find.apply(this,arguments)||[];y=Array.isArray(this)?this:JSON.clone(h);if(l.length>0){l=l.toRaw();for(var ja=0,M=l.length;ja<M;++ja){l[ja]=U(JSON.clone(z),l[ja]);for(var T=0,N=y.length;T<N;++T)if(typeof y[T][v]=='undefined'&&v=='_uuid'&&typeof y[T].id!='undefined'&&(v='id'),y[T][v]==l[ja][v]){y[T]=l[ja];break}}}y.limit=
|
|
625
|
+
r.limit;y.find=r.find;y.findOne=r.findOne;y.insert=r.insert;y.update=r.update;y.replace=r.replace;y.orderBy=r.orderBy;y.max=r.max;y.notIn=r.notIn;y.delete=r.delete;y.toRaw=r.toRaw;y.filter=r.filter;return y};r.replace=function(){var v='_uuid',y=!1,z,l=z=null;typeof arguments[arguments.length-1]=='string'&&(v=arguments[arguments.length-1],y=!0,delete arguments[arguments.length-1],--arguments.length);typeof arguments[arguments.length-1]=='object'&&(l=arguments[arguments.length-1],delete arguments[arguments.length-
|
|
626
|
+
1],--arguments.length);arguments.length>0&&(z=arguments);if(typeof z=='undefined'||!z||typeof z!='object')throw Error('[ Collection ][ update ] `filters` argument must be defined: Array or Filter Object(s) expected');if(typeof l=='undefined'||!l||typeof l!='object')throw Error('[ Collection ][ update ] `set` argument must be defined: Object expected');var ja=Array.isArray(arguments[0])?arguments[0]:r.find.apply(this,arguments)||[];z=Array.isArray(this)?this:JSON.clone(h);if(ja.length>0){ja=ja.toRaw();
|
|
627
|
+
for(var M=0,T=ja.length;M<T;++M){ja[M]=JSON.clone(l);for(var N=0,Y=z.length;N<Y;++N){var C=v;if(!y&&(typeof z[N][C]!='undefined'&&typeof ja[M][C]!='undefined'||typeof z[N].id=='undefined'||typeof ja[M].id=='undefined'||(C='id'),typeof z[N][C]=='undefined'||typeof ja[M][C]=='undefined'))throw Error('No comparison key defined !');if(z[N][C]==ja[M][C]){z[N]=ja[M];break}}}}z.limit=r.limit;z.find=r.find;z.findOne=r.findOne;z.insert=r.insert;z.update=r.update;z.replace=r.replace;z.orderBy=r.orderBy;z.max=
|
|
628
|
+
r.max;z.notIn=r.notIn;z.delete=r.delete;z.toRaw=r.toRaw;z.filter=r.filter;return z};r['delete']=function(){var v=r.notIn.apply(this,arguments);v.limit=r.limit;v.find=r.find;v.findOne=r.findOne;v.insert=r.insert;v.update=r.update;v.replace=r.replace;v.orderBy=r.orderBy;v.max=r.max;v.notIn=r.notIn;v.toRaw=r.toRaw;v.filter=r.filter;v.delete=this.delete;return v};r.orderBy=function(){if(typeof arguments=='undefined'||arguments.length<1)throw Error('[ Collection->orderBy(filter) ] where `filter` must not be empty or null');
|
|
629
|
+
if(arguments.length==1)var v=arguments[0];else{v=Array(arguments.length);for(var y=0,z=v.length;y<z;++y)v[y]=arguments[y]}y=Array.isArray(this)?this:JSON.clone(h);return V(v,y.toRaw())};r.max=function(){if(typeof arguments=='undefined'||arguments.length<1)throw Error('[ Collection->max(filter) ] where `filter` must not be empty or null');if(arguments.length>1||Array.isArray(arguments[0])||typeof arguments[0]=='object'&&arguments[0].count()>1)throw Error('[ Collection->max(filter) ] only accept one filter length, and fileter count must be equal to 1');
|
|
630
|
+
var v=arguments[0];try{var y=Object.keys(v)[0],z={};z[y]='desc';return r.find(v).orderBy(z).limit(1)[0][y]}catch(l){throw l;}};var V=function(v,y){if(typeof v!='object')throw Error('`filter` parametter must be an object or an array');var z={},l=null,ja=null,M=l=null;l=[];if(v.count()==0)return null;z.asc=function(T,N){var Y=N.map(function(C,I){var la={};la.index=I;la[T]=C[T];return la});Y.sort(function(C,I){var la=function(va,H){/^(true|false)$/i.test(va)&&(va=/true/i.test(va)?1:0);/^(true|false)$/i.test(H)&&
|
|
631
|
+
(H=/true/i.test(H)?1:0);if(typeof va=='string'&&va!=''||typeof H=='string'){if(typeof va=='undefined'||va==null)va='';if(typeof H=='undefined'||H==null)H='';typeof va=='number'&&(va=''+va);typeof H=='number'&&(H=''+H);return va.localeCompare(H,void 0,{sensitivity:'case',caseFirst:'upper'})}return va>H?1:va<H?-1:0};return typeof C=='object'?la(C[T],I[T]):la(C,I)});return Y.map(function(C,I,la){return N[C.index]})};z.desc=function(T,N){return z.asc(T,N).reverse()};l=function(T,N){var Y=[],C=[];if(Array.isArray(N))for(var I=
|
|
632
|
+
0,la=N.length;I<la;++I)Y[I]=Object.keys(N[I])[0],C[I]=N[I][Y[I]];else for(la in I=0,N)Y[I]=la,C[I]=N[la],++I;ja=function(va,H,da,ma,ia){var sa=ma[ia]=='desc'?1:0,xa,ta=xa=null;return typeof va[da[ia]]=='string'&&va[da[ia]]!=''?(xa=va[da[ia]].localeCompare(H[da[ia]]),sa==0&&xa!=0?xa<0?-1:1:xa!=0?xa<0?1:-1:da.length-1>ia?ja(va,H,da,ma,ia+1):0):typeof va[da[ia]]=='number'||typeof H[da[ia]]=='number'?(xa=(''+va[da[ia]]).localeCompare(''+H[da[ia]],void 0,{numeric:!0}),sa==0&&xa!=0?xa<0?-1:1:xa!=0?xa<0?
|
|
633
|
+
1:-1:da.length-1>ia?ja(va,H,da,ma,ia+1):0):typeof va[da[ia]]=='boolean'||typeof H[da[ia]]=='boolean'?(typeof va[da[ia]]=='boolean'&&(xa=va[da[ia]]?1:0),typeof H[da[ia]]=='boolean'&&(ta=H[da[ia]]?1:0),xa>ta?sa==0?1:-1:xa<ta?sa==0?-1:1:da.length-1>ia?ja(va,H,da,ma,ia+1):0):va[da[ia]]>H[da[ia]]?sa==0?1:-1:va[da[ia]]<H[da[ia]]?sa==0?-1:1:da.length-1>ia?ja(va,H,da,ma,ia+1):0};return T.sort(function(va,H){return ja(va,H,Y,C,0)})};Array.isArray(v)||v.count()>1?l=l(y,v):(M=Object.keys(v)[0],l=v[M],l=z[l](M,
|
|
634
|
+
y));l.find=r.find;l.findOne=r.findOne;l.limit=r.limit;l.notIn=r.notIn;l.insert=r.insert;l.update=r.update;l.replace=r.replace;l.delete=r.delete;l.orderBy=r.orderBy;l.max=r.max;l.toRaw=r.toRaw;l.filter=r.filter;return l};r.toRaw=function(){for(var v=Array.isArray(this)?this.slice():h.slice(),y=0,z=v.length;y<z;++y){if(v[y]._hasItsOwnUuid){let l=/^true$/i.test(v[y]._hasItsOwnUuid)?!0:!1;delete v[y]._hasItsOwnUuid;if(l)continue}v[y]._uuid&&delete v[y]._uuid}return v};r.filter=function(v){if(typeof v==
|
|
635
|
+
'undefined')throw Error('`filter` parametter must be a string or an array.');var y=Array.isArray(this)?this:h;if(!y.length)return[];var z=0,l=y.length,ja=[],M=0;if(Array.isArray(v))for(var T,N=v.length,Y;z<l;++z){Y=!1;for(T=0;T<N;++T)typeof y[z][v[T]]!='undefined'&&(typeof ja[M]=='undefined'&&(ja[M]={}),ja[M][v[T]]=y[z][v[T]],Y=!0);Y&&++M}else for(;z<l;++z)typeof y[z][v]!='undefined'&&(typeof ja[M]=='undefined'&&(ja[M]={}),ja[M][v]=y[z][v],++M);return JSON.clone(ja)};return r}
|
|
636
|
+
typeof module!=='undefined'&&module.exports?module.exports=Collection:typeof define==='function'&&define.amd&&define('lib/collection',[],function(){return Collection});var readyList=[{name:'gina',ctx:window.gina,fn:window.onGinaLoaded}],readyFired=!1,readyEventHandlersInstalled=!1;
|
|
637
637
|
function ready(){if(!readyFired){readyFired=!0;var h=null,G=function(F,L){if(L[F])if(L[F].name=='gina')var U=window.setInterval(function(q,O){try{if(typeof O=='undefined'&&(O=window.readyList),O[q].ctx=window.gina,h=O[q].fn.call(window,O[q].ctx,window.require))window.clearInterval(U),++q,G(q,O)}catch(A){throw window.clearInterval(U),A;}},50,F,L);else L[F].ctx=window.originalContext||null,L[F].fn.call(window,L[F].ctx,window.require),++F,G(F,L);else L=[]};G(0,readyList)}}
|
|
638
638
|
function readyStateChange(){document.readyState==='complete'&&gina.ready()}
|
|
639
639
|
if(typeof window.gina=='undefined'){var gina={_global:{register:function(h){if(typeof h!='undefined')for(let G in h)window[G]=h[G]},unregister:function(h){if(typeof h=='undefined'||!Array.isArray(h))throw Error('`variables` needs to ba an array');for(let G=0,F=h.length;G<F;G++)delete window[h[G]]},initialized:[]},ready:function(h,G){readyFired?setTimeout(function(){h(G)},1):(readyList.push({name:'anonymous',fn:h,ctx:G}),document.readyState==='complete'||!document.attachEvent&&document.readyState===
|