gina 0.1.6-alpha.14 → 0.1.6-alpha.141
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/LICENSE +1 -1
- package/README-4Contributors.md +14 -8
- package/README.md +13 -4
- package/bin/cli +16 -2
- package/bin/gina +29 -1
- package/framework/{v0.1.6-alpha.14/lib/inherits → v0.1.6-alpha.141}/LICENSE +1 -1
- package/framework/v0.1.6-alpha.141/VERSION +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/README.md +1 -0
- package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/dist/vendor/gina/js/gina.js +794 -257
- package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.min.js +782 -0
- package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
- package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
- package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/config.js +158 -78
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/index.js +108 -26
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.v4.js +124 -22
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.v4.js +5 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/controller/controller.js +762 -189
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/controller/index.js +2 -2
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/README.md +191 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/index.js +57 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/utils.js +596 -0
- package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/package.json +22 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/.travis.yml +4 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/LICENSE +21 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/bool.js +10 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/boolean_double.js +7 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/boolean_single.js +7 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/default_hash.js +8 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/default_singles.js +7 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/divide.js +8 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/line_count.js +20 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/line_count_options.js +29 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/line_count_wrap.js +29 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/nonopt.js +4 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/reflect.js +2 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/short.js +3 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/string.js +11 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/usage-options.js +19 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/xup.js +10 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/index.js +343 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/package.json +31 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/package.json.dist +39 -0
- package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/readme.markdown +513 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/HISTORY.md +498 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/LICENSE +7 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/README.md +88 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/bin/swig.js +161 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/bin/swig.js.dist +161 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/dist/swig.min.js.map +8 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/index.js +1 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/dateformatter.js +198 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/filters.js +630 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/lexer.js +306 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/loaders/filesystem.js +59 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/loaders/index.js +53 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/loaders/memory.js +63 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/parser.js +744 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/swig.js +740 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/autoescape.js +37 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/block.js +25 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/else.js +25 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/elseif.js +28 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/extends.js +19 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/filter.js +68 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/for.js +130 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/if.js +86 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/import.js +91 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/include.js +100 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/index.js +16 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/macro.js +79 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/parent.js +51 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/raw.js +23 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/set.js +109 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/spaceless.js +42 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/utils.js +184 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/package.json +57 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/package.json.dist +61 -0
- package/framework/v0.1.6-alpha.141/core/deps/swig-client/swig.js +5031 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/lib/factory.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/gna.js +106 -22
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/index.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/make.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/mime.types +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/entity.js +5 -5
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/index.js +30 -26
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/template/entityFactory.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/template/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/index.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/file/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/src/form-validator.js +39 -27
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/src/main.js +490 -114
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/router.js +92 -47
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/server.isaac.js +94 -43
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/server.js +329 -134
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/status.codes +1 -11
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/controllers/setup.js +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/command/gina.tpl +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/env.json +19 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/templates.json +4 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/console.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/context.js +30 -13
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/dateFormat.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/src/main.js +6 -4
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/path.js +31 -15
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/src/api-error.js +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/task.js +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/text.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/src/main.js +11 -11
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/add.js +2 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/start.js +21 -8
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/get.js +1 -1
- package/framework/v0.1.6-alpha.141/lib/cmd/env/help.js +30 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/build.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/dot.js +21 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/init.js +19 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/link-node-modules.js +2 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/link.js +3 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/restart.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/start.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/tail.js +29 -12
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/version.js +15 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/helper.js +8 -4
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/index.js +1 -1
- package/framework/v0.1.6-alpha.141/lib/cmd/minion/help.txt +18 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/reset.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/add.js +7 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/arguments.json +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/build.js +4 -4
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/help.txt +4 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/list.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/list.js +71 -50
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/src/main.js +20 -14
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/config.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cron/package.json +2 -2
- package/framework/v0.1.6-alpha.141/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +15754 -0
- package/framework/v0.1.6-alpha.141/lib/domain/dist/public_suffix_list.dat +15754 -0
- package/framework/v0.1.6-alpha.141/lib/domain/exemples/backend.js +12 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/src/main.js +20 -6
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/generator/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141/lib/inherits}/LICENSE +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/mq/listener.js +10 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/helper.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/math/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/model.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/proc.js +10 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/src/main.js +82 -26
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/session-store.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/swig-filters/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/swig-filters/src/main.js +76 -15
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/validator.js +2 -2
- package/framework/v0.1.6-alpha.141/package.json +11 -0
- package/package.json +3 -3
- package/resources/package.json.template +1 -1
- package/script/post_install.js +4 -4
- package/script/pre_install.js +3 -3
- package/utils/helper.js +38 -14
- package/framework/v0.1.6-alpha.14/VERSION +0 -1
- package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +0 -1
- package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -766
- package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +0 -8
- package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -7
- package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +0 -8
- package/framework/v0.1.6-alpha.14/core/deps/busboy/.travis.yml +0 -17
- package/framework/v0.1.6-alpha.14/core/deps/busboy/README.md +0 -225
- package/framework/v0.1.6-alpha.14/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -73
- package/framework/v0.1.6-alpha.14/core/deps/busboy/deps/encoding/encoding.js +0 -2391
- package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/main.js +0 -89
- package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/types/multipart.js +0 -328
- package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/types/urlencoded.js +0 -214
- package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/utils.js +0 -191
- package/framework/v0.1.6-alpha.14/core/deps/busboy/package.json +0 -69
- package/framework/v0.1.6-alpha.14/lib/domain/dist/public_suffix_list.dat +0 -14186
- package/framework/v0.1.6-alpha.14/lib/domain/exemples/backend.js +0 -0
- package/framework/v0.1.6-alpha.14/package.json +0 -14
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/AUTHORS +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/html/static.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/uuid.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.1.6-alpha.14/core/deps/busboy → v0.1.6-alpha.141/core/deps/busboy-1.6.0}/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/currency.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/resources/currency.csv +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/resources/region.csv +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/resources/region.mapping.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/server.express.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/_gitignore +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/package.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/prototypes.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.1.6-alpha.14/lib/cmd/env → v0.1.6-alpha.141/lib/cmd/minion}/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cron/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/exemples/frontend.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/example/inheriting_eventemitter.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/example/protected_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/example/simple_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/example/merge.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/example/merge_2_literal objects.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/example/merge_and_preserve_first.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/shell.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/mocks.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/test.js +0 -0
package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/src/main.js
RENAMED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
* @param {object} [ data ] // from request
|
|
19
19
|
* @param {string} [ formId ]
|
|
20
20
|
* */
|
|
21
|
-
|
|
21
|
+
function ValidatorPlugin(rules, data, formId) {
|
|
22
22
|
|
|
23
23
|
this.plugin = 'validator';
|
|
24
24
|
|
|
@@ -128,6 +128,7 @@
|
|
|
128
128
|
'eventData' : {},
|
|
129
129
|
'target' : (isGFFCtx) ? document : null, // by default
|
|
130
130
|
'cachedErrors' : {},
|
|
131
|
+
'lastFocused' : (isGFFCtx) ? [] : null,
|
|
131
132
|
'binded' : false,
|
|
132
133
|
'unbinded' : false,
|
|
133
134
|
'withUserBindings' : false,
|
|
@@ -153,16 +154,16 @@
|
|
|
153
154
|
* */
|
|
154
155
|
var xhr = null;
|
|
155
156
|
var xhrOptions = {
|
|
156
|
-
'url'
|
|
157
|
-
'method'
|
|
158
|
-
'isSynchrone'
|
|
159
|
-
'withCredentials': false,
|
|
160
|
-
'
|
|
157
|
+
'url' : '',
|
|
158
|
+
'method' : 'GET',
|
|
159
|
+
'isSynchrone' : false,
|
|
160
|
+
'withCredentials' : false,
|
|
161
|
+
'withRateLimit' : true,
|
|
162
|
+
'headers' : {
|
|
161
163
|
// to upload, use `multipart/form-data` for `enctype`
|
|
162
164
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
|
163
165
|
// cross domain is enabled by default, but you need to setup `Access-Control-Allow-Origin`
|
|
164
166
|
'X-Requested-With': 'XMLHttpRequest' // in case of cross domain origin
|
|
165
|
-
|
|
166
167
|
}
|
|
167
168
|
};
|
|
168
169
|
|
|
@@ -229,6 +230,8 @@
|
|
|
229
230
|
var setOptions = function (options) {
|
|
230
231
|
options = merge(options, xhrOptions);
|
|
231
232
|
xhrOptions = options;
|
|
233
|
+
|
|
234
|
+
return this;
|
|
232
235
|
}
|
|
233
236
|
|
|
234
237
|
|
|
@@ -408,22 +411,34 @@
|
|
|
408
411
|
}
|
|
409
412
|
|
|
410
413
|
var refreshWarning = function($el) {
|
|
411
|
-
var formId = $el.form.getAttribute('id');
|
|
414
|
+
var formId = $el.form.id || $el.form.getAttribute('id');
|
|
415
|
+
var elName = $el.name || $el.form.getAttribute('name');
|
|
416
|
+
var currentElName = document.activeElement.name;
|
|
412
417
|
if ( /^true$/i.test(instance.$forms[formId].isValidating) ) {
|
|
413
418
|
return;
|
|
414
419
|
}
|
|
415
420
|
|
|
416
|
-
var $parent
|
|
417
|
-
|
|
421
|
+
var $parent = $el.parentNode
|
|
422
|
+
, isErrorMessageHidden = false
|
|
423
|
+
, $children = $parent.getElementsByTagName('div')
|
|
424
|
+
;
|
|
418
425
|
|
|
419
|
-
if ( /form\-item\-warning/.test($parent.className) ) {
|
|
426
|
+
if ( /form\-item\-warning/.test($parent.className) && currentElName != elName ) {
|
|
420
427
|
$parent.className = $parent.className.replace(/form\-item\-warning/, 'form-item-error');
|
|
421
428
|
|
|
422
|
-
} else if (/form\-item\-error/.test($parent.className) ) {
|
|
429
|
+
} else if (/form\-item\-error/.test($parent.className) && currentElName == elName ) {
|
|
423
430
|
$parent.className = $parent.className.replace(/form\-item\-error/, 'form-item-warning');
|
|
424
431
|
isErrorMessageHidden = true;
|
|
425
432
|
}
|
|
426
433
|
|
|
434
|
+
// Fixed on 2025-03-16
|
|
435
|
+
if (
|
|
436
|
+
/^true$/i.test(instance.$forms[formId].isValidating)
|
|
437
|
+
&& !isErrorMessageHidden
|
|
438
|
+
) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
|
|
427
442
|
|
|
428
443
|
for (var c = 0, cLen = $children.length; c<cLen; ++c) {
|
|
429
444
|
if ( /form\-item\-error\-message/.test($children[c].className) ) {
|
|
@@ -445,7 +460,7 @@
|
|
|
445
460
|
* @param {object} $form - Target (HTMLFormElement)
|
|
446
461
|
* @param {object} errors
|
|
447
462
|
* @param {object|null} data
|
|
448
|
-
* @param {
|
|
463
|
+
* @param {string|null} [fileName]
|
|
449
464
|
*/
|
|
450
465
|
var liveCheckErrors = {}; // Per Form & Per Element
|
|
451
466
|
var handleErrorsDisplay = function($form, errors, data, fieldName) {
|
|
@@ -476,7 +491,7 @@
|
|
|
476
491
|
if ( typeof(liveCheckErrors[formId]) == 'undefined') {
|
|
477
492
|
liveCheckErrors[formId] = {};
|
|
478
493
|
}
|
|
479
|
-
if (errors.count() > 0) {
|
|
494
|
+
if (errors && errors.count() > 0) {
|
|
480
495
|
// reset field name
|
|
481
496
|
liveCheckErrors[formId][fieldName] = {};
|
|
482
497
|
// override
|
|
@@ -486,8 +501,29 @@
|
|
|
486
501
|
}
|
|
487
502
|
errors = liveCheckErrors[formId];
|
|
488
503
|
// only if the form has not been sent yet
|
|
489
|
-
if (
|
|
504
|
+
if (
|
|
505
|
+
!instance.$forms[formId].sent
|
|
506
|
+
||
|
|
507
|
+
instance.$forms[formId].isValidating
|
|
508
|
+
) {
|
|
490
509
|
isWarning = true;
|
|
510
|
+
// Fixed on 2025-03-16
|
|
511
|
+
var lastFocused = instance.$forms[formId].lastFocused;
|
|
512
|
+
// console.debug('fieldName: '+ fieldName + '\nactiveElement: '+ document.activeElement.getAttribute('name') +'\nlastFocused: ', lastFocused);
|
|
513
|
+
if (
|
|
514
|
+
lastFocused.length > 0
|
|
515
|
+
&& typeof(lastFocused[1]) != 'undefined'
|
|
516
|
+
&& lastFocused[1].name == fieldName
|
|
517
|
+
||
|
|
518
|
+
lastFocused.length > 0
|
|
519
|
+
&& !lastFocused[1]
|
|
520
|
+
&& document.activeElement.getAttribute('name') != lastFocused[0].name
|
|
521
|
+
||
|
|
522
|
+
document.activeElement.getAttribute('name') != fieldName
|
|
523
|
+
) {
|
|
524
|
+
isWarning = false;
|
|
525
|
+
}
|
|
526
|
+
// console.debug('isWarning: '+isWarning);
|
|
491
527
|
}
|
|
492
528
|
} else {
|
|
493
529
|
if ( typeof(liveCheckErrors[formId][fieldName]) != 'undefined') {
|
|
@@ -551,7 +587,11 @@
|
|
|
551
587
|
|
|
552
588
|
if (!name) continue;
|
|
553
589
|
|
|
554
|
-
if (
|
|
590
|
+
if (
|
|
591
|
+
errors
|
|
592
|
+
&& typeof(errors[name]) != 'undefined'
|
|
593
|
+
&& !/(form\-item\-error|form\-item\-warning)/.test($parent.className)
|
|
594
|
+
) {
|
|
555
595
|
|
|
556
596
|
if (isWarning) {
|
|
557
597
|
// adding warning class
|
|
@@ -592,7 +632,24 @@
|
|
|
592
632
|
|
|
593
633
|
|
|
594
634
|
|
|
595
|
-
} else if (
|
|
635
|
+
} else if (
|
|
636
|
+
errors
|
|
637
|
+
&& typeof(errors[name]) == 'undefined'
|
|
638
|
+
&& /(form\-item\-error|form\-item\-warning)/.test($parent.className)
|
|
639
|
+
||
|
|
640
|
+
errors
|
|
641
|
+
&& typeof(errors[name]) != 'undefined' && errors[name].count() == 0
|
|
642
|
+
&& /(form\-item\-error|form\-item\-warning)/.test($parent.className)
|
|
643
|
+
) {
|
|
644
|
+
// Fixed on 2025-03-10
|
|
645
|
+
// targeted field must be the active element
|
|
646
|
+
// if (
|
|
647
|
+
// document.activeElement.getAttribute('name') != fieldName
|
|
648
|
+
// && errors.count() > 0
|
|
649
|
+
// ) {
|
|
650
|
+
// break
|
|
651
|
+
// }
|
|
652
|
+
console.debug('[handleErrorsDisplay] Resetting when not in error');
|
|
596
653
|
// reset when not in error
|
|
597
654
|
// remove child elements
|
|
598
655
|
var $children = $parent.getElementsByTagName('div');
|
|
@@ -606,16 +663,34 @@
|
|
|
606
663
|
|
|
607
664
|
$parent.className = $parent.className.replace(/(\s+form\-item\-error|form\-item\-error|\s+form\-item\-warning|form\-item\-warning)/, '');
|
|
608
665
|
|
|
609
|
-
} else if (
|
|
666
|
+
} else if (
|
|
667
|
+
errors.count() > 0
|
|
668
|
+
&& typeof(errors[name]) != 'undefined'
|
|
669
|
+
&& errAttr
|
|
670
|
+
) {
|
|
610
671
|
// refreshing already displayed error on msg update
|
|
611
672
|
var $divs = $parent.getElementsByTagName('div');
|
|
612
673
|
for (var d = 0, dLen = $divs.length; d<dLen; ++d) {
|
|
613
|
-
|
|
674
|
+
// Fixed on 2025-03-05: className can have more than one !!
|
|
675
|
+
let foundMessage = $divs[d].className.match("form-item-error-message");
|
|
676
|
+
if (
|
|
677
|
+
foundMessage
|
|
678
|
+
&& typeof(foundMessage.length) != 'undefined'
|
|
679
|
+
&& foundMessage.length > 0
|
|
680
|
+
) {
|
|
614
681
|
|
|
615
682
|
$divs[d].parentElement.removeChild($divs[d]);
|
|
616
683
|
$err = document.createElement('div');
|
|
617
684
|
$err.setAttribute('class', 'form-item-error-message');
|
|
618
685
|
|
|
686
|
+
// Fixed on 2025-03-09: className cleanup
|
|
687
|
+
if (
|
|
688
|
+
!isWarning
|
|
689
|
+
&& /(\s+form\-item\-warning|form\-item\-warning)/.test($parent.className)
|
|
690
|
+
) {
|
|
691
|
+
$parent.className = $parent.className.replace(/(\s+form\-item\-warning|form\-item\-warning)/, ' form-item-error');
|
|
692
|
+
}
|
|
693
|
+
|
|
619
694
|
// injecting error messages
|
|
620
695
|
// {
|
|
621
696
|
// field: {
|
|
@@ -640,12 +715,17 @@
|
|
|
640
715
|
}
|
|
641
716
|
}
|
|
642
717
|
|
|
643
|
-
if ($err && $target.type != 'hidden')
|
|
718
|
+
if ($err && $target.type != 'hidden') {
|
|
644
719
|
insertAfter($target, $err);
|
|
645
|
-
|
|
720
|
+
}
|
|
646
721
|
}
|
|
647
722
|
|
|
648
|
-
if (
|
|
723
|
+
if (
|
|
724
|
+
typeof(fieldName) != 'undefined'
|
|
725
|
+
&& fieldName === $el.name
|
|
726
|
+
) {
|
|
727
|
+
break;
|
|
728
|
+
}
|
|
649
729
|
}
|
|
650
730
|
|
|
651
731
|
|
|
@@ -769,7 +849,7 @@
|
|
|
769
849
|
, value = null // current value
|
|
770
850
|
, defaultValue = null
|
|
771
851
|
;
|
|
772
|
-
|
|
852
|
+
$form.isBeingReseted = true;
|
|
773
853
|
for (var f in $form.fieldsSet) {
|
|
774
854
|
|
|
775
855
|
$element = document.getElementById(f);
|
|
@@ -806,6 +886,7 @@
|
|
|
806
886
|
}
|
|
807
887
|
|
|
808
888
|
}
|
|
889
|
+
delete $form.isBeingReseted;
|
|
809
890
|
}
|
|
810
891
|
|
|
811
892
|
return $form
|
|
@@ -840,31 +921,41 @@
|
|
|
840
921
|
*
|
|
841
922
|
*
|
|
842
923
|
* @param {object} data - FormData object (https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects)
|
|
843
|
-
* @param {object} [ options ] : { isSynchrone:
|
|
924
|
+
* @param {object} [ options ] : { isSynchrone: false, withCredentials: true, withRateLimit: true }
|
|
844
925
|
* */
|
|
845
926
|
var send = function(data, options) {
|
|
846
927
|
|
|
847
928
|
|
|
848
929
|
var $target = this.target , id = $target.getAttribute('id');
|
|
849
930
|
var $form = instance.$forms[id] || this;
|
|
931
|
+
var $submitTrigger = document.getElementById($form.submitTrigger) || null;
|
|
850
932
|
var result = null;
|
|
851
933
|
var XHRData = null;
|
|
852
934
|
var isAttachment = null; // handle download
|
|
853
935
|
var hFormIsRequired = null;
|
|
854
936
|
|
|
937
|
+
options = (typeof (options) != 'undefined') ? merge(options, xhrOptions) : xhrOptions;
|
|
938
|
+
|
|
939
|
+
// Rate Limit to one request at the time
|
|
940
|
+
// Attention: this should be an option
|
|
941
|
+
// the request needs to be completed before another can be made
|
|
942
|
+
// TODO - Check same url
|
|
855
943
|
if (
|
|
856
|
-
|
|
944
|
+
/^true$/i.test(options.withRateLimit)
|
|
945
|
+
&& typeof($form.isSending) != 'undefined'
|
|
857
946
|
&& /^true$/i.test($form.isSending)
|
|
858
947
|
||
|
|
859
|
-
|
|
948
|
+
/^true$/i.test(options.withRateLimit)
|
|
949
|
+
&& typeof($form.sent) != 'undefined'
|
|
860
950
|
&& /^true$/i.test($form.sent)
|
|
861
951
|
) {
|
|
862
952
|
return;
|
|
863
953
|
}
|
|
954
|
+
|
|
864
955
|
instance.$forms[id].isSending = true;
|
|
865
956
|
|
|
866
957
|
|
|
867
|
-
|
|
958
|
+
|
|
868
959
|
// `x-gina-form`definition
|
|
869
960
|
//options.headers['X-Gina-Form-Location'] = gina.config.bundle;
|
|
870
961
|
if ( typeof($form.id) != 'undefined' ) {
|
|
@@ -968,20 +1059,43 @@
|
|
|
968
1059
|
|
|
969
1060
|
if (xhr) {
|
|
970
1061
|
// catching ready state cb
|
|
1062
|
+
// Data loading ...
|
|
1063
|
+
if ( /^(1|3)$/.test(xhr.readyState) ) {
|
|
1064
|
+
$form.target.setAttribute('data-gina-form-loading', true);
|
|
1065
|
+
if ($submitTrigger) {
|
|
1066
|
+
// For A tag: aria-disabled=true
|
|
1067
|
+
if ( /^A$/i.test($submitTrigger.tagName) ) {
|
|
1068
|
+
$submitTrigger.setAttribute('aria-disabled', true);
|
|
1069
|
+
} else {
|
|
1070
|
+
$submitTrigger.setAttribute('disabled', true);
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
971
1074
|
//handleXhrResponse(xhr, $target, id, $form, hFormIsRequired);
|
|
972
1075
|
xhr.onreadystatechange = function onValidationCallback(event) {
|
|
973
1076
|
$form.isSubmitting = false;
|
|
974
1077
|
$form.isSending = false;
|
|
975
1078
|
|
|
976
1079
|
// limit send trigger to 1 sec to prevent from double clicks
|
|
977
|
-
setTimeout( function onSent() {
|
|
978
|
-
|
|
979
|
-
}, 1000);
|
|
980
|
-
|
|
1080
|
+
// setTimeout( function onSent() {
|
|
1081
|
+
// $form.sent = false;
|
|
1082
|
+
// }, 1000); // 1000
|
|
1083
|
+
|
|
1084
|
+
// Data loading ...
|
|
1085
|
+
if ( /^(1|3)$/.test(xhr.readyState) ) {
|
|
1086
|
+
$form.target.setAttribute('data-gina-form-loading', true);
|
|
1087
|
+
// For A tag: aria-disabled=true
|
|
1088
|
+
if ( /^A$/i.test($submitTrigger.tagName) ) {
|
|
1089
|
+
$submitTrigger.setAttribute('aria-disabled', true);
|
|
1090
|
+
} else {
|
|
1091
|
+
$submitTrigger.setAttribute('disabled', true);
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
981
1094
|
// In case the user is also redirecting
|
|
982
1095
|
var redirectDelay = (/Google Inc/i.test(navigator.vendor)) ? 50 : 0;
|
|
983
1096
|
|
|
984
|
-
|
|
1097
|
+
// responseType interception
|
|
1098
|
+
if (xhr.readyState == 2) {
|
|
985
1099
|
isAttachment = ( /^attachment\;/.test( xhr.getResponseHeader("Content-Disposition") ) ) ? true : false;
|
|
986
1100
|
// force blob response type
|
|
987
1101
|
if ( !xhr.responseType && isAttachment ) {
|
|
@@ -990,6 +1104,18 @@
|
|
|
990
1104
|
}
|
|
991
1105
|
|
|
992
1106
|
if (xhr.readyState == 4) {
|
|
1107
|
+
|
|
1108
|
+
$form.sent = false;
|
|
1109
|
+
if ($submitTrigger) {
|
|
1110
|
+
// For A tag: aria-disabled=true
|
|
1111
|
+
if ( /^A$/i.test($submitTrigger.tagName) ) {
|
|
1112
|
+
$submitTrigger.removeAttribute('aria-disabled', true);
|
|
1113
|
+
} else {
|
|
1114
|
+
$submitTrigger.removeAttribute('disabled', true);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
$form.target.removeAttribute('data-gina-form-loading');
|
|
1118
|
+
|
|
993
1119
|
var $popin = null;
|
|
994
1120
|
var blob = null;
|
|
995
1121
|
var contentType = xhr.getResponseHeader("Content-Type");
|
|
@@ -1015,7 +1141,7 @@
|
|
|
1015
1141
|
var url = window.URL.createObjectURL(blob);
|
|
1016
1142
|
a.href = url;
|
|
1017
1143
|
var contentDisposition = xhr.getResponseHeader("Content-Disposition");
|
|
1018
|
-
a.download = contentDisposition.match('\=(.*)')[0].
|
|
1144
|
+
a.download = contentDisposition.match('\=(.*)')[0].substring(1);
|
|
1019
1145
|
//programatically click the link to trigger the download
|
|
1020
1146
|
a.click();
|
|
1021
1147
|
|
|
@@ -1034,7 +1160,9 @@
|
|
|
1034
1160
|
size : blob.size
|
|
1035
1161
|
}
|
|
1036
1162
|
|
|
1037
|
-
}
|
|
1163
|
+
}
|
|
1164
|
+
// normal case
|
|
1165
|
+
else {
|
|
1038
1166
|
result = xhr.responseText;
|
|
1039
1167
|
}
|
|
1040
1168
|
|
|
@@ -1043,9 +1171,14 @@
|
|
|
1043
1171
|
if ( /\/json/.test( contentType ) ) {
|
|
1044
1172
|
result = JSON.parse(xhr.responseText);
|
|
1045
1173
|
|
|
1046
|
-
if ( typeof(result.status) == 'undefined' )
|
|
1174
|
+
if ( typeof(result.status) == 'undefined' ) {
|
|
1047
1175
|
result.status = xhr.status;
|
|
1048
|
-
|
|
1176
|
+
}
|
|
1177
|
+
// Fixed on 2025-03-13 Allowing toolbar to ubdate after xhr results
|
|
1178
|
+
// TODO - Allowing to revert to previously loaded data via a close button
|
|
1179
|
+
if (gina && envIsDev && typeof(window.ginaToolbar) && typeof(result) != 'undefined') {
|
|
1180
|
+
window.ginaToolbar.update('data-xhr', result);
|
|
1181
|
+
}
|
|
1049
1182
|
}
|
|
1050
1183
|
|
|
1051
1184
|
if ( /\/html/.test( contentType ) ) {
|
|
@@ -1276,6 +1409,13 @@
|
|
|
1276
1409
|
// } else { // external - need to remove `X-Requested-With` from `options.headers`
|
|
1277
1410
|
result.location = (!/^http/.test(result.location) && !/^\//.test(result.location) ) ? location.protocol +'//' + result.location : result.location;
|
|
1278
1411
|
//}
|
|
1412
|
+
// isProxyHost ?
|
|
1413
|
+
if (
|
|
1414
|
+
result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:\/\//, '').split(/\//g)[0] == gina.config.hostname
|
|
1415
|
+
&& gina.config.hostname == window.location.host
|
|
1416
|
+
) {
|
|
1417
|
+
result.location = location.protocol + result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:/, '')
|
|
1418
|
+
}
|
|
1279
1419
|
|
|
1280
1420
|
return setTimeout(() => {
|
|
1281
1421
|
window.location.href = result.location;
|
|
@@ -1487,9 +1627,12 @@
|
|
|
1487
1627
|
|
|
1488
1628
|
$form.eventData.ontimeout = result;
|
|
1489
1629
|
|
|
1630
|
+
$form.target.setAttribute('data-gina-form-loading', false);
|
|
1631
|
+
|
|
1490
1632
|
// intercept upload
|
|
1491
|
-
if ( /^gina\-upload/i.test(id) )
|
|
1633
|
+
if ( /^gina\-upload/i.test(id) ) {
|
|
1492
1634
|
onUpload(gina, $target, 'error', id, result);
|
|
1635
|
+
}
|
|
1493
1636
|
|
|
1494
1637
|
triggerEvent(gina, $target, 'error.' + id, result);
|
|
1495
1638
|
|
|
@@ -1905,7 +2048,7 @@
|
|
|
1905
2048
|
filesToBeRemoved.push(childNodeFilePreview);
|
|
1906
2049
|
}
|
|
1907
2050
|
} else {
|
|
1908
|
-
let file = childNodes[i].src.
|
|
2051
|
+
let file = childNodes[i].src.substring(childNodes[i].src.lastIndexOf('/')+1);
|
|
1909
2052
|
childNodeFile = file;
|
|
1910
2053
|
filesToBeRemoved.push(childNodeFile);
|
|
1911
2054
|
}
|
|
@@ -2341,7 +2484,7 @@
|
|
|
2341
2484
|
for (let m = 0, mLen = mergingRules.length; m < mLen; m++) {
|
|
2342
2485
|
if ( re.test(mergingRules[m]) ) {
|
|
2343
2486
|
let tmpStr = JSON.stringify(rule);
|
|
2344
|
-
tmpStr = tmpStr.
|
|
2487
|
+
tmpStr = tmpStr.substring(1, tmpStr.length-1);// removing ->{ ... }<-
|
|
2345
2488
|
// is last ?
|
|
2346
2489
|
if (m < mLen-1) {
|
|
2347
2490
|
tmpStr += ','
|
|
@@ -3108,7 +3251,14 @@
|
|
|
3108
3251
|
|
|
3109
3252
|
var processEvent = function() {
|
|
3110
3253
|
|
|
3111
|
-
|
|
3254
|
+
// if ( typeof($form.isBeingReseted) != 'undefined' && /^true$/.test($form.isBeingReseted) ) {
|
|
3255
|
+
// handleErrorsDisplay(event.target.form, {}, null, event.target.name);
|
|
3256
|
+
// return cancelEvent(event);
|
|
3257
|
+
// }
|
|
3258
|
+
|
|
3259
|
+
if ( !/^(password)$/i.test(event.target.type) ) {
|
|
3260
|
+
console.debug('processing: ' + event.target.name+ '/'+ event.target.id);
|
|
3261
|
+
}
|
|
3112
3262
|
|
|
3113
3263
|
// Do not validate `onChange` if `input value` === `orignal value`
|
|
3114
3264
|
// Or else, you will get an endless loop
|
|
@@ -3126,7 +3276,6 @@
|
|
|
3126
3276
|
} else {
|
|
3127
3277
|
handleErrorsDisplay(event.target.form, errors, null, event.target.name);
|
|
3128
3278
|
}
|
|
3129
|
-
//return cancelEvent(event);
|
|
3130
3279
|
}
|
|
3131
3280
|
|
|
3132
3281
|
|
|
@@ -3136,7 +3285,7 @@
|
|
|
3136
3285
|
|
|
3137
3286
|
instance.$forms[event.target.form.getAttribute('id')].isValidating = true;
|
|
3138
3287
|
validate(event.target, localField, $localField, $form.rules, function onLiveValidation(result){
|
|
3139
|
-
instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
|
|
3288
|
+
// instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
|
|
3140
3289
|
//console.debug('validation on processEvent(...) ', result);
|
|
3141
3290
|
|
|
3142
3291
|
var isFormValid = result.isValid();
|
|
@@ -3162,8 +3311,10 @@
|
|
|
3162
3311
|
instance.$forms[formId].isValidating = true;
|
|
3163
3312
|
validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
|
|
3164
3313
|
instance.$forms[formId].isValidating = false;
|
|
3165
|
-
console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
|
|
3314
|
+
console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
|
|
3315
|
+
// var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
|
|
3166
3316
|
var isFormValid = gResult.isValid();
|
|
3317
|
+
// var isFormValid = gResult.isValid();
|
|
3167
3318
|
if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
|
|
3168
3319
|
// update toolbar
|
|
3169
3320
|
if (!gina.forms.errors)
|
|
@@ -3178,6 +3329,27 @@
|
|
|
3178
3329
|
}
|
|
3179
3330
|
|
|
3180
3331
|
|
|
3332
|
+
if ( !isFormValid && gResult.error ) {
|
|
3333
|
+
// Fixed on 2025-03-16 - we need past and live errors
|
|
3334
|
+
instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
|
|
3335
|
+
// Fixed on 2025-03-16
|
|
3336
|
+
for (let eField in gResult.error) {
|
|
3337
|
+
refreshWarning($gFields[eField]);
|
|
3338
|
+
handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
|
|
3339
|
+
}
|
|
3340
|
+
}
|
|
3341
|
+
// Fixed on 2025-03-16
|
|
3342
|
+
// Eg.: input select change impacting another element: solve `no more errors`
|
|
3343
|
+
else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
|
|
3344
|
+
// recheck if valid
|
|
3345
|
+
//resetting error display
|
|
3346
|
+
instance.$forms[ formId ].errors = {};
|
|
3347
|
+
console.debug('resetting field: '+ $el.name);
|
|
3348
|
+
liveCheckErrors[formId] = {};
|
|
3349
|
+
// $form.dataset.ginaFormIsResetting = true;
|
|
3350
|
+
handleErrorsDisplay($gForm, {}, null, $el.name);
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3181
3353
|
updateSubmitTriggerState( $gForm, isFormValid);
|
|
3182
3354
|
|
|
3183
3355
|
once = false;
|
|
@@ -3211,13 +3383,16 @@
|
|
|
3211
3383
|
// other inputs & textareas
|
|
3212
3384
|
else if ( /^focusin\./i.test(event.type) ) {
|
|
3213
3385
|
if ( /\-error/.test($el.parentNode.className) ) {
|
|
3214
|
-
console.debug('#1 you just focusin ....'+$el.id, $el.value);
|
|
3386
|
+
console.debug('#1 you just focusin ....'+$el.id, $el.value, instance.$forms[ $el.form.getAttribute('id') ].isValidating);
|
|
3215
3387
|
refreshWarning($el);
|
|
3216
3388
|
}
|
|
3217
3389
|
}
|
|
3218
3390
|
else if ( /^focusout\./i.test(event.type) ) {
|
|
3219
3391
|
if ( /\-warning/.test($el.parentNode.className) ) {
|
|
3220
3392
|
console.debug('#1 you just focusout ....'+$el.id, $el.value);
|
|
3393
|
+
// Removed on 2025-03-16
|
|
3394
|
+
instance.$forms[ $el.form.getAttribute('id') ].isValidating = false;
|
|
3395
|
+
|
|
3221
3396
|
refreshWarning($el);
|
|
3222
3397
|
// in case error context is changed by another task
|
|
3223
3398
|
handleErrorsDisplay($el.form, instance.$forms[ $el.form.getAttribute('id') ].errors, null, $el.name);
|
|
@@ -3226,12 +3401,86 @@
|
|
|
3226
3401
|
else if ( /^keyup\./i.test(event.type) ) {
|
|
3227
3402
|
$el.ginaFormValidatorTestedValue = $el.value;
|
|
3228
3403
|
liveCheckTimer = setTimeout( function onLiveCheckTimer() {
|
|
3229
|
-
//
|
|
3230
|
-
if ( ['91', '17'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
|
|
3404
|
+
// Do not trigger for copy/paste events
|
|
3405
|
+
if ( ['91', '17', '16'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
|
|
3231
3406
|
//console.debug('mapping ', keyboardMapping);
|
|
3232
3407
|
return;
|
|
3233
3408
|
}
|
|
3234
|
-
|
|
3409
|
+
|
|
3410
|
+
// Fixed on 2025-03-16:
|
|
3411
|
+
// Treat TAB as focus in/out
|
|
3412
|
+
// if ( ['9'].indexOf(''+event.keyCode) > -1 ) {
|
|
3413
|
+
|
|
3414
|
+
// console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"');
|
|
3415
|
+
// var $gForm = event.target.form, gFields = null, $gFields = null, gRules = null;
|
|
3416
|
+
// var gValidatorInfos = getFormValidationInfos($gForm, rules);
|
|
3417
|
+
// gFields = gValidatorInfos.fields;
|
|
3418
|
+
// $gFields = gValidatorInfos.$fields;
|
|
3419
|
+
// var formId = $gForm.getAttribute('id');
|
|
3420
|
+
// gRules = instance.$forms[formId].rules;
|
|
3421
|
+
// // Don't be tempted to revome fields that has already been validated
|
|
3422
|
+
// instance.$forms[formId].isValidating = true;
|
|
3423
|
+
// validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
|
|
3424
|
+
// instance.$forms[formId].isValidating = false;
|
|
3425
|
+
// console.debug('['+ formId +'] [9] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
|
|
3426
|
+
// var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
|
|
3427
|
+
// // var isFormValid = gResult.isValid();
|
|
3428
|
+
// if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
|
|
3429
|
+
// // update toolbar
|
|
3430
|
+
// if (!gina.forms.errors)
|
|
3431
|
+
// gina.forms.errors = {};
|
|
3432
|
+
|
|
3433
|
+
// var objCallback = {
|
|
3434
|
+
// id : formId,
|
|
3435
|
+
// errors : gResult.error || {}
|
|
3436
|
+
// };
|
|
3437
|
+
|
|
3438
|
+
// window.ginaToolbar.update('forms', objCallback);
|
|
3439
|
+
// }
|
|
3440
|
+
|
|
3441
|
+
|
|
3442
|
+
// if ( !isFormValid && gResult.error ) {
|
|
3443
|
+
// // Fixed on 2025-03-16 - we need past and live errors
|
|
3444
|
+
// instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
|
|
3445
|
+
// // Fixed on 2025-03-16
|
|
3446
|
+
// for (let eField in instance.$forms[ $el.form.getAttribute('id') ].errors) {
|
|
3447
|
+
// refreshWarning($gFields[eField]);
|
|
3448
|
+
// handleErrorsDisplay($gForm, instance.$forms[ $el.form.getAttribute('id') ].errors, gResult.data, eField);
|
|
3449
|
+
// }
|
|
3450
|
+
// }
|
|
3451
|
+
// // Fixed on 2025-03-16
|
|
3452
|
+
// // Eg.: input select change impacting another element: solve `no more errors`
|
|
3453
|
+
// else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
|
|
3454
|
+
// // recheck if valid
|
|
3455
|
+
// //resetting error display
|
|
3456
|
+
// instance.$forms[ formId ].errors = {};
|
|
3457
|
+
// console.debug('resetting field: '+ $el.name);
|
|
3458
|
+
// liveCheckErrors[formId] = {};
|
|
3459
|
+
// // $form.dataset.ginaFormIsResetting = true;
|
|
3460
|
+
// handleErrorsDisplay($gForm, {}, null, $el.name);
|
|
3461
|
+
// }
|
|
3462
|
+
|
|
3463
|
+
// updateSubmitTriggerState( $gForm, isFormValid);
|
|
3464
|
+
|
|
3465
|
+
// once = false;
|
|
3466
|
+
// });
|
|
3467
|
+
// // var $previeousEl = document.getElementById(instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id);
|
|
3468
|
+
// // var errors = instance.$forms[ $previeousEl.form.getAttribute('id') ].errors;
|
|
3469
|
+
// // var isFormValid = (!errors[$previeousEl.name]) ? true : false;
|
|
3470
|
+
// // console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"', "errors: ", errors);
|
|
3471
|
+
// // if (errors && errors.count() > 0 ) {
|
|
3472
|
+
// // instance.$forms[ $previeousEl.form.getAttribute('id') ].isValidating = false;
|
|
3473
|
+
// // isFormValid = false;
|
|
3474
|
+
// // }
|
|
3475
|
+
// // refreshWarning($previeousEl);
|
|
3476
|
+
// // // // in case error context is changed by another task
|
|
3477
|
+
// // handleErrorsDisplay($previeousEl.form, errors, null, $previeousEl.name);
|
|
3478
|
+
// // updateSubmitTriggerState( $el.form, isFormValid);
|
|
3479
|
+
// return;
|
|
3480
|
+
// }
|
|
3481
|
+
|
|
3482
|
+
|
|
3483
|
+
console.debug('[A]['+keyboardMapping.count()+'] keyup ('+ event.keyCode +') .... '+$el.id, $el.value, ' VS ',$el.ginaFormValidatorTestedValue + '(old)');
|
|
3235
3484
|
processEvent();
|
|
3236
3485
|
}, 1000);
|
|
3237
3486
|
}
|
|
@@ -3331,16 +3580,42 @@
|
|
|
3331
3580
|
//console.debug('pressed: '+ e.key+'('+ e.keyCode+')', ' S:'+posStart, ' E:'+posEnd, ' MAP: '+ JSON.stringify(keyboardMapping));
|
|
3332
3581
|
switch (e.keyCode) {
|
|
3333
3582
|
case 46: //Delete
|
|
3583
|
+
if (posStart != posEnd) {
|
|
3584
|
+
$_el.value = str.substring(0, posStart) + str.substring(posEnd);
|
|
3585
|
+
if (posStart == 0) {
|
|
3586
|
+
$_el.value = str.substring(posEnd+1);
|
|
3587
|
+
}
|
|
3588
|
+
} else if (posStart == 0) {
|
|
3589
|
+
$_el.value = str.substring(posStart+1);
|
|
3590
|
+
} else {
|
|
3591
|
+
$_el.value = str.substring(0, posStart) + str.substring(posEnd+1);
|
|
3592
|
+
}
|
|
3593
|
+
|
|
3594
|
+
e.currentTarget.setAttribute('readonly', 'readonly');
|
|
3595
|
+
setTimeout(() => {
|
|
3596
|
+
$_el.removeAttribute('readonly');
|
|
3597
|
+
setTimeout(() => {
|
|
3598
|
+
if (posStart != posEnd) {
|
|
3599
|
+
setCaretToPos($_el, posStart);
|
|
3600
|
+
} else if (posStart == 0) {
|
|
3601
|
+
setCaretToPos($_el, posStart);
|
|
3602
|
+
} else {
|
|
3603
|
+
setCaretToPos($_el, posStart);
|
|
3604
|
+
}
|
|
3605
|
+
}, 0)
|
|
3606
|
+
|
|
3607
|
+
}, 0);
|
|
3608
|
+
break
|
|
3334
3609
|
case 8: //Backspace
|
|
3335
3610
|
if (posStart != posEnd) {
|
|
3336
|
-
$_el.value = str.
|
|
3611
|
+
$_el.value = str.substring(0, posStart) + str.substring(posEnd);
|
|
3337
3612
|
if (posStart == 0) {
|
|
3338
|
-
$_el.value = str.
|
|
3613
|
+
$_el.value = str.substring(posEnd);
|
|
3339
3614
|
}
|
|
3340
3615
|
} else if (posStart == 0) {
|
|
3341
3616
|
$_el.value = str.substring(posStart+1);
|
|
3342
3617
|
} else {
|
|
3343
|
-
$_el.value = str.
|
|
3618
|
+
$_el.value = str.substring(0, posStart-1) + str.substring(posEnd);
|
|
3344
3619
|
}
|
|
3345
3620
|
|
|
3346
3621
|
e.currentTarget.setAttribute('readonly', 'readonly');
|
|
@@ -3378,9 +3653,9 @@
|
|
|
3378
3653
|
}
|
|
3379
3654
|
break;
|
|
3380
3655
|
// Shortcuts
|
|
3381
|
-
case 17: //CTRL
|
|
3382
|
-
case 91: //CMD
|
|
3383
|
-
console.debug("CMD hit");
|
|
3656
|
+
case 17: // CTRL
|
|
3657
|
+
case 91: // CMD
|
|
3658
|
+
console.debug("CMD, CTRL hit");
|
|
3384
3659
|
e.preventDefault();
|
|
3385
3660
|
break;
|
|
3386
3661
|
case 67: // to handle CMD+C (copy)
|
|
@@ -3427,15 +3702,18 @@
|
|
|
3427
3702
|
}
|
|
3428
3703
|
default:
|
|
3429
3704
|
// Replace selection
|
|
3705
|
+
if (e.key.length > 1) {
|
|
3706
|
+
break;
|
|
3707
|
+
}
|
|
3430
3708
|
if (posStart != posEnd) {
|
|
3431
|
-
$_el.value = str.
|
|
3709
|
+
$_el.value = str.substring(0, posStart) + e.key;
|
|
3432
3710
|
if (posEnd-1 < str.length) {
|
|
3433
3711
|
$_el.value += str.substring(posEnd)
|
|
3434
3712
|
}
|
|
3435
3713
|
} else if (posStart == 0) {
|
|
3436
3714
|
$_el.value = e.key + str.substring(posStart);
|
|
3437
3715
|
} else {
|
|
3438
|
-
$_el.value = str.
|
|
3716
|
+
$_el.value = str.substring(0, posStart) + e.key + str.substring(posEnd);
|
|
3439
3717
|
}
|
|
3440
3718
|
e.currentTarget.setAttribute('readonly', 'readonly');
|
|
3441
3719
|
// Force restore last caret position
|
|
@@ -3577,24 +3855,53 @@
|
|
|
3577
3855
|
}
|
|
3578
3856
|
|
|
3579
3857
|
/**
|
|
3580
|
-
* reBindForm
|
|
3858
|
+
* reBindForm
|
|
3859
|
+
* Allows form rebinding: it is like reseting validation
|
|
3581
3860
|
*
|
|
3582
|
-
*
|
|
3583
|
-
*
|
|
3584
|
-
*
|
|
3861
|
+
* E.g.:
|
|
3862
|
+
* $validator
|
|
3863
|
+
* .getFormById('my-form-id')
|
|
3864
|
+
* .reBind();
|
|
3865
|
+
*
|
|
3866
|
+
* @param {string} [formId]
|
|
3867
|
+
* @param {string} [rules]
|
|
3868
|
+
* @param {callback} [cb]
|
|
3585
3869
|
*/
|
|
3586
|
-
var reBindForm = function(
|
|
3587
|
-
|
|
3588
|
-
|
|
3870
|
+
var reBindForm = function(formId, rules, cb) {
|
|
3871
|
+
var $form = null
|
|
3872
|
+
, _id = null
|
|
3873
|
+
;
|
|
3874
|
+
if (
|
|
3875
|
+
typeof(this.target) != 'undefined'
|
|
3876
|
+
&& /FORM/i.test(this.target.tagName)
|
|
3877
|
+
) {
|
|
3878
|
+
_id = formId = this.target.getAttribute('id')
|
|
3879
|
+
} else if ( /string/i.test(typeof(formId)) ) {
|
|
3880
|
+
_id = formId
|
|
3881
|
+
}
|
|
3882
|
+
|
|
3883
|
+
if ( typeof(instance.$forms[_id]) != 'undefined') {
|
|
3884
|
+
$form = instance.$forms[_id];
|
|
3885
|
+
} else {
|
|
3886
|
+
throw new Error('form instance `'+ _id +'` not found');
|
|
3887
|
+
}
|
|
3888
|
+
|
|
3589
3889
|
// reset errors
|
|
3590
|
-
|
|
3890
|
+
resetErrorsDisplay(_id);
|
|
3891
|
+
// Unbind form
|
|
3892
|
+
unbindForm($form.target);
|
|
3591
3893
|
// Bind
|
|
3592
|
-
|
|
3894
|
+
if ( typeof(rule) != 'undefined' ) {
|
|
3895
|
+
bindForm($form.target, rules);
|
|
3896
|
+
} else {
|
|
3897
|
+
bindForm($form.target);
|
|
3898
|
+
}
|
|
3593
3899
|
|
|
3594
3900
|
if ( cb ) {
|
|
3595
|
-
return cb(
|
|
3901
|
+
return cb($form);
|
|
3596
3902
|
}
|
|
3597
|
-
|
|
3903
|
+
|
|
3904
|
+
return $form;
|
|
3598
3905
|
}
|
|
3599
3906
|
|
|
3600
3907
|
var unbindForm = function($target) {
|
|
@@ -3612,7 +3919,7 @@
|
|
|
3612
3919
|
|
|
3613
3920
|
} else if ( typeof($target.target) != 'undefined' ) {
|
|
3614
3921
|
$form = $target;
|
|
3615
|
-
_id = $form.id;
|
|
3922
|
+
_id = ( $target.getAttribute && $target.getAttribute('id') ) ? $form.getAttribute('id') : $form.id;
|
|
3616
3923
|
} else {
|
|
3617
3924
|
throw new Error('Validator::unbindForm($target): `$target` must be a DOM element\n'+err.stack )
|
|
3618
3925
|
}
|
|
@@ -3651,7 +3958,7 @@
|
|
|
3651
3958
|
// submit buttons
|
|
3652
3959
|
$elTMP = $form.target.getElementsByTagName('button');
|
|
3653
3960
|
if ( $elTMP.length > 0 ) {
|
|
3654
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3961
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3655
3962
|
// if button is != type="submit", you will need to provide : data-gina-form-submit
|
|
3656
3963
|
// TODO - On button binding, you can then provide data-gina-form-action & data-gina-form-method
|
|
3657
3964
|
$els.push($elTMP[i])
|
|
@@ -3661,7 +3968,7 @@
|
|
|
3661
3968
|
// submit links
|
|
3662
3969
|
$elTMP = $form.target.getElementsByTagName('a');
|
|
3663
3970
|
if ( $elTMP.length > 0 ) {
|
|
3664
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3971
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3665
3972
|
$els.push($elTMP[i])
|
|
3666
3973
|
}
|
|
3667
3974
|
}
|
|
@@ -3717,7 +4024,7 @@
|
|
|
3717
4024
|
// textarea
|
|
3718
4025
|
$elTMP = $form.target.getElementsByTagName('textarea');
|
|
3719
4026
|
if ( $elTMP.length > 0 ) {
|
|
3720
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
4027
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3721
4028
|
$els.push( $elTMP[i] )
|
|
3722
4029
|
}
|
|
3723
4030
|
}
|
|
@@ -3726,7 +4033,7 @@
|
|
|
3726
4033
|
// forms inside main form
|
|
3727
4034
|
$elTMP = $form.target.getElementsByTagName('form');
|
|
3728
4035
|
if ( $elTMP.length > 0 ) {
|
|
3729
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
4036
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3730
4037
|
$els.push( $elTMP[i] )
|
|
3731
4038
|
}
|
|
3732
4039
|
}
|
|
@@ -3811,8 +4118,10 @@
|
|
|
3811
4118
|
/**
|
|
3812
4119
|
* bindForm
|
|
3813
4120
|
*
|
|
3814
|
-
* @param {object} $target - DOM element
|
|
3815
|
-
* @param {object} [customRule]
|
|
4121
|
+
* @param {object} [$target] - DOM element
|
|
4122
|
+
* @param {object|string} [customRule]
|
|
4123
|
+
*
|
|
4124
|
+
* @return {object} bindedForm
|
|
3816
4125
|
* */
|
|
3817
4126
|
var bindForm = function($target, customRule) {
|
|
3818
4127
|
|
|
@@ -3821,23 +4130,32 @@
|
|
|
3821
4130
|
, rules = ( typeof(local.rules.count() > 0 ) ) ? local.rules : instance.rules
|
|
3822
4131
|
;
|
|
3823
4132
|
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
4133
|
+
if (
|
|
4134
|
+
typeof($target) == 'undefined'
|
|
4135
|
+
&& typeof(this.target) != 'undefined'
|
|
4136
|
+
&& /FORM/i.test(this.target.tagName)
|
|
4137
|
+
||
|
|
4138
|
+
!/object/i.test( typeof($target) )
|
|
4139
|
+
) {
|
|
4140
|
+
_id = this.target.id || this.target.getAttribute('id');
|
|
4141
|
+
} else if ( /string/i.test(typeof($target)) ) {
|
|
4142
|
+
_id = $target
|
|
4143
|
+
} else {
|
|
4144
|
+
_id = $target.getAttribute('id')
|
|
4145
|
+
}
|
|
3831
4146
|
|
|
4147
|
+
try {
|
|
4148
|
+
if ( typeof(instance.$forms[_id]) != 'undefined') {
|
|
4149
|
+
$form = instance.$forms[_id];
|
|
4150
|
+
if ( typeof($form.target) == 'undefined' ) {
|
|
4151
|
+
throw new Error('Validator::bindForm($target, customRule): `$target` must be a DOM element\n');
|
|
4152
|
+
}
|
|
4153
|
+
$target = $form.target;
|
|
3832
4154
|
} else {
|
|
3833
|
-
throw new Error('
|
|
4155
|
+
throw new Error('form instance `'+ _id +'` not found');
|
|
3834
4156
|
}
|
|
3835
4157
|
} catch(err) {
|
|
3836
|
-
throw new Error('Validator::bindForm($target, customRule) could not bind form `'+ $target +'`\n'+err.stack )
|
|
3837
|
-
}
|
|
3838
|
-
|
|
3839
|
-
if ( typeof($form) != 'undefined' && $form.binded) {
|
|
3840
|
-
return false
|
|
4158
|
+
throw new Error('Validator::bindForm($target, customRule) could not bind form `'+ $target +'`\n'+err.stack );
|
|
3841
4159
|
}
|
|
3842
4160
|
|
|
3843
4161
|
console.debug('binding for: '+ _id);
|
|
@@ -4143,7 +4461,7 @@
|
|
|
4143
4461
|
} else if ( /img/i.test($els[i].tagName) ) {
|
|
4144
4462
|
$img = $els[i];
|
|
4145
4463
|
deleteLinkId = uploadTriggerId + '-'+index+'-delete-trigger';
|
|
4146
|
-
let file = $img.src.
|
|
4464
|
+
let file = $img.src.substring($img.src.lastIndexOf('/')+1);
|
|
4147
4465
|
$uploadTrigger.customFiles.push({
|
|
4148
4466
|
name: file,
|
|
4149
4467
|
deleteLinkId: deleteLinkId
|
|
@@ -4502,7 +4820,10 @@
|
|
|
4502
4820
|
var updateSelect = function($el, $form) {
|
|
4503
4821
|
$el.setAttribute('data-value', $el.value);
|
|
4504
4822
|
// If Live check enabled, proceed to silent validation
|
|
4505
|
-
if (
|
|
4823
|
+
if (
|
|
4824
|
+
/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled && $form.rules.count() > 0)
|
|
4825
|
+
// && typeof($form.isBeingReseted) == 'undefined'
|
|
4826
|
+
) {
|
|
4506
4827
|
var localField = {}, $localField = {}, $localForm = null;
|
|
4507
4828
|
$localForm = $el.form;//event.target.form
|
|
4508
4829
|
localField[event.target.name] = event.target.value;
|
|
@@ -4535,7 +4856,16 @@
|
|
|
4535
4856
|
validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
|
|
4536
4857
|
instance.$forms[formId].isValidating = false;
|
|
4537
4858
|
console.debug('[updateSelect]: onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
|
|
4859
|
+
// Fixed on 2025-03-16
|
|
4538
4860
|
var isFormValid = gResult.isValid();
|
|
4861
|
+
if (!isFormValid) {
|
|
4862
|
+
instance.$forms[formId].errors = gResult.error;
|
|
4863
|
+
for (let eField in gResult.error) {
|
|
4864
|
+
// refreshWarning($gFields[eField]);
|
|
4865
|
+
handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
|
|
4866
|
+
}
|
|
4867
|
+
}
|
|
4868
|
+
|
|
4539
4869
|
updateSubmitTriggerState( $gForm, isFormValid);
|
|
4540
4870
|
once = false;
|
|
4541
4871
|
})
|
|
@@ -5129,6 +5459,25 @@
|
|
|
5129
5459
|
if (gina.events[_evt]) {
|
|
5130
5460
|
cancelEvent(event);
|
|
5131
5461
|
|
|
5462
|
+
// Fixed on 2025-03-05 - "last focus" vs "current focus"
|
|
5463
|
+
// To get active element: document.activeElement
|
|
5464
|
+
var formId = event.target.form.getAttribute('id') || event.currentTarget.getAttribute('id');
|
|
5465
|
+
var lastFocused = {
|
|
5466
|
+
id : $el.id,
|
|
5467
|
+
name: $el.name
|
|
5468
|
+
};
|
|
5469
|
+
if (!instance.$forms[formId].lastFocused.length) {
|
|
5470
|
+
instance.$forms[formId].lastFocused[0] = lastFocused;
|
|
5471
|
+
} else {
|
|
5472
|
+
instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
|
|
5473
|
+
}
|
|
5474
|
+
lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
|
|
5475
|
+
|
|
5476
|
+
// cleanup
|
|
5477
|
+
instance.$forms[formId].lastFocused.splice(2);
|
|
5478
|
+
|
|
5479
|
+
// console.debug('lastFocused: ', lastFocused, ' VS current: ', $el.id);
|
|
5480
|
+
|
|
5132
5481
|
triggerEvent(gina, $el, _evt, event.detail);
|
|
5133
5482
|
}
|
|
5134
5483
|
});
|
|
@@ -5302,7 +5651,9 @@
|
|
|
5302
5651
|
||
|
|
5303
5652
|
isCustomSubmit && !/^submit\./i.test(_evt)
|
|
5304
5653
|
) {
|
|
5305
|
-
_evt = 'submit.'+_evt
|
|
5654
|
+
_evt = 'submit.'+_evt;
|
|
5655
|
+
// Updating submitTrigger in case it has been changed on the fly
|
|
5656
|
+
instance.$forms[$form.id].submitTrigger = $form.submitTrigger = $el.id;
|
|
5306
5657
|
}
|
|
5307
5658
|
// in case we have multiple reset type buttons
|
|
5308
5659
|
if ( $el.type == 'reset' && !/^reset\./i.test(_evt) ) {
|
|
@@ -5394,10 +5745,11 @@
|
|
|
5394
5745
|
, isDisabled = null
|
|
5395
5746
|
;
|
|
5396
5747
|
|
|
5397
|
-
|
|
5398
|
-
if
|
|
5399
|
-
|
|
5400
|
-
|
|
5748
|
+
|
|
5749
|
+
// stop there if form has already been sent - anti spam
|
|
5750
|
+
// if (instance.$forms[id].sent) {
|
|
5751
|
+
// return;
|
|
5752
|
+
// }
|
|
5401
5753
|
|
|
5402
5754
|
var validatorInfos = getFormValidationInfos($target, rules);
|
|
5403
5755
|
fields = validatorInfos.fields;
|
|
@@ -5445,7 +5797,7 @@
|
|
|
5445
5797
|
;
|
|
5446
5798
|
$buttonsTMP = $target.getElementsByTagName('button');
|
|
5447
5799
|
if ( $buttonsTMP.length > 0 ) {
|
|
5448
|
-
for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5800
|
+
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5449
5801
|
if ($buttonsTMP[b].type == 'submit') {
|
|
5450
5802
|
$buttons.push($buttonsTMP[b])
|
|
5451
5803
|
}
|
|
@@ -5455,7 +5807,7 @@
|
|
|
5455
5807
|
// binding links
|
|
5456
5808
|
$buttonsTMP = $target.getElementsByTagName('a');
|
|
5457
5809
|
if ( $buttonsTMP.length > 0 ) {
|
|
5458
|
-
for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5810
|
+
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5459
5811
|
if ( $buttonsTMP[b].attributes.getNamedItem('data-gina-form-submit') ) {
|
|
5460
5812
|
$buttons.push($buttonsTMP[b])
|
|
5461
5813
|
} else if (
|
|
@@ -5571,8 +5923,9 @@
|
|
|
5571
5923
|
}
|
|
5572
5924
|
|
|
5573
5925
|
// prevent event to be triggered twice
|
|
5574
|
-
if ( typeof(e.defaultPrevented) != 'undefined' && e.defaultPrevented )
|
|
5926
|
+
if ( typeof(e.defaultPrevented) != 'undefined' && e.defaultPrevented ) {
|
|
5575
5927
|
return false;
|
|
5928
|
+
}
|
|
5576
5929
|
|
|
5577
5930
|
if (withRules || isBinded) {
|
|
5578
5931
|
cancelEvent(e);
|
|
@@ -5712,7 +6065,8 @@
|
|
|
5712
6065
|
}
|
|
5713
6066
|
updateSubmitTriggerState( $form, result.isValid() );
|
|
5714
6067
|
});
|
|
5715
|
-
}
|
|
6068
|
+
}
|
|
6069
|
+
else if (!/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) ) {
|
|
5716
6070
|
updateSubmitTriggerState( $form , true );
|
|
5717
6071
|
}
|
|
5718
6072
|
|
|
@@ -5729,10 +6083,18 @@
|
|
|
5729
6083
|
}
|
|
5730
6084
|
//if (!$formInstance) return;
|
|
5731
6085
|
|
|
5732
|
-
|
|
6086
|
+
|
|
6087
|
+
if (
|
|
6088
|
+
typeof($formInstance.submitTrigger) == 'undefined'
|
|
6089
|
+
&& /^(true)$/i.test($formInstance.target.dataset.ginaFormLiveCheckEnabled)
|
|
6090
|
+
) {
|
|
5733
6091
|
console.warn('This might be normal, so do not worry if this form is handled by your javascript: `'+ $formInstance.id +'`\nGina could not complete `updateSubmitTriggerState()`: `submitTrigger` might not be attached to form instance `'+ $formInstance.id +'`\nTo disable this warning, You just need to disable `Form Live Checking on your form by adding to your <form>: `data-gina-form-live-check-enabled=false``')
|
|
5734
6092
|
} else if ( document.getElementById($formInstance.submitTrigger) ) {
|
|
5735
|
-
if (
|
|
6093
|
+
if (
|
|
6094
|
+
/^true$/i.test(isFormValid)
|
|
6095
|
+
||
|
|
6096
|
+
!/^(true)$/i.test($formInstance.target.dataset.ginaFormLiveCheckEnabled)
|
|
6097
|
+
) { // show submitTrigge
|
|
5736
6098
|
document.getElementById($formInstance.submitTrigger).disabled = false;
|
|
5737
6099
|
} else { // hide submitTrigger
|
|
5738
6100
|
document.getElementById($formInstance.submitTrigger).disabled = true;
|
|
@@ -6175,7 +6537,8 @@
|
|
|
6175
6537
|
if ( !/^form$/i.test($formOrElement.tagName) ) {
|
|
6176
6538
|
$currentForm = $formOrElement.form;
|
|
6177
6539
|
}
|
|
6178
|
-
var formId
|
|
6540
|
+
var formId = $currentForm.getAttribute('id');
|
|
6541
|
+
var isFormValid = null;
|
|
6179
6542
|
|
|
6180
6543
|
if (
|
|
6181
6544
|
hasParsedAllRules
|
|
@@ -6196,10 +6559,16 @@
|
|
|
6196
6559
|
if ( typeof(instance.$forms[formId].errors) == 'undefined' ) {
|
|
6197
6560
|
instance.$forms[formId].errors = {}
|
|
6198
6561
|
}
|
|
6562
|
+
// Fixed on 2025-03-16
|
|
6563
|
+
if ( typeof(cb._errors[field]) != 'undefined' ) {
|
|
6564
|
+
instance.$forms[formId].errors[field] = cb._errors[field];
|
|
6565
|
+
}
|
|
6566
|
+
console.debug('[A] Refreshing warning/error on field '+ field);
|
|
6567
|
+
if (
|
|
6568
|
+
!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)
|
|
6569
|
+
|| d[field].target.value != ''
|
|
6199
6570
|
|
|
6200
|
-
|
|
6201
|
-
|
|
6202
|
-
if (!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating) || d[field].target.value != '' ) {
|
|
6571
|
+
) {
|
|
6203
6572
|
refreshWarning($allFields[field]);
|
|
6204
6573
|
handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
|
|
6205
6574
|
updateSubmitTriggerState( $currentForm, isFormValid);
|
|
@@ -6207,8 +6576,9 @@
|
|
|
6207
6576
|
|
|
6208
6577
|
if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
|
|
6209
6578
|
// update toolbar
|
|
6210
|
-
if (!gina.forms.errors)
|
|
6579
|
+
if (!gina.forms.errors) {
|
|
6211
6580
|
gina.forms.errors = {};
|
|
6581
|
+
}
|
|
6212
6582
|
|
|
6213
6583
|
var objCallback = {
|
|
6214
6584
|
id : formId,
|
|
@@ -6225,13 +6595,13 @@
|
|
|
6225
6595
|
}
|
|
6226
6596
|
|
|
6227
6597
|
// is this the last or the only field to be validated ?
|
|
6228
|
-
var needsGlobalReValidation = false
|
|
6598
|
+
var needsGlobalReValidation = false;
|
|
6229
6599
|
if ( listedFields.length == 1 || listedFields[listedFields.length-1] == field) {
|
|
6230
6600
|
// trigger end of validation
|
|
6231
6601
|
// console.debug(field +' is the last element to be validated for formId: '+ formId, cb._errors, instance.$forms[formId].errors);
|
|
6232
6602
|
isFormValid = ( cb._errors.count() > 0 ) ? false : true;
|
|
6233
6603
|
if (!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)) {
|
|
6234
|
-
|
|
6604
|
+
console.debug('[1] Should update error display now ', cb._errors);
|
|
6235
6605
|
instance.$forms[formId].errors = merge(cb._errors, instance.$forms[formId].errors);
|
|
6236
6606
|
refreshWarning($allFields[field]);
|
|
6237
6607
|
handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
|
|
@@ -6263,8 +6633,6 @@
|
|
|
6263
6633
|
window.ginaToolbar.update('forms', objCallback);
|
|
6264
6634
|
}
|
|
6265
6635
|
|
|
6266
|
-
|
|
6267
|
-
|
|
6268
6636
|
handleErrorsDisplay($currentForm, gResult.error, gResult.data, field);
|
|
6269
6637
|
updateSubmitTriggerState( $currentForm, isFormValid);
|
|
6270
6638
|
})
|
|
@@ -6408,7 +6776,7 @@
|
|
|
6408
6776
|
|
|
6409
6777
|
for (var c in rules) {
|
|
6410
6778
|
if (!/^\_case\_/.test(c) ) continue;
|
|
6411
|
-
if ( typeof(rules[c].conditions) == 'undefined' ||
|
|
6779
|
+
if ( typeof(rules[c].conditions) == 'undefined' || Array.isArray(rules[c].conditions) && !rules[c].conditions.length ) continue;
|
|
6412
6780
|
if ( typeof(rules[c].conditions[0].rules) == 'undefined' ) continue;
|
|
6413
6781
|
|
|
6414
6782
|
|
|
@@ -6590,7 +6958,14 @@
|
|
|
6590
6958
|
// filtering conditions
|
|
6591
6959
|
for (var _c = 0, _cLen = rules[c].conditions.length; _c < _cLen; ++_c) {
|
|
6592
6960
|
|
|
6593
|
-
if (
|
|
6961
|
+
if (
|
|
6962
|
+
Array.isArray(rules[c].conditions[_c].case)
|
|
6963
|
+
&& rules[c].conditions[_c].case.indexOf(caseValue) == -1
|
|
6964
|
+
||
|
|
6965
|
+
!Array.isArray(rules[c].conditions[_c].case)
|
|
6966
|
+
&& rules[c].conditions[_c].case != caseValue
|
|
6967
|
+
|
|
6968
|
+
) {
|
|
6594
6969
|
continue;
|
|
6595
6970
|
}
|
|
6596
6971
|
|
|
@@ -6735,7 +7110,8 @@
|
|
|
6735
7110
|
if (
|
|
6736
7111
|
conditions[c]['case'] === caseValue
|
|
6737
7112
|
||
|
|
6738
|
-
Array.isArray(conditions[c]['case'])
|
|
7113
|
+
Array.isArray(conditions[c]['case'])
|
|
7114
|
+
&& conditions[c]['case'].indexOf(caseValue) > -1
|
|
6739
7115
|
||
|
|
6740
7116
|
/^\//.test(conditions[c]['case'])
|
|
6741
7117
|
) {
|
|
@@ -6852,8 +7228,6 @@
|
|
|
6852
7228
|
}
|
|
6853
7229
|
--i;
|
|
6854
7230
|
}
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
7231
|
} // EO for
|
|
6858
7232
|
}
|
|
6859
7233
|
|
|
@@ -6874,7 +7248,7 @@
|
|
|
6874
7248
|
}
|
|
6875
7249
|
|
|
6876
7250
|
if (isGFFCtx)
|
|
6877
|
-
$fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].
|
|
7251
|
+
$fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].substring(0, fieldErrorsAttributes[field].length-1))
|
|
6878
7252
|
}
|
|
6879
7253
|
|
|
6880
7254
|
//calling back
|
|
@@ -6945,6 +7319,8 @@
|
|
|
6945
7319
|
'data' : formatData( _data )
|
|
6946
7320
|
});
|
|
6947
7321
|
removeListener(gina, event.target, 'validated.' + event.target.id);
|
|
7322
|
+
|
|
7323
|
+
|
|
6948
7324
|
return
|
|
6949
7325
|
}
|
|
6950
7326
|
});
|