gina 0.1.1-alpha.160 → 0.1.1-alpha.162

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 (295) hide show
  1. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/AUTHORS +0 -0
  2. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/LICENSE +0 -0
  3. package/framework/v0.1.1-alpha.162/VERSION +1 -0
  4. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/html/nolayout.html +0 -0
  5. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/html/static.html +0 -0
  6. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/img/android-chrome-192x192.png +0 -0
  7. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/img/android-chrome-512x512.png +0 -0
  8. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/img/apple-touch-icon.png +0 -0
  9. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/img/favicon-16x16.png +0 -0
  10. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/img/favicon-32x32.png +0 -0
  11. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/img/favicon.ico +0 -0
  12. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/gina.js +383 -284
  13. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/gina.min.css +0 -0
  14. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/gina.min.css.map +0 -0
  15. package/framework/v0.1.1-alpha.162/core/asset/plugin/dist/gina.min.js +741 -0
  16. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/gina.min.js.map +5 -5
  17. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/gina.onload.min.js +0 -0
  18. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/gina.onload.min.js.map +0 -0
  19. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/toolbar/css/toolbar-min.css +0 -0
  20. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/toolbar/css/toolbar.css +0 -0
  21. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/toolbar/css/toolbar.css.map +0 -0
  22. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/toolbar/js/jquery-3.1.0.min.js +0 -0
  23. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/toolbar/main.js +0 -0
  24. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/dist/toolbar/toolbar.html +0 -0
  25. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/readme.md +0 -0
  26. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/asset/plugin/uuid.json +0 -0
  27. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/config.js +0 -0
  28. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/index.js +0 -0
  29. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/connector.js +0 -0
  30. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  31. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  32. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  33. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/n1ql.js +0 -0
  34. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/session-store.js +0 -0
  35. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  36. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  37. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  38. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/controller/controller.framework.js +0 -0
  39. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/controller/controller.js +0 -0
  40. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/controller/index.js +0 -0
  41. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/.travis.yml +0 -0
  42. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/LICENSE +0 -0
  43. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/README.md +0 -0
  44. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -0
  45. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/deps/encoding/encoding.js +0 -0
  46. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/lib/main.js +0 -0
  47. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/lib/types/multipart.js +0 -0
  48. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/lib/types/urlencoded.js +0 -0
  49. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/lib/utils.js +0 -0
  50. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/busboy/package.json +0 -0
  51. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  52. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/dev/index.js +0 -0
  53. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/dev/lib/class.js +0 -0
  54. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/dev/lib/factory.js +0 -0
  55. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/dev/lib/tools.js +0 -0
  56. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/gna.js +0 -0
  57. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/README.md +0 -0
  58. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/currency.json +0 -0
  59. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/dist/language/en.json +0 -0
  60. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/dist/language/fr.json +0 -0
  61. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/dist/region/en.json +0 -0
  62. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/dist/region/fr.json +0 -0
  63. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/index.js +0 -0
  64. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/src/make.js +0 -0
  65. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/src/resources/currency.csv +0 -0
  66. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/src/resources/region.csv +0 -0
  67. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/locales/src/resources/region.mapping.json +0 -0
  68. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/mime.types +0 -0
  69. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/model/entity.js +0 -0
  70. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/model/index.js +0 -0
  71. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/model/template/entityFactory.js +0 -0
  72. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/model/template/index.js +0 -0
  73. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/README.md +0 -0
  74. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/index.js +0 -0
  75. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/file/README.md +0 -0
  76. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/file/build.json +0 -0
  77. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/file/package.json +0 -0
  78. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/intl/README.md +0 -0
  79. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/intl/build.json +0 -0
  80. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/intl/package.json +0 -0
  81. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/intl/src/main.js +0 -0
  82. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/storage/README.md +0 -0
  83. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/storage/build.json +0 -0
  84. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/storage/package.json +0 -0
  85. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/storage/src/main.js +0 -0
  86. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/validator/README.md +0 -0
  87. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/validator/build.json +0 -0
  88. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/validator/package.json +0 -0
  89. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/validator/src/form-validator.js +383 -284
  90. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/plugins/lib/validator/src/main.js +0 -0
  91. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/router.js +0 -0
  92. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/server.express.js +0 -0
  93. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/server.isaac.js +0 -0
  94. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/server.js +0 -0
  95. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/status.codes +0 -0
  96. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/config/app.json +0 -0
  97. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/config/routing.json +0 -0
  98. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/config/settings.json +0 -0
  99. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  100. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/config/templates.json +0 -0
  101. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  102. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  103. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  104. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle/index.js +0 -0
  105. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  106. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  107. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  108. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  109. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  110. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_public/readme.md +0 -0
  111. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  112. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  113. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  114. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  115. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  116. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/command/gina.bat.tpl +0 -0
  117. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/command/gina.tpl +0 -0
  118. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/conf/env.json +0 -0
  119. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/conf/manifest.json +0 -0
  120. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/conf/package.json +0 -0
  121. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/conf/settings.json +0 -0
  122. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/conf/statics.json +0 -0
  123. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/conf/templates.json +0 -0
  124. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/error/client/json/401.json +0 -0
  125. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/error/client/json/403.json +0 -0
  126. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/error/client/json/404.json +0 -0
  127. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/error/server/html/50x.html +0 -0
  128. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/error/server/json/500.json +0 -0
  129. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/error/server/json/503.json +0 -0
  130. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/core/template/extensions/logger/config.json +0 -0
  131. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/console.js +0 -0
  132. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/context.js +0 -0
  133. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/dateFormat.js +0 -0
  134. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/index.js +0 -0
  135. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/json/README.md +0 -0
  136. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/json/package.json +0 -0
  137. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/json/src/main.js +0 -0
  138. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/path.js +0 -0
  139. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/plugins/README.md +0 -0
  140. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/plugins/package.json +0 -0
  141. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/plugins/src/api-error.js +0 -0
  142. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/plugins/src/main.js +0 -0
  143. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/prototypes.js +0 -0
  144. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/task.js +0 -0
  145. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/helpers/text.js +0 -0
  146. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/archiver/README.md +0 -0
  147. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/archiver/build.json +0 -0
  148. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/archiver/package.json +0 -0
  149. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/archiver/src/dep/jszip.min.js +0 -0
  150. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/archiver/src/main.js +0 -0
  151. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/aliases.json +0 -0
  152. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/add.js +0 -0
  153. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/arguments.json +0 -0
  154. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/copy.js +0 -0
  155. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/cp.js +0 -0
  156. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/help.js +0 -0
  157. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/help.txt +0 -0
  158. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/list.js +0 -0
  159. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/remove.js +0 -0
  160. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/rename.js +0 -0
  161. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/restart.js +0 -0
  162. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/rm.js +0 -0
  163. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/start.js +0 -0
  164. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/status.js +0 -0
  165. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/bundle/stop.js +0 -0
  166. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/add.js +0 -0
  167. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/get.js +0 -0
  168. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/help.js +0 -0
  169. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/help.txt +0 -0
  170. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/link-dev.js +0 -0
  171. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/list.js +0 -0
  172. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/remove.js +0 -0
  173. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/rm.js +0 -0
  174. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/set.js +0 -0
  175. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/unset.js +0 -0
  176. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/env/use.js +0 -0
  177. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/build.js +0 -0
  178. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/dot.js +0 -0
  179. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/get.js +0 -0
  180. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/help.js +0 -0
  181. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/help.txt +0 -0
  182. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/init.js +0 -0
  183. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/link-node-modules.js +0 -0
  184. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/link.js +0 -0
  185. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/msg.json +0 -0
  186. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/open.js +0 -0
  187. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/restart.js +0 -0
  188. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/set.js +0 -0
  189. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/start.js +0 -0
  190. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/status.js +0 -0
  191. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/stop.js +0 -0
  192. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/tail.js +1 -1
  193. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/update.js +0 -0
  194. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/framework/version.js +0 -0
  195. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/gina-dev.1.md +0 -0
  196. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/gina-framework.1.md +0 -0
  197. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/gina.1.md +0 -0
  198. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/helper.js +0 -0
  199. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/index.js +0 -0
  200. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/msg.json +0 -0
  201. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/port/help.js +0 -0
  202. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/port/help.txt +0 -0
  203. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/port/inc/scan.js +0 -0
  204. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/port/list.js +0 -0
  205. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/port/reset.js +0 -0
  206. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/port/set.js +0 -0
  207. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/add.js +0 -0
  208. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/arguments.json +0 -0
  209. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/build.js +0 -0
  210. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/help.js +0 -0
  211. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/help.txt +0 -0
  212. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/import.js +0 -0
  213. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/list.js +0 -0
  214. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/move.js +0 -0
  215. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/remove.js +0 -0
  216. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/rename.js +0 -0
  217. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/restart.js +0 -0
  218. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/rm.js +0 -0
  219. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/start.js +0 -0
  220. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/status.js +0 -0
  221. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/project/stop.js +0 -0
  222. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/protocol/help.js +0 -0
  223. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/protocol/help.txt +0 -0
  224. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/protocol/list.js +0 -0
  225. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/protocol/set.js +0 -0
  226. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/help.js +0 -0
  227. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/help.txt +0 -0
  228. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/link-local.js +0 -0
  229. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/list.js +0 -0
  230. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/remove.js +0 -0
  231. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/rm.js +0 -0
  232. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/set.js +0 -0
  233. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/unset.js +0 -0
  234. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/scope/use.js +0 -0
  235. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cmd/view/add.js +0 -0
  236. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/collection/README.md +0 -0
  237. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/collection/build.json +0 -0
  238. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/collection/package.json +0 -0
  239. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/collection/src/main.js +0 -0
  240. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/config.js +0 -0
  241. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cron/README.md +0 -0
  242. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cron/package.json +0 -0
  243. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/cron/src/main.js +0 -0
  244. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/generator/index.js +0 -0
  245. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/index.js +0 -0
  246. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/LICENSE +0 -0
  247. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/README.md +0 -0
  248. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  249. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/example/protected_inheritance.js +0 -0
  250. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/example/simple_inheritance.js +0 -0
  251. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
  252. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/package.json +0 -0
  253. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/inherits/src/main.js +0 -0
  254. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/README.md +0 -0
  255. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/package.json +0 -0
  256. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/containers/default/index.js +0 -0
  257. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/containers/file/index.js +0 -0
  258. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  259. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  260. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/containers/mq/index.js +0 -0
  261. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/containers/mq/listener.js +0 -0
  262. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/containers/mq/speaker.js +0 -0
  263. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/helper.js +0 -0
  264. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/logger/src/main.js +0 -0
  265. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/math/index.js +0 -0
  266. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/merge/README.md +0 -0
  267. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/merge/example/merge.js +0 -0
  268. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/merge/example/merge_2_literal objects.js +0 -0
  269. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/merge/example/merge_and_preserve_first.js +0 -0
  270. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/merge/package.json +0 -0
  271. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/merge/src/main.js +0 -0
  272. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/model.js +0 -0
  273. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/proc.js +0 -0
  274. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/routing/README.md +0 -0
  275. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/routing/build.json +0 -0
  276. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/routing/package.json +0 -0
  277. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/routing/src/main.js +0 -0
  278. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/session-store.js +0 -0
  279. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/shell.js +0 -0
  280. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/swig-filters/README.md +0 -0
  281. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/swig-filters/package.json +0 -0
  282. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/swig-filters/src/main.js +0 -0
  283. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/url/README.md +0 -0
  284. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/url/index.js +0 -0
  285. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/url/mocks.json +0 -0
  286. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/url/routing.json +0 -0
  287. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/url/test.js +0 -0
  288. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/lib/validator.js +0 -0
  289. package/framework/{v0.1.1-alpha.160 → v0.1.1-alpha.162}/package.json +0 -0
  290. package/package.json +2 -2
  291. package/script/post_publish.js +2 -1
  292. package/script/prepare_version.js +54 -3
  293. package/framework/v0.1.1-alpha.160/VERSION +0 -1
  294. package/framework/v0.1.1-alpha.160/core/asset/plugin/dist/gina.js.map +0 -56
  295. package/framework/v0.1.1-alpha.160/core/asset/plugin/dist/gina.min.js +0 -739
@@ -5819,14 +5819,14 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
5819
5819
 
5820
5820
  // if (isGFFCtx && !$fields )
5821
5821
  // throw new Error('No `Validator` instance found.\nTry:\nvar FormValidator = require("gina/validator"):\nvar formValidator = new FormValidator(...);')
5822
-
5822
+
5823
5823
  var merge = (isGFFCtx) ? require('utils/merge') : require('../../../../../lib/merge');
5824
5824
  var helpers = (isGFFCtx) ? {} : require('../../../../../helpers');
5825
5825
  var dateFormat = (isGFFCtx) ? require('helpers/dateFormat') : helpers.dateFormat;
5826
5826
  var routing = (isGFFCtx) ? require('utils/routing') : require('../../../../../lib/routing');
5827
-
5827
+
5828
5828
  var hasUserValidators = function() {
5829
-
5829
+
5830
5830
  var _hasUserValidators = false, formsContext = null;
5831
5831
  // backend validation check
5832
5832
  if (!isGFFCtx) {
@@ -5839,7 +5839,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
5839
5839
  _hasUserValidators = true
5840
5840
  }
5841
5841
  return _hasUserValidators;
5842
- }
5842
+ }
5843
5843
  /**@js_externs local*/
5844
5844
  var local = {
5845
5845
  'errors': {},
@@ -5888,12 +5888,12 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
5888
5888
  self = merge( JSON.clone(data), self );
5889
5889
  local.data = merge( JSON.clone(data), local.data);
5890
5890
  }
5891
-
5891
+
5892
5892
  var getElementByName = function($form, name) { // frontend only
5893
5893
  var $foundElement = null;
5894
5894
  for (let f in fieldsSet) {
5895
5895
  if (fieldsSet[f].name !== name) continue;
5896
-
5896
+
5897
5897
  $foundElement = new DOMParser()
5898
5898
  .parseFromString($form.innerHTML , 'text/html')
5899
5899
  .getElementById( fieldsSet[f].id );
@@ -5901,16 +5901,16 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
5901
5901
  }
5902
5902
  if ($foundElement)
5903
5903
  return $foundElement;
5904
-
5904
+
5905
5905
  throw new Error('Field `'+ name +'` not found in fieldsSet');
5906
5906
  }
5907
-
5907
+
5908
5908
  /**
5909
5909
  * bufferToString - Convert Buffer to String
5910
5910
  * Will apply `Utf8Array` to `String`
5911
- * @param {array} arrayBuffer
5911
+ * @param {array} arrayBuffer
5912
5912
  */
5913
- var bufferToString = function(arrayBuffer) {
5913
+ var bufferToString = function(arrayBuffer) {
5914
5914
  var out = null
5915
5915
  , i = null
5916
5916
  , len = null
@@ -5923,7 +5923,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
5923
5923
  i = 0;
5924
5924
  while(i < len) {
5925
5925
  c = arrayBuffer[i++];
5926
- switch (c >> 4) {
5926
+ switch (c >> 4) {
5927
5927
  case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
5928
5928
  // 0xxxxxxx
5929
5929
  out += String.fromCharCode(c);
@@ -5946,22 +5946,40 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
5946
5946
 
5947
5947
  return out;
5948
5948
  };
5949
-
5949
+
5950
+ var compileError = function(error, data) {
5951
+ var varArr = error.match(/\{\{([^{{}}]+)\}\}/g );
5952
+ for (let v=0, vLen=varArr.length; v<vLen; v++) {
5953
+ let localValue = varArr[v]
5954
+ .replace(/\[/g, '["')
5955
+ .replace(/\]/g, '"]')
5956
+ .replace(/\{|\}/g, '')
5957
+ .trim();
5958
+
5959
+ try {
5960
+ localValue = eval('data.'+ localValue).replace(/^\"|\"$/g, '');
5961
+ error = error.replace( new RegExp( varArr[v].replace(/\{|\[|\]|\}/g, '\\$&') , 'g'), localValue);
5962
+ } catch(e) {}
5963
+ }
5964
+
5965
+ return error
5966
+ };
5967
+
5950
5968
  // TODO - One method for the front, and one for the server
5951
5969
  var queryFromFrontend = function(options, errorMessage) {
5952
- var errors = self[this['name']]['errors'] || {};
5970
+ var errors = self[this['name']]['errors'] || {};
5953
5971
  var id = this.target.id || this.target.getAttribute('id');
5954
-
5955
-
5956
- // stop if
5957
- // - previous error detected
5958
- if ( !self.isValid() ) {
5972
+
5973
+
5974
+ // stop if
5975
+ // - previous error detected
5976
+ if ( !self.isValid() ) {
5959
5977
  console.debug('stopping on errors ...');
5960
5978
  triggerEvent(gina, this.target, 'asyncCompleted.' + id, self[this['name']]);
5961
5979
  //return self[this.name];
5962
5980
  return;
5963
5981
  }
5964
-
5982
+
5965
5983
  var testedValue = this.target.dataset.ginaFormValidatorTestedValue;
5966
5984
  console.debug('[ '+ this['name'] +' ]', 'TESTED VALUE -> ' + this.value +' vs '+ testedValue);
5967
5985
  var _evt = 'asyncCompleted.' + id;
@@ -5971,53 +5989,54 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
5971
5989
  && typeof(gina.validator.$forms[currentFormId]) != 'undefined'
5972
5990
  && typeof(gina.validator.$forms[currentFormId].cachedErrors) != 'undefined'
5973
5991
  )
5974
- ? gina.validator.$forms[currentFormId].cachedErrors
5992
+ ? gina.validator.$forms[currentFormId].cachedErrors
5975
5993
  : null;
5976
5994
  if ( !testedValue || typeof(testedValue) == 'undefined' || testedValue !== this.value ) {
5977
5995
  this.target.dataset.ginaFormValidatorTestedValue = this.value;
5978
5996
  // remove cachedErrors
5979
- if (
5980
- cachedErrors
5997
+ if (
5998
+ cachedErrors
5981
5999
  && typeof(cachedErrors[this.name]) != 'undefined'
5982
6000
  && typeof(cachedErrors[this.name].query) != 'undefined'
5983
6001
  ) {
5984
6002
  delete cachedErrors[this.name].query;
5985
- if (
6003
+ if (
5986
6004
  typeof(gina.validator.$forms[currentFormId]) != 'undefined'
5987
6005
  &&
5988
6006
  typeof(gina.validator.$forms[currentFormId].errors) != 'undefined'
5989
6007
  ) {
5990
6008
  delete gina.validator.$forms[currentFormId].errors.query;
5991
6009
  }
5992
-
6010
+
5993
6011
  }
5994
6012
  } else if (testedValue === this.value) {
5995
6013
  // not resending to backend, but in case of cached errors, re display same error message
5996
- var hasCachedErrors = false;
5997
- if (
5998
- cachedErrors
6014
+ var hasCachedErrors = false;
6015
+ if (
6016
+ cachedErrors
5999
6017
  && typeof(cachedErrors[this.name]) != 'undefined'
6000
- && typeof(cachedErrors[this.name].query) != 'undefined'
6001
- && typeof(cachedErrors[this.name].query[this.value]) != 'undefined'
6018
+ && typeof(cachedErrors[this.name].query) != 'undefined'
6019
+ && typeof(cachedErrors[this.name].query[this.value]) != 'undefined'
6002
6020
  ) {
6003
6021
  this.error = errorMessage = cachedErrors[this.name].query[this.value].slice(0);
6004
6022
  hasCachedErrors = true;
6005
6023
  }
6006
6024
  errors['query'] = replace( this.error || errorMessage || local.errorLabels['query'], this);
6007
-
6025
+ console.debug('[2] potential cached error detected !! ', hasCachedErrors, cachedErrors, ' vs ', errors['query']);
6026
+
6008
6027
  if (hasCachedErrors) {
6009
6028
  this['errors'] = errors;
6010
6029
  this.valid = false;
6011
6030
  }
6012
- // Do not remove this test
6031
+ // Do not remove this test
6013
6032
  if ( typeof( gina.events[_evt]) != 'undefined' ) {
6014
6033
  triggerEvent(gina, this.target, _evt, self[this['name']]);
6015
- }
6016
-
6034
+ }
6035
+
6017
6036
  return self[this.name];
6018
6037
  }
6019
6038
  //console.debug('Did not return !!!');
6020
-
6039
+
6021
6040
  var xhr = null, _this = this;
6022
6041
  // setting up AJAX
6023
6042
  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
@@ -6032,17 +6051,17 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6032
6051
  catch (e) {}
6033
6052
  }
6034
6053
  }
6035
-
6054
+
6036
6055
  // forcing to sync mode
6037
- var queryOptions = { isSynchrone: false, headers: {} };
6056
+ var queryOptions = { isSynchrone: false, headers: {} };
6038
6057
  var queryData = options.data || null, strData = null;
6039
6058
  var isInlineValidation = (/^true$/i.test(this.target.form.dataset.ginaFormLiveCheckEnabled)) ? true : false; // TRUE if liveCheckEnabled
6040
-
6059
+
6041
6060
  // replace placeholders by field values
6042
6061
  strData = JSON.stringify(queryData);
6043
6062
  if ( /\$/.test(strData) ) {
6044
6063
  var variables = strData.match(/\$[-_\[\]a-z 0-9]+/g) || [];
6045
- var value = null, key = null;
6064
+ var value = null, key = null;
6046
6065
  for (let i = 0, len = variables.length; i < len; i++) {
6047
6066
  key = variables[i].replace(/\$/g, '');
6048
6067
  re = new RegExp("\\"+ variables[i].replace(/\[|\]/g, '\\$&'), "g");
@@ -6051,26 +6070,26 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6051
6070
  // Retrieving live value instead of using fieldsSet.value
6052
6071
  value = getElementByName(this.target.form, key).value;
6053
6072
  }
6054
-
6073
+
6055
6074
  strData = strData.replace( re, value );
6056
6075
  }
6057
6076
  }
6058
6077
  // cleanup before sending
6059
- queryData = strData.replace(/\\"/g, '');
6078
+ queryData = strData.replace(/\\"/g, '');
6060
6079
  // TODO - support regexp for validIf
6061
6080
  var validIf = ( typeof(options.validIf) == 'undefined' ) ? true : options.validIf;
6062
-
6081
+
6063
6082
  queryOptions = merge(queryOptions, options, xhrOptions);
6064
6083
  delete queryOptions.data;
6065
6084
  delete queryOptions.validIf;
6066
-
6085
+
6067
6086
  var enctype = queryOptions.headers['Content-Type'];
6068
6087
  var result = null
6069
6088
  , $target = this.target
6070
6089
  //, id = $target.getAttribute('id')
6071
6090
  ;
6072
6091
  id = $target.getAttribute('id')
6073
-
6092
+
6074
6093
  // checking url
6075
6094
  if (!/^http/.test(queryOptions.url) && /\@/.test(queryOptions.url) ) {
6076
6095
  try {
@@ -6080,7 +6099,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6080
6099
  throw routingError;
6081
6100
  }
6082
6101
  }
6083
-
6102
+
6084
6103
  if ( queryOptions.withCredentials ) {
6085
6104
  if ('withCredentials' in xhr) {
6086
6105
  // XHR for Chrome/Firefox/Opera/Safari.
@@ -6096,7 +6115,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6096
6115
  // xhr.open(queryOptions.method, queryOptions.url, queryOptions.isSynchrone);
6097
6116
  // } else {
6098
6117
  xhr.open(queryOptions.method, queryOptions.url);
6099
- // }
6118
+ // }
6100
6119
  } else {
6101
6120
  // CORS not supported.
6102
6121
  xhr = null;
@@ -6104,10 +6123,10 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6104
6123
  //triggerEvent(gina, $target, 'error.' + id, result);
6105
6124
  throw new Error(result);
6106
6125
  }
6107
-
6126
+
6108
6127
  if ( typeof(queryOptions.responseType) != 'undefined' ) {
6109
6128
  /**
6110
- * Note: We expect to remove support for synchronous use of XMLHTTPRequest() during page unloads in Chrome in version 88,
6129
+ * Note: We expect to remove support for synchronous use of XMLHTTPRequest() during page unloads in Chrome in version 88,
6111
6130
  * scheduled to ship in January 2021.
6112
6131
  * The XMLHttpRequest2 spec was recently changed to prohibit sending a synchronous request when XMLHttpRequest.responseType
6113
6132
  */
@@ -6124,132 +6143,212 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6124
6143
  xhr.open(queryOptions.method, queryOptions.url)
6125
6144
  }
6126
6145
  }
6127
-
6146
+
6128
6147
  // setting up headers - all but Content-Type ; it will be set right before .send() is called
6129
6148
  for (var hearder in queryOptions.headers) {
6130
6149
  if (hearder == 'Content-Type' && typeof (enctype) != 'undefined' && enctype != null && enctype != '')
6131
6150
  continue;
6132
6151
 
6133
6152
  xhr.setRequestHeader(hearder, queryOptions.headers[hearder]);
6134
- }
6153
+ }
6135
6154
  if (typeof (enctype) != 'undefined' && enctype != null && enctype != '') {
6136
6155
  xhr.setRequestHeader('Content-Type', enctype);
6137
6156
  }
6138
-
6139
- if (xhr) {
6140
-
6141
- xhr.onload = function () {
6142
-
6143
- var onResult = function(result) {
6144
-
6145
- _this.value = local['data'][_this.name] = (_this.value) ? _this.value.toLowerCase() : _this.value;
6146
-
6147
- var isValid = result.isValid || false;
6148
- if (validIf != isValid) {
6149
- isValid = false;
6150
- } else {
6151
- isValid = true;
6157
+
6158
+ var onResult = function(result) {
6159
+
6160
+ _this.value = local['data'][_this.name] = (_this.value) ? _this.value.toLowerCase() : _this.value;
6161
+
6162
+ var isValid = result.isValid || false;
6163
+ if (validIf != isValid) {
6164
+ isValid = false;
6165
+ } else {
6166
+ isValid = true;
6167
+ }
6168
+ self[_this['name']].valid = isValid;
6169
+ var errors = self[_this['name']]['errors'] || {};
6170
+
6171
+ var errorFields = ( typeof(result.error) != 'undefined' && typeof(result.fields) != 'undefined' ) ? result.fields : {};
6172
+
6173
+ if (errorFields.count() > 0 && !isValid || !isValid) {
6174
+
6175
+ if (!isValid) {
6176
+ var systemError = null;
6177
+ if ( typeof(errorFields[_this.name]) != 'undefined') {
6178
+
6179
+ // compiling against rules[field].query.data
6180
+ local.errorLabels['query'] = compileError(errorFields[_this.name], options.data);
6181
+
6182
+
6183
+ } else if ( typeof(result.error) != 'undefined' && /^5/.test(result.status) ) {
6184
+ // system error
6185
+ systemError = result.error;
6152
6186
  }
6153
- self[_this['name']].valid = isValid;
6154
- var errors = self[_this['name']]['errors'] || {};
6155
-
6156
- var errorFields = ( typeof(result.error) != 'undefined' && typeof(result.fields) != 'undefined' ) ? result.fields : {};
6157
-
6158
- if (errorFields.count() > 0 && !isValid || !isValid) {
6159
-
6160
- if (!isValid) {
6161
- var systemError = null;
6162
- if ( typeof(errorFields[_this.name]) != 'undefined') {
6163
- local.errorLabels['query'] = errorFields[_this.name];
6164
- } else if ( typeof(result.error) != 'undefined' && /^5/.test(result.status) ) {
6165
- // system error
6166
- //console.debug('found system error: ', result);
6167
- systemError = result.error;
6168
- }
6169
- errors['query'] = replace(systemError || _this['error'] || options['error'] || local.errorLabels['query'], _this);
6170
- console.debug('query error detected !! ', result);
6171
- }
6172
-
6173
- if ( !errors['query'] && _this.value == '' ) {
6174
- isValid = true;
6175
- }
6187
+ // Fixed on 2023-01-10
6188
+ // We want `local.errorLabels['query']` before the generic|user defined `rule` error
6189
+ errors['query'] = replace(systemError || _this['error'] || local.errorLabels['query'] || options['error'], _this);
6190
+ console.debug('[1] query error detected !! ', result);
6191
+ }
6192
+
6193
+ if ( !errors['query'] && _this.value == '' ) {
6194
+ isValid = true;
6195
+ }
6196
+ }
6197
+
6198
+ // if error tagged by a previous validation, remove it when isValid == true
6199
+ if ( isValid && typeof(errors['query']) != 'undefined' ) {
6200
+ delete errors['query'];
6201
+ }
6202
+
6203
+ // To handle multiple errors from backend
6204
+ // for (var f in errorFields.length) {
6205
+ // if ( !errors['query'] && _this.value == '' ) {
6206
+ // isValid = true;
6207
+ // }
6208
+
6209
+ // if (!isValid) {
6210
+ // errors['query'] = replace(_this['error'] || local.errorLabels['query'], _this)
6211
+ // }
6212
+ // // if error tagged by a previous validation, remove it when isValid == true
6213
+ // else if ( isValid && typeof(errors['query']) != 'undefined' ) {
6214
+ // delete errors['query'];
6215
+ // }
6216
+ // }
6217
+
6218
+ _this.valid = isValid;
6219
+ var cachedErrors = gina.validator.$forms[_this.target.form.getAttribute('id')].cachedErrors || {};
6220
+ if ( errors.count() > 0 ) {
6221
+
6222
+ _this['errors'] = errors;
6223
+ if ( typeof(self[_this['name']].errors) == 'undefined' ) {
6224
+ self[_this['name']].errors = {};
6225
+ }
6226
+
6227
+ self[_this['name']].errors = merge(self[_this['name']].errors, errors);
6228
+
6229
+ if ( typeof(errors.query) != 'undefined' && errors.query ) {
6230
+
6231
+ if ( typeof(cachedErrors[_this.name]) == 'undefined' ) {
6232
+ cachedErrors[_this.name] = {}
6176
6233
  }
6177
-
6178
- // if error tagged by a previous validation, remove it when isValid == true
6179
- if ( isValid && typeof(errors['query']) != 'undefined' ) {
6180
- delete errors['query'];
6234
+ if ( typeof(cachedErrors[_this.name].query) == 'undefined' ) {
6235
+ cachedErrors[_this.name].query = {}
6181
6236
  }
6182
-
6183
- // To handle multiple errors from backend
6184
- // for (var f in errorFields.length) {
6185
- // if ( !errors['query'] && _this.value == '' ) {
6186
- // isValid = true;
6187
- // }
6188
-
6189
- // if (!isValid) {
6190
- // errors['query'] = replace(_this['error'] || local.errorLabels['query'], _this)
6191
- // }
6192
- // // if error tagged by a previous validation, remove it when isValid == true
6193
- // else if ( isValid && typeof(errors['query']) != 'undefined' ) {
6194
- // delete errors['query'];
6195
- // }
6196
- // }
6197
-
6198
- _this.valid = isValid;
6199
- var cachedErrors = gina.validator.$forms[_this.target.form.getAttribute('id')].cachedErrors || {};
6200
- if ( errors.count() > 0 ) {
6201
-
6202
- _this['errors'] = errors;
6203
- if ( typeof(self[_this['name']].errors) == 'undefined' ) {
6204
- self[_this['name']].errors = {};
6205
- }
6206
-
6207
- self[_this['name']].errors = merge(self[_this['name']].errors, errors);
6208
-
6209
- if ( typeof(errors.query) != 'undefined' && errors.query ) {
6210
-
6211
- if ( typeof(cachedErrors[_this.name]) == 'undefined' ) {
6212
- cachedErrors[_this.name] = {}
6213
- }
6214
- if ( typeof(cachedErrors[_this.name].query) == 'undefined' ) {
6215
- cachedErrors[_this.name].query = {}
6216
- }
6217
-
6218
- cachedErrors[_this.name].query[_this.value] = errors.query.slice(0);
6219
- }
6220
-
6221
- var errClass = _this.target.getAttribute('data-gina-form-errors');
6222
- if ( !/query/.test(errClass) ) {
6223
- if ( !errClass || errClass =='' ) {
6224
- errClass = 'query'
6225
- } else {
6226
- errClass +=' query'
6237
+
6238
+ cachedErrors[_this.name].query[_this.value] = errors.query.slice(0);
6239
+ }
6240
+
6241
+ var errClass = _this.target.getAttribute('data-gina-form-errors');
6242
+ if ( !/query/.test(errClass) ) {
6243
+ if ( !errClass || errClass =='' ) {
6244
+ errClass = 'query'
6245
+ } else {
6246
+ errClass +=' query'
6247
+ }
6248
+ _this.target.setAttribute('data-gina-form-errors', errClass);
6249
+ }
6250
+ } else if (
6251
+ typeof(cachedErrors[_this.name]) != 'undefined'
6252
+ && typeof(cachedErrors[_this.name].query) != 'undefined'
6253
+ && typeof(cachedErrors[_this.name].query[_this.value]) != 'undefined'
6254
+ ) {
6255
+ delete cachedErrors[_this.name].query[_this.value];
6256
+ }
6257
+
6258
+ var id = _this.target.id || _this.target.getAttribute('id');
6259
+ console.debug('prematurely completed event `'+ 'asyncCompleted.' + id +'`');
6260
+ return triggerEvent(gina, _this.target, 'asyncCompleted.' + id, self[_this['name']]);
6261
+ } // EO onResult
6262
+
6263
+
6264
+ if (xhr) {
6265
+
6266
+ xhr.onerror = function(event, err) {
6267
+
6268
+ var error = 'Transaction error: might be due to the server CORS settings.\nPlease, check the console for more details.';
6269
+ var result = {
6270
+ 'status': xhr.status, //500,
6271
+ 'error' : error
6272
+ };
6273
+
6274
+ console.debug('query error [2] detected !! ', err, error);
6275
+ isOnException = true;
6276
+ result = this.responseText;
6277
+ var contentType = this.getResponseHeader("Content-Type");
6278
+ if ( /\/json/.test( contentType ) ) {
6279
+ result = JSON.parse(this.responseText);
6280
+
6281
+ if ( typeof(result.status) == 'undefined' )
6282
+ result.status = this.status;
6283
+
6284
+ //triggerEvent(gina, $target, 'success.' + id, result);
6285
+ return onResult(result)
6286
+ } else {
6287
+ result = { 'status': xhr.status, 'message': '' };
6288
+ if ( /^(\{|\[)/.test( xhr.responseText ) ) {
6289
+ try {
6290
+ result = merge( result, JSON.parse(xhr.responseText) );
6291
+ } catch (err) {
6292
+ result = merge(result, err);
6227
6293
  }
6228
- _this.target.setAttribute('data-gina-form-errors', errClass);
6229
6294
  }
6230
- } else if (
6231
- typeof(cachedErrors[_this.name]) != 'undefined'
6232
- && typeof(cachedErrors[_this.name].query) != 'undefined'
6233
- && typeof(cachedErrors[_this.name].query[_this.value]) != 'undefined'
6234
- ) {
6235
- delete cachedErrors[_this.name].query[_this.value];
6295
+ return onResult(result);
6236
6296
  }
6237
-
6238
- var id = _this.target.id || _this.target.getAttribute('id');
6239
- console.debug('prematurely completed event `'+ 'asyncCompleted.' + id +'`');
6240
- return triggerEvent(gina, _this.target, 'asyncCompleted.' + id, self[_this['name']]);
6241
- }
6242
-
6297
+
6298
+ }// Eo xhr.onerror
6299
+
6300
+ // catching ready state cb
6301
+ // var isOnException = false;
6302
+ // xhr.onreadystatechange = function (event) {
6303
+ // if (xhr.readyState == 4) {
6304
+
6305
+ // console.warn(xhr.status, xhr.responseText);
6306
+
6307
+ // if (xhr.status === 200) {
6308
+ // console.log("-> Success [3]" + xhr.responseText);
6309
+ // try {
6310
+ // result = this.responseText;
6311
+ // var contentType = this.getResponseHeader("Content-Type");
6312
+ // if ( /\/json/.test( contentType ) ) {
6313
+ // result = JSON.parse(this.responseText);
6314
+
6315
+ // if ( typeof(result.status) == 'undefined' )
6316
+ // result.status = this.status;
6317
+
6318
+ // //triggerEvent(gina, $target, 'success.' + id, result);
6319
+ // return onResult(result)
6320
+ // } else {
6321
+ // result = { 'status': xhr.status, 'message': '' };
6322
+ // if ( /^(\{|\[)/.test( xhr.responseText ) ) {
6323
+ // try {
6324
+ // result = merge( result, JSON.parse(xhr.responseText) );
6325
+ // } catch (err) {
6326
+ // result = merge(result, err);
6327
+ // }
6328
+ // }
6329
+ // return onResult(result);
6330
+ // }
6331
+ // } catch (err) {
6332
+ // throw err;
6333
+ // }
6334
+ // } else {
6335
+ // isOnException = true;
6336
+ // console.log("-> Error [3]", xhr.statusText, 'isOnException: '+ isOnException);
6337
+ // }
6338
+ // }
6339
+ // } // EO xhr.onreadystatechange = function (event) {
6340
+
6341
+ xhr.onload = function () {
6243
6342
  try {
6244
6343
  result = this.responseText;
6245
6344
  var contentType = this.getResponseHeader("Content-Type");
6246
6345
  if ( /\/json/.test( contentType ) ) {
6247
6346
  result = JSON.parse(this.responseText);
6248
-
6347
+
6249
6348
  if ( typeof(result.status) == 'undefined' )
6250
6349
  result.status = this.status;
6251
-
6252
- //triggerEvent(gina, $target, 'success.' + id, result);
6350
+
6351
+ //triggerEvent(gina, $target, 'success.' + id, result);
6253
6352
  return onResult(result)
6254
6353
  } else {
6255
6354
  result = { 'status': xhr.status, 'message': '' };
@@ -6264,32 +6363,32 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6264
6363
  }
6265
6364
  } catch (err) {
6266
6365
  throw err;
6267
- }
6268
- }
6269
-
6366
+ }
6367
+ }// xhr.onload = function () {
6368
+
6270
6369
  if (data) {
6271
6370
  xhr.send( queryData ); // stringyfied
6272
6371
  } else {
6273
6372
  xhr.send();
6274
- }
6373
+ }
6275
6374
  }
6276
6375
  }
6277
-
6376
+
6278
6377
  /**
6279
6378
  * queryFromBackend
6280
- *
6281
- *
6282
- * @param {object} options
6283
- * @param {object} request
6284
- * @param {object} response
6379
+ *
6380
+ *
6381
+ * @param {object} options
6382
+ * @param {object} request
6383
+ * @param {object} response
6285
6384
  * @param {callback} next
6286
- *
6287
- *
6385
+ *
6386
+ *
6288
6387
  */
6289
6388
  var queryFromBackend = async function(options, request, response, next) {
6290
6389
  var Config = require(_(GINA_FRAMEWORK_DIR +'/core/config.js', true));
6291
6390
  var config = new Config().getInstance();
6292
-
6391
+
6293
6392
  var opt = null
6294
6393
  //appConf.proxy.<bundle>;
6295
6394
  , rule = null
@@ -6298,7 +6397,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6298
6397
  ;
6299
6398
  // trying to retrieve proxy conf
6300
6399
  if ( /\@/.test(options.url) ) {
6301
- var attr = options.url.split(/@/);
6400
+ var attr = options.url.split(/@/);
6302
6401
  rule = attr[0];
6303
6402
  bundle = attr[1];
6304
6403
  var proxyConf = getConfig( currentBundle, 'app' ).proxy;
@@ -6306,11 +6405,11 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6306
6405
  if (config.bundle !== bundle) { // ignore if same bundle
6307
6406
  // getting proxy conf when available
6308
6407
  opt = getConfig( currentBundle, 'app' ).proxy[bundle];
6309
- }
6408
+ }
6310
6409
  } catch (proxyError) {
6311
6410
  throw new Error('Could not retrieve `proxy` configuration for bundle `'+ bundle +'`. Please check your `/config/app.json`.\n'+proxyError.stack);
6312
6411
  }
6313
-
6412
+
6314
6413
  attr = null;
6315
6414
  } else {
6316
6415
  // TODO - handle else; when it is an external domain/url
@@ -6318,7 +6417,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6318
6417
  }
6319
6418
  var route = JSON.clone(routing.getRoute(options.url, options.data));
6320
6419
  var env = config.env;
6321
- var conf = config[bundle][env];
6420
+ var conf = config[bundle][env];
6322
6421
  if (!opt) { // setup opt by default if no proxy conf found
6323
6422
  if (config.bundle == bundle) {
6324
6423
  var credentials = getConfig( currentBundle, 'settings' ).server.credentials;
@@ -6328,13 +6427,13 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6328
6427
  options.protocol = conf.server.protocol;
6329
6428
  options.rejectUnauthorized = false;
6330
6429
  }
6331
- opt = {
6430
+ opt = {
6332
6431
  "ca" : options.ca,
6333
- "hostname" : options.hostname,
6334
- "port" : options.port,
6432
+ "hostname" : options.hostname,
6433
+ "port" : options.port,
6335
6434
  "path" : options.path
6336
6435
  };
6337
-
6436
+
6338
6437
  if ( typeof(options.protocol) != 'undefined' ) {
6339
6438
  opt.protocol = options.protocol
6340
6439
  }
@@ -6342,7 +6441,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6342
6441
  opt.rejectUnauthorized = options.rejectUnauthorized
6343
6442
  }
6344
6443
  }
6345
-
6444
+
6346
6445
  /**
6347
6446
  * BO routing configuration
6348
6447
  * Attention: this portion of code is from `router.js`
@@ -6361,7 +6460,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6361
6460
  isXMLRequest : request.isXMLRequest,
6362
6461
  isWithCredentials : request.isWithCredentials
6363
6462
  };
6364
-
6463
+
6365
6464
  var templateName = params.rule.replace('\@'+ bundle, '') || '_common';
6366
6465
  var routeHasViews = ( typeof(conf.content.templates) != 'undefined' ) ? true : false;
6367
6466
  var controllerOptions = {
@@ -6384,9 +6483,9 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6384
6483
  //path: params.param.path || null, // user custom path : namespace should be ignored | left blank
6385
6484
  //assets: {}
6386
6485
  };
6387
-
6388
- controllerOptions = merge(controllerOptions, params);
6389
-
6486
+
6487
+ controllerOptions = merge(controllerOptions, params);
6488
+
6390
6489
  // BO - Template outside of namespace fix added on 2021-08-19
6391
6490
  // We want to keep original conf untouched
6392
6491
  controllerOptions.conf = JSON.clone(conf);
@@ -6397,7 +6496,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6397
6496
  && typeof(controllerOptions.template.ginaLoader) == 'undefined'
6398
6497
  ) {
6399
6498
  controllerOptions.template.ginaLoader = controllerOptions.conf.content.templates._common.ginaLoader;
6400
- }
6499
+ }
6401
6500
  controllerOptions.conf.content.routing[controllerOptions.rule].param = params.param;
6402
6501
  delete controllerOptions.middleware;
6403
6502
  delete controllerOptions.param;
@@ -6406,17 +6505,17 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6406
6505
  /**
6407
6506
  * EO routing configuration
6408
6507
  */
6409
-
6508
+
6410
6509
  var Controller = require(_(GINA_FRAMEWORK_DIR +'/core/controller/controller.js'), true);
6411
6510
  var controller = new Controller(controllerOptions);
6412
- controller.name = route.param.control;
6511
+ controller.name = route.param.control;
6413
6512
  //controller.serverInstance = serverInstance;
6414
6513
  controller.setOptions(request, response, next, controllerOptions);
6415
-
6416
-
6514
+
6515
+
6417
6516
  var data = ( typeof(options.data) == 'object' && options.data.count() > 0 )
6418
6517
  ? options.data
6419
- : {};
6518
+ : {};
6420
6519
  // inherited data from current query asking for validation
6421
6520
  var urlParams = '';
6422
6521
  if ( /^get|delete|put$/i.test(options.method) ) {
@@ -6434,11 +6533,11 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6434
6533
  opt.method = options.method;
6435
6534
  //opt.path = route.url + urlParams;
6436
6535
  opt.path = route.url;
6437
-
6536
+
6438
6537
  var util = require('util');
6439
6538
  var promisify = util.promisify;
6440
6539
  var result = { isValid: false }, err = false;
6441
-
6540
+
6442
6541
  await promisify(controller.query)(opt, data)
6443
6542
  .then(function onResult(_result) {
6444
6543
  result = _result;
@@ -6450,10 +6549,10 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6450
6549
  //throw err;
6451
6550
  console.error(err);
6452
6551
  result.error = err;
6453
- }
6552
+ }
6454
6553
  return result;
6455
6554
  };
6456
-
6555
+
6457
6556
  /**
6458
6557
  * query
6459
6558
  */
@@ -6468,16 +6567,16 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6468
6567
  /**
6469
6568
  * addField
6470
6569
  * Add field to the validation context
6471
- * @param {string} el
6472
- * @param {string|boolean|number|object} [value]
6570
+ * @param {string} el
6571
+ * @param {string|boolean|number|object} [value]
6473
6572
  */
6474
- var addField = function(el, value) {
6573
+ var addField = function(el, value) {
6475
6574
  var val = null, label = null;
6476
-
6575
+
6477
6576
  if ( typeof(self[el]) == 'undefined' && typeof(value) != 'undefined' ) {
6478
6577
  self[el] = val = value;
6479
6578
  }
6480
-
6579
+
6481
6580
  if ( typeof(self[el]) == 'object' ) {
6482
6581
  try {
6483
6582
  val = JSON.parse( JSON.stringify( self[el] ))
@@ -6527,17 +6626,17 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6527
6626
  var alias = ( typeof(window) != 'undefined' && typeof(window._currentValidatorAlias) != 'undefined' ) ? window._currentValidatorAlias : 'is';
6528
6627
  if ( typeof(window) != 'undefined' && window._currentValidatorAlias)
6529
6628
  delete window._currentValidatorAlias;
6530
-
6531
- var errors = self[this['name']]['errors'] || {};
6629
+
6630
+ var errors = self[this['name']]['errors'] || {};
6532
6631
  local.data[this.name] = self[this.name].value;
6533
-
6534
- if (
6632
+
6633
+ if (
6535
6634
  typeof(errors['isRequired']) == 'undefined'
6536
6635
  && this.value == ''
6537
- && !/^false$/i.test(this.value)
6538
- && this.value != 0
6636
+ && !/^false$/i.test(this.value)
6637
+ && this.value != 0
6539
6638
  ||
6540
- !errors['isRequired']
6639
+ !errors['isRequired']
6541
6640
  && this.value == ''
6542
6641
  && !/^false$/i.test(this.value)
6543
6642
  && this.value != 0
@@ -6546,14 +6645,14 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6546
6645
  } else if (!errors['isRequired'] && typeof(this.value) == 'string' && this.value == '') {
6547
6646
  isValid = true;
6548
6647
  }
6549
-
6648
+
6550
6649
  if ( !isValid && /^(true|false)$/i.test(condition) ) { // because it can be evaluated on backend validation
6551
6650
  isValid = condition;
6552
6651
  } else if (!isValid) {
6553
6652
  var re = null, flags = null;
6554
6653
  // Fixed on 2021-03-13: $variable now replaced with real value beafore validation
6555
6654
  if ( /[\!\=>\>\<a-z 0-9]+/i.test(condition) ) {
6556
- var variables = condition.match(/\${0}[-_,.\[\]a-z0-9]+/ig); // without space(s)
6655
+ var variables = condition.match(/\${0}[-_,.\[\]a-z0-9]+/ig); // without space(s)
6557
6656
  if (variables && variables.length > 0) {
6558
6657
  var compiledCondition = condition;
6559
6658
  for (var i = 0, len = variables.length; i < len; ++i) {
@@ -6569,7 +6668,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6569
6668
  }
6570
6669
  }
6571
6670
  }
6572
-
6671
+
6573
6672
  try {
6574
6673
  // security checks
6575
6674
  compiledCondition = compiledCondition.replace(/(\(|\)|return)/g, '');
@@ -6578,7 +6677,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6578
6677
  } else {
6579
6678
  isValid = eval(compiledCondition)
6580
6679
  }
6581
-
6680
+
6582
6681
  } catch (err) {
6583
6682
  throw new Error(err.stack||err.message)
6584
6683
  }
@@ -6602,7 +6701,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6602
6701
  } else {
6603
6702
  isValid = eval(condition);
6604
6703
  }
6605
-
6704
+
6606
6705
  //valid = new RegExp(condition.replace(/\//g, '')).test(this.value)
6607
6706
  } catch (err) {
6608
6707
  throw new Error(err.stack||err.message)
@@ -6615,7 +6714,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6615
6714
  if ( typeof(errorStack) != 'undefined' )
6616
6715
  errors['stack'] = errorStack;
6617
6716
  }
6618
- // if error tagged by a previous vlaidation, remove it when isValid == true
6717
+ // if error tagged by a previous vlaidation, remove it when isValid == true
6619
6718
  else if ( isValid && typeof(errors[alias]) != 'undefined' ) {
6620
6719
  delete errors[alias];
6621
6720
  //delete errors['stack'];
@@ -6625,16 +6724,16 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6625
6724
  if ( errors.count() > 0 )
6626
6725
  this['errors'] = errors;
6627
6726
 
6628
-
6727
+
6629
6728
  return self[this.name]
6630
6729
  }
6631
-
6730
+
6632
6731
  self[el]['set'] = function(value) {
6633
6732
  this.value = local['data'][this.name] = value;
6634
- // html
6733
+ // html
6635
6734
  this.target.setAttribute('value', value);
6636
6735
  // Todo : select and radio case to apply change
6637
-
6736
+
6638
6737
  return self[this.name]
6639
6738
  }
6640
6739
 
@@ -6643,15 +6742,15 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6643
6742
 
6644
6743
  this.value = local['data'][this.name] = (this.value) ? this.value.toLowerCase() : this.value;
6645
6744
  // Apply on current field upper -> lower
6646
- if (
6745
+ if (
6647
6746
  isGFFCtx
6648
6747
  && this.target
6649
- && this.target.value != ''
6650
- && /[A-Z]+/.test(this.target.value)
6748
+ && this.target.value != ''
6749
+ && /[A-Z]+/.test(this.target.value)
6651
6750
  ) {
6652
6751
  this.target.value = this.value;
6653
6752
  }
6654
-
6753
+
6655
6754
 
6656
6755
  var rgx = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
6657
6756
  var isValid = rgx.test(this['value']) ? true : false;
@@ -6664,7 +6763,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6664
6763
  if (!isValid) {
6665
6764
  errors['isEmail'] = replace(this['error'] || local.errorLabels['isEmail'], this)
6666
6765
  }
6667
- // if error tagged by a previous vlaidation, remove it when isValid == true
6766
+ // if error tagged by a previous vlaidation, remove it when isValid == true
6668
6767
  else if ( isValid && typeof(errors['isEmail']) != 'undefined' ) {
6669
6768
  delete errors['isEmail'];
6670
6769
  //delete errors['stack'];
@@ -6683,11 +6782,11 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6683
6782
 
6684
6783
  this.value = local['data'][this.name] = (this.value) ? this.value.toLowerCase() : this.value;
6685
6784
  // Apply on current field upper -> lower
6686
- if (
6785
+ if (
6687
6786
  isGFFCtx
6688
6787
  && this.target
6689
- && this.target.value != ''
6690
- && /[A-Z]+/.test(this.target.value)
6788
+ && this.target.value != ''
6789
+ && /[A-Z]+/.test(this.target.value)
6691
6790
  ) {
6692
6791
  this.target.value = this.value;
6693
6792
  }
@@ -6703,7 +6802,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6703
6802
  if (!isValid) {
6704
6803
  errors['isJsonWebToken'] = replace(this['error'] || local.errorLabels['isJsonWebToken'], this)
6705
6804
  }
6706
- // if error tagged by a previous vlaidation, remove it when isValid == true
6805
+ // if error tagged by a previous vlaidation, remove it when isValid == true
6707
6806
  else if ( isValid && typeof(errors['isJsonWebToken']) != 'undefined' ) {
6708
6807
  delete errors['isJsonWebToken'];
6709
6808
  //delete errors['stack'];
@@ -6716,7 +6815,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6716
6815
 
6717
6816
  return self[this['name']]
6718
6817
  }
6719
-
6818
+
6720
6819
  /**
6721
6820
  * Check if boolean and convert to `true/false` booloean if value is a string or a number
6722
6821
  * Will include `false` value if isRequired
@@ -6744,13 +6843,13 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6744
6843
  val = this.value = local.data[this.name] = false;
6745
6844
  break;
6746
6845
  }
6747
-
6846
+
6748
6847
  var isValid = (val !== null) ? true : false;
6749
6848
 
6750
6849
  if (!isValid) {
6751
6850
  errors['isBoolean'] = replace(this.error || local.errorLabels['isBoolean'], this)
6752
6851
  }
6753
- // if error tagged by a previous vlaidation, remove it when isValid == true
6852
+ // if error tagged by a previous vlaidation, remove it when isValid == true
6754
6853
  else if ( isValid && typeof(errors['isBoolean']) != 'undefined' ) {
6755
6854
  delete errors['isBoolean'];
6756
6855
  //delete errors['stack'];
@@ -6782,7 +6881,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6782
6881
  , isMaxLength = true
6783
6882
  , errors = self[this['name']]['errors'] || {}
6784
6883
  ;
6785
-
6884
+
6786
6885
  // test if val is a number
6787
6886
  try {
6788
6887
  // if val is a string replaces comas by points
@@ -6831,7 +6930,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6831
6930
 
6832
6931
  isValid = false;
6833
6932
  }
6834
- // if error tagged by a previous vlaidation, remove it when isValid == true
6933
+ // if error tagged by a previous vlaidation, remove it when isValid == true
6835
6934
  if ( isValid && typeof(errors['isNumberLength']) != 'undefined') {
6836
6935
  delete errors['isNumberLength'];
6837
6936
  }
@@ -6937,7 +7036,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6937
7036
  // document.getElementById(this.target.id).value = this.value;
6938
7037
  // //triggerEvent(gina, this.target, 'change', self[this['name']]);
6939
7038
  // }
6940
-
7039
+
6941
7040
  } else {
6942
7041
  this.value = this.value.replace(/\,/g,'');
6943
7042
  }
@@ -7050,7 +7149,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7050
7149
  if ( typeof(isApplicable) == 'boolean' && !isApplicable ) {
7051
7150
 
7052
7151
  this.valid = true;
7053
-
7152
+
7054
7153
  // is in excluded ?
7055
7154
  var excludedIndex = local.excluded.indexOf(this.name);
7056
7155
  if ( excludedIndex > -1 ) {
@@ -7061,12 +7160,12 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7061
7160
  }
7062
7161
 
7063
7162
  // radio group case
7064
- if (
7065
- isGFFCtx
7066
- && this.target
7067
- && this.target.tagName == 'INPUT'
7068
- && typeof(this.target.type) != 'undefined'
7069
- && this.target.type == 'radio'
7163
+ if (
7164
+ isGFFCtx
7165
+ && this.target
7166
+ && this.target.tagName == 'INPUT'
7167
+ && typeof(this.target.type) != 'undefined'
7168
+ && this.target.type == 'radio'
7070
7169
  ) {
7071
7170
  var radios = document.getElementsByName(this.name);
7072
7171
  for (var i = 0, len = radios.length; i < len; ++i) {
@@ -7091,7 +7190,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7091
7190
  if (!isValid) {
7092
7191
  errors['isRequired'] = replace(this.error || local.errorLabels['isRequired'], this)
7093
7192
  }
7094
- // if error tagged by a previous vlaidation, remove it when isValid == true
7193
+ // if error tagged by a previous vlaidation, remove it when isValid == true
7095
7194
  else if ( isValid ) {
7096
7195
  if (typeof(errors['isRequired']) != 'undefined' )
7097
7196
  delete errors['isRequired'];
@@ -7116,7 +7215,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7116
7215
  * {
7117
7216
  * "password": {
7118
7217
  * "isRequired": true,
7119
- *
7218
+ *
7120
7219
  * "isString": true // Means that we just want a string and we don't care of its length
7121
7220
  * // OR
7122
7221
  * "isString": 7 // Means at least 7 chars length
@@ -7196,7 +7295,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7196
7295
  *
7197
7296
  * @returns {date} date - extended by gina::utils::dateFormat; an adaptation of Steven Levithan's code
7198
7297
  * */
7199
- self[el]['isDate'] = function(mask) {
7298
+ self[el]['isDate'] = function(mask) {
7200
7299
  var val = this.value
7201
7300
  , isValid = false
7202
7301
  , errors = self[this['name']]['errors'] || {}
@@ -7204,37 +7303,37 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7204
7303
  , date = null
7205
7304
  ;
7206
7305
  // Default validation on livecheck & invalid init value
7207
- if (!val || val == '' || /NaN|Invalid Date/i.test(val) ) {
7306
+ if (!val || val == '' || /NaN|Invalid Date/i.test(val) ) {
7208
7307
  if ( /NaN|Invalid Date/i.test(val) ) {
7209
7308
  console.warn('[FormValidator::isDate] Provided value for field `'+ this.name +'` is not allowed: `'+ val +'`');
7210
7309
  errors['isDate'] = replace(this.error || local.errorLabels['isDate'], this);
7211
-
7310
+
7212
7311
  }
7213
7312
  this.valid = isValid;
7214
7313
  if ( errors.count() > 0 )
7215
- this['errors'] = errors;
7216
-
7314
+ this['errors'] = errors;
7315
+
7217
7316
  return self[this.name];
7218
7317
  }
7219
-
7220
- if (
7318
+
7319
+ if (
7221
7320
  typeof(mask) == 'undefined'
7222
7321
  ||
7223
7322
  typeof(mask) != 'undefined' && /true/i.test(mask)
7224
7323
  ) {
7225
7324
  mask = "yyyy-mm-dd"; // by default
7226
7325
  }
7227
-
7326
+
7228
7327
  if (val instanceof Date) {
7229
7328
  date = val.format(mask);
7230
7329
  } else {
7231
-
7330
+
7232
7331
  try {
7233
7332
  m = mask.match(/[^\/\- ]+/g);
7234
7333
  } catch (err) {
7235
7334
  throw new Error('[FormValidator::isDate] Provided mask not allowed: `'+ mask +'`');
7236
7335
  }
7237
-
7336
+
7238
7337
  try {
7239
7338
  val = val.match(/[^\/\- ]+/g);
7240
7339
  var dic = {}, d, len;
@@ -7248,10 +7347,10 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7248
7347
  } catch (err) {
7249
7348
  throw new Error('[FormValidator::isDate] Provided value not allowed: `'+ val +'`' + err);
7250
7349
  }
7251
-
7350
+
7252
7351
 
7253
7352
  date = this.value = local.data[this.name] = new Date(formatedDate);
7254
-
7353
+
7255
7354
  if ( /Invalid Date/i.test(date) || date instanceof Date === false ) {
7256
7355
  if ( !errors['isRequired'] && this.value == '' ) {
7257
7356
  isValid = true
@@ -7313,7 +7412,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7313
7412
  }
7314
7413
  return self[this.name]
7315
7414
  }
7316
-
7415
+
7317
7416
  /**
7318
7417
  * Trim when string starts or ends with white space(s)
7319
7418
  *
@@ -7337,11 +7436,11 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7337
7436
  self[el]['exclude'] = function(isApplicable) {
7338
7437
 
7339
7438
  if ( typeof(isApplicable) == 'boolean' && !isApplicable ) {
7340
-
7439
+
7341
7440
  if ( /^true|false$/i.test(this.value)) {
7342
7441
  this.value = (/^true$/i.test(this.value)) ? true : false;
7343
7442
  local.data[this.name] = this.value;
7344
- }
7443
+ }
7345
7444
 
7346
7445
  return self[this.name]
7347
7446
  }
@@ -7351,8 +7450,8 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7351
7450
  local.excluded.push(this.name);
7352
7451
  this.isExcluded = true;
7353
7452
  }
7354
-
7355
-
7453
+
7454
+
7356
7455
  // remove existing errors
7357
7456
  return self[this.name];
7358
7457
  }
@@ -7362,8 +7461,8 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7362
7461
  * a request to the remote host if previous rules failed
7363
7462
  */
7364
7463
  self[el]['query'] = query;
7365
-
7366
-
7464
+
7465
+
7367
7466
  self[el]['getValidationContext'] = function() {
7368
7467
  return {
7369
7468
  'isGFFCtx' : isGFFCtx,
@@ -7373,10 +7472,10 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7373
7472
  }
7374
7473
  }
7375
7474
  // Merging user validators
7376
- // To debug, open inspector and look into `Extra Scripts`
7475
+ // To debug, open inspector and look into `Extra Scripts`
7377
7476
  if ( hasUserValidators() ) {
7378
7477
  var userValidator = null, filename = null;
7379
- try {
7478
+ try {
7380
7479
  for (let v in gina.forms.validators) {
7381
7480
  filename = '/validators/'+ v + '/main.js';
7382
7481
  // setting default local error
@@ -7387,12 +7486,12 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7387
7486
  userValidator = bufferToString(gina.forms.validators[v].data); // ok
7388
7487
  var passedContext = 'var validationContext = this.getValidationContext(),isGFFCtx = validationContext.isGFFCtx,self = validationContext.self,local = validationContext.local,replace = validationContext.replace;';
7389
7488
  userValidator = userValidator.replace(/(\)\s+\{|\)\{){1}/, '$&\n\t'+ passedContext);
7390
-
7489
+
7391
7490
  //userValidator += '\n//#sourceURL='+ v +'.js';
7392
7491
  } else {
7393
7492
  userValidator = gina.forms.validators[v].toString();
7394
7493
  }
7395
-
7494
+
7396
7495
  self[el][v] = eval('(' + userValidator + ')\n//# sourceURL='+ v +'.js');
7397
7496
  //self[el][v] = Function('errorMessage', 'errorStack', userValidator);
7398
7497
  }
@@ -7400,22 +7499,22 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7400
7499
  throw new Error('[UserFormValidator] Could not evaluate: `'+ filename +'`\n'+userValidatorError.stack);
7401
7500
  }
7402
7501
  }
7403
- } // EO addField(el, value)
7404
-
7405
-
7406
- for (let el in self) {
7502
+ } // EO addField(el, value)
7503
+
7504
+
7505
+ for (let el in self) {
7407
7506
  // Adding fields & validators to context
7408
7507
  addField(el, self[el]);
7409
7508
  }
7410
-
7509
+
7411
7510
  self['addField'] = function(el, value) {
7412
7511
  if ( typeof(self[el]) != 'undefined' ) {
7413
7512
  return
7414
7513
  }
7415
7514
  addField(el, value);
7416
7515
  };
7417
-
7418
-
7516
+
7517
+
7419
7518
  // self['getExcludedFields'] = function() {
7420
7519
  // return local.excluded;
7421
7520
  // };
@@ -7445,33 +7544,33 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7445
7544
  // }
7446
7545
  for (var r in self[field]) {
7447
7546
  // no error for the current field rule
7448
- if (
7547
+ if (
7449
7548
  typeof(errors[field]) != 'object'
7450
7549
  ||
7451
7550
  typeof(errors[field][r]) == 'undefined'
7452
7551
  ) {
7453
7552
  continue;
7454
7553
  }
7455
-
7456
-
7457
- if (
7458
- typeof(self[field].valid) != 'undefined'
7459
- && /^true$/i.test(self[field].valid)
7554
+
7555
+
7556
+ if (
7557
+ typeof(self[field].valid) != 'undefined'
7558
+ && /^true$/i.test(self[field].valid)
7460
7559
  ) {
7461
7560
  delete errors[field][r];
7462
7561
  continue;
7463
7562
  }
7464
-
7465
-
7563
+
7564
+
7466
7565
  if ( typeof( self[field]['errors']) == 'undefined' ) {
7467
7566
  self[field]['errors'] = {}
7468
7567
  }
7469
-
7470
- self[field]['errors'][r] = errors[field][r];
7568
+
7569
+ self[field]['errors'][r] = errors[field][r];
7471
7570
  }
7472
-
7571
+
7473
7572
  // if field does not have errors, remove errors[field]
7474
- if (
7573
+ if (
7475
7574
  typeof(self[field]['errors']) == 'undefined'
7476
7575
  && typeof(errors[field]) != 'undefined'
7477
7576
  ||
@@ -7488,34 +7587,34 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7488
7587
  /**
7489
7588
  * getErrors
7490
7589
  * NB.: This portion is shared between the front & the back
7491
- *
7590
+ *
7492
7591
  * @param {string} [fieldName]
7493
- *
7592
+ *
7494
7593
  * @returns errors
7495
7594
  */
7496
7595
  self['getErrors'] = function(fieldName) {
7497
7596
  var errors = {};
7498
-
7597
+
7499
7598
  if ( typeof(fieldName) != 'undefined' ) {
7500
7599
  if ( typeof(self[fieldName]) != 'undefined' && self[fieldName] && typeof(self[fieldName]['errors']) != 'undefined' && self[fieldName]['errors'].count() > 0 ) {
7501
7600
  errors[fieldName] = self[fieldName]['errors'];
7502
- }
7601
+ }
7503
7602
  return errors
7504
7603
  }
7505
-
7604
+
7506
7605
  for (var field in self) {
7507
- if (
7606
+ if (
7508
7607
  typeof(self[field]) != 'object'
7509
7608
  ) {
7510
7609
  continue;
7511
7610
  }
7512
-
7611
+
7513
7612
  if ( typeof(self[field]['errors']) != 'undefined' ) {
7514
7613
  if ( self[field]['errors'].count() > 0)
7515
7614
  errors[field] = self[field]['errors'];
7516
7615
  }
7517
7616
  }
7518
-
7617
+
7519
7618
  return errors
7520
7619
  }
7521
7620
 
@@ -7532,7 +7631,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7532
7631
  // local.data = JSON.parse(JSON.stringify(local.data).replace(/\"(true|false)\"/gi, '$1'))
7533
7632
  return local.data
7534
7633
  }
7535
-
7634
+
7536
7635
  /**@js_externs replace*/
7537
7636
  var replace = function(target, fieldObj) {
7538
7637
  var keys = target.match(/%[a-z]+/gi);