gina 0.1.6-alpha.14 → 0.1.6-alpha.140
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.140}/LICENSE +1 -1
- package/framework/v0.1.6-alpha.140/VERSION +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/plugin/README.md +1 -0
- package/framework/v0.1.6-alpha.140/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/plugin/dist/vendor/gina/js/gina.js +765 -256
- package/framework/v0.1.6-alpha.140/core/asset/plugin/dist/vendor/gina/js/gina.min.js +782 -0
- package/framework/v0.1.6-alpha.140/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
- package/framework/v0.1.6-alpha.140/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
- package/framework/v0.1.6-alpha.140/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.140}/core/config.js +158 -78
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/index.js +108 -26
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/connector.v4.js +124 -22
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/session-store.v4.js +5 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/controller/controller.js +762 -189
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/controller/index.js +2 -2
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/README.md +191 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/lib/index.js +57 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/lib/utils.js +596 -0
- package/framework/v0.1.6-alpha.140/core/deps/busboy-1.6.0/package.json +22 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/.travis.yml +4 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/LICENSE +21 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/bool.js +10 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/boolean_double.js +7 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/boolean_single.js +7 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/default_hash.js +8 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/default_singles.js +7 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/divide.js +8 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/line_count.js +20 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/line_count_options.js +29 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/line_count_wrap.js +29 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/nonopt.js +4 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/reflect.js +2 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/short.js +3 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/string.js +11 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/usage-options.js +19 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/example/xup.js +10 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/index.js +343 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/package.json +31 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/package.json.dist +39 -0
- package/framework/v0.1.6-alpha.140/core/deps/optimist-0.6.1/readme.markdown +513 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/HISTORY.md +498 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/LICENSE +7 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/README.md +88 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/bin/swig.js +161 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/bin/swig.js.dist +161 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/dist/swig.min.js.map +8 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/index.js +1 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/dateformatter.js +198 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/filters.js +630 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/lexer.js +306 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/loaders/filesystem.js +59 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/loaders/index.js +53 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/loaders/memory.js +63 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/parser.js +744 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/swig.js +740 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/autoescape.js +37 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/block.js +25 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/else.js +25 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/elseif.js +28 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/extends.js +19 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/filter.js +68 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/for.js +130 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/if.js +86 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/import.js +91 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/include.js +100 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/index.js +16 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/macro.js +79 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/parent.js +51 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/raw.js +23 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/set.js +109 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/tags/spaceless.js +42 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/lib/utils.js +184 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/package.json +57 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-1.4.2/package.json.dist +61 -0
- package/framework/v0.1.6-alpha.140/core/deps/swig-client/swig.js +5031 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/dev/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/dev/lib/factory.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/gna.js +104 -22
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/index.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/src/make.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/mime.types +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/model/entity.js +5 -5
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/model/index.js +30 -26
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/model/template/entityFactory.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/model/template/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/index.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/file/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/intl/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/storage/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/validator/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/validator/src/form-validator.js +39 -27
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/validator/src/main.js +477 -114
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/router.js +92 -47
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/server.isaac.js +94 -43
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/server.js +329 -134
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/status.codes +1 -11
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/controllers/setup.js +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/command/gina.tpl +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/conf/env.json +19 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/conf/templates.json +4 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/console.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/context.js +30 -13
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/data/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/data/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/dateFormat.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/json/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/json/src/main.js +6 -4
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/path.js +31 -15
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/plugins/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/plugins/src/api-error.js +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/plugins/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/task.js +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/text.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/archiver/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/archiver/src/main.js +11 -11
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/add.js +2 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/start.js +21 -8
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/get.js +1 -1
- package/framework/v0.1.6-alpha.140/lib/cmd/env/help.js +30 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/build.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/dot.js +21 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/init.js +19 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/link-node-modules.js +2 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/link.js +3 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/restart.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/start.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/tail.js +29 -12
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/version.js +15 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/helper.js +8 -4
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/index.js +1 -1
- package/framework/v0.1.6-alpha.140/lib/cmd/minion/help.txt +18 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/port/reset.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/add.js +7 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/arguments.json +1 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/build.js +4 -4
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/help.txt +4 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/list.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/protocol/list.js +71 -50
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/collection/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/collection/src/main.js +20 -14
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/config.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cron/package.json +2 -2
- package/framework/v0.1.6-alpha.140/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +15754 -0
- package/framework/v0.1.6-alpha.140/lib/domain/dist/public_suffix_list.dat +15754 -0
- package/framework/v0.1.6-alpha.140/lib/domain/exemples/backend.js +12 -0
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/domain/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/domain/src/main.js +20 -6
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/generator/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140/lib/inherits}/LICENSE +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/inherits/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/inherits/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/containers/mq/listener.js +10 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/helper.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/math/index.js +1 -1
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/merge/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/model.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/proc.js +10 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/routing/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/routing/src/main.js +82 -26
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/session-store.js +3 -3
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/swig-filters/package.json +2 -2
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/swig-filters/src/main.js +76 -15
- package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/validator.js +2 -2
- package/framework/v0.1.6-alpha.140/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.140}/AUTHORS +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/html/static.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/asset/plugin/uuid.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.1.6-alpha.14/core/deps/busboy → v0.1.6-alpha.140/core/deps/busboy-1.6.0}/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/currency.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/src/resources/currency.csv +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/src/resources/region.csv +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/locales/src/resources/region.mapping.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/server.express.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/_gitignore +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/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.140}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/conf/package.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/data/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/json/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/helpers/prototypes.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/archiver/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/archiver/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.1.6-alpha.14/lib/cmd/env → v0.1.6-alpha.140/lib/cmd/minion}/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/collection/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/collection/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cron/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/domain/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/domain/exemples/frontend.html +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/inherits/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/inherits/example/inheriting_eventemitter.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/inherits/example/protected_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/inherits/example/simple_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/merge/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/merge/example/merge.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/merge/example/merge_2_literal objects.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/merge/example/merge_and_preserve_first.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/routing/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/routing/build.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/shell.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/url/README.md +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/url/index.js +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/url/mocks.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/url/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/lib/url/test.js +0 -0
package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.140}/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,35 @@
|
|
|
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
|
+
$submitTrigger.setAttribute('disabled', true)
|
|
1067
|
+
}
|
|
1068
|
+
}
|
|
971
1069
|
//handleXhrResponse(xhr, $target, id, $form, hFormIsRequired);
|
|
972
1070
|
xhr.onreadystatechange = function onValidationCallback(event) {
|
|
973
1071
|
$form.isSubmitting = false;
|
|
974
1072
|
$form.isSending = false;
|
|
975
1073
|
|
|
976
1074
|
// limit send trigger to 1 sec to prevent from double clicks
|
|
977
|
-
setTimeout( function onSent() {
|
|
978
|
-
|
|
979
|
-
}, 1000);
|
|
980
|
-
|
|
1075
|
+
// setTimeout( function onSent() {
|
|
1076
|
+
// $form.sent = false;
|
|
1077
|
+
// }, 1000); // 1000
|
|
1078
|
+
|
|
1079
|
+
// Data loading ...
|
|
1080
|
+
if ( /^(1|3)$/.test(xhr.readyState) ) {
|
|
1081
|
+
$form.target.setAttribute('data-gina-form-loading', true);
|
|
1082
|
+
if ($submitTrigger) {
|
|
1083
|
+
$submitTrigger.setAttribute('disabled', true)
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
981
1086
|
// In case the user is also redirecting
|
|
982
1087
|
var redirectDelay = (/Google Inc/i.test(navigator.vendor)) ? 50 : 0;
|
|
983
1088
|
|
|
984
|
-
|
|
1089
|
+
// responseType interception
|
|
1090
|
+
if (xhr.readyState == 2) {
|
|
985
1091
|
isAttachment = ( /^attachment\;/.test( xhr.getResponseHeader("Content-Disposition") ) ) ? true : false;
|
|
986
1092
|
// force blob response type
|
|
987
1093
|
if ( !xhr.responseType && isAttachment ) {
|
|
@@ -990,6 +1096,13 @@
|
|
|
990
1096
|
}
|
|
991
1097
|
|
|
992
1098
|
if (xhr.readyState == 4) {
|
|
1099
|
+
|
|
1100
|
+
$form.sent = false;
|
|
1101
|
+
if ($submitTrigger) {
|
|
1102
|
+
$submitTrigger.removeAttribute('disabled')
|
|
1103
|
+
}
|
|
1104
|
+
$form.target.removeAttribute('data-gina-form-loading');
|
|
1105
|
+
|
|
993
1106
|
var $popin = null;
|
|
994
1107
|
var blob = null;
|
|
995
1108
|
var contentType = xhr.getResponseHeader("Content-Type");
|
|
@@ -1015,7 +1128,7 @@
|
|
|
1015
1128
|
var url = window.URL.createObjectURL(blob);
|
|
1016
1129
|
a.href = url;
|
|
1017
1130
|
var contentDisposition = xhr.getResponseHeader("Content-Disposition");
|
|
1018
|
-
a.download = contentDisposition.match('\=(.*)')[0].
|
|
1131
|
+
a.download = contentDisposition.match('\=(.*)')[0].substring(1);
|
|
1019
1132
|
//programatically click the link to trigger the download
|
|
1020
1133
|
a.click();
|
|
1021
1134
|
|
|
@@ -1034,7 +1147,9 @@
|
|
|
1034
1147
|
size : blob.size
|
|
1035
1148
|
}
|
|
1036
1149
|
|
|
1037
|
-
}
|
|
1150
|
+
}
|
|
1151
|
+
// normal case
|
|
1152
|
+
else {
|
|
1038
1153
|
result = xhr.responseText;
|
|
1039
1154
|
}
|
|
1040
1155
|
|
|
@@ -1043,9 +1158,14 @@
|
|
|
1043
1158
|
if ( /\/json/.test( contentType ) ) {
|
|
1044
1159
|
result = JSON.parse(xhr.responseText);
|
|
1045
1160
|
|
|
1046
|
-
if ( typeof(result.status) == 'undefined' )
|
|
1161
|
+
if ( typeof(result.status) == 'undefined' ) {
|
|
1047
1162
|
result.status = xhr.status;
|
|
1048
|
-
|
|
1163
|
+
}
|
|
1164
|
+
// Fixed on 2025-03-13 Allowing toolbar to ubdate after xhr results
|
|
1165
|
+
// TODO - Allowing to revert to previously loaded data via a close button
|
|
1166
|
+
if (gina && envIsDev && typeof(window.ginaToolbar) && typeof(result) != 'undefined') {
|
|
1167
|
+
window.ginaToolbar.update('data-xhr', result);
|
|
1168
|
+
}
|
|
1049
1169
|
}
|
|
1050
1170
|
|
|
1051
1171
|
if ( /\/html/.test( contentType ) ) {
|
|
@@ -1276,6 +1396,13 @@
|
|
|
1276
1396
|
// } else { // external - need to remove `X-Requested-With` from `options.headers`
|
|
1277
1397
|
result.location = (!/^http/.test(result.location) && !/^\//.test(result.location) ) ? location.protocol +'//' + result.location : result.location;
|
|
1278
1398
|
//}
|
|
1399
|
+
// isProxyHost ?
|
|
1400
|
+
if (
|
|
1401
|
+
result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:\/\//, '').split(/\//g)[0] == gina.config.hostname
|
|
1402
|
+
&& gina.config.hostname == window.location.host
|
|
1403
|
+
) {
|
|
1404
|
+
result.location = location.protocol + result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:/, '')
|
|
1405
|
+
}
|
|
1279
1406
|
|
|
1280
1407
|
return setTimeout(() => {
|
|
1281
1408
|
window.location.href = result.location;
|
|
@@ -1487,9 +1614,12 @@
|
|
|
1487
1614
|
|
|
1488
1615
|
$form.eventData.ontimeout = result;
|
|
1489
1616
|
|
|
1617
|
+
$form.target.setAttribute('data-gina-form-loading', false);
|
|
1618
|
+
|
|
1490
1619
|
// intercept upload
|
|
1491
|
-
if ( /^gina\-upload/i.test(id) )
|
|
1620
|
+
if ( /^gina\-upload/i.test(id) ) {
|
|
1492
1621
|
onUpload(gina, $target, 'error', id, result);
|
|
1622
|
+
}
|
|
1493
1623
|
|
|
1494
1624
|
triggerEvent(gina, $target, 'error.' + id, result);
|
|
1495
1625
|
|
|
@@ -1905,7 +2035,7 @@
|
|
|
1905
2035
|
filesToBeRemoved.push(childNodeFilePreview);
|
|
1906
2036
|
}
|
|
1907
2037
|
} else {
|
|
1908
|
-
let file = childNodes[i].src.
|
|
2038
|
+
let file = childNodes[i].src.substring(childNodes[i].src.lastIndexOf('/')+1);
|
|
1909
2039
|
childNodeFile = file;
|
|
1910
2040
|
filesToBeRemoved.push(childNodeFile);
|
|
1911
2041
|
}
|
|
@@ -2341,7 +2471,7 @@
|
|
|
2341
2471
|
for (let m = 0, mLen = mergingRules.length; m < mLen; m++) {
|
|
2342
2472
|
if ( re.test(mergingRules[m]) ) {
|
|
2343
2473
|
let tmpStr = JSON.stringify(rule);
|
|
2344
|
-
tmpStr = tmpStr.
|
|
2474
|
+
tmpStr = tmpStr.substring(1, tmpStr.length-1);// removing ->{ ... }<-
|
|
2345
2475
|
// is last ?
|
|
2346
2476
|
if (m < mLen-1) {
|
|
2347
2477
|
tmpStr += ','
|
|
@@ -3108,7 +3238,14 @@
|
|
|
3108
3238
|
|
|
3109
3239
|
var processEvent = function() {
|
|
3110
3240
|
|
|
3111
|
-
|
|
3241
|
+
// if ( typeof($form.isBeingReseted) != 'undefined' && /^true$/.test($form.isBeingReseted) ) {
|
|
3242
|
+
// handleErrorsDisplay(event.target.form, {}, null, event.target.name);
|
|
3243
|
+
// return cancelEvent(event);
|
|
3244
|
+
// }
|
|
3245
|
+
|
|
3246
|
+
if ( !/^(password)$/i.test(event.target.type) ) {
|
|
3247
|
+
console.debug('processing: ' + event.target.name+ '/'+ event.target.id);
|
|
3248
|
+
}
|
|
3112
3249
|
|
|
3113
3250
|
// Do not validate `onChange` if `input value` === `orignal value`
|
|
3114
3251
|
// Or else, you will get an endless loop
|
|
@@ -3126,7 +3263,6 @@
|
|
|
3126
3263
|
} else {
|
|
3127
3264
|
handleErrorsDisplay(event.target.form, errors, null, event.target.name);
|
|
3128
3265
|
}
|
|
3129
|
-
//return cancelEvent(event);
|
|
3130
3266
|
}
|
|
3131
3267
|
|
|
3132
3268
|
|
|
@@ -3136,7 +3272,7 @@
|
|
|
3136
3272
|
|
|
3137
3273
|
instance.$forms[event.target.form.getAttribute('id')].isValidating = true;
|
|
3138
3274
|
validate(event.target, localField, $localField, $form.rules, function onLiveValidation(result){
|
|
3139
|
-
instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
|
|
3275
|
+
// instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
|
|
3140
3276
|
//console.debug('validation on processEvent(...) ', result);
|
|
3141
3277
|
|
|
3142
3278
|
var isFormValid = result.isValid();
|
|
@@ -3162,8 +3298,10 @@
|
|
|
3162
3298
|
instance.$forms[formId].isValidating = true;
|
|
3163
3299
|
validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
|
|
3164
3300
|
instance.$forms[formId].isValidating = false;
|
|
3165
|
-
console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
|
|
3301
|
+
console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
|
|
3302
|
+
// var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
|
|
3166
3303
|
var isFormValid = gResult.isValid();
|
|
3304
|
+
// var isFormValid = gResult.isValid();
|
|
3167
3305
|
if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
|
|
3168
3306
|
// update toolbar
|
|
3169
3307
|
if (!gina.forms.errors)
|
|
@@ -3178,6 +3316,27 @@
|
|
|
3178
3316
|
}
|
|
3179
3317
|
|
|
3180
3318
|
|
|
3319
|
+
if ( !isFormValid && gResult.error ) {
|
|
3320
|
+
// Fixed on 2025-03-16 - we need past and live errors
|
|
3321
|
+
instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
|
|
3322
|
+
// Fixed on 2025-03-16
|
|
3323
|
+
for (let eField in gResult.error) {
|
|
3324
|
+
refreshWarning($gFields[eField]);
|
|
3325
|
+
handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
|
|
3326
|
+
}
|
|
3327
|
+
}
|
|
3328
|
+
// Fixed on 2025-03-16
|
|
3329
|
+
// Eg.: input select change impacting another element: solve `no more errors`
|
|
3330
|
+
else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
|
|
3331
|
+
// recheck if valid
|
|
3332
|
+
//resetting error display
|
|
3333
|
+
instance.$forms[ formId ].errors = {};
|
|
3334
|
+
console.debug('resetting field: '+ $el.name);
|
|
3335
|
+
liveCheckErrors[formId] = {};
|
|
3336
|
+
// $form.dataset.ginaFormIsResetting = true;
|
|
3337
|
+
handleErrorsDisplay($gForm, {}, null, $el.name);
|
|
3338
|
+
}
|
|
3339
|
+
|
|
3181
3340
|
updateSubmitTriggerState( $gForm, isFormValid);
|
|
3182
3341
|
|
|
3183
3342
|
once = false;
|
|
@@ -3211,13 +3370,16 @@
|
|
|
3211
3370
|
// other inputs & textareas
|
|
3212
3371
|
else if ( /^focusin\./i.test(event.type) ) {
|
|
3213
3372
|
if ( /\-error/.test($el.parentNode.className) ) {
|
|
3214
|
-
console.debug('#1 you just focusin ....'+$el.id, $el.value);
|
|
3373
|
+
console.debug('#1 you just focusin ....'+$el.id, $el.value, instance.$forms[ $el.form.getAttribute('id') ].isValidating);
|
|
3215
3374
|
refreshWarning($el);
|
|
3216
3375
|
}
|
|
3217
3376
|
}
|
|
3218
3377
|
else if ( /^focusout\./i.test(event.type) ) {
|
|
3219
3378
|
if ( /\-warning/.test($el.parentNode.className) ) {
|
|
3220
3379
|
console.debug('#1 you just focusout ....'+$el.id, $el.value);
|
|
3380
|
+
// Removed on 2025-03-16
|
|
3381
|
+
instance.$forms[ $el.form.getAttribute('id') ].isValidating = false;
|
|
3382
|
+
|
|
3221
3383
|
refreshWarning($el);
|
|
3222
3384
|
// in case error context is changed by another task
|
|
3223
3385
|
handleErrorsDisplay($el.form, instance.$forms[ $el.form.getAttribute('id') ].errors, null, $el.name);
|
|
@@ -3226,12 +3388,86 @@
|
|
|
3226
3388
|
else if ( /^keyup\./i.test(event.type) ) {
|
|
3227
3389
|
$el.ginaFormValidatorTestedValue = $el.value;
|
|
3228
3390
|
liveCheckTimer = setTimeout( function onLiveCheckTimer() {
|
|
3229
|
-
//
|
|
3230
|
-
if ( ['91', '17'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
|
|
3391
|
+
// Do not trigger for copy/paste events
|
|
3392
|
+
if ( ['91', '17', '16'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
|
|
3231
3393
|
//console.debug('mapping ', keyboardMapping);
|
|
3232
3394
|
return;
|
|
3233
3395
|
}
|
|
3234
|
-
|
|
3396
|
+
|
|
3397
|
+
// Fixed on 2025-03-16:
|
|
3398
|
+
// Treat TAB as focus in/out
|
|
3399
|
+
// if ( ['9'].indexOf(''+event.keyCode) > -1 ) {
|
|
3400
|
+
|
|
3401
|
+
// console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"');
|
|
3402
|
+
// var $gForm = event.target.form, gFields = null, $gFields = null, gRules = null;
|
|
3403
|
+
// var gValidatorInfos = getFormValidationInfos($gForm, rules);
|
|
3404
|
+
// gFields = gValidatorInfos.fields;
|
|
3405
|
+
// $gFields = gValidatorInfos.$fields;
|
|
3406
|
+
// var formId = $gForm.getAttribute('id');
|
|
3407
|
+
// gRules = instance.$forms[formId].rules;
|
|
3408
|
+
// // Don't be tempted to revome fields that has already been validated
|
|
3409
|
+
// instance.$forms[formId].isValidating = true;
|
|
3410
|
+
// validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
|
|
3411
|
+
// instance.$forms[formId].isValidating = false;
|
|
3412
|
+
// console.debug('['+ formId +'] [9] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
|
|
3413
|
+
// var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
|
|
3414
|
+
// // var isFormValid = gResult.isValid();
|
|
3415
|
+
// if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
|
|
3416
|
+
// // update toolbar
|
|
3417
|
+
// if (!gina.forms.errors)
|
|
3418
|
+
// gina.forms.errors = {};
|
|
3419
|
+
|
|
3420
|
+
// var objCallback = {
|
|
3421
|
+
// id : formId,
|
|
3422
|
+
// errors : gResult.error || {}
|
|
3423
|
+
// };
|
|
3424
|
+
|
|
3425
|
+
// window.ginaToolbar.update('forms', objCallback);
|
|
3426
|
+
// }
|
|
3427
|
+
|
|
3428
|
+
|
|
3429
|
+
// if ( !isFormValid && gResult.error ) {
|
|
3430
|
+
// // Fixed on 2025-03-16 - we need past and live errors
|
|
3431
|
+
// instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
|
|
3432
|
+
// // Fixed on 2025-03-16
|
|
3433
|
+
// for (let eField in instance.$forms[ $el.form.getAttribute('id') ].errors) {
|
|
3434
|
+
// refreshWarning($gFields[eField]);
|
|
3435
|
+
// handleErrorsDisplay($gForm, instance.$forms[ $el.form.getAttribute('id') ].errors, gResult.data, eField);
|
|
3436
|
+
// }
|
|
3437
|
+
// }
|
|
3438
|
+
// // Fixed on 2025-03-16
|
|
3439
|
+
// // Eg.: input select change impacting another element: solve `no more errors`
|
|
3440
|
+
// else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
|
|
3441
|
+
// // recheck if valid
|
|
3442
|
+
// //resetting error display
|
|
3443
|
+
// instance.$forms[ formId ].errors = {};
|
|
3444
|
+
// console.debug('resetting field: '+ $el.name);
|
|
3445
|
+
// liveCheckErrors[formId] = {};
|
|
3446
|
+
// // $form.dataset.ginaFormIsResetting = true;
|
|
3447
|
+
// handleErrorsDisplay($gForm, {}, null, $el.name);
|
|
3448
|
+
// }
|
|
3449
|
+
|
|
3450
|
+
// updateSubmitTriggerState( $gForm, isFormValid);
|
|
3451
|
+
|
|
3452
|
+
// once = false;
|
|
3453
|
+
// });
|
|
3454
|
+
// // var $previeousEl = document.getElementById(instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id);
|
|
3455
|
+
// // var errors = instance.$forms[ $previeousEl.form.getAttribute('id') ].errors;
|
|
3456
|
+
// // var isFormValid = (!errors[$previeousEl.name]) ? true : false;
|
|
3457
|
+
// // console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"', "errors: ", errors);
|
|
3458
|
+
// // if (errors && errors.count() > 0 ) {
|
|
3459
|
+
// // instance.$forms[ $previeousEl.form.getAttribute('id') ].isValidating = false;
|
|
3460
|
+
// // isFormValid = false;
|
|
3461
|
+
// // }
|
|
3462
|
+
// // refreshWarning($previeousEl);
|
|
3463
|
+
// // // // in case error context is changed by another task
|
|
3464
|
+
// // handleErrorsDisplay($previeousEl.form, errors, null, $previeousEl.name);
|
|
3465
|
+
// // updateSubmitTriggerState( $el.form, isFormValid);
|
|
3466
|
+
// return;
|
|
3467
|
+
// }
|
|
3468
|
+
|
|
3469
|
+
|
|
3470
|
+
console.debug('[A]['+keyboardMapping.count()+'] keyup ('+ event.keyCode +') .... '+$el.id, $el.value, ' VS ',$el.ginaFormValidatorTestedValue + '(old)');
|
|
3235
3471
|
processEvent();
|
|
3236
3472
|
}, 1000);
|
|
3237
3473
|
}
|
|
@@ -3331,16 +3567,42 @@
|
|
|
3331
3567
|
//console.debug('pressed: '+ e.key+'('+ e.keyCode+')', ' S:'+posStart, ' E:'+posEnd, ' MAP: '+ JSON.stringify(keyboardMapping));
|
|
3332
3568
|
switch (e.keyCode) {
|
|
3333
3569
|
case 46: //Delete
|
|
3570
|
+
if (posStart != posEnd) {
|
|
3571
|
+
$_el.value = str.substring(0, posStart) + str.substring(posEnd);
|
|
3572
|
+
if (posStart == 0) {
|
|
3573
|
+
$_el.value = str.substring(posEnd+1);
|
|
3574
|
+
}
|
|
3575
|
+
} else if (posStart == 0) {
|
|
3576
|
+
$_el.value = str.substring(posStart+1);
|
|
3577
|
+
} else {
|
|
3578
|
+
$_el.value = str.substring(0, posStart) + str.substring(posEnd+1);
|
|
3579
|
+
}
|
|
3580
|
+
|
|
3581
|
+
e.currentTarget.setAttribute('readonly', 'readonly');
|
|
3582
|
+
setTimeout(() => {
|
|
3583
|
+
$_el.removeAttribute('readonly');
|
|
3584
|
+
setTimeout(() => {
|
|
3585
|
+
if (posStart != posEnd) {
|
|
3586
|
+
setCaretToPos($_el, posStart);
|
|
3587
|
+
} else if (posStart == 0) {
|
|
3588
|
+
setCaretToPos($_el, posStart);
|
|
3589
|
+
} else {
|
|
3590
|
+
setCaretToPos($_el, posStart);
|
|
3591
|
+
}
|
|
3592
|
+
}, 0)
|
|
3593
|
+
|
|
3594
|
+
}, 0);
|
|
3595
|
+
break
|
|
3334
3596
|
case 8: //Backspace
|
|
3335
3597
|
if (posStart != posEnd) {
|
|
3336
|
-
$_el.value = str.
|
|
3598
|
+
$_el.value = str.substring(0, posStart) + str.substring(posEnd);
|
|
3337
3599
|
if (posStart == 0) {
|
|
3338
|
-
$_el.value = str.
|
|
3600
|
+
$_el.value = str.substring(posEnd);
|
|
3339
3601
|
}
|
|
3340
3602
|
} else if (posStart == 0) {
|
|
3341
3603
|
$_el.value = str.substring(posStart+1);
|
|
3342
3604
|
} else {
|
|
3343
|
-
$_el.value = str.
|
|
3605
|
+
$_el.value = str.substring(0, posStart-1) + str.substring(posEnd);
|
|
3344
3606
|
}
|
|
3345
3607
|
|
|
3346
3608
|
e.currentTarget.setAttribute('readonly', 'readonly');
|
|
@@ -3378,9 +3640,9 @@
|
|
|
3378
3640
|
}
|
|
3379
3641
|
break;
|
|
3380
3642
|
// Shortcuts
|
|
3381
|
-
case 17: //CTRL
|
|
3382
|
-
case 91: //CMD
|
|
3383
|
-
console.debug("CMD hit");
|
|
3643
|
+
case 17: // CTRL
|
|
3644
|
+
case 91: // CMD
|
|
3645
|
+
console.debug("CMD, CTRL hit");
|
|
3384
3646
|
e.preventDefault();
|
|
3385
3647
|
break;
|
|
3386
3648
|
case 67: // to handle CMD+C (copy)
|
|
@@ -3427,15 +3689,18 @@
|
|
|
3427
3689
|
}
|
|
3428
3690
|
default:
|
|
3429
3691
|
// Replace selection
|
|
3692
|
+
if (e.key.length > 1) {
|
|
3693
|
+
break;
|
|
3694
|
+
}
|
|
3430
3695
|
if (posStart != posEnd) {
|
|
3431
|
-
$_el.value = str.
|
|
3696
|
+
$_el.value = str.substring(0, posStart) + e.key;
|
|
3432
3697
|
if (posEnd-1 < str.length) {
|
|
3433
3698
|
$_el.value += str.substring(posEnd)
|
|
3434
3699
|
}
|
|
3435
3700
|
} else if (posStart == 0) {
|
|
3436
3701
|
$_el.value = e.key + str.substring(posStart);
|
|
3437
3702
|
} else {
|
|
3438
|
-
$_el.value = str.
|
|
3703
|
+
$_el.value = str.substring(0, posStart) + e.key + str.substring(posEnd);
|
|
3439
3704
|
}
|
|
3440
3705
|
e.currentTarget.setAttribute('readonly', 'readonly');
|
|
3441
3706
|
// Force restore last caret position
|
|
@@ -3577,24 +3842,53 @@
|
|
|
3577
3842
|
}
|
|
3578
3843
|
|
|
3579
3844
|
/**
|
|
3580
|
-
* reBindForm
|
|
3845
|
+
* reBindForm
|
|
3846
|
+
* Allows form rebinding: it is like reseting validation
|
|
3581
3847
|
*
|
|
3582
|
-
*
|
|
3583
|
-
*
|
|
3584
|
-
*
|
|
3848
|
+
* E.g.:
|
|
3849
|
+
* $validator
|
|
3850
|
+
* .getFormById('my-form-id')
|
|
3851
|
+
* .reBind();
|
|
3852
|
+
*
|
|
3853
|
+
* @param {string} [formId]
|
|
3854
|
+
* @param {string} [rules]
|
|
3855
|
+
* @param {callback} [cb]
|
|
3585
3856
|
*/
|
|
3586
|
-
var reBindForm = function(
|
|
3587
|
-
|
|
3588
|
-
|
|
3857
|
+
var reBindForm = function(formId, rules, cb) {
|
|
3858
|
+
var $form = null
|
|
3859
|
+
, _id = null
|
|
3860
|
+
;
|
|
3861
|
+
if (
|
|
3862
|
+
typeof(this.target) != 'undefined'
|
|
3863
|
+
&& /FORM/i.test(this.target.tagName)
|
|
3864
|
+
) {
|
|
3865
|
+
_id = formId = this.target.getAttribute('id')
|
|
3866
|
+
} else if ( /string/i.test(typeof(formId)) ) {
|
|
3867
|
+
_id = formId
|
|
3868
|
+
}
|
|
3869
|
+
|
|
3870
|
+
if ( typeof(instance.$forms[_id]) != 'undefined') {
|
|
3871
|
+
$form = instance.$forms[_id];
|
|
3872
|
+
} else {
|
|
3873
|
+
throw new Error('form instance `'+ _id +'` not found');
|
|
3874
|
+
}
|
|
3875
|
+
|
|
3589
3876
|
// reset errors
|
|
3590
|
-
|
|
3877
|
+
resetErrorsDisplay(_id);
|
|
3878
|
+
// Unbind form
|
|
3879
|
+
unbindForm($form.target);
|
|
3591
3880
|
// Bind
|
|
3592
|
-
|
|
3881
|
+
if ( typeof(rule) != 'undefined' ) {
|
|
3882
|
+
bindForm($form.target, rules);
|
|
3883
|
+
} else {
|
|
3884
|
+
bindForm($form.target);
|
|
3885
|
+
}
|
|
3593
3886
|
|
|
3594
3887
|
if ( cb ) {
|
|
3595
|
-
return cb(
|
|
3888
|
+
return cb($form);
|
|
3596
3889
|
}
|
|
3597
|
-
|
|
3890
|
+
|
|
3891
|
+
return $form;
|
|
3598
3892
|
}
|
|
3599
3893
|
|
|
3600
3894
|
var unbindForm = function($target) {
|
|
@@ -3612,7 +3906,7 @@
|
|
|
3612
3906
|
|
|
3613
3907
|
} else if ( typeof($target.target) != 'undefined' ) {
|
|
3614
3908
|
$form = $target;
|
|
3615
|
-
_id = $form.id;
|
|
3909
|
+
_id = ( $target.getAttribute && $target.getAttribute('id') ) ? $form.getAttribute('id') : $form.id;
|
|
3616
3910
|
} else {
|
|
3617
3911
|
throw new Error('Validator::unbindForm($target): `$target` must be a DOM element\n'+err.stack )
|
|
3618
3912
|
}
|
|
@@ -3651,7 +3945,7 @@
|
|
|
3651
3945
|
// submit buttons
|
|
3652
3946
|
$elTMP = $form.target.getElementsByTagName('button');
|
|
3653
3947
|
if ( $elTMP.length > 0 ) {
|
|
3654
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3948
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3655
3949
|
// if button is != type="submit", you will need to provide : data-gina-form-submit
|
|
3656
3950
|
// TODO - On button binding, you can then provide data-gina-form-action & data-gina-form-method
|
|
3657
3951
|
$els.push($elTMP[i])
|
|
@@ -3661,7 +3955,7 @@
|
|
|
3661
3955
|
// submit links
|
|
3662
3956
|
$elTMP = $form.target.getElementsByTagName('a');
|
|
3663
3957
|
if ( $elTMP.length > 0 ) {
|
|
3664
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3958
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3665
3959
|
$els.push($elTMP[i])
|
|
3666
3960
|
}
|
|
3667
3961
|
}
|
|
@@ -3717,7 +4011,7 @@
|
|
|
3717
4011
|
// textarea
|
|
3718
4012
|
$elTMP = $form.target.getElementsByTagName('textarea');
|
|
3719
4013
|
if ( $elTMP.length > 0 ) {
|
|
3720
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
4014
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3721
4015
|
$els.push( $elTMP[i] )
|
|
3722
4016
|
}
|
|
3723
4017
|
}
|
|
@@ -3726,7 +4020,7 @@
|
|
|
3726
4020
|
// forms inside main form
|
|
3727
4021
|
$elTMP = $form.target.getElementsByTagName('form');
|
|
3728
4022
|
if ( $elTMP.length > 0 ) {
|
|
3729
|
-
for(let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
4023
|
+
for (let i = 0, len = $elTMP.length; i < len; ++i) {
|
|
3730
4024
|
$els.push( $elTMP[i] )
|
|
3731
4025
|
}
|
|
3732
4026
|
}
|
|
@@ -3811,8 +4105,10 @@
|
|
|
3811
4105
|
/**
|
|
3812
4106
|
* bindForm
|
|
3813
4107
|
*
|
|
3814
|
-
* @param {object} $target - DOM element
|
|
3815
|
-
* @param {object} [customRule]
|
|
4108
|
+
* @param {object} [$target] - DOM element
|
|
4109
|
+
* @param {object|string} [customRule]
|
|
4110
|
+
*
|
|
4111
|
+
* @return {object} bindedForm
|
|
3816
4112
|
* */
|
|
3817
4113
|
var bindForm = function($target, customRule) {
|
|
3818
4114
|
|
|
@@ -3821,23 +4117,32 @@
|
|
|
3821
4117
|
, rules = ( typeof(local.rules.count() > 0 ) ) ? local.rules : instance.rules
|
|
3822
4118
|
;
|
|
3823
4119
|
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
4120
|
+
if (
|
|
4121
|
+
typeof($target) == 'undefined'
|
|
4122
|
+
&& typeof(this.target) != 'undefined'
|
|
4123
|
+
&& /FORM/i.test(this.target.tagName)
|
|
4124
|
+
||
|
|
4125
|
+
!/object/i.test( typeof($target) )
|
|
4126
|
+
) {
|
|
4127
|
+
_id = this.target.id || this.target.getAttribute('id');
|
|
4128
|
+
} else if ( /string/i.test(typeof($target)) ) {
|
|
4129
|
+
_id = $target
|
|
4130
|
+
} else {
|
|
4131
|
+
_id = $target.getAttribute('id')
|
|
4132
|
+
}
|
|
3831
4133
|
|
|
4134
|
+
try {
|
|
4135
|
+
if ( typeof(instance.$forms[_id]) != 'undefined') {
|
|
4136
|
+
$form = instance.$forms[_id];
|
|
4137
|
+
if ( typeof($form.target) == 'undefined' ) {
|
|
4138
|
+
throw new Error('Validator::bindForm($target, customRule): `$target` must be a DOM element\n');
|
|
4139
|
+
}
|
|
4140
|
+
$target = $form.target;
|
|
3832
4141
|
} else {
|
|
3833
|
-
throw new Error('
|
|
4142
|
+
throw new Error('form instance `'+ _id +'` not found');
|
|
3834
4143
|
}
|
|
3835
4144
|
} 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
|
|
4145
|
+
throw new Error('Validator::bindForm($target, customRule) could not bind form `'+ $target +'`\n'+err.stack );
|
|
3841
4146
|
}
|
|
3842
4147
|
|
|
3843
4148
|
console.debug('binding for: '+ _id);
|
|
@@ -4143,7 +4448,7 @@
|
|
|
4143
4448
|
} else if ( /img/i.test($els[i].tagName) ) {
|
|
4144
4449
|
$img = $els[i];
|
|
4145
4450
|
deleteLinkId = uploadTriggerId + '-'+index+'-delete-trigger';
|
|
4146
|
-
let file = $img.src.
|
|
4451
|
+
let file = $img.src.substring($img.src.lastIndexOf('/')+1);
|
|
4147
4452
|
$uploadTrigger.customFiles.push({
|
|
4148
4453
|
name: file,
|
|
4149
4454
|
deleteLinkId: deleteLinkId
|
|
@@ -4502,7 +4807,10 @@
|
|
|
4502
4807
|
var updateSelect = function($el, $form) {
|
|
4503
4808
|
$el.setAttribute('data-value', $el.value);
|
|
4504
4809
|
// If Live check enabled, proceed to silent validation
|
|
4505
|
-
if (
|
|
4810
|
+
if (
|
|
4811
|
+
/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled && $form.rules.count() > 0)
|
|
4812
|
+
// && typeof($form.isBeingReseted) == 'undefined'
|
|
4813
|
+
) {
|
|
4506
4814
|
var localField = {}, $localField = {}, $localForm = null;
|
|
4507
4815
|
$localForm = $el.form;//event.target.form
|
|
4508
4816
|
localField[event.target.name] = event.target.value;
|
|
@@ -4535,7 +4843,16 @@
|
|
|
4535
4843
|
validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
|
|
4536
4844
|
instance.$forms[formId].isValidating = false;
|
|
4537
4845
|
console.debug('[updateSelect]: onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
|
|
4846
|
+
// Fixed on 2025-03-16
|
|
4538
4847
|
var isFormValid = gResult.isValid();
|
|
4848
|
+
if (!isFormValid) {
|
|
4849
|
+
instance.$forms[formId].errors = gResult.error;
|
|
4850
|
+
for (let eField in gResult.error) {
|
|
4851
|
+
// refreshWarning($gFields[eField]);
|
|
4852
|
+
handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
|
|
4853
|
+
}
|
|
4854
|
+
}
|
|
4855
|
+
|
|
4539
4856
|
updateSubmitTriggerState( $gForm, isFormValid);
|
|
4540
4857
|
once = false;
|
|
4541
4858
|
})
|
|
@@ -5129,6 +5446,25 @@
|
|
|
5129
5446
|
if (gina.events[_evt]) {
|
|
5130
5447
|
cancelEvent(event);
|
|
5131
5448
|
|
|
5449
|
+
// Fixed on 2025-03-05 - "last focus" vs "current focus"
|
|
5450
|
+
// To get active element: document.activeElement
|
|
5451
|
+
var formId = event.target.form.getAttribute('id') || event.currentTarget.getAttribute('id');
|
|
5452
|
+
var lastFocused = {
|
|
5453
|
+
id : $el.id,
|
|
5454
|
+
name: $el.name
|
|
5455
|
+
};
|
|
5456
|
+
if (!instance.$forms[formId].lastFocused.length) {
|
|
5457
|
+
instance.$forms[formId].lastFocused[0] = lastFocused;
|
|
5458
|
+
} else {
|
|
5459
|
+
instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
|
|
5460
|
+
}
|
|
5461
|
+
lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
|
|
5462
|
+
|
|
5463
|
+
// cleanup
|
|
5464
|
+
instance.$forms[formId].lastFocused.splice(2);
|
|
5465
|
+
|
|
5466
|
+
// console.debug('lastFocused: ', lastFocused, ' VS current: ', $el.id);
|
|
5467
|
+
|
|
5132
5468
|
triggerEvent(gina, $el, _evt, event.detail);
|
|
5133
5469
|
}
|
|
5134
5470
|
});
|
|
@@ -5302,7 +5638,9 @@
|
|
|
5302
5638
|
||
|
|
5303
5639
|
isCustomSubmit && !/^submit\./i.test(_evt)
|
|
5304
5640
|
) {
|
|
5305
|
-
_evt = 'submit.'+_evt
|
|
5641
|
+
_evt = 'submit.'+_evt;
|
|
5642
|
+
// Updating submitTrigger in case it has been changed on the fly
|
|
5643
|
+
instance.$forms[$form.id].submitTrigger = $form.submitTrigger = $el.id;
|
|
5306
5644
|
}
|
|
5307
5645
|
// in case we have multiple reset type buttons
|
|
5308
5646
|
if ( $el.type == 'reset' && !/^reset\./i.test(_evt) ) {
|
|
@@ -5394,10 +5732,11 @@
|
|
|
5394
5732
|
, isDisabled = null
|
|
5395
5733
|
;
|
|
5396
5734
|
|
|
5397
|
-
|
|
5398
|
-
if
|
|
5399
|
-
|
|
5400
|
-
|
|
5735
|
+
|
|
5736
|
+
// stop there if form has already been sent - anti spam
|
|
5737
|
+
// if (instance.$forms[id].sent) {
|
|
5738
|
+
// return;
|
|
5739
|
+
// }
|
|
5401
5740
|
|
|
5402
5741
|
var validatorInfos = getFormValidationInfos($target, rules);
|
|
5403
5742
|
fields = validatorInfos.fields;
|
|
@@ -5445,7 +5784,7 @@
|
|
|
5445
5784
|
;
|
|
5446
5785
|
$buttonsTMP = $target.getElementsByTagName('button');
|
|
5447
5786
|
if ( $buttonsTMP.length > 0 ) {
|
|
5448
|
-
for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5787
|
+
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5449
5788
|
if ($buttonsTMP[b].type == 'submit') {
|
|
5450
5789
|
$buttons.push($buttonsTMP[b])
|
|
5451
5790
|
}
|
|
@@ -5455,7 +5794,7 @@
|
|
|
5455
5794
|
// binding links
|
|
5456
5795
|
$buttonsTMP = $target.getElementsByTagName('a');
|
|
5457
5796
|
if ( $buttonsTMP.length > 0 ) {
|
|
5458
|
-
for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5797
|
+
for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
|
|
5459
5798
|
if ( $buttonsTMP[b].attributes.getNamedItem('data-gina-form-submit') ) {
|
|
5460
5799
|
$buttons.push($buttonsTMP[b])
|
|
5461
5800
|
} else if (
|
|
@@ -5571,8 +5910,9 @@
|
|
|
5571
5910
|
}
|
|
5572
5911
|
|
|
5573
5912
|
// prevent event to be triggered twice
|
|
5574
|
-
if ( typeof(e.defaultPrevented) != 'undefined' && e.defaultPrevented )
|
|
5913
|
+
if ( typeof(e.defaultPrevented) != 'undefined' && e.defaultPrevented ) {
|
|
5575
5914
|
return false;
|
|
5915
|
+
}
|
|
5576
5916
|
|
|
5577
5917
|
if (withRules || isBinded) {
|
|
5578
5918
|
cancelEvent(e);
|
|
@@ -5712,7 +6052,8 @@
|
|
|
5712
6052
|
}
|
|
5713
6053
|
updateSubmitTriggerState( $form, result.isValid() );
|
|
5714
6054
|
});
|
|
5715
|
-
}
|
|
6055
|
+
}
|
|
6056
|
+
else if (!/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) ) {
|
|
5716
6057
|
updateSubmitTriggerState( $form , true );
|
|
5717
6058
|
}
|
|
5718
6059
|
|
|
@@ -5729,10 +6070,18 @@
|
|
|
5729
6070
|
}
|
|
5730
6071
|
//if (!$formInstance) return;
|
|
5731
6072
|
|
|
5732
|
-
|
|
6073
|
+
|
|
6074
|
+
if (
|
|
6075
|
+
typeof($formInstance.submitTrigger) == 'undefined'
|
|
6076
|
+
&& /^(true)$/i.test($formInstance.target.dataset.ginaFormLiveCheckEnabled)
|
|
6077
|
+
) {
|
|
5733
6078
|
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
6079
|
} else if ( document.getElementById($formInstance.submitTrigger) ) {
|
|
5735
|
-
if (
|
|
6080
|
+
if (
|
|
6081
|
+
/^true$/i.test(isFormValid)
|
|
6082
|
+
||
|
|
6083
|
+
!/^(true)$/i.test($formInstance.target.dataset.ginaFormLiveCheckEnabled)
|
|
6084
|
+
) { // show submitTrigge
|
|
5736
6085
|
document.getElementById($formInstance.submitTrigger).disabled = false;
|
|
5737
6086
|
} else { // hide submitTrigger
|
|
5738
6087
|
document.getElementById($formInstance.submitTrigger).disabled = true;
|
|
@@ -6175,7 +6524,8 @@
|
|
|
6175
6524
|
if ( !/^form$/i.test($formOrElement.tagName) ) {
|
|
6176
6525
|
$currentForm = $formOrElement.form;
|
|
6177
6526
|
}
|
|
6178
|
-
var formId
|
|
6527
|
+
var formId = $currentForm.getAttribute('id');
|
|
6528
|
+
var isFormValid = null;
|
|
6179
6529
|
|
|
6180
6530
|
if (
|
|
6181
6531
|
hasParsedAllRules
|
|
@@ -6196,10 +6546,16 @@
|
|
|
6196
6546
|
if ( typeof(instance.$forms[formId].errors) == 'undefined' ) {
|
|
6197
6547
|
instance.$forms[formId].errors = {}
|
|
6198
6548
|
}
|
|
6549
|
+
// Fixed on 2025-03-16
|
|
6550
|
+
if ( typeof(cb._errors[field]) != 'undefined' ) {
|
|
6551
|
+
instance.$forms[formId].errors[field] = cb._errors[field];
|
|
6552
|
+
}
|
|
6553
|
+
console.debug('[A] Refreshing warning/error on field '+ field);
|
|
6554
|
+
if (
|
|
6555
|
+
!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)
|
|
6556
|
+
|| d[field].target.value != ''
|
|
6199
6557
|
|
|
6200
|
-
|
|
6201
|
-
|
|
6202
|
-
if (!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating) || d[field].target.value != '' ) {
|
|
6558
|
+
) {
|
|
6203
6559
|
refreshWarning($allFields[field]);
|
|
6204
6560
|
handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
|
|
6205
6561
|
updateSubmitTriggerState( $currentForm, isFormValid);
|
|
@@ -6207,8 +6563,9 @@
|
|
|
6207
6563
|
|
|
6208
6564
|
if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
|
|
6209
6565
|
// update toolbar
|
|
6210
|
-
if (!gina.forms.errors)
|
|
6566
|
+
if (!gina.forms.errors) {
|
|
6211
6567
|
gina.forms.errors = {};
|
|
6568
|
+
}
|
|
6212
6569
|
|
|
6213
6570
|
var objCallback = {
|
|
6214
6571
|
id : formId,
|
|
@@ -6225,13 +6582,13 @@
|
|
|
6225
6582
|
}
|
|
6226
6583
|
|
|
6227
6584
|
// is this the last or the only field to be validated ?
|
|
6228
|
-
var needsGlobalReValidation = false
|
|
6585
|
+
var needsGlobalReValidation = false;
|
|
6229
6586
|
if ( listedFields.length == 1 || listedFields[listedFields.length-1] == field) {
|
|
6230
6587
|
// trigger end of validation
|
|
6231
6588
|
// console.debug(field +' is the last element to be validated for formId: '+ formId, cb._errors, instance.$forms[formId].errors);
|
|
6232
6589
|
isFormValid = ( cb._errors.count() > 0 ) ? false : true;
|
|
6233
6590
|
if (!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)) {
|
|
6234
|
-
|
|
6591
|
+
console.debug('[1] Should update error display now ', cb._errors);
|
|
6235
6592
|
instance.$forms[formId].errors = merge(cb._errors, instance.$forms[formId].errors);
|
|
6236
6593
|
refreshWarning($allFields[field]);
|
|
6237
6594
|
handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
|
|
@@ -6263,8 +6620,6 @@
|
|
|
6263
6620
|
window.ginaToolbar.update('forms', objCallback);
|
|
6264
6621
|
}
|
|
6265
6622
|
|
|
6266
|
-
|
|
6267
|
-
|
|
6268
6623
|
handleErrorsDisplay($currentForm, gResult.error, gResult.data, field);
|
|
6269
6624
|
updateSubmitTriggerState( $currentForm, isFormValid);
|
|
6270
6625
|
})
|
|
@@ -6408,7 +6763,7 @@
|
|
|
6408
6763
|
|
|
6409
6764
|
for (var c in rules) {
|
|
6410
6765
|
if (!/^\_case\_/.test(c) ) continue;
|
|
6411
|
-
if ( typeof(rules[c].conditions) == 'undefined' ||
|
|
6766
|
+
if ( typeof(rules[c].conditions) == 'undefined' || Array.isArray(rules[c].conditions) && !rules[c].conditions.length ) continue;
|
|
6412
6767
|
if ( typeof(rules[c].conditions[0].rules) == 'undefined' ) continue;
|
|
6413
6768
|
|
|
6414
6769
|
|
|
@@ -6590,7 +6945,14 @@
|
|
|
6590
6945
|
// filtering conditions
|
|
6591
6946
|
for (var _c = 0, _cLen = rules[c].conditions.length; _c < _cLen; ++_c) {
|
|
6592
6947
|
|
|
6593
|
-
if (
|
|
6948
|
+
if (
|
|
6949
|
+
Array.isArray(rules[c].conditions[_c].case)
|
|
6950
|
+
&& rules[c].conditions[_c].case.indexOf(caseValue) == -1
|
|
6951
|
+
||
|
|
6952
|
+
!Array.isArray(rules[c].conditions[_c].case)
|
|
6953
|
+
&& rules[c].conditions[_c].case != caseValue
|
|
6954
|
+
|
|
6955
|
+
) {
|
|
6594
6956
|
continue;
|
|
6595
6957
|
}
|
|
6596
6958
|
|
|
@@ -6735,7 +7097,8 @@
|
|
|
6735
7097
|
if (
|
|
6736
7098
|
conditions[c]['case'] === caseValue
|
|
6737
7099
|
||
|
|
6738
|
-
Array.isArray(conditions[c]['case'])
|
|
7100
|
+
Array.isArray(conditions[c]['case'])
|
|
7101
|
+
&& conditions[c]['case'].indexOf(caseValue) > -1
|
|
6739
7102
|
||
|
|
6740
7103
|
/^\//.test(conditions[c]['case'])
|
|
6741
7104
|
) {
|
|
@@ -6852,8 +7215,6 @@
|
|
|
6852
7215
|
}
|
|
6853
7216
|
--i;
|
|
6854
7217
|
}
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
7218
|
} // EO for
|
|
6858
7219
|
}
|
|
6859
7220
|
|
|
@@ -6874,7 +7235,7 @@
|
|
|
6874
7235
|
}
|
|
6875
7236
|
|
|
6876
7237
|
if (isGFFCtx)
|
|
6877
|
-
$fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].
|
|
7238
|
+
$fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].substring(0, fieldErrorsAttributes[field].length-1))
|
|
6878
7239
|
}
|
|
6879
7240
|
|
|
6880
7241
|
//calling back
|
|
@@ -6945,6 +7306,8 @@
|
|
|
6945
7306
|
'data' : formatData( _data )
|
|
6946
7307
|
});
|
|
6947
7308
|
removeListener(gina, event.target, 'validated.' + event.target.id);
|
|
7309
|
+
|
|
7310
|
+
|
|
6948
7311
|
return
|
|
6949
7312
|
}
|
|
6950
7313
|
});
|