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