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.
Files changed (390) hide show
  1. package/LICENSE +1 -1
  2. package/README-4Contributors.md +14 -8
  3. package/README.md +13 -4
  4. package/bin/cli +16 -2
  5. package/bin/gina +29 -1
  6. package/framework/{v0.1.6-alpha.14/lib/inherits → v0.1.6-alpha.141}/LICENSE +1 -1
  7. package/framework/v0.1.6-alpha.141/VERSION +1 -0
  8. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/README.md +1 -0
  9. package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
  10. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +1 -1
  11. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/dist/vendor/gina/js/gina.js +794 -257
  12. package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.min.js +782 -0
  13. package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
  14. package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
  15. package/framework/v0.1.6-alpha.141/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
  16. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/config.js +158 -78
  17. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/index.js +108 -26
  18. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.v4.js +124 -22
  19. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.v4.js +5 -2
  20. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/controller/controller.js +762 -189
  21. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/controller/index.js +2 -2
  22. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
  23. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
  24. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/README.md +191 -0
  25. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
  26. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
  27. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
  28. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
  29. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
  30. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
  31. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/index.js +57 -0
  32. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
  33. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
  34. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/lib/utils.js +596 -0
  35. package/framework/v0.1.6-alpha.141/core/deps/busboy-1.6.0/package.json +22 -0
  36. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/.travis.yml +4 -0
  37. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/LICENSE +21 -0
  38. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/bool.js +10 -0
  39. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/boolean_double.js +7 -0
  40. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/boolean_single.js +7 -0
  41. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/default_hash.js +8 -0
  42. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/default_singles.js +7 -0
  43. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/divide.js +8 -0
  44. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/line_count.js +20 -0
  45. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/line_count_options.js +29 -0
  46. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/line_count_wrap.js +29 -0
  47. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/nonopt.js +4 -0
  48. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/reflect.js +2 -0
  49. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/short.js +3 -0
  50. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/string.js +11 -0
  51. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/usage-options.js +19 -0
  52. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/example/xup.js +10 -0
  53. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/index.js +343 -0
  54. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/package.json +31 -0
  55. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/package.json.dist +39 -0
  56. package/framework/v0.1.6-alpha.141/core/deps/optimist-0.6.1/readme.markdown +513 -0
  57. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/HISTORY.md +498 -0
  58. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/LICENSE +7 -0
  59. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/README.md +88 -0
  60. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/bin/swig.js +161 -0
  61. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/bin/swig.js.dist +161 -0
  62. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
  63. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/dist/swig.min.js.map +8 -0
  64. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/index.js +1 -0
  65. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/dateformatter.js +198 -0
  66. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/filters.js +630 -0
  67. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/lexer.js +306 -0
  68. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/loaders/filesystem.js +59 -0
  69. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/loaders/index.js +53 -0
  70. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/loaders/memory.js +63 -0
  71. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/parser.js +744 -0
  72. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/swig.js +740 -0
  73. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/autoescape.js +37 -0
  74. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/block.js +25 -0
  75. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/else.js +25 -0
  76. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/elseif.js +28 -0
  77. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/extends.js +19 -0
  78. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/filter.js +68 -0
  79. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/for.js +130 -0
  80. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/if.js +86 -0
  81. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/import.js +91 -0
  82. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/include.js +100 -0
  83. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/index.js +16 -0
  84. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/macro.js +79 -0
  85. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/parent.js +51 -0
  86. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/raw.js +23 -0
  87. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/set.js +109 -0
  88. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/tags/spaceless.js +42 -0
  89. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/lib/utils.js +184 -0
  90. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/package.json +57 -0
  91. package/framework/v0.1.6-alpha.141/core/deps/swig-1.4.2/package.json.dist +61 -0
  92. package/framework/v0.1.6-alpha.141/core/deps/swig-client/swig.js +5031 -0
  93. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/index.js +1 -1
  94. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/lib/factory.js +1 -1
  95. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/gna.js +106 -22
  96. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/index.js +3 -3
  97. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/make.js +1 -1
  98. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/mime.types +1 -0
  99. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/entity.js +5 -5
  100. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/index.js +30 -26
  101. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/template/entityFactory.js +1 -1
  102. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/model/template/index.js +1 -1
  103. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/index.js +3 -3
  104. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/file/package.json +2 -2
  105. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/package.json +2 -2
  106. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/package.json +2 -2
  107. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/package.json +2 -2
  108. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/src/form-validator.js +39 -27
  109. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/src/main.js +490 -114
  110. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/router.js +92 -47
  111. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/server.isaac.js +94 -43
  112. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/server.js +329 -134
  113. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/status.codes +1 -11
  114. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/controllers/setup.js +2 -2
  115. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/command/gina.tpl +1 -1
  116. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/env.json +19 -0
  117. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/templates.json +4 -2
  118. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/console.js +1 -1
  119. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/context.js +30 -13
  120. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/package.json +2 -2
  121. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/src/main.js +1 -1
  122. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/dateFormat.js +1 -1
  123. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/index.js +1 -1
  124. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/package.json +2 -2
  125. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/src/main.js +6 -4
  126. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/path.js +31 -15
  127. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/package.json +2 -2
  128. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/src/api-error.js +2 -2
  129. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/src/main.js +1 -1
  130. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/task.js +2 -2
  131. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/text.js +1 -1
  132. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/package.json +2 -2
  133. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/src/main.js +11 -11
  134. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/add.js +2 -1
  135. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/start.js +21 -8
  136. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/get.js +1 -1
  137. package/framework/v0.1.6-alpha.141/lib/cmd/env/help.js +30 -0
  138. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/build.js +1 -1
  139. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/dot.js +21 -0
  140. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/init.js +19 -1
  141. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/link-node-modules.js +2 -3
  142. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/link.js +3 -2
  143. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/restart.js +3 -3
  144. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/start.js +1 -1
  145. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/tail.js +29 -12
  146. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/version.js +15 -1
  147. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/helper.js +8 -4
  148. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/index.js +1 -1
  149. package/framework/v0.1.6-alpha.141/lib/cmd/minion/help.txt +18 -0
  150. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/reset.js +1 -1
  151. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/add.js +7 -2
  152. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/arguments.json +1 -0
  153. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/build.js +4 -4
  154. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/help.txt +4 -0
  155. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/list.js +1 -1
  156. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/list.js +71 -50
  157. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/package.json +2 -2
  158. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/src/main.js +20 -14
  159. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/config.js +1 -1
  160. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cron/package.json +2 -2
  161. package/framework/v0.1.6-alpha.141/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +15754 -0
  162. package/framework/v0.1.6-alpha.141/lib/domain/dist/public_suffix_list.dat +15754 -0
  163. package/framework/v0.1.6-alpha.141/lib/domain/exemples/backend.js +12 -0
  164. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/package.json +2 -2
  165. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/src/main.js +20 -6
  166. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/generator/index.js +1 -1
  167. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/index.js +1 -1
  168. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141/lib/inherits}/LICENSE +1 -1
  169. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/package.json +2 -2
  170. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/src/main.js +1 -1
  171. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/package.json +2 -2
  172. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/mq/listener.js +10 -2
  173. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/helper.js +1 -1
  174. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/main.js +1 -1
  175. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/math/index.js +1 -1
  176. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/package.json +2 -2
  177. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/model.js +3 -3
  178. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/proc.js +10 -2
  179. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/package.json +2 -2
  180. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/src/main.js +82 -26
  181. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/session-store.js +3 -3
  182. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/swig-filters/package.json +2 -2
  183. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/swig-filters/src/main.js +76 -15
  184. package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/validator.js +2 -2
  185. package/framework/v0.1.6-alpha.141/package.json +11 -0
  186. package/package.json +3 -3
  187. package/resources/package.json.template +1 -1
  188. package/script/post_install.js +4 -4
  189. package/script/pre_install.js +3 -3
  190. package/utils/helper.js +38 -14
  191. package/framework/v0.1.6-alpha.14/VERSION +0 -1
  192. package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +0 -1
  193. package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -766
  194. package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +0 -8
  195. package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -7
  196. package/framework/v0.1.6-alpha.14/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +0 -8
  197. package/framework/v0.1.6-alpha.14/core/deps/busboy/.travis.yml +0 -17
  198. package/framework/v0.1.6-alpha.14/core/deps/busboy/README.md +0 -225
  199. package/framework/v0.1.6-alpha.14/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -73
  200. package/framework/v0.1.6-alpha.14/core/deps/busboy/deps/encoding/encoding.js +0 -2391
  201. package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/main.js +0 -89
  202. package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/types/multipart.js +0 -328
  203. package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/types/urlencoded.js +0 -214
  204. package/framework/v0.1.6-alpha.14/core/deps/busboy/lib/utils.js +0 -191
  205. package/framework/v0.1.6-alpha.14/core/deps/busboy/package.json +0 -69
  206. package/framework/v0.1.6-alpha.14/lib/domain/dist/public_suffix_list.dat +0 -14186
  207. package/framework/v0.1.6-alpha.14/lib/domain/exemples/backend.js +0 -0
  208. package/framework/v0.1.6-alpha.14/package.json +0 -14
  209. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/AUTHORS +0 -0
  210. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/html/nolayout.html +0 -0
  211. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/html/static.html +0 -0
  212. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/android-chrome-192x192.png +0 -0
  213. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/android-chrome-512x512.png +0 -0
  214. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/apple-touch-icon.png +0 -0
  215. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/favicon-16x16.png +0 -0
  216. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/favicon-32x32.png +0 -0
  217. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/img/favicon.ico +0 -0
  218. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  219. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/asset/plugin/uuid.json +0 -0
  220. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.js +0 -0
  221. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  222. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  223. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/n1ql.js +0 -0
  224. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.js +0 -0
  225. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  226. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  227. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/controller/controller.framework.js +0 -0
  228. /package/framework/{v0.1.6-alpha.14/core/deps/busboy → v0.1.6-alpha.141/core/deps/busboy-1.6.0}/LICENSE +0 -0
  229. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  230. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/lib/class.js +0 -0
  231. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/dev/lib/tools.js +0 -0
  232. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/README.md +0 -0
  233. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/currency.json +0 -0
  234. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/language/en.json +0 -0
  235. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/language/fr.json +0 -0
  236. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/region/en.json +0 -0
  237. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/dist/region/fr.json +0 -0
  238. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/resources/currency.csv +0 -0
  239. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/resources/region.csv +0 -0
  240. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/locales/src/resources/region.mapping.json +0 -0
  241. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/README.md +0 -0
  242. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/file/README.md +0 -0
  243. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/file/build.json +0 -0
  244. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/README.md +0 -0
  245. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/build.json +0 -0
  246. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/intl/src/main.js +0 -0
  247. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/README.md +0 -0
  248. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/build.json +0 -0
  249. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/storage/src/main.js +0 -0
  250. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/README.md +0 -0
  251. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/plugins/lib/validator/build.json +0 -0
  252. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/server.express.js +0 -0
  253. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/_gitignore +0 -0
  254. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/app.json +0 -0
  255. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/routing.json +0 -0
  256. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/settings.json +0 -0
  257. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  258. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/config/templates.json +0 -0
  259. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  260. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  261. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle/index.js +0 -0
  262. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  263. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  264. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  265. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  266. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  267. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_public/readme.md +0 -0
  268. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  269. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  270. /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
  271. /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
  272. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  273. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/command/gina.bat.tpl +0 -0
  274. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/manifest.json +0 -0
  275. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/package.json +0 -0
  276. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/settings.json +0 -0
  277. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/conf/statics.json +0 -0
  278. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/client/json/401.json +0 -0
  279. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/client/json/403.json +0 -0
  280. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/client/json/404.json +0 -0
  281. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/server/html/50x.html +0 -0
  282. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/server/json/500.json +0 -0
  283. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/error/server/json/503.json +0 -0
  284. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/core/template/extensions/logger/config.json +0 -0
  285. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/LICENSE +0 -0
  286. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/data/README.md +0 -0
  287. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/LICENSE +0 -0
  288. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/json/README.md +0 -0
  289. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/plugins/README.md +0 -0
  290. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/helpers/prototypes.js +0 -0
  291. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/README.md +0 -0
  292. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/build.json +0 -0
  293. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/archiver/src/dep/jszip.min.js +0 -0
  294. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/aliases.json +0 -0
  295. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/arguments.json +0 -0
  296. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/copy.js +0 -0
  297. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/cp.js +0 -0
  298. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/help.js +0 -0
  299. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/help.txt +0 -0
  300. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/list.js +0 -0
  301. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/remove.js +0 -0
  302. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/rename.js +0 -0
  303. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/restart.js +0 -0
  304. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/rm.js +0 -0
  305. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/status.js +0 -0
  306. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/bundle/stop.js +0 -0
  307. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/add.js +0 -0
  308. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/help.txt +0 -0
  309. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/link-dev.js +0 -0
  310. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/list.js +0 -0
  311. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/remove.js +0 -0
  312. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/rm.js +0 -0
  313. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/set.js +0 -0
  314. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/unset.js +0 -0
  315. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/env/use.js +0 -0
  316. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/get.js +0 -0
  317. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/help.js +0 -0
  318. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/help.txt +0 -0
  319. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/msg.json +0 -0
  320. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/open.js +0 -0
  321. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/set.js +0 -0
  322. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/status.js +0 -0
  323. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/stop.js +0 -0
  324. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/framework/update.js +0 -0
  325. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/gina-dev.1.md +0 -0
  326. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/gina-framework.1.md +0 -0
  327. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/gina.1.md +0 -0
  328. /package/framework/{v0.1.6-alpha.14/lib/cmd/env → v0.1.6-alpha.141/lib/cmd/minion}/help.js +0 -0
  329. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/msg.json +0 -0
  330. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/help.js +0 -0
  331. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/help.txt +0 -0
  332. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/inc/scan.js +0 -0
  333. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/list.js +0 -0
  334. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/port/set.js +0 -0
  335. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/help.js +0 -0
  336. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/import.js +0 -0
  337. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/move.js +0 -0
  338. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/remove.js +0 -0
  339. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/rename.js +0 -0
  340. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/restart.js +0 -0
  341. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/rm.js +0 -0
  342. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/start.js +0 -0
  343. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/status.js +0 -0
  344. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/project/stop.js +0 -0
  345. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/help.js +0 -0
  346. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/help.txt +0 -0
  347. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/protocol/set.js +0 -0
  348. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/add.js +0 -0
  349. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/help.js +0 -0
  350. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/help.txt +0 -0
  351. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/link-local.js +0 -0
  352. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/link-production.js +0 -0
  353. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/list.js +0 -0
  354. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/remove.js +0 -0
  355. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/rm.js +0 -0
  356. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/scope/use.js +0 -0
  357. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cmd/view/add.js +0 -0
  358. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/README.md +0 -0
  359. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/collection/build.json +0 -0
  360. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cron/README.md +0 -0
  361. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/cron/src/main.js +0 -0
  362. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/LICENSE +0 -0
  363. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/README.md +0 -0
  364. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/domain/exemples/frontend.html +0 -0
  365. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/README.md +0 -0
  366. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  367. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/example/protected_inheritance.js +0 -0
  368. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/inherits/example/simple_inheritance.js +0 -0
  369. /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
  370. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/README.md +0 -0
  371. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/default/index.js +0 -0
  372. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/file/index.js +0 -0
  373. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  374. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  375. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/mq/index.js +0 -0
  376. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/logger/src/containers/mq/speaker.js +0 -0
  377. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/README.md +0 -0
  378. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/example/merge.js +0 -0
  379. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/example/merge_2_literal objects.js +0 -0
  380. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/example/merge_and_preserve_first.js +0 -0
  381. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/merge/src/main.js +0 -0
  382. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/README.md +0 -0
  383. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/routing/build.json +0 -0
  384. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/shell.js +0 -0
  385. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/swig-filters/README.md +0 -0
  386. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/README.md +0 -0
  387. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/index.js +0 -0
  388. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/mocks.json +0 -0
  389. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/routing.json +0 -0
  390. /package/framework/{v0.1.6-alpha.14 → v0.1.6-alpha.141}/lib/url/test.js +0 -0
@@ -18,7 +18,7 @@
18
18
  * @param {object} [ data ] // from request
19
19
  * @param {string} [ formId ]
20
20
  * */
21
- function ValidatorPlugin(rules, data, formId) {
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' : 'GET',
158
- 'isSynchrone' : false,
159
- 'withCredentials': false,
160
- 'headers' : {
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 = $el.parentNode, isErrorMessageHidden = false;
417
- var $children = $parent.getElementsByTagName('div');
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 {object|null} [fileName]
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 (!instance.$forms[formId].sent || instance.$forms[formId].isValidating) {
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 ( typeof(errors[name]) != 'undefined' && !/(form\-item\-error|form\-item\-warning)/.test($parent.className) ) {
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 ( typeof(errors[name]) == 'undefined' && /(form\-item\-error|form\-item\-warning)/.test($parent.className) || typeof(errors[name]) != 'undefined' && errors[name].count() == 0 && /(form\-item\-error|form\-item\-warning)/.test($parent.className) ) {
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 ( typeof(errors[name]) != 'undefined' && errAttr) {
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
- if ($divs[d].className == 'form-item-error-message') {
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 (typeof(fieldName) != 'undefined' && fieldName === $el.name) break;
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: true, withCredentials: true }
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
- typeof($form.isSending) != 'undefined'
944
+ /^true$/i.test(options.withRateLimit)
945
+ && typeof($form.isSending) != 'undefined'
857
946
  && /^true$/i.test($form.isSending)
858
947
  ||
859
- typeof($form.sent) != 'undefined'
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
- options = (typeof (options) != 'undefined') ? merge(options, xhrOptions) : xhrOptions;
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
- $form.sent = false;
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
- if (xhr.readyState == 2) { // responseType interception
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].substr(1);
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
- } else { // normal case
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.substr(childNodes[i].src.lastIndexOf('/')+1);
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.substr(1, tmpStr.length-1);// removing ->{ ... }<-
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
- console.debug('processing: ' + event.target.name+ '/'+ event.target.id);
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
- // do not trigger for copy/paste event
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
- console.debug(' keyup ('+ event.keyCode +') .... '+$el.id, $el.value, ' VS ',$el.ginaFormValidatorTestedValue + '(old)');
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.substr(0, posStart) + str.substr(posEnd);
3611
+ $_el.value = str.substring(0, posStart) + str.substring(posEnd);
3337
3612
  if (posStart == 0) {
3338
- $_el.value = str.substr(posEnd);
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.substr(0, posStart-1) + str.substr(posEnd);
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.substr(0, posStart) + e.key;
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.substr(0, posStart) + e.key + str.substr(posEnd);
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 - This is a WIP
3858
+ * reBindForm
3859
+ * Allows form rebinding: it is like reseting validation
3581
3860
  *
3582
- * @param {object} HTMLElement
3583
- * @param {object} rules
3584
- * @returns {object} formValidatorInstance
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($target, rules, cb) {
3587
- // Unbind form
3588
- var formInstance = unbindForm($target);
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
- //resetErrorsDisplay(formInstance.id);
3890
+ resetErrorsDisplay(_id);
3891
+ // Unbind form
3892
+ unbindForm($form.target);
3591
3893
  // Bind
3592
- bindForm(formInstance.target, rules);
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(formInstance);
3901
+ return cb($form);
3596
3902
  }
3597
- return formInstance;
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
- try {
3825
- if ( $target.getAttribute && $target.getAttribute('id') ) {
3826
- _id = $target.getAttribute('id');
3827
- if ( typeof(instance.$forms[_id]) != 'undefined')
3828
- $form = instance.$forms[_id];
3829
- else
3830
- throw new Error('form instance `'+ _id +'` not found');
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('Validator::bindForm($target, customRule): `$target` must be a DOM element\n'+err.stack )
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.substr($img.src.lastIndexOf('/')+1);
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 ( /^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled && $form.rules.count() > 0) ) {
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
- // stop there if form has already been sent
5398
- if (instance.$forms[id].sent) {
5399
- return;
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
- } else if (!/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) ) {
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
- if ( typeof($formInstance.submitTrigger) == 'undefined') {
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 ( /true/i.test(isFormValid) ) { // show submitTrigge
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 = $currentForm.getAttribute('id');
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
- instance.$forms[formId].errors[field] = cb._errors[field];
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, isFormValid = null;
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
- //console.debug('should update error display now ', cb._errors);
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' || Array.isArray(rules[c].conditions) && !rules[c].conditions.length ) continue;
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 (rules[c].conditions[_c].case != caseValue) {
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']) && conditions[c]['case'].indexOf(caseValue) > -1
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].substr(0, fieldErrorsAttributes[field].length-1))
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
  });