gina 0.1.6-alpha.9 → 0.1.6-alpha.90

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 +4 -4
  4. package/bin/cli +14 -0
  5. package/bin/gina +29 -1
  6. package/framework/{v0.1.6-alpha.9/lib/inherits → v0.1.6-alpha.90}/LICENSE +1 -1
  7. package/framework/v0.1.6-alpha.90/VERSION +1 -0
  8. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/plugin/README.md +1 -0
  9. package/framework/v0.1.6-alpha.90/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
  10. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +1 -1
  11. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/plugin/dist/vendor/gina/js/gina.js +582 -217
  12. package/framework/v0.1.6-alpha.90/core/asset/plugin/dist/vendor/gina/js/gina.min.js +777 -0
  13. package/framework/v0.1.6-alpha.90/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
  14. package/framework/v0.1.6-alpha.90/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
  15. package/framework/v0.1.6-alpha.90/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
  16. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/config.js +157 -76
  17. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/index.js +92 -22
  18. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/connector.v4.js +28 -22
  19. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/controller/controller.js +419 -109
  20. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/controller/index.js +2 -2
  21. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
  22. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
  23. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/README.md +191 -0
  24. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
  25. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
  26. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
  27. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
  28. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
  29. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
  30. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/lib/index.js +57 -0
  31. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
  32. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
  33. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/lib/utils.js +596 -0
  34. package/framework/v0.1.6-alpha.90/core/deps/busboy-1.6.0/package.json +22 -0
  35. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/.travis.yml +4 -0
  36. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/LICENSE +21 -0
  37. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/bool.js +10 -0
  38. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/boolean_double.js +7 -0
  39. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/boolean_single.js +7 -0
  40. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/default_hash.js +8 -0
  41. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/default_singles.js +7 -0
  42. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/divide.js +8 -0
  43. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/line_count.js +20 -0
  44. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/line_count_options.js +29 -0
  45. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/line_count_wrap.js +29 -0
  46. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/nonopt.js +4 -0
  47. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/reflect.js +2 -0
  48. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/short.js +3 -0
  49. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/string.js +11 -0
  50. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/usage-options.js +19 -0
  51. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/example/xup.js +10 -0
  52. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/index.js +343 -0
  53. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/package.json +31 -0
  54. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/package.json.dist +39 -0
  55. package/framework/v0.1.6-alpha.90/core/deps/optimist-0.6.1/readme.markdown +513 -0
  56. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/HISTORY.md +498 -0
  57. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/LICENSE +7 -0
  58. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/README.md +88 -0
  59. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/bin/swig.js +161 -0
  60. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/bin/swig.js.dist +161 -0
  61. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
  62. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/dist/swig.min.js.map +8 -0
  63. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/index.js +1 -0
  64. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/dateformatter.js +198 -0
  65. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/filters.js +630 -0
  66. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/lexer.js +306 -0
  67. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/loaders/filesystem.js +59 -0
  68. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/loaders/index.js +53 -0
  69. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/loaders/memory.js +63 -0
  70. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/parser.js +744 -0
  71. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/swig.js +740 -0
  72. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/autoescape.js +37 -0
  73. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/block.js +25 -0
  74. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/else.js +25 -0
  75. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/elseif.js +28 -0
  76. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/extends.js +19 -0
  77. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/filter.js +68 -0
  78. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/for.js +130 -0
  79. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/if.js +86 -0
  80. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/import.js +91 -0
  81. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/include.js +100 -0
  82. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/index.js +16 -0
  83. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/macro.js +79 -0
  84. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/parent.js +51 -0
  85. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/raw.js +23 -0
  86. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/set.js +109 -0
  87. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/tags/spaceless.js +42 -0
  88. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/lib/utils.js +184 -0
  89. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/package.json +57 -0
  90. package/framework/v0.1.6-alpha.90/core/deps/swig-1.4.2/package.json.dist +61 -0
  91. package/framework/v0.1.6-alpha.90/core/deps/swig-client/swig.js +5031 -0
  92. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/dev/index.js +1 -1
  93. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/dev/lib/factory.js +1 -1
  94. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/gna.js +101 -22
  95. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/index.js +3 -3
  96. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/src/make.js +1 -1
  97. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/mime.types +1 -0
  98. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/model/entity.js +5 -5
  99. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/model/index.js +30 -26
  100. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/model/template/entityFactory.js +1 -1
  101. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/model/template/index.js +1 -1
  102. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/index.js +3 -3
  103. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/file/package.json +2 -2
  104. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/intl/package.json +2 -2
  105. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/storage/package.json +2 -2
  106. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/validator/package.json +2 -2
  107. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/validator/src/form-validator.js +39 -27
  108. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/validator/src/main.js +360 -85
  109. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/router.js +92 -47
  110. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/server.isaac.js +86 -10
  111. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/server.js +172 -86
  112. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/status.codes +1 -11
  113. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/controllers/setup.js +2 -2
  114. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/command/gina.tpl +1 -1
  115. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/conf/env.json +2 -0
  116. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/conf/templates.json +4 -2
  117. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/console.js +1 -1
  118. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/context.js +29 -12
  119. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/data/package.json +2 -2
  120. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/data/src/main.js +1 -1
  121. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/dateFormat.js +1 -1
  122. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/index.js +1 -1
  123. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/json/package.json +2 -2
  124. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/json/src/main.js +6 -4
  125. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/path.js +31 -15
  126. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/plugins/package.json +2 -2
  127. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/plugins/src/api-error.js +2 -2
  128. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/plugins/src/main.js +1 -1
  129. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/text.js +1 -1
  130. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/archiver/package.json +2 -2
  131. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/archiver/src/main.js +11 -11
  132. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/add.js +2 -1
  133. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/start.js +21 -8
  134. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/get.js +1 -1
  135. package/framework/v0.1.6-alpha.90/lib/cmd/env/help.js +30 -0
  136. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/build.js +1 -1
  137. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/init.js +18 -0
  138. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/link-node-modules.js +2 -3
  139. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/link.js +1 -0
  140. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/tail.js +28 -11
  141. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/version.js +15 -1
  142. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/helper.js +6 -2
  143. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/index.js +1 -1
  144. package/framework/v0.1.6-alpha.90/lib/cmd/minion/help.txt +18 -0
  145. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/add.js +3 -2
  146. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/build.js +4 -4
  147. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/list.js +1 -1
  148. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/protocol/list.js +71 -50
  149. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/collection/package.json +2 -2
  150. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/collection/src/main.js +20 -14
  151. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/config.js +1 -1
  152. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cron/package.json +2 -2
  153. package/framework/v0.1.6-alpha.90/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +15754 -0
  154. package/framework/v0.1.6-alpha.90/lib/domain/dist/public_suffix_list.dat +15754 -0
  155. package/framework/v0.1.6-alpha.90/lib/domain/exemples/backend.js +12 -0
  156. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/domain/package.json +2 -2
  157. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/domain/src/main.js +20 -6
  158. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/generator/index.js +1 -1
  159. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/index.js +1 -1
  160. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90/lib/inherits}/LICENSE +1 -1
  161. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/inherits/package.json +2 -2
  162. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/inherits/src/main.js +1 -1
  163. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/package.json +2 -2
  164. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/containers/mq/listener.js +10 -2
  165. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/helper.js +1 -1
  166. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/main.js +1 -1
  167. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/math/index.js +1 -1
  168. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/merge/package.json +2 -2
  169. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/model.js +3 -3
  170. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/proc.js +9 -1
  171. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/routing/package.json +2 -2
  172. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/routing/src/main.js +72 -25
  173. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/session-store.js +3 -3
  174. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/swig-filters/package.json +2 -2
  175. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/swig-filters/src/main.js +70 -15
  176. package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/validator.js +2 -2
  177. package/framework/v0.1.6-alpha.90/package.json +11 -0
  178. package/package.json +3 -3
  179. package/resources/package.json.template +1 -1
  180. package/script/post_install.js +1 -1
  181. package/script/pre_install.js +1 -1
  182. package/utils/helper.js +24 -0
  183. package/framework/v0.1.6-alpha.9/VERSION +0 -1
  184. package/framework/v0.1.6-alpha.9/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +0 -1
  185. package/framework/v0.1.6-alpha.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -766
  186. package/framework/v0.1.6-alpha.9/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +0 -8
  187. package/framework/v0.1.6-alpha.9/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -7
  188. package/framework/v0.1.6-alpha.9/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +0 -8
  189. package/framework/v0.1.6-alpha.9/core/deps/busboy/.travis.yml +0 -17
  190. package/framework/v0.1.6-alpha.9/core/deps/busboy/README.md +0 -225
  191. package/framework/v0.1.6-alpha.9/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -73
  192. package/framework/v0.1.6-alpha.9/core/deps/busboy/deps/encoding/encoding.js +0 -2391
  193. package/framework/v0.1.6-alpha.9/core/deps/busboy/lib/main.js +0 -89
  194. package/framework/v0.1.6-alpha.9/core/deps/busboy/lib/types/multipart.js +0 -328
  195. package/framework/v0.1.6-alpha.9/core/deps/busboy/lib/types/urlencoded.js +0 -214
  196. package/framework/v0.1.6-alpha.9/core/deps/busboy/lib/utils.js +0 -191
  197. package/framework/v0.1.6-alpha.9/core/deps/busboy/package.json +0 -69
  198. package/framework/v0.1.6-alpha.9/lib/domain/dist/public_suffix_list.dat +0 -14186
  199. package/framework/v0.1.6-alpha.9/lib/domain/exemples/backend.js +0 -0
  200. package/framework/v0.1.6-alpha.9/package.json +0 -14
  201. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/AUTHORS +0 -0
  202. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/html/nolayout.html +0 -0
  203. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/html/static.html +0 -0
  204. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/img/android-chrome-192x192.png +0 -0
  205. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/img/android-chrome-512x512.png +0 -0
  206. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/img/apple-touch-icon.png +0 -0
  207. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/img/favicon-16x16.png +0 -0
  208. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/img/favicon-32x32.png +0 -0
  209. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/img/favicon.ico +0 -0
  210. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  211. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/asset/plugin/uuid.json +0 -0
  212. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/connector.js +0 -0
  213. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  214. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  215. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/n1ql.js +0 -0
  216. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/session-store.js +0 -0
  217. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  218. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  219. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  220. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/controller/controller.framework.js +0 -0
  221. /package/framework/{v0.1.6-alpha.9/core/deps/busboy → v0.1.6-alpha.90/core/deps/busboy-1.6.0}/LICENSE +0 -0
  222. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  223. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/dev/lib/class.js +0 -0
  224. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/dev/lib/tools.js +0 -0
  225. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/README.md +0 -0
  226. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/currency.json +0 -0
  227. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/dist/language/en.json +0 -0
  228. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/dist/language/fr.json +0 -0
  229. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/dist/region/en.json +0 -0
  230. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/dist/region/fr.json +0 -0
  231. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/src/resources/currency.csv +0 -0
  232. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/src/resources/region.csv +0 -0
  233. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/locales/src/resources/region.mapping.json +0 -0
  234. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/README.md +0 -0
  235. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/file/README.md +0 -0
  236. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/file/build.json +0 -0
  237. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/intl/README.md +0 -0
  238. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/intl/build.json +0 -0
  239. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/intl/src/main.js +0 -0
  240. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/storage/README.md +0 -0
  241. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/storage/build.json +0 -0
  242. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/storage/src/main.js +0 -0
  243. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/validator/README.md +0 -0
  244. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/plugins/lib/validator/build.json +0 -0
  245. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/server.express.js +0 -0
  246. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/_gitignore +0 -0
  247. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/config/app.json +0 -0
  248. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/config/routing.json +0 -0
  249. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/config/settings.json +0 -0
  250. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  251. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/config/templates.json +0 -0
  252. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  253. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  254. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle/index.js +0 -0
  255. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  256. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  257. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  258. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  259. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  260. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_public/readme.md +0 -0
  261. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  262. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  263. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  264. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  265. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  266. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/command/gina.bat.tpl +0 -0
  267. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/conf/manifest.json +0 -0
  268. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/conf/package.json +0 -0
  269. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/conf/settings.json +0 -0
  270. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/conf/statics.json +0 -0
  271. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/error/client/json/401.json +0 -0
  272. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/error/client/json/403.json +0 -0
  273. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/error/client/json/404.json +0 -0
  274. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/error/server/html/50x.html +0 -0
  275. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/error/server/json/500.json +0 -0
  276. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/error/server/json/503.json +0 -0
  277. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/core/template/extensions/logger/config.json +0 -0
  278. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/data/LICENSE +0 -0
  279. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/data/README.md +0 -0
  280. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/json/LICENSE +0 -0
  281. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/json/README.md +0 -0
  282. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/plugins/README.md +0 -0
  283. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/prototypes.js +0 -0
  284. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/helpers/task.js +0 -0
  285. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/archiver/README.md +0 -0
  286. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/archiver/build.json +0 -0
  287. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/archiver/src/dep/jszip.min.js +0 -0
  288. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/aliases.json +0 -0
  289. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/arguments.json +0 -0
  290. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/copy.js +0 -0
  291. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/cp.js +0 -0
  292. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/help.js +0 -0
  293. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/help.txt +0 -0
  294. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/list.js +0 -0
  295. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/remove.js +0 -0
  296. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/rename.js +0 -0
  297. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/restart.js +0 -0
  298. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/rm.js +0 -0
  299. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/status.js +0 -0
  300. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/bundle/stop.js +0 -0
  301. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/add.js +0 -0
  302. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/help.txt +0 -0
  303. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/link-dev.js +0 -0
  304. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/list.js +0 -0
  305. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/remove.js +0 -0
  306. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/rm.js +0 -0
  307. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/set.js +0 -0
  308. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/unset.js +0 -0
  309. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/env/use.js +0 -0
  310. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/dot.js +0 -0
  311. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/get.js +0 -0
  312. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/help.js +0 -0
  313. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/help.txt +0 -0
  314. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/msg.json +0 -0
  315. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/open.js +0 -0
  316. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/restart.js +0 -0
  317. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/set.js +0 -0
  318. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/start.js +0 -0
  319. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/status.js +0 -0
  320. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/stop.js +0 -0
  321. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/framework/update.js +0 -0
  322. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/gina-dev.1.md +0 -0
  323. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/gina-framework.1.md +0 -0
  324. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/gina.1.md +0 -0
  325. /package/framework/{v0.1.6-alpha.9/lib/cmd/env → v0.1.6-alpha.90/lib/cmd/minion}/help.js +0 -0
  326. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/msg.json +0 -0
  327. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/port/help.js +0 -0
  328. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/port/help.txt +0 -0
  329. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/port/inc/scan.js +0 -0
  330. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/port/list.js +0 -0
  331. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/port/reset.js +0 -0
  332. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/port/set.js +0 -0
  333. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/arguments.json +0 -0
  334. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/help.js +0 -0
  335. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/help.txt +0 -0
  336. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/import.js +0 -0
  337. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/move.js +0 -0
  338. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/remove.js +0 -0
  339. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/rename.js +0 -0
  340. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/restart.js +0 -0
  341. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/rm.js +0 -0
  342. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/start.js +0 -0
  343. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/status.js +0 -0
  344. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/project/stop.js +0 -0
  345. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/protocol/help.js +0 -0
  346. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/protocol/help.txt +0 -0
  347. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/protocol/set.js +0 -0
  348. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/add.js +0 -0
  349. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/help.js +0 -0
  350. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/help.txt +0 -0
  351. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/link-local.js +0 -0
  352. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/link-production.js +0 -0
  353. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/list.js +0 -0
  354. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/remove.js +0 -0
  355. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/rm.js +0 -0
  356. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/scope/use.js +0 -0
  357. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cmd/view/add.js +0 -0
  358. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/collection/README.md +0 -0
  359. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/collection/build.json +0 -0
  360. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cron/README.md +0 -0
  361. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/cron/src/main.js +0 -0
  362. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/domain/LICENSE +0 -0
  363. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/domain/README.md +0 -0
  364. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/domain/exemples/frontend.html +0 -0
  365. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/inherits/README.md +0 -0
  366. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  367. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/inherits/example/protected_inheritance.js +0 -0
  368. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/inherits/example/simple_inheritance.js +0 -0
  369. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
  370. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/README.md +0 -0
  371. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/containers/default/index.js +0 -0
  372. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/containers/file/index.js +0 -0
  373. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  374. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  375. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/containers/mq/index.js +0 -0
  376. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/logger/src/containers/mq/speaker.js +0 -0
  377. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/merge/README.md +0 -0
  378. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/merge/example/merge.js +0 -0
  379. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/merge/example/merge_2_literal objects.js +0 -0
  380. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/merge/example/merge_and_preserve_first.js +0 -0
  381. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/merge/src/main.js +0 -0
  382. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/routing/README.md +0 -0
  383. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/routing/build.json +0 -0
  384. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/shell.js +0 -0
  385. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/swig-filters/README.md +0 -0
  386. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/url/README.md +0 -0
  387. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/url/index.js +0 -0
  388. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/url/mocks.json +0 -0
  389. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/url/routing.json +0 -0
  390. /package/framework/{v0.1.6-alpha.9 → v0.1.6-alpha.90}/lib/url/test.js +0 -0
@@ -1,5 +1,5 @@
1
1
  /** vim: et:ts=4:sw=4:sts=4
2
- * @license RequireJS 2.3.6 Copyright jQuery Foundation and other contributors.
2
+ * @license RequireJS 2.3.7 Copyright jQuery Foundation and other contributors.
3
3
  * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE
4
4
  */
5
5
  //Not using strict: uneven strict support in browsers, #392, and causes
@@ -11,7 +11,7 @@ var requirejs, require, define;
11
11
  (function (global, setTimeout) {
12
12
  var req, s, head, baseElement, dataMain, src,
13
13
  interactiveScript, currentlyAddingScript, mainScript, subPath,
14
- version = '2.3.6',
14
+ version = '2.3.7',
15
15
  commentRegExp = /\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/mg,
16
16
  cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,
17
17
  jsSuffixRegExp = /\.js$/,
@@ -33,7 +33,8 @@ var requirejs, require, define;
33
33
  contexts = {},
34
34
  cfg = {},
35
35
  globalDefQueue = [],
36
- useInteractive = false;
36
+ useInteractive = false,
37
+ disallowedProps = ['__proto__', 'constructor'];
37
38
 
38
39
  //Could match something like ')//comment', do not lose the prefix to comment.
39
40
  function commentReplace(match, singlePrefix) {
@@ -94,7 +95,7 @@ var requirejs, require, define;
94
95
  function eachProp(obj, func) {
95
96
  var prop;
96
97
  for (prop in obj) {
97
- if (hasProp(obj, prop)) {
98
+ if (hasProp(obj, prop) && disallowedProps.indexOf(prop) == -1) {
98
99
  if (func(obj[prop], prop)) {
99
100
  break;
100
101
  }
@@ -3108,7 +3109,7 @@ function handleXhr(xhr, $el, options, require) {
3108
3109
  var url = window.URL.createObjectURL(blob);
3109
3110
  a.href = url;
3110
3111
  var contentDisposition = xhr.getResponseHeader('Content-Disposition');
3111
- a.download = contentDisposition.match('\=(.*)')[0].substr(1);
3112
+ a.download = contentDisposition.match('\=(.*)')[0].substring(1);
3112
3113
  //programatically click the link to trigger the download
3113
3114
  a.click();
3114
3115
  //release the reference to the file by revoking the Object URL
@@ -3848,7 +3849,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
3848
3849
  ;
3849
3850
  /*
3850
3851
  * This file is part of the gina package.
3851
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
3852
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
3852
3853
  *
3853
3854
  * For the full copyright and license information, please view the LICENSE
3854
3855
  * file that was distributed with this source code.
@@ -4629,10 +4630,9 @@ function Collection(content, options) {
4629
4630
  */
4630
4631
  var search = function(filter, field, _content, matched, searchOptionRules) {
4631
4632
  var reValidCount = null, searchOptCount = null;
4632
- if (filter === null && _content === null) { // null case
4633
-
4633
+ // null case
4634
+ if (filter === null && _content === null) {
4634
4635
  ++matched;
4635
-
4636
4636
  } else if (
4637
4637
  filter
4638
4638
  && keywords.indexOf(localeLowerCase) > -1
@@ -4698,7 +4698,6 @@ function Collection(content, options) {
4698
4698
  && searchOptions
4699
4699
  && typeof(searchOptions[field]) != 'undefined'
4700
4700
  ) {
4701
-
4702
4701
  reValidCount = 0;
4703
4702
  searchOptCount = searchOptions[field].count();
4704
4703
  for ( var rule in searchOptions[field]) {
@@ -4797,7 +4796,7 @@ function Collection(content, options) {
4797
4796
 
4798
4797
  field = arr[1];
4799
4798
  if (/^\./.test(field) )
4800
- field = field.substr(1);
4799
+ field = field.substring(1);
4801
4800
 
4802
4801
  var subMatched = 0;
4803
4802
  if (collection) {
@@ -5124,15 +5123,15 @@ function Collection(content, options) {
5124
5123
  }
5125
5124
 
5126
5125
  // fast search with key
5127
- var r = 0
5128
- , rLen = foundResults.length
5129
- , c = 0
5130
- , cLen = currentResult.length
5131
- , f = 0
5132
- , fLen = filters.count()
5133
- , keyLen = null
5134
- , matched = 0
5135
- , fullFiltersMatched = 0
5126
+ var r = 0
5127
+ , rLen = foundResults.length
5128
+ , c = 0
5129
+ , cLen = currentResult.length
5130
+ , f = 0
5131
+ , fLen = filters.count()
5132
+ , keyLen = null
5133
+ , matched = 0
5134
+ , fullFiltersMatched = 0
5136
5135
  ;
5137
5136
  if ( uuidSearchModeEnabled && typeof(currentResult[c]) != 'undefined' && currentResult[c].hasOwnProperty(key) ) {
5138
5137
  // for every single result found
@@ -5593,6 +5592,13 @@ function Collection(content, options) {
5593
5592
 
5594
5593
 
5595
5594
  if ( typeof(a) == 'string' && a != '' || typeof(b) == 'string' ) {
5595
+ // Fixed on 2025-03-08: allowed to compare with one of the fields being NULL or not defined
5596
+ if ( typeof(a) == 'undefined' || a == null) {
5597
+ a = ''; // cast to string
5598
+ }
5599
+ if ( typeof(b) == 'undefined' || b == null) {
5600
+ b = ''; // cast to string
5601
+ }
5596
5602
 
5597
5603
  if ( typeof(a) == 'number' ) {
5598
5604
  a = ''+a; // cast to string
@@ -5601,6 +5607,7 @@ function Collection(content, options) {
5601
5607
  b = ''+b; // cast to string
5602
5608
  }
5603
5609
 
5610
+
5604
5611
  return a.localeCompare(b, undefined, {sensitivity: 'case', caseFirst: 'upper'})
5605
5612
  }
5606
5613
 
@@ -6230,11 +6237,12 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6230
6237
  // system error
6231
6238
  systemError = result.error;
6232
6239
  }
6233
- // Fixed on 2023-01-10
6240
+ // Fixed added on 2023-01-10
6234
6241
  // We want `local.errorLabels['query']` before the generic|user defined `rule` error
6235
6242
  var optionError = ( typeof(options['error']) != 'undefined' ) ? options['error'] : null;
6236
6243
  errors['query'] = replace(systemError || _this['error'] || optionError || local.errorLabels['query'], _this);
6237
- console.debug('[1] query error detected !! ', result);
6244
+
6245
+ console.debug('[1] query error detected !! ', result, errorFields, errors['query']);
6238
6246
  }
6239
6247
 
6240
6248
  if ( !errors['query'] && _this.value == '' ) {
@@ -6304,6 +6312,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6304
6312
 
6305
6313
  var id = _this.target.id || _this.target.getAttribute('id');
6306
6314
  console.debug('prematurely completed event `'+ 'asyncCompleted.' + id +'`');
6315
+
6307
6316
  return triggerEvent(gina, _this.target, 'asyncCompleted.' + id, self[_this['name']]);
6308
6317
  } // EO onResult
6309
6318
 
@@ -6526,7 +6535,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6526
6535
  //instance: self.serverInstance,
6527
6536
  //template: (routeHasViews) ? conf.content.templates[templateName] : undefined,
6528
6537
  //isUsingTemplate: local.isUsingTemplate,
6529
- cacheless: conf.cacheless //,
6538
+ isCacheless: conf.isCacheless //,
6530
6539
  //path: params.param.path || null, // user custom path : namespace should be ignored | left blank
6531
6540
  //assets: {}
6532
6541
  };
@@ -6699,7 +6708,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6699
6708
  isValid = condition;
6700
6709
  } else if (!isValid) {
6701
6710
  var re = null, flags = null;
6702
- // Fixed on 2021-03-13: $variable now replaced with real value beafore validation
6711
+ // Fixed added on 2021-03-13: $variable now replaced with real value beafore validation
6703
6712
  if ( /[\!\=>\>\<a-z 0-9]+/i.test(condition) ) {
6704
6713
  var variables = condition.match(/\${0}[-_,.\[\]a-z0-9]+/ig); // without space(s)
6705
6714
  if (variables && variables.length > 0) {
@@ -7075,24 +7084,26 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7075
7084
 
7076
7085
 
7077
7086
  self[el]['toFloat'] = function(decimals) {
7078
- if ( typeof(this.value) == 'string' ) {
7079
- this.value = this.value.replace(/\s+/g, '');
7080
- if ( /\,/.test(this.value) && !/\./.test(this.value) ) {
7081
- this.value = this.value.replace(/\,/g,'.');
7082
- //local.data[this.name] = this.value;
7083
- // if (isGFFCtx) {
7084
- // //this.target.setAttribute('value', this.value);
7085
- // document.getElementById(this.target.id).value = this.value;
7086
- // //triggerEvent(gina, this.target, 'change', self[this['name']]);
7087
- // }
7088
-
7089
- } else {
7090
- this.value = this.value.replace(/\,/g,'');
7087
+ // Fixed on 2025-03-12
7088
+ // In case we are dealing with a filtered value (swig::formatNumber())
7089
+ var val = document.getElementById(this.target.getAttribute('id')).value || this.value
7090
+ isFloatingWithCommas = false
7091
+ ;
7092
+ if ( typeof(val) == 'string' ) {
7093
+ val = val.replace(/\s+/g, '');
7094
+ // Fixed on 2025-03-12
7095
+ // thousand separator ?
7096
+ if ( /\,/.test(val) && /\./.test(val) ) {
7097
+ val = val.replace(/\,/g,'');
7098
+ }
7099
+ else if ( /\,/.test(val) ) {
7100
+ val = val.replace(/\,/g,'.');
7101
+ isFloatingWithCommas = true;
7091
7102
  }
7092
7103
  }
7093
7104
 
7094
- var val = local.data[this.name] = this.value
7095
- , errors = self[this['name']]['errors'] || {}
7105
+ local.data[this.name] = val;
7106
+ var errors = self[this['name']]['errors'] || {}
7096
7107
  , isValid = true
7097
7108
  ;
7098
7109
 
@@ -7107,32 +7118,40 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7107
7118
  } else {
7108
7119
  if ( this['isNumber']().valid ) {
7109
7120
  try {
7110
-
7111
7121
  if ( !Number.isFinite(val) ) {
7112
- val = this.value = local.data[this.name] = new Number(parseFloat(val.match(/[0-9.,]+/g).join('').replace(/,/, '.')));// Number <> number
7122
+ // Number <> number
7123
+ val = new Number(parseFloat(val.match(/[0-9.,]+/g).join('').replace(/,/, '.')));
7113
7124
  }
7114
- if (isGFFCtx)
7115
- this.target.setAttribute('value', val);
7116
7125
  } catch(err) {
7117
7126
  isValid = false;
7118
- errors['toFloat'] = replace(this.error || local.errorLabels['toFloat'], this);
7127
+ errors['toFloat'] = replace(this.error || local.errorLabels['toFloat'], this);
7119
7128
  this.valid = false;
7120
7129
  if ( errors.count() > 0 )
7121
7130
  this['errors'] = errors;
7122
7131
  }
7123
7132
  } else {
7124
7133
  isValid = false;
7125
- errors['toFloat'] = replace(this.error || local.errorLabels['toFloatNAN'], this)
7134
+ errors['toFloat'] = replace(this.error || local.errorLabels['toFloatNAN'], this)
7126
7135
  }
7127
7136
  }
7128
7137
 
7129
7138
  if (this['decimals'] && val && !errors['toFloat']) {
7130
- this.value = local.data[this.name] = parseFloat(this.value.toFixed(this['decimals']));
7139
+ val = parseFloat(val.toFixed(this['decimals']));
7140
+ }
7141
+
7142
+ this.value = local.data[this.name] = val;
7143
+ if (isGFFCtx) {
7144
+ // restore original input format for display
7145
+ if (isFloatingWithCommas) {
7146
+ val = (''+val).replace(/\./g,',');
7147
+ }
7148
+ this.target.setAttribute('value', val);
7131
7149
  }
7132
7150
 
7133
7151
  this.valid = isValid;
7134
- if ( errors.count() > 0 )
7152
+ if ( errors.count() > 0 ) {
7135
7153
  this['errors'] = errors;
7154
+ }
7136
7155
 
7137
7156
  return self[this.name]
7138
7157
  }
@@ -7711,7 +7730,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
7711
7730
  };
7712
7731
  /*
7713
7732
  * This file is part of the gina package.
7714
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
7733
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
7715
7734
  *
7716
7735
  * For the full copyright and license information, please view the LICENSE
7717
7736
  * file that was distributed with this source code.
@@ -7727,7 +7746,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
7727
7746
 
7728
7747
  function Routing() {
7729
7748
 
7730
- var isGFFCtx = ((typeof (module) !== 'undefined') && module.exports) ? false :  true;
7749
+ var isGFFCtx = ((typeof (module) !== 'undefined') && module.exports) ? false : true;
7731
7750
  var self = {
7732
7751
  allowedMethods: ['get', 'post', 'put', 'delete'],
7733
7752
  reservedParams: ['controle', 'file','title', 'namespace', 'path'],
@@ -7782,7 +7801,7 @@ function Routing() {
7782
7801
  urlProps.hostname = config.hostname;
7783
7802
  if ( typeof(bundle) != 'undefined' ) {
7784
7803
  // get from webroot
7785
- _route = routing.getRoute('webroot@'+ bundle);
7804
+ _route = this.getRoute('webroot@'+ bundle);
7786
7805
  urlProps.hostname = _route.hostname;
7787
7806
  urlProps.host = _route.host;
7788
7807
  urlProps.webroot = _route.webroot;
@@ -7883,9 +7902,11 @@ function Routing() {
7883
7902
  return foundRoute;
7884
7903
  }
7885
7904
 
7905
+
7886
7906
  return await parseRouting(params, url, request, response, next);
7887
7907
  };
7888
7908
 
7909
+
7889
7910
  /**
7890
7911
  * Check if rule has params
7891
7912
  *
@@ -7969,13 +7990,13 @@ function Routing() {
7969
7990
  ++score;
7970
7991
  continue;
7971
7992
  }
7972
- let _key = uRo[p].substr(1);
7993
+ let _key = uRo[p].substring(1);
7973
7994
  if ( typeof(params.requirements[_key]) == 'undefined' ) {
7974
7995
  continue;
7975
7996
  }
7976
7997
  let condition = params.requirements[_key];
7977
7998
  if ( /^\//.test(condition) ) {
7978
- condition = condition.substr(1, condition.lastIndexOf('/')-1);
7999
+ condition = condition.substring(1, condition.lastIndexOf('/')-1);
7979
8000
  } else if ( /^validator\:\:/.test(condition) && await fitsWithRequirements(uRo[p], uRe[p], params, request, response, next) ) {
7980
8001
  ++score;
7981
8002
  continue;
@@ -7986,7 +8007,7 @@ function Routing() {
7986
8007
  && new RegExp(condition).test(uRe[p])
7987
8008
  ) {
7988
8009
  ++score;
7989
- request[method][uRo[p].substr(1)] = uRe[p];
8010
+ request[method][uRo[p].substring(1)] = uRe[p];
7990
8011
  }
7991
8012
  }
7992
8013
  hasAlreadyBeenScored = true;
@@ -8264,7 +8285,7 @@ function Routing() {
8264
8285
  request[requestMethod] = {}
8265
8286
  }
8266
8287
 
8267
- key = _param[matched].substr(1);
8288
+ key = _param[matched].substring(1);
8268
8289
  // escaping `\` characters
8269
8290
  // TODO - remove comment : all regex requirement must start with `/`
8270
8291
  //regex = ( /\\/.test(params.requirements[key]) ) ? params.requirements[key].replace(/\\/, '') : params.requirements[key];
@@ -8366,7 +8387,7 @@ function Routing() {
8366
8387
  } else if (c > (tplUrl.indexOf(keys[0]) + keys[0].length)) {
8367
8388
 
8368
8389
  regex = params.requirements[keys[0]];
8369
- urlVal = strVal.substr(0, strVal.length);
8390
+ urlVal = strVal.substring(0, strVal.length);
8370
8391
 
8371
8392
  if (/^\//.test(regex)) {
8372
8393
  re = regex.match(/\/(.*)\//).pop();
@@ -8403,7 +8424,7 @@ function Routing() {
8403
8424
  }
8404
8425
 
8405
8426
  if (tested) {
8406
- values[keys[0].substr(1)] = urlVal
8427
+ values[keys[0].substring(1)] = urlVal
8407
8428
  } else {
8408
8429
  return false
8409
8430
  }
@@ -8422,7 +8443,7 @@ function Routing() {
8422
8443
  if (c == posLen - 1) {
8423
8444
 
8424
8445
  regex = params.requirements[keys[0]];
8425
- urlVal = strVal.substr(0, strVal.length);
8446
+ urlVal = strVal.substring(0, strVal.length);
8426
8447
 
8427
8448
  if (/^\//.test(regex)) {
8428
8449
  re = regex.match(/\/(.*)\//).pop();
@@ -8435,7 +8456,7 @@ function Routing() {
8435
8456
  }
8436
8457
 
8437
8458
  if (tested) {
8438
- values[keys[0].substr(1)] = urlVal
8459
+ values[keys[0].substring(1)] = urlVal
8439
8460
  } else {
8440
8461
  return false
8441
8462
  }
@@ -8471,7 +8492,7 @@ function Routing() {
8471
8492
  if ( typeof(params) != 'undefined' && typeof(params[p]) == 'undefined' ) continue;
8472
8493
 
8473
8494
  if ( /^:/.test(route.param[p]) ) {
8474
- variable = route.param[p].substr(1);
8495
+ variable = route.param[p].substring(1);
8475
8496
 
8476
8497
  if ( typeof(params) != 'undefined' && typeof(params[variable]) != 'undefined' ) {
8477
8498
 
@@ -8526,7 +8547,7 @@ function Routing() {
8526
8547
  p = 0;
8527
8548
  pLen = rawUrlVars.length;
8528
8549
  for (; p < pLen; p++) {
8529
- pKey = rawUrlVars[p].substr(1);
8550
+ pKey = rawUrlVars[p].substring(1);
8530
8551
  if ( typeof(params[ pKey ]) != 'undefined' && params[ pKey ] ) {
8531
8552
  rawUrlScore++;
8532
8553
  }
@@ -8553,14 +8574,24 @@ function Routing() {
8553
8574
  * */
8554
8575
  self.getRoute = function(rule, params, urlIndex) {
8555
8576
 
8556
- var config = null;
8577
+ var config = null, isProxyHost = false;
8557
8578
  if (isGFFCtx) {
8579
+ if (
8580
+ !window.location.port
8581
+ && window.location.hostname == window.gina.config.hostname.replace(/^(https|http|wss|ws)\:\/\//, '').replace(/\:\d+$/, '')
8582
+ ) {
8583
+ isProxyHost = true;
8584
+ window.gina.config.hostname = window.gina.config.hostname.replace(/^(https|http|wss|ws)\:\/\//, '').replace(/\:\d+$/, '')
8585
+ }
8558
8586
  config = window.gina.config;
8559
8587
  } else {
8588
+
8560
8589
  config = getContext('gina').config;
8561
8590
  if ( typeof(getContext('argvFilename')) != 'undefined' ) {
8562
8591
  config.getRouting = getContext('gina').Config.instance.getRouting;
8563
8592
  }
8593
+
8594
+ isProxyHost = getContext('isProxyHost');
8564
8595
  }
8565
8596
 
8566
8597
  var env = config.env || GINA_ENV // by default, takes the current bundle
@@ -8605,6 +8636,23 @@ function Routing() {
8605
8636
  var msg = null;
8606
8637
  route = checkRouteParams(route, params);
8607
8638
 
8639
+ route.isProxyHost = isProxyHost;
8640
+ if (isProxyHost) {
8641
+ if (isGFFCtx) {
8642
+ route.proxy_hostname = window.location.protocol +'//'+ document.location.hostname;
8643
+ } else {
8644
+ route.proxy_hostname = process.gina.PROXY_HOSTNAME || config.envConf._proxyHostname;
8645
+ }
8646
+ route.proxy_host = route.proxy_hostname.replace(/^(https|http)\:\/\//, '');
8647
+
8648
+ } else if (
8649
+ !isGFFCtx
8650
+ && typeof(process.gina.PROXY_HOSTNAME) != 'undefined'
8651
+ ) {
8652
+ route.proxy_hostname = process.gina.PROXY_HOSTNAME;
8653
+ route.proxy_host = route.proxy_hostname.replace(/^(https|http)\:\/\//, '');
8654
+ }
8655
+
8608
8656
  if ( /\,/.test(route.url) ) {
8609
8657
  if ( typeof(route.urlIndex) != 'undefined' ) {
8610
8658
  urlIndex = route.urlIndex; // set by checkRouteParams(route, params)
@@ -8617,7 +8665,7 @@ function Routing() {
8617
8665
  // to prevent having a folder.
8618
8666
  // eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
8619
8667
  if ( /\/$/.test(route.url) && route.url != '/' )
8620
- route.url = route.url.substr(0, route.url.length-1);
8668
+ route.url = route.url.substring(0, route.url.length-1);
8621
8669
 
8622
8670
  // Completeting url with extra params e.g.: ?param1=val1&param2=val2
8623
8671
  if ( /GET/i.test(route.method) && typeof(params) != 'undefined' ) {
@@ -8674,11 +8722,23 @@ function Routing() {
8674
8722
  }
8675
8723
 
8676
8724
  var wroot = this.webroot || urlProps.webroot
8677
- , hostname = this.hostname || urlProps.hostname
8678
- , path = this.url
8725
+ , hostname = ''+this.hostname || ''+urlProps.hostname
8726
+ , path = ''+this.url
8679
8727
  ;
8728
+ if (this.isProxyHost) {
8729
+ hostname = ''+this.proxy_hostname;
8730
+ }
8731
+
8732
+ this.url = (
8733
+ typeof(ignoreWebRoot) != 'undefined'
8734
+ && /^true$/i.test(ignoreWebRoot)
8735
+ ) ? path.replace( new RegExp('^'+ wroot), '/') : path.replace( new RegExp('^('+wroot +'|\/$)'), wroot);
8736
+
8737
+ // this.url = (
8738
+ // typeof(ignoreWebRoot) != 'undefined'
8739
+ // && /^true$/i.test(ignoreWebRoot)
8740
+ // ) ? path.replace( new RegExp('\/'+ wroot), '/') : path;
8680
8741
 
8681
- this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
8682
8742
 
8683
8743
  return hostname + this.url
8684
8744
  };
@@ -8710,6 +8770,10 @@ function Routing() {
8710
8770
  , url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : this.url || _this.url
8711
8771
  ;
8712
8772
 
8773
+ if ( /^\//.test(url) ) {
8774
+ url = hostname + url;
8775
+ }
8776
+
8713
8777
  var scheme = ( /^https/.test(hostname) ) ? 'https' : 'http';
8714
8778
 
8715
8779
  if (isGFFCtx) {
@@ -8792,12 +8856,13 @@ function Routing() {
8792
8856
  return route
8793
8857
  };
8794
8858
 
8859
+ // TODO - Remove this : deprecated && not used
8795
8860
  var getFormatedRoute = function(route, url, hash) {
8796
8861
  // fix url in case of empty param value allowed by the routing rule
8797
8862
  // to prevent having a folder.
8798
8863
  // eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
8799
8864
  if ( /\/$/.test(url) && url != '/' )
8800
- url = url.substr(0, url.length-1);
8865
+ url = url.substring(0, url.length-1);
8801
8866
  // adding hash if found
8802
8867
  if (hash)
8803
8868
  url += hash;
@@ -8822,12 +8887,13 @@ function Routing() {
8822
8887
  /**
8823
8888
  * Get route by url
8824
8889
  * N.B.: this will only work with rules declared with `GET` method property
8890
+ * ATTENTION !!! Not fully working for frontend because of unresolved promises !!!!
8825
8891
  *
8826
8892
  * @function getRouteByUrl
8827
8893
  *
8828
8894
  * @param {string} url e.g.: /webroot/some/url/path or http
8829
8895
  * @param {string} [bundle] targeted bundle
8830
- * @param {string} [method] request method (GET|PUT|PUT|DELETE) - GET is set by default
8896
+ * @param {string} [method] 2nd or 3rd - request method (GET|PUT|PUT|DELETE) - GET is set by default
8831
8897
  * @param {object} [request]
8832
8898
  * @param {boolean} [isOverridinMethod] // will replace request.method by the provided method - Used for redirections
8833
8899
  *
@@ -8922,6 +8988,9 @@ function Routing() {
8922
8988
  params: {},
8923
8989
  url: url
8924
8990
  };
8991
+ if (bundle) {
8992
+ request.bundle = bundle;
8993
+ }
8925
8994
  } else {
8926
8995
 
8927
8996
  var gnaCtx = getContext('gina');
@@ -9009,11 +9078,8 @@ function Routing() {
9009
9078
  // normal case
9010
9079
  //Parsing for the right url.
9011
9080
  try {
9012
-
9013
9081
  isRoute = self.compareUrls(params, routing[name].url, request);
9014
-
9015
9082
  if (isRoute.past) {
9016
-
9017
9083
  route = JSON.clone(routing[name]);
9018
9084
  route.name = name;
9019
9085
 
@@ -9035,7 +9101,7 @@ function Routing() {
9035
9101
  url == '#'
9036
9102
  && /GET/i.test(method)
9037
9103
  && isMethodProvidedByDefault
9038
- || /^404\:/.test(url)
9104
+ || /^404\:/.test(url)
9039
9105
  ) {
9040
9106
  url = location.pathname;
9041
9107
  urlHasChanged = true;
@@ -9125,7 +9191,7 @@ function Routing() {
9125
9191
  // to prevent having a folder.
9126
9192
  // eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
9127
9193
  if ( /\/$/.test(url) && url != '/' )
9128
- url = url.substr(0, url.length-1);
9194
+ url = url.substring(0, url.length-1);
9129
9195
  // adding hash if found
9130
9196
  if (hash)
9131
9197
  url += hash;
@@ -9689,7 +9755,7 @@ define("utils/effects", function(){});
9689
9755
 
9690
9756
  /*
9691
9757
  * This file is part of the gina package.
9692
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
9758
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
9693
9759
  *
9694
9760
  * For the full copyright and license information, please view the LICENSE
9695
9761
  * file that was distributed with this source code.
@@ -10002,7 +10068,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10002
10068
  * @param {object} [ data ] // from request
10003
10069
  * @param {string} [ formId ]
10004
10070
  * */
10005
- function ValidatorPlugin(rules, data, formId) {
10071
+ function ValidatorPlugin(rules, data, formId) {
10006
10072
 
10007
10073
  this.plugin = 'validator';
10008
10074
 
@@ -10112,6 +10178,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10112
10178
  'eventData' : {},
10113
10179
  'target' : (isGFFCtx) ? document : null, // by default
10114
10180
  'cachedErrors' : {},
10181
+ 'lastFocused' : (isGFFCtx) ? [] : null,
10115
10182
  'binded' : false,
10116
10183
  'unbinded' : false,
10117
10184
  'withUserBindings' : false,
@@ -10392,22 +10459,34 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10392
10459
  }
10393
10460
 
10394
10461
  var refreshWarning = function($el) {
10395
- var formId = $el.form.getAttribute('id');
10462
+ var formId = $el.form.id || $el.form.getAttribute('id');
10463
+ var elName = $el.name || $el.form.getAttribute('name');
10464
+ var currentElName = document.activeElement.name;
10396
10465
  if ( /^true$/i.test(instance.$forms[formId].isValidating) ) {
10397
10466
  return;
10398
10467
  }
10399
10468
 
10400
- var $parent = $el.parentNode, isErrorMessageHidden = false;
10401
- var $children = $parent.getElementsByTagName('div');
10469
+ var $parent = $el.parentNode
10470
+ , isErrorMessageHidden = false
10471
+ , $children = $parent.getElementsByTagName('div')
10472
+ ;
10402
10473
 
10403
- if ( /form\-item\-warning/.test($parent.className) ) {
10474
+ if ( /form\-item\-warning/.test($parent.className) && currentElName != elName ) {
10404
10475
  $parent.className = $parent.className.replace(/form\-item\-warning/, 'form-item-error');
10405
10476
 
10406
- } else if (/form\-item\-error/.test($parent.className) ) {
10477
+ } else if (/form\-item\-error/.test($parent.className) && currentElName == elName ) {
10407
10478
  $parent.className = $parent.className.replace(/form\-item\-error/, 'form-item-warning');
10408
10479
  isErrorMessageHidden = true;
10409
10480
  }
10410
10481
 
10482
+ // Fixed on 2025-03-16
10483
+ if (
10484
+ /^true$/i.test(instance.$forms[formId].isValidating)
10485
+ && !isErrorMessageHidden
10486
+ ) {
10487
+ return;
10488
+ }
10489
+
10411
10490
 
10412
10491
  for (var c = 0, cLen = $children.length; c<cLen; ++c) {
10413
10492
  if ( /form\-item\-error\-message/.test($children[c].className) ) {
@@ -10429,7 +10508,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10429
10508
  * @param {object} $form - Target (HTMLFormElement)
10430
10509
  * @param {object} errors
10431
10510
  * @param {object|null} data
10432
- * @param {object|null} [fileName]
10511
+ * @param {string|null} [fileName]
10433
10512
  */
10434
10513
  var liveCheckErrors = {}; // Per Form & Per Element
10435
10514
  var handleErrorsDisplay = function($form, errors, data, fieldName) {
@@ -10460,7 +10539,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10460
10539
  if ( typeof(liveCheckErrors[formId]) == 'undefined') {
10461
10540
  liveCheckErrors[formId] = {};
10462
10541
  }
10463
- if (errors.count() > 0) {
10542
+ if (errors && errors.count() > 0) {
10464
10543
  // reset field name
10465
10544
  liveCheckErrors[formId][fieldName] = {};
10466
10545
  // override
@@ -10470,8 +10549,29 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10470
10549
  }
10471
10550
  errors = liveCheckErrors[formId];
10472
10551
  // only if the form has not been sent yet
10473
- if (!instance.$forms[formId].sent || instance.$forms[formId].isValidating) {
10552
+ if (
10553
+ !instance.$forms[formId].sent
10554
+ ||
10555
+ instance.$forms[formId].isValidating
10556
+ ) {
10474
10557
  isWarning = true;
10558
+ // Fixed on 2025-03-16
10559
+ var lastFocused = instance.$forms[formId].lastFocused;
10560
+ // console.debug('fieldName: '+ fieldName + '\nactiveElement: '+ document.activeElement.getAttribute('name') +'\nlastFocused: ', lastFocused);
10561
+ if (
10562
+ lastFocused.length > 0
10563
+ && typeof(lastFocused[1]) != 'undefined'
10564
+ && lastFocused[1].name == fieldName
10565
+ ||
10566
+ lastFocused.length > 0
10567
+ && !lastFocused[1]
10568
+ && document.activeElement.getAttribute('name') != lastFocused[0].name
10569
+ ||
10570
+ document.activeElement.getAttribute('name') != fieldName
10571
+ ) {
10572
+ isWarning = false;
10573
+ }
10574
+ // console.debug('isWarning: '+isWarning);
10475
10575
  }
10476
10576
  } else {
10477
10577
  if ( typeof(liveCheckErrors[formId][fieldName]) != 'undefined') {
@@ -10535,7 +10635,11 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10535
10635
 
10536
10636
  if (!name) continue;
10537
10637
 
10538
- if ( typeof(errors[name]) != 'undefined' && !/(form\-item\-error|form\-item\-warning)/.test($parent.className) ) {
10638
+ if (
10639
+ errors
10640
+ && typeof(errors[name]) != 'undefined'
10641
+ && !/(form\-item\-error|form\-item\-warning)/.test($parent.className)
10642
+ ) {
10539
10643
 
10540
10644
  if (isWarning) {
10541
10645
  // adding warning class
@@ -10576,7 +10680,24 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10576
10680
 
10577
10681
 
10578
10682
 
10579
- } 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) ) {
10683
+ } else if (
10684
+ errors
10685
+ && typeof(errors[name]) == 'undefined'
10686
+ && /(form\-item\-error|form\-item\-warning)/.test($parent.className)
10687
+ ||
10688
+ errors
10689
+ && typeof(errors[name]) != 'undefined' && errors[name].count() == 0
10690
+ && /(form\-item\-error|form\-item\-warning)/.test($parent.className)
10691
+ ) {
10692
+ // Fixed on 2025-03-10
10693
+ // targeted field must be the active element
10694
+ // if (
10695
+ // document.activeElement.getAttribute('name') != fieldName
10696
+ // && errors.count() > 0
10697
+ // ) {
10698
+ // break
10699
+ // }
10700
+ console.debug('[handleErrorsDisplay] Resetting when not in error');
10580
10701
  // reset when not in error
10581
10702
  // remove child elements
10582
10703
  var $children = $parent.getElementsByTagName('div');
@@ -10590,16 +10711,34 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10590
10711
 
10591
10712
  $parent.className = $parent.className.replace(/(\s+form\-item\-error|form\-item\-error|\s+form\-item\-warning|form\-item\-warning)/, '');
10592
10713
 
10593
- } else if ( typeof(errors[name]) != 'undefined' && errAttr) {
10714
+ } else if (
10715
+ errors.count() > 0
10716
+ && typeof(errors[name]) != 'undefined'
10717
+ && errAttr
10718
+ ) {
10594
10719
  // refreshing already displayed error on msg update
10595
10720
  var $divs = $parent.getElementsByTagName('div');
10596
10721
  for (var d = 0, dLen = $divs.length; d<dLen; ++d) {
10597
- if ($divs[d].className == 'form-item-error-message') {
10722
+ // Fixed on 2025-03-05: className can have more than one !!
10723
+ let foundMessage = $divs[d].className.match("form-item-error-message");
10724
+ if (
10725
+ foundMessage
10726
+ && typeof(foundMessage.length) != 'undefined'
10727
+ && foundMessage.length > 0
10728
+ ) {
10598
10729
 
10599
10730
  $divs[d].parentElement.removeChild($divs[d]);
10600
10731
  $err = document.createElement('div');
10601
10732
  $err.setAttribute('class', 'form-item-error-message');
10602
10733
 
10734
+ // Fixed on 2025-03-09: className cleanup
10735
+ if (
10736
+ !isWarning
10737
+ && /(\s+form\-item\-warning|form\-item\-warning)/.test($parent.className)
10738
+ ) {
10739
+ $parent.className = $parent.className.replace(/(\s+form\-item\-warning|form\-item\-warning)/, ' form-item-error');
10740
+ }
10741
+
10603
10742
  // injecting error messages
10604
10743
  // {
10605
10744
  // field: {
@@ -10624,12 +10763,17 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10624
10763
  }
10625
10764
  }
10626
10765
 
10627
- if ($err && $target.type != 'hidden')
10766
+ if ($err && $target.type != 'hidden') {
10628
10767
  insertAfter($target, $err);
10629
-
10768
+ }
10630
10769
  }
10631
10770
 
10632
- if (typeof(fieldName) != 'undefined' && fieldName === $el.name) break;
10771
+ if (
10772
+ typeof(fieldName) != 'undefined'
10773
+ && fieldName === $el.name
10774
+ ) {
10775
+ break;
10776
+ }
10633
10777
  }
10634
10778
 
10635
10779
 
@@ -10965,7 +11109,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10965
11109
  // In case the user is also redirecting
10966
11110
  var redirectDelay = (/Google Inc/i.test(navigator.vendor)) ? 50 : 0;
10967
11111
 
10968
- if (xhr.readyState == 2) { // responseType interception
11112
+ // responseType interception
11113
+ if (xhr.readyState == 2) {
10969
11114
  isAttachment = ( /^attachment\;/.test( xhr.getResponseHeader("Content-Disposition") ) ) ? true : false;
10970
11115
  // force blob response type
10971
11116
  if ( !xhr.responseType && isAttachment ) {
@@ -10999,7 +11144,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10999
11144
  var url = window.URL.createObjectURL(blob);
11000
11145
  a.href = url;
11001
11146
  var contentDisposition = xhr.getResponseHeader("Content-Disposition");
11002
- a.download = contentDisposition.match('\=(.*)')[0].substr(1);
11147
+ a.download = contentDisposition.match('\=(.*)')[0].substring(1);
11003
11148
  //programatically click the link to trigger the download
11004
11149
  a.click();
11005
11150
 
@@ -11018,7 +11163,9 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11018
11163
  size : blob.size
11019
11164
  }
11020
11165
 
11021
- } else { // normal case
11166
+ }
11167
+ // normal case
11168
+ else {
11022
11169
  result = xhr.responseText;
11023
11170
  }
11024
11171
 
@@ -11027,9 +11174,14 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11027
11174
  if ( /\/json/.test( contentType ) ) {
11028
11175
  result = JSON.parse(xhr.responseText);
11029
11176
 
11030
- if ( typeof(result.status) == 'undefined' )
11177
+ if ( typeof(result.status) == 'undefined' ) {
11031
11178
  result.status = xhr.status;
11032
-
11179
+ }
11180
+ // Fixed on 2025-03-13 Allowing toolbar to ubdate after xhr results
11181
+ // TODO - Allowing to revert to previously loaded data via a close button
11182
+ if (gina && envIsDev && typeof(window.ginaToolbar) && typeof(result) != 'undefined') {
11183
+ window.ginaToolbar.update('data-xhr', result);
11184
+ }
11033
11185
  }
11034
11186
 
11035
11187
  if ( /\/html/.test( contentType ) ) {
@@ -11260,6 +11412,13 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11260
11412
  // } else { // external - need to remove `X-Requested-With` from `options.headers`
11261
11413
  result.location = (!/^http/.test(result.location) && !/^\//.test(result.location) ) ? location.protocol +'//' + result.location : result.location;
11262
11414
  //}
11415
+ // isProxyHost ?
11416
+ if (
11417
+ result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:\/\//, '').split(/\//g)[0] == gina.config.hostname
11418
+ && gina.config.hostname == window.location.host
11419
+ ) {
11420
+ result.location = location.protocol + result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:/, '')
11421
+ }
11263
11422
 
11264
11423
  return setTimeout(() => {
11265
11424
  window.location.href = result.location;
@@ -11889,7 +12048,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11889
12048
  filesToBeRemoved.push(childNodeFilePreview);
11890
12049
  }
11891
12050
  } else {
11892
- let file = childNodes[i].src.substr(childNodes[i].src.lastIndexOf('/')+1);
12051
+ let file = childNodes[i].src.substring(childNodes[i].src.lastIndexOf('/')+1);
11893
12052
  childNodeFile = file;
11894
12053
  filesToBeRemoved.push(childNodeFile);
11895
12054
  }
@@ -12325,7 +12484,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
12325
12484
  for (let m = 0, mLen = mergingRules.length; m < mLen; m++) {
12326
12485
  if ( re.test(mergingRules[m]) ) {
12327
12486
  let tmpStr = JSON.stringify(rule);
12328
- tmpStr = tmpStr.substr(1, tmpStr.length-1);// removing ->{ ... }<-
12487
+ tmpStr = tmpStr.substring(1, tmpStr.length-1);// removing ->{ ... }<-
12329
12488
  // is last ?
12330
12489
  if (m < mLen-1) {
12331
12490
  tmpStr += ','
@@ -13110,7 +13269,6 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13110
13269
  } else {
13111
13270
  handleErrorsDisplay(event.target.form, errors, null, event.target.name);
13112
13271
  }
13113
- //return cancelEvent(event);
13114
13272
  }
13115
13273
 
13116
13274
 
@@ -13120,7 +13278,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13120
13278
 
13121
13279
  instance.$forms[event.target.form.getAttribute('id')].isValidating = true;
13122
13280
  validate(event.target, localField, $localField, $form.rules, function onLiveValidation(result){
13123
- instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
13281
+ // instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
13124
13282
  //console.debug('validation on processEvent(...) ', result);
13125
13283
 
13126
13284
  var isFormValid = result.isValid();
@@ -13146,8 +13304,10 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13146
13304
  instance.$forms[formId].isValidating = true;
13147
13305
  validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
13148
13306
  instance.$forms[formId].isValidating = false;
13149
- console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
13307
+ console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
13308
+ // var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
13150
13309
  var isFormValid = gResult.isValid();
13310
+ // var isFormValid = gResult.isValid();
13151
13311
  if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
13152
13312
  // update toolbar
13153
13313
  if (!gina.forms.errors)
@@ -13162,6 +13322,27 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13162
13322
  }
13163
13323
 
13164
13324
 
13325
+ if ( !isFormValid && gResult.error ) {
13326
+ // Fixed on 2025-03-16 - we need past and live errors
13327
+ instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
13328
+ // Fixed on 2025-03-16
13329
+ for (let eField in gResult.error) {
13330
+ refreshWarning($gFields[eField]);
13331
+ handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
13332
+ }
13333
+ }
13334
+ // Fixed on 2025-03-16
13335
+ // Eg.: input select change impacting another element: solve `no more errors`
13336
+ else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
13337
+ // recheck if valid
13338
+ //resetting error display
13339
+ instance.$forms[ formId ].errors = {};
13340
+ console.debug('resetting field: '+ $el.name);
13341
+ liveCheckErrors[formId] = {};
13342
+ // $form.dataset.ginaFormIsResetting = true;
13343
+ handleErrorsDisplay($gForm, {}, null, $el.name);
13344
+ }
13345
+
13165
13346
  updateSubmitTriggerState( $gForm, isFormValid);
13166
13347
 
13167
13348
  once = false;
@@ -13195,13 +13376,16 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13195
13376
  // other inputs & textareas
13196
13377
  else if ( /^focusin\./i.test(event.type) ) {
13197
13378
  if ( /\-error/.test($el.parentNode.className) ) {
13198
- console.debug('#1 you just focusin ....'+$el.id, $el.value);
13379
+ console.debug('#1 you just focusin ....'+$el.id, $el.value, instance.$forms[ $el.form.getAttribute('id') ].isValidating);
13199
13380
  refreshWarning($el);
13200
13381
  }
13201
13382
  }
13202
13383
  else if ( /^focusout\./i.test(event.type) ) {
13203
13384
  if ( /\-warning/.test($el.parentNode.className) ) {
13204
13385
  console.debug('#1 you just focusout ....'+$el.id, $el.value);
13386
+ // Removed on 2025-03-16
13387
+ instance.$forms[ $el.form.getAttribute('id') ].isValidating = false;
13388
+
13205
13389
  refreshWarning($el);
13206
13390
  // in case error context is changed by another task
13207
13391
  handleErrorsDisplay($el.form, instance.$forms[ $el.form.getAttribute('id') ].errors, null, $el.name);
@@ -13210,12 +13394,86 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13210
13394
  else if ( /^keyup\./i.test(event.type) ) {
13211
13395
  $el.ginaFormValidatorTestedValue = $el.value;
13212
13396
  liveCheckTimer = setTimeout( function onLiveCheckTimer() {
13213
- // do not trigger for copy/paste event
13214
- if ( ['91', '17'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
13397
+ // Do not trigger for copy/paste event
13398
+ if ( ['91', '17', '16'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
13215
13399
  //console.debug('mapping ', keyboardMapping);
13216
13400
  return;
13217
13401
  }
13218
- console.debug(' keyup ('+ event.keyCode +') .... '+$el.id, $el.value, ' VS ',$el.ginaFormValidatorTestedValue + '(old)');
13402
+
13403
+ // Fixed on 2025-03-16:
13404
+ // Treat TAB as focus in/out
13405
+ // if ( ['9'].indexOf(''+event.keyCode) > -1 ) {
13406
+
13407
+ // console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"');
13408
+ // var $gForm = event.target.form, gFields = null, $gFields = null, gRules = null;
13409
+ // var gValidatorInfos = getFormValidationInfos($gForm, rules);
13410
+ // gFields = gValidatorInfos.fields;
13411
+ // $gFields = gValidatorInfos.$fields;
13412
+ // var formId = $gForm.getAttribute('id');
13413
+ // gRules = instance.$forms[formId].rules;
13414
+ // // Don't be tempted to revome fields that has already been validated
13415
+ // instance.$forms[formId].isValidating = true;
13416
+ // validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
13417
+ // instance.$forms[formId].isValidating = false;
13418
+ // console.debug('['+ formId +'] [9] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
13419
+ // var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
13420
+ // // var isFormValid = gResult.isValid();
13421
+ // if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
13422
+ // // update toolbar
13423
+ // if (!gina.forms.errors)
13424
+ // gina.forms.errors = {};
13425
+
13426
+ // var objCallback = {
13427
+ // id : formId,
13428
+ // errors : gResult.error || {}
13429
+ // };
13430
+
13431
+ // window.ginaToolbar.update('forms', objCallback);
13432
+ // }
13433
+
13434
+
13435
+ // if ( !isFormValid && gResult.error ) {
13436
+ // // Fixed on 2025-03-16 - we need past and live errors
13437
+ // instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
13438
+ // // Fixed on 2025-03-16
13439
+ // for (let eField in instance.$forms[ $el.form.getAttribute('id') ].errors) {
13440
+ // refreshWarning($gFields[eField]);
13441
+ // handleErrorsDisplay($gForm, instance.$forms[ $el.form.getAttribute('id') ].errors, gResult.data, eField);
13442
+ // }
13443
+ // }
13444
+ // // Fixed on 2025-03-16
13445
+ // // Eg.: input select change impacting another element: solve `no more errors`
13446
+ // else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
13447
+ // // recheck if valid
13448
+ // //resetting error display
13449
+ // instance.$forms[ formId ].errors = {};
13450
+ // console.debug('resetting field: '+ $el.name);
13451
+ // liveCheckErrors[formId] = {};
13452
+ // // $form.dataset.ginaFormIsResetting = true;
13453
+ // handleErrorsDisplay($gForm, {}, null, $el.name);
13454
+ // }
13455
+
13456
+ // updateSubmitTriggerState( $gForm, isFormValid);
13457
+
13458
+ // once = false;
13459
+ // });
13460
+ // // var $previeousEl = document.getElementById(instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id);
13461
+ // // var errors = instance.$forms[ $previeousEl.form.getAttribute('id') ].errors;
13462
+ // // var isFormValid = (!errors[$previeousEl.name]) ? true : false;
13463
+ // // console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"', "errors: ", errors);
13464
+ // // if (errors && errors.count() > 0 ) {
13465
+ // // instance.$forms[ $previeousEl.form.getAttribute('id') ].isValidating = false;
13466
+ // // isFormValid = false;
13467
+ // // }
13468
+ // // refreshWarning($previeousEl);
13469
+ // // // // in case error context is changed by another task
13470
+ // // handleErrorsDisplay($previeousEl.form, errors, null, $previeousEl.name);
13471
+ // // updateSubmitTriggerState( $el.form, isFormValid);
13472
+ // return;
13473
+ // }
13474
+
13475
+
13476
+ console.debug('[A]['+keyboardMapping.count()+'] keyup ('+ event.keyCode +') .... '+$el.id, $el.value, ' VS ',$el.ginaFormValidatorTestedValue + '(old)');
13219
13477
  processEvent();
13220
13478
  }, 1000);
13221
13479
  }
@@ -13317,14 +13575,14 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13317
13575
  case 46: //Delete
13318
13576
  case 8: //Backspace
13319
13577
  if (posStart != posEnd) {
13320
- $_el.value = str.substr(0, posStart) + str.substr(posEnd);
13578
+ $_el.value = str.substring(0, posStart) + str.substring(posEnd);
13321
13579
  if (posStart == 0) {
13322
- $_el.value = str.substr(posEnd);
13580
+ $_el.value = str.substring(posEnd);
13323
13581
  }
13324
13582
  } else if (posStart == 0) {
13325
13583
  $_el.value = str.substring(posStart+1);
13326
13584
  } else {
13327
- $_el.value = str.substr(0, posStart-1) + str.substr(posEnd);
13585
+ $_el.value = str.substring(0, posStart-1) + str.substring(posEnd);
13328
13586
  }
13329
13587
 
13330
13588
  e.currentTarget.setAttribute('readonly', 'readonly');
@@ -13412,14 +13670,14 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13412
13670
  default:
13413
13671
  // Replace selection
13414
13672
  if (posStart != posEnd) {
13415
- $_el.value = str.substr(0, posStart) + e.key;
13673
+ $_el.value = str.substring(0, posStart) + e.key;
13416
13674
  if (posEnd-1 < str.length) {
13417
13675
  $_el.value += str.substring(posEnd)
13418
13676
  }
13419
13677
  } else if (posStart == 0) {
13420
13678
  $_el.value = e.key + str.substring(posStart);
13421
13679
  } else {
13422
- $_el.value = str.substr(0, posStart) + e.key + str.substr(posEnd);
13680
+ $_el.value = str.substring(0, posStart) + e.key + str.substring(posEnd);
13423
13681
  }
13424
13682
  e.currentTarget.setAttribute('readonly', 'readonly');
13425
13683
  // Force restore last caret position
@@ -13561,24 +13819,53 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13561
13819
  }
13562
13820
 
13563
13821
  /**
13564
- * reBindForm - This is a WIP
13822
+ * reBindForm
13823
+ * Allows form rebinding: it is like reseting validation
13565
13824
  *
13566
- * @param {object} HTMLElement
13567
- * @param {object} rules
13568
- * @returns {object} formValidatorInstance
13825
+ * E.g.:
13826
+ * $validator
13827
+ * .getFormById('my-form-id')
13828
+ * .reBind();
13829
+ *
13830
+ * @param {string} [formId]
13831
+ * @param {string} [rules]
13832
+ * @param {callback} [cb]
13569
13833
  */
13570
- var reBindForm = function($target, rules, cb) {
13571
- // Unbind form
13572
- var formInstance = unbindForm($target);
13834
+ var reBindForm = function(formId, rules, cb) {
13835
+ var $form = null
13836
+ , _id = null
13837
+ ;
13838
+ if (
13839
+ typeof(this.target) != 'undefined'
13840
+ && /FORM/i.test(this.target.tagName)
13841
+ ) {
13842
+ _id = formId = this.target.getAttribute('id')
13843
+ } else if ( /string/i.test(typeof(formId)) ) {
13844
+ _id = formId
13845
+ }
13846
+
13847
+ if ( typeof(instance.$forms[_id]) != 'undefined') {
13848
+ $form = instance.$forms[_id];
13849
+ } else {
13850
+ throw new Error('form instance `'+ _id +'` not found');
13851
+ }
13852
+
13573
13853
  // reset errors
13574
- //resetErrorsDisplay(formInstance.id);
13854
+ resetErrorsDisplay(_id);
13855
+ // Unbind form
13856
+ unbindForm($form.target);
13575
13857
  // Bind
13576
- bindForm(formInstance.target, rules);
13858
+ if ( typeof(rule) != 'undefined' ) {
13859
+ bindForm($form.target, rules);
13860
+ } else {
13861
+ bindForm($form.target);
13862
+ }
13577
13863
 
13578
13864
  if ( cb ) {
13579
- return cb(formInstance);
13865
+ return cb($form);
13580
13866
  }
13581
- return formInstance;
13867
+
13868
+ return $form;
13582
13869
  }
13583
13870
 
13584
13871
  var unbindForm = function($target) {
@@ -13596,7 +13883,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13596
13883
 
13597
13884
  } else if ( typeof($target.target) != 'undefined' ) {
13598
13885
  $form = $target;
13599
- _id = $form.id;
13886
+ _id = ( $target.getAttribute && $target.getAttribute('id') ) ? $form.getAttribute('id') : $form.id;
13600
13887
  } else {
13601
13888
  throw new Error('Validator::unbindForm($target): `$target` must be a DOM element\n'+err.stack )
13602
13889
  }
@@ -13635,7 +13922,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13635
13922
  // submit buttons
13636
13923
  $elTMP = $form.target.getElementsByTagName('button');
13637
13924
  if ( $elTMP.length > 0 ) {
13638
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
13925
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13639
13926
  // if button is != type="submit", you will need to provide : data-gina-form-submit
13640
13927
  // TODO - On button binding, you can then provide data-gina-form-action & data-gina-form-method
13641
13928
  $els.push($elTMP[i])
@@ -13645,7 +13932,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13645
13932
  // submit links
13646
13933
  $elTMP = $form.target.getElementsByTagName('a');
13647
13934
  if ( $elTMP.length > 0 ) {
13648
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
13935
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13649
13936
  $els.push($elTMP[i])
13650
13937
  }
13651
13938
  }
@@ -13701,7 +13988,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13701
13988
  // textarea
13702
13989
  $elTMP = $form.target.getElementsByTagName('textarea');
13703
13990
  if ( $elTMP.length > 0 ) {
13704
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
13991
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13705
13992
  $els.push( $elTMP[i] )
13706
13993
  }
13707
13994
  }
@@ -13710,7 +13997,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13710
13997
  // forms inside main form
13711
13998
  $elTMP = $form.target.getElementsByTagName('form');
13712
13999
  if ( $elTMP.length > 0 ) {
13713
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
14000
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13714
14001
  $els.push( $elTMP[i] )
13715
14002
  }
13716
14003
  }
@@ -13795,8 +14082,10 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13795
14082
  /**
13796
14083
  * bindForm
13797
14084
  *
13798
- * @param {object} $target - DOM element
13799
- * @param {object} [customRule]
14085
+ * @param {object} [$target] - DOM element
14086
+ * @param {object|string} [customRule]
14087
+ *
14088
+ * @return {object} bindedForm
13800
14089
  * */
13801
14090
  var bindForm = function($target, customRule) {
13802
14091
 
@@ -13805,23 +14094,32 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13805
14094
  , rules = ( typeof(local.rules.count() > 0 ) ) ? local.rules : instance.rules
13806
14095
  ;
13807
14096
 
13808
- try {
13809
- if ( $target.getAttribute && $target.getAttribute('id') ) {
13810
- _id = $target.getAttribute('id');
13811
- if ( typeof(instance.$forms[_id]) != 'undefined')
13812
- $form = instance.$forms[_id];
13813
- else
13814
- throw new Error('form instance `'+ _id +'` not found');
14097
+ if (
14098
+ typeof($target) == 'undefined'
14099
+ && typeof(this.target) != 'undefined'
14100
+ && /FORM/i.test(this.target.tagName)
14101
+ ||
14102
+ !/object/i.test( typeof($target) )
14103
+ ) {
14104
+ _id = this.target.id || this.target.getAttribute('id');
14105
+ } else if ( /string/i.test(typeof($target)) ) {
14106
+ _id = $target
14107
+ } else {
14108
+ _id = $target.getAttribute('id')
14109
+ }
13815
14110
 
14111
+ try {
14112
+ if ( typeof(instance.$forms[_id]) != 'undefined') {
14113
+ $form = instance.$forms[_id];
14114
+ if ( typeof($form.target) == 'undefined' ) {
14115
+ throw new Error('Validator::bindForm($target, customRule): `$target` must be a DOM element\n');
14116
+ }
14117
+ $target = $form.target;
13816
14118
  } else {
13817
- throw new Error('Validator::bindForm($target, customRule): `$target` must be a DOM element\n'+err.stack )
14119
+ throw new Error('form instance `'+ _id +'` not found');
13818
14120
  }
13819
14121
  } catch(err) {
13820
- throw new Error('Validator::bindForm($target, customRule) could not bind form `'+ $target +'`\n'+err.stack )
13821
- }
13822
-
13823
- if ( typeof($form) != 'undefined' && $form.binded) {
13824
- return false
14122
+ throw new Error('Validator::bindForm($target, customRule) could not bind form `'+ $target +'`\n'+err.stack );
13825
14123
  }
13826
14124
 
13827
14125
  console.debug('binding for: '+ _id);
@@ -14127,7 +14425,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
14127
14425
  } else if ( /img/i.test($els[i].tagName) ) {
14128
14426
  $img = $els[i];
14129
14427
  deleteLinkId = uploadTriggerId + '-'+index+'-delete-trigger';
14130
- let file = $img.src.substr($img.src.lastIndexOf('/')+1);
14428
+ let file = $img.src.substring($img.src.lastIndexOf('/')+1);
14131
14429
  $uploadTrigger.customFiles.push({
14132
14430
  name: file,
14133
14431
  deleteLinkId: deleteLinkId
@@ -14519,7 +14817,16 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
14519
14817
  validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
14520
14818
  instance.$forms[formId].isValidating = false;
14521
14819
  console.debug('[updateSelect]: onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
14820
+ // Fixed on 2025-03-16
14522
14821
  var isFormValid = gResult.isValid();
14822
+ if (!isFormValid) {
14823
+ instance.$forms[formId].errors = gResult.error;
14824
+ for (let eField in gResult.error) {
14825
+ // refreshWarning($gFields[eField]);
14826
+ handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
14827
+ }
14828
+ }
14829
+
14523
14830
  updateSubmitTriggerState( $gForm, isFormValid);
14524
14831
  once = false;
14525
14832
  })
@@ -15113,6 +15420,25 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15113
15420
  if (gina.events[_evt]) {
15114
15421
  cancelEvent(event);
15115
15422
 
15423
+ // Fixed on 2025-03-05 - "last focus" vs "current focus"
15424
+ // To get active element: document.activeElement
15425
+ var formId = event.target.form.getAttribute('id') || event.currentTarget.getAttribute('id');
15426
+ var lastFocused = {
15427
+ id : $el.id,
15428
+ name: $el.name
15429
+ };
15430
+ if (!instance.$forms[formId].lastFocused.length) {
15431
+ instance.$forms[formId].lastFocused[0] = lastFocused;
15432
+ } else {
15433
+ instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
15434
+ }
15435
+ lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
15436
+
15437
+ // cleanup
15438
+ instance.$forms[formId].lastFocused.splice(2);
15439
+
15440
+ // console.debug('lastFocused: ', lastFocused, ' VS current: ', $el.id);
15441
+
15116
15442
  triggerEvent(gina, $el, _evt, event.detail);
15117
15443
  }
15118
15444
  });
@@ -15429,7 +15755,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15429
15755
  ;
15430
15756
  $buttonsTMP = $target.getElementsByTagName('button');
15431
15757
  if ( $buttonsTMP.length > 0 ) {
15432
- for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15758
+ for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15433
15759
  if ($buttonsTMP[b].type == 'submit') {
15434
15760
  $buttons.push($buttonsTMP[b])
15435
15761
  }
@@ -15439,7 +15765,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15439
15765
  // binding links
15440
15766
  $buttonsTMP = $target.getElementsByTagName('a');
15441
15767
  if ( $buttonsTMP.length > 0 ) {
15442
- for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15768
+ for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15443
15769
  if ( $buttonsTMP[b].attributes.getNamedItem('data-gina-form-submit') ) {
15444
15770
  $buttons.push($buttonsTMP[b])
15445
15771
  } else if (
@@ -15696,7 +16022,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15696
16022
  }
15697
16023
  updateSubmitTriggerState( $form, result.isValid() );
15698
16024
  });
15699
- } else if (!/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) ) {
16025
+ }
16026
+ else if (!/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) ) {
15700
16027
  updateSubmitTriggerState( $form , true );
15701
16028
  }
15702
16029
 
@@ -16159,7 +16486,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16159
16486
  if ( !/^form$/i.test($formOrElement.tagName) ) {
16160
16487
  $currentForm = $formOrElement.form;
16161
16488
  }
16162
- var formId = $currentForm.getAttribute('id');
16489
+ var formId = $currentForm.getAttribute('id');
16490
+ var isFormValid = null;
16163
16491
 
16164
16492
  if (
16165
16493
  hasParsedAllRules
@@ -16180,10 +16508,16 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16180
16508
  if ( typeof(instance.$forms[formId].errors) == 'undefined' ) {
16181
16509
  instance.$forms[formId].errors = {}
16182
16510
  }
16511
+ // Fixed on 2025-03-16
16512
+ if ( typeof(cb._errors[field]) != 'undefined' ) {
16513
+ instance.$forms[formId].errors[field] = cb._errors[field];
16514
+ }
16515
+ console.debug('[A] Refreshing warning/error on field '+ field);
16516
+ if (
16517
+ !isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)
16518
+ || d[field].target.value != ''
16183
16519
 
16184
- instance.$forms[formId].errors[field] = cb._errors[field];
16185
-
16186
- if (!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating) || d[field].target.value != '' ) {
16520
+ ) {
16187
16521
  refreshWarning($allFields[field]);
16188
16522
  handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
16189
16523
  updateSubmitTriggerState( $currentForm, isFormValid);
@@ -16191,8 +16525,9 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16191
16525
 
16192
16526
  if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
16193
16527
  // update toolbar
16194
- if (!gina.forms.errors)
16528
+ if (!gina.forms.errors) {
16195
16529
  gina.forms.errors = {};
16530
+ }
16196
16531
 
16197
16532
  var objCallback = {
16198
16533
  id : formId,
@@ -16209,13 +16544,13 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16209
16544
  }
16210
16545
 
16211
16546
  // is this the last or the only field to be validated ?
16212
- var needsGlobalReValidation = false, isFormValid = null;
16547
+ var needsGlobalReValidation = false;
16213
16548
  if ( listedFields.length == 1 || listedFields[listedFields.length-1] == field) {
16214
16549
  // trigger end of validation
16215
16550
  // console.debug(field +' is the last element to be validated for formId: '+ formId, cb._errors, instance.$forms[formId].errors);
16216
16551
  isFormValid = ( cb._errors.count() > 0 ) ? false : true;
16217
16552
  if (!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)) {
16218
- //console.debug('should update error display now ', cb._errors);
16553
+ console.debug('[1] Should update error display now ', cb._errors);
16219
16554
  instance.$forms[formId].errors = merge(cb._errors, instance.$forms[formId].errors);
16220
16555
  refreshWarning($allFields[field]);
16221
16556
  handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
@@ -16247,8 +16582,6 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16247
16582
  window.ginaToolbar.update('forms', objCallback);
16248
16583
  }
16249
16584
 
16250
-
16251
-
16252
16585
  handleErrorsDisplay($currentForm, gResult.error, gResult.data, field);
16253
16586
  updateSubmitTriggerState( $currentForm, isFormValid);
16254
16587
  })
@@ -16392,7 +16725,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16392
16725
 
16393
16726
  for (var c in rules) {
16394
16727
  if (!/^\_case\_/.test(c) ) continue;
16395
- if ( typeof(rules[c].conditions) == 'undefined' || Array.isArray(rules[c].conditions) && !rules[c].conditions.length ) continue;
16728
+ if ( typeof(rules[c].conditions) == 'undefined' || Array.isArray(rules[c].conditions) && !rules[c].conditions.length ) continue;
16396
16729
  if ( typeof(rules[c].conditions[0].rules) == 'undefined' ) continue;
16397
16730
 
16398
16731
 
@@ -16574,7 +16907,14 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16574
16907
  // filtering conditions
16575
16908
  for (var _c = 0, _cLen = rules[c].conditions.length; _c < _cLen; ++_c) {
16576
16909
 
16577
- if (rules[c].conditions[_c].case != caseValue) {
16910
+ if (
16911
+ Array.isArray(rules[c].conditions[_c].case)
16912
+ && rules[c].conditions[_c].case.indexOf(caseValue) == -1
16913
+ ||
16914
+ !Array.isArray(rules[c].conditions[_c].case)
16915
+ && rules[c].conditions[_c].case != caseValue
16916
+
16917
+ ) {
16578
16918
  continue;
16579
16919
  }
16580
16920
 
@@ -16719,7 +17059,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16719
17059
  if (
16720
17060
  conditions[c]['case'] === caseValue
16721
17061
  ||
16722
- Array.isArray(conditions[c]['case']) && conditions[c]['case'].indexOf(caseValue) > -1
17062
+ Array.isArray(conditions[c]['case'])
17063
+ && conditions[c]['case'].indexOf(caseValue) > -1
16723
17064
  ||
16724
17065
  /^\//.test(conditions[c]['case'])
16725
17066
  ) {
@@ -16836,8 +17177,6 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16836
17177
  }
16837
17178
  --i;
16838
17179
  }
16839
-
16840
-
16841
17180
  } // EO for
16842
17181
  }
16843
17182
 
@@ -16858,7 +17197,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16858
17197
  }
16859
17198
 
16860
17199
  if (isGFFCtx)
16861
- $fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].substr(0, fieldErrorsAttributes[field].length-1))
17200
+ $fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].substring(0, fieldErrorsAttributes[field].length-1))
16862
17201
  }
16863
17202
 
16864
17203
  //calling back
@@ -16929,6 +17268,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16929
17268
  'data' : formatData( _data )
16930
17269
  });
16931
17270
  removeListener(gina, event.target, 'validated.' + event.target.id);
17271
+
17272
+
16932
17273
  return
16933
17274
  }
16934
17275
  });
@@ -17157,6 +17498,11 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17157
17498
  try {
17158
17499
 
17159
17500
  txt = ($json) ? $json.text() : '';
17501
+ // txt = txt
17502
+ // .replace(/:null/gi, ':\"null\"')
17503
+ // .replace(/:true/gi, ':\"true\"')
17504
+ // .replace(/:false/gi, ':\"false\"');
17505
+
17160
17506
  if (txt == '' || txt == 'null' ) {
17161
17507
  // $json.text('Empty')
17162
17508
  $json.text('{}')
@@ -17180,8 +17526,9 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17180
17526
 
17181
17527
  var sectionStr = ( section ) ? ' [ '+ section + ' ] ' : ' ';
17182
17528
  // var _err = 'Could not load'+ sectionStr +'json\n' + (err.stack||err.message||err);
17183
- var _err = 'Could not load'+ sectionStr +'json\n' + err.message +'\n'+ err.stack;
17529
+ var _err = 'Could not load ['+ sectionStr +'] json\n' + err.message +'\n'+ err.stack;
17184
17530
  console.error(_err);
17531
+ return;
17185
17532
  // if ($json) {
17186
17533
  // $json.text(_err);
17187
17534
  // } else {
@@ -17806,7 +18153,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17806
18153
 
17807
18154
  foldingStateName += name
17808
18155
  } else {
17809
- foldingStateName = foldingStateName.substr(0, foldingStateName.length-1)
18156
+ foldingStateName = foldingStateName.substring(0, foldingStateName.length-1)
17810
18157
  }
17811
18158
 
17812
18159
  return foldingStateName.trim()
@@ -17843,8 +18190,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17843
18190
  html += '<ul class="gina-toolbar-object">' + parseObject(obj[i], ginaObj[i], id, elIsXHR, elSection) +'</ul>';
17844
18191
  html += '</li>';
17845
18192
  // clear one level
17846
- //id = id.substr(0, id.length - i.length - 1);
17847
- id = id.substr(0, id.length - i.length);
18193
+ //id = id.substring(0, id.length - i.length - 1);
18194
+ id = id.substring(0, id.length - i.length);
17848
18195
  } else if ( Array.isArray(obj[i]) ) {
17849
18196
  //id += i + '-';
17850
18197
  id += '-' + i.replace(/[^A-Za-z0-9_-]/g, '_');
@@ -17855,8 +18202,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17855
18202
  html += '<ul class="gina-toolbar-collection">' + parseCollection(obj[i], ginaObj[i], id, elIsXHR, elSection) +'</ul>';
17856
18203
  html += '</li>';
17857
18204
  // clear one level
17858
- //id = id.substr(0, id.length - i.length - 1);
17859
- id = id.substr(0, id.length - i.length);
18205
+ //id = id.substring(0, id.length - i.length - 1);
18206
+ id = id.substring(0, id.length - i.length);
17860
18207
  } else {
17861
18208
  objType = (ginaObj[i] === null) ? 'null' : typeof(ginaObj[i]);
17862
18209
  if ( objType == 'undefined' ) { // new key declaration added by user
@@ -17913,7 +18260,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17913
18260
  html += '<ul class="gina-toolbar-object">' + parseObject(arr[i], ginaArr[i], id, elIsXHR, elSection) +'</ul>';
17914
18261
  html += '</li>';
17915
18262
  // clear one level
17916
- id = id.substr(0, id.length - i.toString().length - 1);
18263
+ id = id.substring(0, id.length - i.toString().length - 1);
17917
18264
 
17918
18265
  } else if ( Array.isArray(arr[i]) ) {
17919
18266
  //id += i + '-';
@@ -17926,8 +18273,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17926
18273
  html += '<ul class="gina-toolbar-collection">' + parseCollection(arr[i], ginaArr[i], id, elIsXHR, elSection) +'</ul>';
17927
18274
  html += '</li>';
17928
18275
  // clear one level
17929
- //id = id.substr(0, id.length - i.toString().length - 1);
17930
- id = id.substr(0, id.length - i.toString().length);
18276
+ //id = id.substring(0, id.length - i.toString().length - 1);
18277
+ id = id.substring(0, id.length - i.toString().length);
17931
18278
  } else {
17932
18279
  html += '<li class="gina-toolbar-key-value"><span class="gina-toolbar-key">'+ i +':</span> <span class="gina-toolbar-value">'+ arr[i] +'</span></li>';
17933
18280
  }
@@ -17956,16 +18303,16 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17956
18303
  section = i;
17957
18304
  if ( typeof(obj[i]) == 'object' && !Array.isArray(obj[i]) && obj[i] !== null ) { // parse
17958
18305
 
17959
- $parent = $('#gina-toolbar-view-' + id.substr(0, id.length - 1));
18306
+ $parent = $('#gina-toolbar-view-' + id.substring(0, id.length - 1));
17960
18307
  hasParent = ( $parent.length ) ? true : false;
17961
18308
 
17962
18309
  if (!hasParent ) {
17963
18310
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
17964
18311
 
17965
18312
  if (i == 'params') { // force to top
17966
- var htmlParams = '<div id="gina-toolbar-view-'+ id.substr(0, id.length - 1) +'" class="gina-toolbar-section">' +
17967
- '<h2 class="gina-toolbar-section-title">'+ id.substr(0, id.length - 1) +'</h2>' +
17968
- '<ul class="'+ id.substr(0, id.length - 1) +'"></ul>' +
18313
+ var htmlParams = '<div id="gina-toolbar-view-'+ id.substring(0, id.length - 1) +'" class="gina-toolbar-section">' +
18314
+ '<h2 class="gina-toolbar-section-title">'+ id.substring(0, id.length - 1) +'</h2>' +
18315
+ '<ul class="'+ id.substring(0, id.length - 1) +'"></ul>' +
17969
18316
  '</div>';
17970
18317
 
17971
18318
  $('#gina-toolbar-view-html-properties')
@@ -17974,9 +18321,9 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17974
18321
 
17975
18322
  if ( !/^html/.test(id) ) {
17976
18323
 
17977
- var htmlOther = '<div id="gina-toolbar-view-'+ id.substr(0, id.length - 1) +'" class="gina-toolbar-section">' +
17978
- '<h2 class="gina-toolbar-section-title">'+ id.substr(0, id.length - 1) +'</h2>' +
17979
- '<ul class="'+ id.substr(0, id.length - 1) +'"></ul>' +
18324
+ var htmlOther = '<div id="gina-toolbar-view-'+ id.substring(0, id.length - 1) +'" class="gina-toolbar-section">' +
18325
+ '<h2 class="gina-toolbar-section-title">'+ id.substring(0, id.length - 1) +'</h2>' +
18326
+ '<ul class="'+ id.substring(0, id.length - 1) +'"></ul>' +
17980
18327
  '</div>';
17981
18328
 
17982
18329
  $html
@@ -17984,36 +18331,36 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17984
18331
  }/** else { // add to properties section
17985
18332
  $root
17986
18333
  .find('.gina-toolbar-properties')
17987
- .append('ul.' + id.substr(0, id.length - 1))
18334
+ .append('ul.' + id.substring(0, id.length - 1))
17988
18335
  }*/
17989
18336
 
17990
18337
  }
17991
18338
 
17992
- parseView(obj[i], ginaObj[i], id, elIsXHR, $html.find('ul.'+ id.substr(0, id.length - 1)), $root );
18339
+ parseView(obj[i], ginaObj[i], id, elIsXHR, $html.find('ul.'+ id.substring(0, id.length - 1)), $root );
17993
18340
 
17994
18341
  } else {
17995
18342
 
17996
18343
  parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
17997
18344
 
17998
18345
  $parent
17999
- .find('ul.'+ id.substr(0, id.length - 1))
18000
- .append('<li class="gina-toolbar-object"><a href="#" class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substr(0, parentId.length - 1) ) +'">'+ i +' <span>{ }</span></a><ul class="gina-toolbar-object '+ parentId.substr(0, parentId.length - 1) +'"></ul></li>');
18346
+ .find('ul.'+ id.substring(0, id.length - 1))
18347
+ .append('<li class="gina-toolbar-object"><a href="#" class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substring(0, parentId.length - 1) ) +'">'+ i +' <span>{ }</span></a><ul class="gina-toolbar-object '+ parentId.substring(0, parentId.length - 1) +'"></ul></li>');
18001
18348
 
18002
- parseView(obj[i], ginaObj[i], parentId, elIsXHR, $parent.find('ul.'+ id.substr(0, id.length - 1)), $root );
18349
+ parseView(obj[i], ginaObj[i], parentId, elIsXHR, $parent.find('ul.'+ id.substring(0, id.length - 1)), $root );
18003
18350
 
18004
18351
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18005
18352
  }
18006
18353
 
18007
18354
 
18008
18355
  // clear one level
18009
- id = id.substr(0, id.length - i.length - 1);
18356
+ id = id.substring(0, id.length - i.length - 1);
18010
18357
 
18011
18358
 
18012
18359
  } else if ( Array.isArray(obj[i]) ) { // parse collection
18013
18360
 
18014
18361
 
18015
18362
 
18016
- $parent = $('#gina-toolbar-view-' + id.substr(0, id.length - 1));
18363
+ $parent = $('#gina-toolbar-view-' + id.substring(0, id.length - 1));
18017
18364
 
18018
18365
  hasParent = ( $parent.length ) ? true : false;
18019
18366
 
@@ -18023,16 +18370,16 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18023
18370
  parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18024
18371
 
18025
18372
  $parent
18026
- //.find('ul.'+ id.substr(0, id.length - 1))
18027
- .append('<li class="gina-toolbar-collection"><a href="#" class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substr(0, parentId.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul> '+ parseCollection(obj[i], ginaObj[i], parentId, $parent.find('li ul.'+ id.substr(0, id.length - 1)), section )+'</ul></li>');
18373
+ //.find('ul.'+ id.substring(0, id.length - 1))
18374
+ .append('<li class="gina-toolbar-collection"><a href="#" class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substring(0, parentId.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul> '+ parseCollection(obj[i], ginaObj[i], parentId, $parent.find('li ul.'+ id.substring(0, id.length - 1)), section )+'</ul></li>');
18028
18375
 
18029
18376
 
18030
- //parentId = parentId.substr(0, parentId.length - 1)+ '-';
18031
- //parentId = id.substr(0, id.length - i.length - 1);
18032
- //parseView(obj[i], ginaObj[i], parentId, elIsXHR, $parent.find('ul.'+ parentId.substr(0, parentId.length - 1)), $root );
18377
+ //parentId = parentId.substring(0, parentId.length - 1)+ '-';
18378
+ //parentId = id.substring(0, id.length - i.length - 1);
18379
+ //parseView(obj[i], ginaObj[i], parentId, elIsXHR, $parent.find('ul.'+ parentId.substring(0, parentId.length - 1)), $root );
18033
18380
 
18034
18381
  //id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18035
- //$parent = $('#gina-toolbar-view-' + id.substr(0, id.length - 1));
18382
+ //$parent = $('#gina-toolbar-view-' + id.substring(0, id.length - 1));
18036
18383
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18037
18384
  } else {
18038
18385
 
@@ -18040,8 +18387,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18040
18387
  parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18041
18388
 
18042
18389
  $parent
18043
- .find('li.'+ id.substr(0, id.length - 1) +' ul')
18044
- .append('<li class="gina-toolbar-collection"><a class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substr(0, parentId.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul>'+ parseCollection(obj[i], ginaObj[i], parentId, $parent.find('li ul.'+ id.substr(0, id.length - 1)), section ) +'</ul></li>');
18390
+ .find('li.'+ id.substring(0, id.length - 1) +' ul')
18391
+ .append('<li class="gina-toolbar-collection"><a class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substring(0, parentId.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul>'+ parseCollection(obj[i], ginaObj[i], parentId, $parent.find('li ul.'+ id.substring(0, id.length - 1)), section ) +'</ul></li>');
18045
18392
 
18046
18393
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18047
18394
 
@@ -18052,7 +18399,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18052
18399
  // id = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18053
18400
  // $root
18054
18401
  // .find('.gina-toolbar-properties')
18055
- // .append('<li class="gina-toolbar-collection"><a class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), id.substr(0, id.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul>'+ parseCollection(obj[i], ginaObj[i], parentId, $root.find('.gina-toolbar-properties'), section) +'</ul></li>');
18402
+ // .append('<li class="gina-toolbar-collection"><a class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), id.substring(0, id.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul>'+ parseCollection(obj[i], ginaObj[i], parentId, $root.find('.gina-toolbar-properties'), section) +'</ul></li>');
18056
18403
 
18057
18404
 
18058
18405
  // } else {
@@ -18061,14 +18408,14 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18061
18408
  // parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18062
18409
 
18063
18410
  // $parent
18064
- // .find('li.'+ id.substr(0, id.length - 1) +' ul')
18065
- // .append('<li class="gina-toolbar-collection"><a class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substr(0, parentId.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul>'+ parseCollection(obj[i], ginaObj[i], parentId, $parent.find('li ul.'+ id.substr(0, id.length - 1)), section ) +'</ul></li>');
18411
+ // .find('li.'+ id.substring(0, id.length - 1) +' ul')
18412
+ // .append('<li class="gina-toolbar-collection"><a class="gina-toolbar-key gina-toolbar'+ isXHR +'-folding-state-'+ normalizeFoldingStateName( i.replace(/[^A-Za-z0-9_-]/g, '_'), parentId.substring(0, parentId.length - 1) ) +'">'+ i +' <span>['+ obj[i].length +']</span></a><ul>'+ parseCollection(obj[i], ginaObj[i], parentId, $parent.find('li ul.'+ id.substring(0, id.length - 1)), section ) +'</ul></li>');
18066
18413
 
18067
18414
  // id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18068
18415
  // }
18069
18416
 
18070
18417
  // clear one level
18071
- id = id.substr(0, id.length - i.length - 1);
18418
+ id = id.substring(0, id.length - i.length - 1);
18072
18419
  } else {
18073
18420
 
18074
18421
 
@@ -18076,7 +18423,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18076
18423
  objType = (ginaObj[i] === null) ? 'null' : typeof(ginaObj[i]);
18077
18424
  if ( objType == 'undefined' ) { // new key declaration added by user
18078
18425
  if (/\-$/.test(id)) {
18079
- id = id.substr(0, id.length - 1);
18426
+ id = id.substring(0, id.length - 1);
18080
18427
  }
18081
18428
 
18082
18429
  if (!id) continue;
@@ -18123,7 +18470,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18123
18470
  } else {
18124
18471
 
18125
18472
  $root
18126
- .find('ul.' + id.substr(0, id.length - 1))
18473
+ .find('ul.' + id.substring(0, id.length - 1))
18127
18474
  .append('<li class="gina-toolbar-key-value"><span class="gina-toolbar-key">'+ i +':</span> <span class="gina-toolbar-value gina-toolbar-value-type-is-'+ objType +'">'+ obj[i] +'</span></li>')
18128
18475
  }
18129
18476
  }
@@ -18643,11 +18990,11 @@ define('gina', [ 'require', 'vendor/uuid', 'lib/merge', 'utils/events', 'helpers
18643
18990
  return construct
18644
18991
  });
18645
18992
  /*!
18646
- * Engine.IO v6.2.2
18647
- * (c) 2014-2022 Guillermo Rauch
18993
+ * Engine.IO v6.6.3
18994
+ * (c) 2014-2025 Guillermo Rauch
18648
18995
  * Released under the MIT License.
18649
18996
  */
18650
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define('vendor/engine.io',e):(t="undefined"!=typeof globalThis?globalThis:t||self).eio=e()}(this,(function(){"use strict";function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function n(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),t}function o(){return o=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},o.apply(this,arguments)}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&a(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}function a(t,e){return a=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},a(t,e)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function c(t,e,r){return c=u()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var o=new(Function.bind.apply(t,n));return r&&a(o,r.prototype),o},c.apply(null,arguments)}function p(t){var e="function"==typeof Map?new Map:void 0;return p=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return c(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,t)},p(t)}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function l(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?h(t):e}function f(t){var e=u();return function(){var r,n=s(t);if(e){var o=s(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return l(this,r)}}function d(t,e,r){return d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,r){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=s(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(r):o.value}},d(t,e,r||t)}var y=Object.create(null);y.open="0",y.close="1",y.ping="2",y.pong="3",y.message="4",y.upgrade="5",y.noop="6";var v=Object.create(null);Object.keys(y).forEach((function(t){v[y[t]]=t}));for(var m={type:"error",data:"parser error"},g="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),b="function"==typeof ArrayBuffer,k=function(t,e,r){var n,o=t.type,i=t.data;return g&&i instanceof Blob?e?r(i):w(i,r):b&&(i instanceof ArrayBuffer||(n=i,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer))?e?r(i):w(new Blob([i]),r):r(y[o]+(i||""))},w=function(t,e){var r=new FileReader;return r.onload=function(){var t=r.result.split(",")[1];e("b"+t)},r.readAsDataURL(t)},T="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",S="undefined"==typeof Uint8Array?[]:new Uint8Array(256),R=0;R<T.length;R++)S[T.charCodeAt(R)]=R;var x="function"==typeof ArrayBuffer,O=function(t,e){if("string"!=typeof t)return{type:"message",data:P(t,e)};var r=t.charAt(0);return"b"===r?{type:"message",data:E(t.substring(1),e)}:v[r]?t.length>1?{type:v[r],data:t.substring(1)}:{type:v[r]}:m},E=function(t,e){if(x){var r=function(t){var e,r,n,o,i,s=.75*t.length,a=t.length,u=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var c=new ArrayBuffer(s),p=new Uint8Array(c);for(e=0;e<a;e+=4)r=S[t.charCodeAt(e)],n=S[t.charCodeAt(e+1)],o=S[t.charCodeAt(e+2)],i=S[t.charCodeAt(e+3)],p[u++]=r<<2|n>>4,p[u++]=(15&n)<<4|o>>2,p[u++]=(3&o)<<6|63&i;return c}(t);return P(r,e)}return{base64:!0,data:t}},P=function(t,e){return"blob"===e&&t instanceof ArrayBuffer?new Blob([t]):t},B=String.fromCharCode(30);function C(t){if(t)return function(t){for(var e in C.prototype)t[e]=C.prototype[e];return t}(t)}C.prototype.on=C.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},C.prototype.once=function(t,e){function r(){this.off(t,r),e.apply(this,arguments)}return r.fn=e,this.on(t,r),this},C.prototype.off=C.prototype.removeListener=C.prototype.removeAllListeners=C.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+t];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+t],this;for(var o=0;o<n.length;o++)if((r=n[o])===e||r.fn===e){n.splice(o,1);break}return 0===n.length&&delete this._callbacks["$"+t],this},C.prototype.emit=function(t){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),r=this._callbacks["$"+t],n=1;n<arguments.length;n++)e[n-1]=arguments[n];if(r){n=0;for(var o=(r=r.slice(0)).length;n<o;++n)r[n].apply(this,e)}return this},C.prototype.emitReserved=C.prototype.emit,C.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]},C.prototype.hasListeners=function(t){return!!this.listeners(t).length};var L="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function q(t){for(var e=arguments.length,r=new Array(e>1?e-1:0),n=1;n<e;n++)r[n-1]=arguments[n];return r.reduce((function(e,r){return t.hasOwnProperty(r)&&(e[r]=t[r]),e}),{})}var A=setTimeout,j=clearTimeout;function _(t,e){e.useNativeTimers?(t.setTimeoutFn=A.bind(L),t.clearTimeoutFn=j.bind(L)):(t.setTimeoutFn=setTimeout.bind(L),t.clearTimeoutFn=clearTimeout.bind(L))}var U,H=function(t){i(n,t);var r=f(n);function n(t,o,i){var s;return e(this,n),(s=r.call(this,t)).description=o,s.context=i,s.type="TransportError",s}return n}(p(Error)),F=function(t){i(o,t);var r=f(o);function o(t){var n;return e(this,o),(n=r.call(this)).writable=!1,_(h(n),t),n.opts=t,n.query=t.query,n.readyState="",n.socket=t.socket,n}return n(o,[{key:"onError",value:function(t,e,r){return d(s(o.prototype),"emitReserved",this).call(this,"error",new H(t,e,r)),this}},{key:"open",value:function(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}},{key:"close",value:function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}},{key:"send",value:function(t){"open"===this.readyState&&this.write(t)}},{key:"onOpen",value:function(){this.readyState="open",this.writable=!0,d(s(o.prototype),"emitReserved",this).call(this,"open")}},{key:"onData",value:function(t){var e=O(t,this.socket.binaryType);this.onPacket(e)}},{key:"onPacket",value:function(t){d(s(o.prototype),"emitReserved",this).call(this,"packet",t)}},{key:"onClose",value:function(t){this.readyState="closed",d(s(o.prototype),"emitReserved",this).call(this,"close",t)}}]),o}(C),D="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),M={},I=0,W=0;function N(t){var e="";do{e=D[t%64]+e,t=Math.floor(t/64)}while(t>0);return e}function X(){var t=N(+new Date);return t!==U?(I=0,U=t):t+"."+N(I++)}for(;W<64;W++)M[D[W]]=W;function $(t){var e="";for(var r in t)t.hasOwnProperty(r)&&(e.length&&(e+="&"),e+=encodeURIComponent(r)+"="+encodeURIComponent(t[r]));return e}function z(t){for(var e={},r=t.split("&"),n=0,o=r.length;n<o;n++){var i=r[n].split("=");e[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return e}var V=!1;try{V="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}var G=V;function J(t){var e=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!e||G))return new XMLHttpRequest}catch(t){}if(!e)try{return new(L[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}function K(){}var Q=null!=new J({xdomain:!1}).responseType,Y=function(t){i(s,t);var r=f(s);function s(t){var n;if(e(this,s),(n=r.call(this,t)).polling=!1,"undefined"!=typeof location){var o="https:"===location.protocol,i=location.port;i||(i=o?"443":"80"),n.xd="undefined"!=typeof location&&t.hostname!==location.hostname||i!==t.port,n.xs=t.secure!==o}var a=t&&t.forceBase64;return n.supportsBinary=Q&&!a,n}return n(s,[{key:"doOpen",value:function(){this.poll()}},{key:"pause",value:function(t){var e=this;this.readyState="pausing";var r=function(){e.readyState="paused",t()};if(this.polling||!this.writable){var n=0;this.polling&&(n++,this.once("pollComplete",(function(){--n||r()}))),this.writable||(n++,this.once("drain",(function(){--n||r()})))}else r()}},{key:"poll",value:function(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}},{key:"onData",value:function(t){var e=this;(function(t,e){for(var r=t.split(B),n=[],o=0;o<r.length;o++){var i=O(r[o],e);if(n.push(i),"error"===i.type)break}return n})(t,this.socket.binaryType).forEach((function(t){if("opening"===e.readyState&&"open"===t.type&&e.onOpen(),"close"===t.type)return e.onClose({description:"transport closed by the server"}),!1;e.onPacket(t)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}},{key:"doClose",value:function(){var t=this,e=function(){t.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}},{key:"write",value:function(t){var e=this;this.writable=!1,function(t,e){var r=t.length,n=new Array(r),o=0;t.forEach((function(t,i){k(t,!1,(function(t){n[i]=t,++o===r&&e(n.join(B))}))}))}(t,(function(t){e.doWrite(t,(function(){e.writable=!0,e.emitReserved("drain")}))}))}},{key:"uri",value:function(){var t=this.query||{},e=this.opts.secure?"https":"http",r="";!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=X()),this.supportsBinary||t.sid||(t.b64=1),this.opts.port&&("https"===e&&443!==Number(this.opts.port)||"http"===e&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);var n=$(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(n.length?"?"+n:"")}},{key:"request",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,xs:this.xs},this.opts),new Z(this.uri(),t)}},{key:"doWrite",value:function(t,e){var r=this,n=this.request({method:"POST",data:t});n.on("success",e),n.on("error",(function(t,e){r.onError("xhr post error",t,e)}))}},{key:"doPoll",value:function(){var t=this,e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(function(e,r){t.onError("xhr poll error",e,r)})),this.pollXhr=e}},{key:"name",get:function(){return"polling"}}]),s}(F),Z=function(t){i(o,t);var r=f(o);function o(t,n){var i;return e(this,o),_(h(i=r.call(this)),n),i.opts=n,i.method=n.method||"GET",i.uri=t,i.async=!1!==n.async,i.data=void 0!==n.data?n.data:null,i.create(),i}return n(o,[{key:"create",value:function(){var t=this,e=q(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;var r=this.xhr=new J(e);try{r.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var n in r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(n)&&r.setRequestHeader(n,this.opts.extraHeaders[n])}catch(t){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{r.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=function(){4===r.readyState&&(200===r.status||1223===r.status?t.onLoad():t.setTimeoutFn((function(){t.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((function(){t.onError(e)}),0)}"undefined"!=typeof document&&(this.index=o.requestsCount++,o.requests[this.index]=this)}},{key:"onError",value:function(t){this.emitReserved("error",t,this.xhr),this.cleanup(!0)}},{key:"cleanup",value:function(t){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=K,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete o.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.cleanup())}},{key:"abort",value:function(){this.cleanup()}}]),o}(C);if(Z.requestsCount=0,Z.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",tt);else if("function"==typeof addEventListener){addEventListener("onpagehide"in L?"pagehide":"unload",tt,!1)}function tt(){for(var t in Z.requests)Z.requests.hasOwnProperty(t)&&Z.requests[t].abort()}var et="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,e){return e(t,0)},rt=L.WebSocket||L.MozWebSocket,nt="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),ot=function(t){i(o,t);var r=f(o);function o(t){var n;return e(this,o),(n=r.call(this,t)).supportsBinary=!t.forceBase64,n}return n(o,[{key:"doOpen",value:function(){if(this.check()){var t=this.uri(),e=this.opts.protocols,r=nt?{}:q(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=nt?new rt(t,e,r):e?new rt(t,e):new rt(t)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}}},{key:"addEventListeners",value:function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws._socket.unref(),t.onOpen()},this.ws.onclose=function(e){return t.onClose({description:"websocket connection closed",context:e})},this.ws.onmessage=function(e){return t.onData(e.data)},this.ws.onerror=function(e){return t.onError("websocket error",e)}}},{key:"write",value:function(t){var e=this;this.writable=!1;for(var r=function(r){var n=t[r],o=r===t.length-1;k(n,e.supportsBinary,(function(t){try{e.ws.send(t)}catch(t){}o&&et((function(){e.writable=!0,e.emitReserved("drain")}),e.setTimeoutFn)}))},n=0;n<t.length;n++)r(n)}},{key:"doClose",value:function(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}},{key:"uri",value:function(){var t=this.query||{},e=this.opts.secure?"wss":"ws",r="";this.opts.port&&("wss"===e&&443!==Number(this.opts.port)||"ws"===e&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(t[this.opts.timestampParam]=X()),this.supportsBinary||(t.b64=1);var n=$(t);return e+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(n.length?"?"+n:"")}},{key:"check",value:function(){return!!rt}},{key:"name",get:function(){return"websocket"}}]),o}(F),it={websocket:ot,polling:Y},st=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,at=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function ut(t){var e=t,r=t.indexOf("["),n=t.indexOf("]");-1!=r&&-1!=n&&(t=t.substring(0,r)+t.substring(r,n).replace(/:/g,";")+t.substring(n,t.length));for(var o,i,s=st.exec(t||""),a={},u=14;u--;)a[at[u]]=s[u]||"";return-1!=r&&-1!=n&&(a.source=e,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(t,e){var r=/\/{2,9}/g,n=e.replace(r,"/").split("/");"/"!=e.substr(0,1)&&0!==e.length||n.splice(0,1);"/"==e.substr(e.length-1,1)&&n.splice(n.length-1,1);return n}(0,a.path),a.queryKey=(o=a.query,i={},o.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,e,r){e&&(i[e]=r)})),i),a}var ct=function(r){i(a,r);var s=f(a);function a(r){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e(this,a),n=s.call(this),r&&"object"===t(r)&&(i=r,r=null),r?(r=ut(r),i.hostname=r.host,i.secure="https"===r.protocol||"wss"===r.protocol,i.port=r.port,r.query&&(i.query=r.query)):i.host&&(i.hostname=ut(i.host).host),_(h(n),i),n.secure=null!=i.secure?i.secure:"undefined"!=typeof location&&"https:"===location.protocol,i.hostname&&!i.port&&(i.port=n.secure?"443":"80"),n.hostname=i.hostname||("undefined"!=typeof location?location.hostname:"localhost"),n.port=i.port||("undefined"!=typeof location&&location.port?location.port:n.secure?"443":"80"),n.transports=i.transports||["polling","websocket"],n.readyState="",n.writeBuffer=[],n.prevBufferLen=0,n.opts=o({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},i),n.opts.path=n.opts.path.replace(/\/$/,"")+"/","string"==typeof n.opts.query&&(n.opts.query=z(n.opts.query)),n.id=null,n.upgrades=null,n.pingInterval=null,n.pingTimeout=null,n.pingTimeoutTimer=null,"function"==typeof addEventListener&&(n.opts.closeOnBeforeunload&&addEventListener("beforeunload",(function(){n.transport&&(n.transport.removeAllListeners(),n.transport.close())}),!1),"localhost"!==n.hostname&&(n.offlineEventListener=function(){n.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",n.offlineEventListener,!1))),n.open(),n}return n(a,[{key:"createTransport",value:function(t){var e=o({},this.opts.query);e.EIO=4,e.transport=t,this.id&&(e.sid=this.id);var r=o({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new it[t](r)}},{key:"open",value:function(){var t,e=this;if(this.opts.rememberUpgrade&&a.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((function(){e.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(t){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}},{key:"setTransport",value:function(t){var e=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(function(t){return e.onClose("transport close",t)}))}},{key:"probe",value:function(t){var e=this,r=this.createTransport(t),n=!1;a.priorWebsocketSuccess=!1;var o=function(){n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(function(t){if(!n)if("pong"===t.type&&"probe"===t.data){if(e.upgrading=!0,e.emitReserved("upgrading",r),!r)return;a.priorWebsocketSuccess="websocket"===r.name,e.transport.pause((function(){n||"closed"!==e.readyState&&(h(),e.setTransport(r),r.send([{type:"upgrade"}]),e.emitReserved("upgrade",r),r=null,e.upgrading=!1,e.flush())}))}else{var o=new Error("probe error");o.transport=r.name,e.emitReserved("upgradeError",o)}})))};function i(){n||(n=!0,h(),r.close(),r=null)}var s=function(t){var n=new Error("probe error: "+t);n.transport=r.name,i(),e.emitReserved("upgradeError",n)};function u(){s("transport closed")}function c(){s("socket closed")}function p(t){r&&t.name!==r.name&&i()}var h=function(){r.removeListener("open",o),r.removeListener("error",s),r.removeListener("close",u),e.off("close",c),e.off("upgrading",p)};r.once("open",o),r.once("error",s),r.once("close",u),this.once("close",c),this.once("upgrading",p),r.open()}},{key:"onOpen",value:function(){if(this.readyState="open",a.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t<e;t++)this.probe(this.upgrades[t])}},{key:"onPacket",value:function(t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":var e=new Error("server error");e.code=t.data,this.onError(e);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data)}}},{key:"onHandshake",value:function(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this.upgrades=this.filterUpgrades(t.upgrades),this.pingInterval=t.pingInterval,this.pingTimeout=t.pingTimeout,this.maxPayload=t.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}},{key:"resetPingTimeout",value:function(){var t=this;this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((function(){t.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}},{key:"onDrain",value:function(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}},{key:"flush",value:function(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){var t=this.getWritablePackets();this.transport.send(t),this.prevBufferLen=t.length,this.emitReserved("flush")}}},{key:"getWritablePackets",value:function(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;for(var t,e=1,r=0;r<this.writeBuffer.length;r++){var n=this.writeBuffer[r].data;if(n&&(e+="string"==typeof(t=n)?function(t){for(var e=0,r=0,n=0,o=t.length;n<o;n++)(e=t.charCodeAt(n))<128?r+=1:e<2048?r+=2:e<55296||e>=57344?r+=3:(n++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}return this.writeBuffer}},{key:"write",value:function(t,e,r){return this.sendPacket("message",t,e,r),this}},{key:"send",value:function(t,e,r){return this.sendPacket("message",t,e,r),this}},{key:"sendPacket",value:function(t,e,r,n){if("function"==typeof e&&(n=e,e=void 0),"function"==typeof r&&(n=r,r=null),"closing"!==this.readyState&&"closed"!==this.readyState){(r=r||{}).compress=!1!==r.compress;var o={type:t,data:e,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),n&&this.once("flush",n),this.flush()}}},{key:"close",value:function(){var t=this,e=function(){t.onClose("forced close"),t.transport.close()},r=function r(){t.off("upgrade",r),t.off("upgradeError",r),e()},n=function(){t.once("upgrade",r),t.once("upgradeError",r)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?n():e()})):this.upgrading?n():e()),this}},{key:"onError",value:function(t){a.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}},{key:"onClose",value:function(t,e){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",t,e),this.writeBuffer=[],this.prevBufferLen=0)}},{key:"filterUpgrades",value:function(t){for(var e=[],r=0,n=t.length;r<n;r++)~this.transports.indexOf(t[r])&&e.push(t[r]);return e}}]),a}(C);ct.protocol=4;return function(t,e){return new ct(t,e)}}));
18997
+ !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define('vendor/engine.io',n):(t="undefined"!=typeof globalThis?globalThis:t||self).eio=n()}(this,(function(){"use strict";function t(t,n){for(var i=0;i<n.length;i++){var r=n[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,u(r.key),r)}}function n(n,i,r){return i&&t(n.prototype,i),r&&t(n,r),Object.defineProperty(n,"prototype",{writable:!1}),n}function i(){return i=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var i=arguments[n];for(var r in i)({}).hasOwnProperty.call(i,r)&&(t[r]=i[r])}return t},i.apply(null,arguments)}function r(t){return r=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},r(t)}function e(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,s(t,n)}function o(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(o=function(){return!!t})()}function s(t,n){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t},s(t,n)}function u(t){var n=function(t,n){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var r=i.call(t,n||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==typeof n?n:n+""}function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function h(t){var n="function"==typeof Map?new Map:void 0;return h=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(n){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(t))return n.get(t);n.set(t,i)}function i(){return function(t,n,i){if(o())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,n);var e=new(t.bind.apply(t,r));return i&&s(e,i.prototype),e}(t,arguments,r(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),s(i,t)},h(t)}var c=Object.create(null);c.open="0",c.close="1",c.ping="2",c.pong="3",c.message="4",c.upgrade="5",c.noop="6";var a=Object.create(null);Object.keys(c).forEach((function(t){a[c[t]]=t}));var p,l={type:"error",data:"parser error"},v="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),d="function"==typeof ArrayBuffer,y=function(t){return"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer instanceof ArrayBuffer},b=function(t,n,i){var r=t.type,e=t.data;return v&&e instanceof Blob?n?i(e):g(e,i):d&&(e instanceof ArrayBuffer||y(e))?n?i(e):g(new Blob([e]),i):i(c[r]+(e||""))},g=function(t,n){var i=new FileReader;return i.onload=function(){var t=i.result.split(",")[1];n("b"+(t||""))},i.readAsDataURL(t)};function w(t){return t instanceof Uint8Array?t:t instanceof ArrayBuffer?new Uint8Array(t):new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}for(var m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",k="undefined"==typeof Uint8Array?[]:new Uint8Array(256),A=0;A<64;A++)k[m.charCodeAt(A)]=A;var j,B="function"==typeof ArrayBuffer,E=function(t,n){if("string"!=typeof t)return{type:"message",data:U(t,n)};var i=t.charAt(0);return"b"===i?{type:"message",data:O(t.substring(1),n)}:a[i]?t.length>1?{type:a[i],data:t.substring(1)}:{type:a[i]}:l},O=function(t,n){if(B){var i=function(t){var n,i,r,e,o,s=.75*t.length,u=t.length,f=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var h=new ArrayBuffer(s),c=new Uint8Array(h);for(n=0;n<u;n+=4)i=k[t.charCodeAt(n)],r=k[t.charCodeAt(n+1)],e=k[t.charCodeAt(n+2)],o=k[t.charCodeAt(n+3)],c[f++]=i<<2|r>>4,c[f++]=(15&r)<<4|e>>2,c[f++]=(3&e)<<6|63&o;return h}(t);return U(i,n)}return{base64:!0,data:t}},U=function(t,n){return"blob"===n?t instanceof Blob?t:new Blob([t]):t instanceof ArrayBuffer?t:t.buffer},T=String.fromCharCode(30);function S(){return new TransformStream({transform:function(t,n){!function(t,n){v&&t.data instanceof Blob?t.data.arrayBuffer().then(w).then(n):d&&(t.data instanceof ArrayBuffer||y(t.data))?n(w(t.data)):b(t,!1,(function(t){p||(p=new TextEncoder),n(p.encode(t))}))}(t,(function(i){var r,e=i.length;if(e<126)r=new Uint8Array(1),new DataView(r.buffer).setUint8(0,e);else if(e<65536){r=new Uint8Array(3);var o=new DataView(r.buffer);o.setUint8(0,126),o.setUint16(1,e)}else{r=new Uint8Array(9);var s=new DataView(r.buffer);s.setUint8(0,127),s.setBigUint64(1,BigInt(e))}t.data&&"string"!=typeof t.data&&(r[0]|=128),n.enqueue(r),n.enqueue(i)}))}})}function M(t){return t.reduce((function(t,n){return t+n.length}),0)}function x(t,n){if(t[0].length===n)return t.shift();for(var i=new Uint8Array(n),r=0,e=0;e<n;e++)i[e]=t[0][r++],r===t[0].length&&(t.shift(),r=0);return t.length&&r<t[0].length&&(t[0]=t[0].slice(r)),i}function C(t){if(t)return function(t){for(var n in C.prototype)t[n]=C.prototype[n];return t}(t)}C.prototype.on=C.prototype.addEventListener=function(t,n){return this.t=this.t||{},(this.t["$"+t]=this.t["$"+t]||[]).push(n),this},C.prototype.once=function(t,n){function i(){this.off(t,i),n.apply(this,arguments)}return i.fn=n,this.on(t,i),this},C.prototype.off=C.prototype.removeListener=C.prototype.removeAllListeners=C.prototype.removeEventListener=function(t,n){if(this.t=this.t||{},0==arguments.length)return this.t={},this;var i,r=this.t["$"+t];if(!r)return this;if(1==arguments.length)return delete this.t["$"+t],this;for(var e=0;e<r.length;e++)if((i=r[e])===n||i.fn===n){r.splice(e,1);break}return 0===r.length&&delete this.t["$"+t],this},C.prototype.emit=function(t){this.t=this.t||{};for(var n=new Array(arguments.length-1),i=this.t["$"+t],r=1;r<arguments.length;r++)n[r-1]=arguments[r];if(i){r=0;for(var e=(i=i.slice(0)).length;r<e;++r)i[r].apply(this,n)}return this},C.prototype.emitReserved=C.prototype.emit,C.prototype.listeners=function(t){return this.t=this.t||{},this.t["$"+t]||[]},C.prototype.hasListeners=function(t){return!!this.listeners(t).length};var L="function"==typeof Promise&&"function"==typeof Promise.resolve?function(t){return Promise.resolve().then(t)}:function(t,n){return n(t,0)},R="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function D(t){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];return i.reduce((function(n,i){return t.hasOwnProperty(i)&&(n[i]=t[i]),n}),{})}var P=R.setTimeout,I=R.clearTimeout;function $(t,n){n.useNativeTimers?(t.setTimeoutFn=P.bind(R),t.clearTimeoutFn=I.bind(R)):(t.setTimeoutFn=R.setTimeout.bind(R),t.clearTimeoutFn=R.clearTimeout.bind(R))}function q(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}var N=function(t){function n(n,i,r){var e;return(e=t.call(this,n)||this).description=i,e.context=r,e.type="TransportError",e}return e(n,t),n}(h(Error)),V=function(t){function n(n){var i;return(i=t.call(this)||this).writable=!1,$(i,n),i.opts=n,i.query=n.query,i.socket=n.socket,i.supportsBinary=!n.forceBase64,i}e(n,t);var i=n.prototype;return i.onError=function(n,i,r){return t.prototype.emitReserved.call(this,"error",new N(n,i,r)),this},i.open=function(){return this.readyState="opening",this.doOpen(),this},i.close=function(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this},i.send=function(t){"open"===this.readyState&&this.write(t)},i.onOpen=function(){this.readyState="open",this.writable=!0,t.prototype.emitReserved.call(this,"open")},i.onData=function(t){var n=E(t,this.socket.binaryType);this.onPacket(n)},i.onPacket=function(n){t.prototype.emitReserved.call(this,"packet",n)},i.onClose=function(n){this.readyState="closed",t.prototype.emitReserved.call(this,"close",n)},i.pause=function(t){},i.createUri=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t+"://"+this.i()+this.o()+this.opts.path+this.u(n)},i.i=function(){var t=this.opts.hostname;return-1===t.indexOf(":")?t:"["+t+"]"},i.o=function(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""},i.u=function(t){var n=function(t){var n="";for(var i in t)t.hasOwnProperty(i)&&(n.length&&(n+="&"),n+=encodeURIComponent(i)+"="+encodeURIComponent(t[i]));return n}(t);return n.length?"?"+n:""},n}(C),X=function(t){function i(){var n;return(n=t.apply(this,arguments)||this).h=!1,n}e(i,t);var r=i.prototype;return r.doOpen=function(){this.p()},r.pause=function(t){var n=this;this.readyState="pausing";var i=function(){n.readyState="paused",t()};if(this.h||!this.writable){var r=0;this.h&&(r++,this.once("pollComplete",(function(){--r||i()}))),this.writable||(r++,this.once("drain",(function(){--r||i()})))}else i()},r.p=function(){this.h=!0,this.doPoll(),this.emitReserved("poll")},r.onData=function(t){var n=this;(function(t,n){for(var i=t.split(T),r=[],e=0;e<i.length;e++){var o=E(i[e],n);if(r.push(o),"error"===o.type)break}return r})(t,this.socket.binaryType).forEach((function(t){if("opening"===n.readyState&&"open"===t.type&&n.onOpen(),"close"===t.type)return n.onClose({description:"transport closed by the server"}),!1;n.onPacket(t)})),"closed"!==this.readyState&&(this.h=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.p())},r.doClose=function(){var t=this,n=function(){t.write([{type:"close"}])};"open"===this.readyState?n():this.once("open",n)},r.write=function(t){var n=this;this.writable=!1,function(t,n){var i=t.length,r=new Array(i),e=0;t.forEach((function(t,o){b(t,!1,(function(t){r[o]=t,++e===i&&n(r.join(T))}))}))}(t,(function(t){n.doWrite(t,(function(){n.writable=!0,n.emitReserved("drain")}))}))},r.uri=function(){var t=this.opts.secure?"https":"http",n=this.query||{};return!1!==this.opts.timestampRequests&&(n[this.opts.timestampParam]=q()),this.supportsBinary||n.sid||(n.b64=1),this.createUri(t,n)},n(i,[{key:"name",get:function(){return"polling"}}])}(V),H=!1;try{H="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(t){}var F=H;function z(){}var G=function(t){function n(n){var i;if(i=t.call(this,n)||this,"undefined"!=typeof location){var r="https:"===location.protocol,e=location.port;e||(e=r?"443":"80"),i.xd="undefined"!=typeof location&&n.hostname!==location.hostname||e!==n.port}return i}e(n,t);var i=n.prototype;return i.doWrite=function(t,n){var i=this,r=this.request({method:"POST",data:t});r.on("success",n),r.on("error",(function(t,n){i.onError("xhr post error",t,n)}))},i.doPoll=function(){var t=this,n=this.request();n.on("data",this.onData.bind(this)),n.on("error",(function(n,i){t.onError("xhr poll error",n,i)})),this.pollXhr=n},n}(X),J=function(t){function n(n,i,r){var e;return(e=t.call(this)||this).createRequest=n,$(e,r),e.l=r,e.v=r.method||"GET",e.m=i,e.k=void 0!==r.data?r.data:null,e.A(),e}e(n,t);var i=n.prototype;return i.A=function(){var t,i=this,r=D(this.l,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");r.xdomain=!!this.l.xd;var e=this.j=this.createRequest(r);try{e.open(this.v,this.m,!0);try{if(this.l.extraHeaders)for(var o in e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0),this.l.extraHeaders)this.l.extraHeaders.hasOwnProperty(o)&&e.setRequestHeader(o,this.l.extraHeaders[o])}catch(t){}if("POST"===this.v)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}null===(t=this.l.cookieJar)||void 0===t||t.addCookies(e),"withCredentials"in e&&(e.withCredentials=this.l.withCredentials),this.l.requestTimeout&&(e.timeout=this.l.requestTimeout),e.onreadystatechange=function(){var t;3===e.readyState&&(null===(t=i.l.cookieJar)||void 0===t||t.parseCookies(e.getResponseHeader("set-cookie"))),4===e.readyState&&(200===e.status||1223===e.status?i.B():i.setTimeoutFn((function(){i.O("number"==typeof e.status?e.status:0)}),0))},e.send(this.k)}catch(t){return void this.setTimeoutFn((function(){i.O(t)}),0)}"undefined"!=typeof document&&(this.U=n.requestsCount++,n.requests[this.U]=this)},i.O=function(t){this.emitReserved("error",t,this.j),this.T(!0)},i.T=function(t){if(void 0!==this.j&&null!==this.j){if(this.j.onreadystatechange=z,t)try{this.j.abort()}catch(t){}"undefined"!=typeof document&&delete n.requests[this.U],this.j=null}},i.B=function(){var t=this.j.responseText;null!==t&&(this.emitReserved("data",t),this.emitReserved("success"),this.T())},i.abort=function(){this.T()},n}(C);if(J.requestsCount=0,J.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",W);else if("function"==typeof addEventListener){addEventListener("onpagehide"in R?"pagehide":"unload",W,!1)}function W(){for(var t in J.requests)J.requests.hasOwnProperty(t)&&J.requests[t].abort()}var K,Q=(K=Z({xdomain:!1}))&&null!==K.responseType,Y=function(t){function n(n){var i;i=t.call(this,n)||this;var r=n&&n.forceBase64;return i.supportsBinary=Q&&!r,i}return e(n,t),n.prototype.request=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i(t,{xd:this.xd},this.opts),new J(Z,this.uri(),t)},n}(G);function Z(t){var n=t.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!n||F))return new XMLHttpRequest}catch(t){}if(!n)try{return new(R[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}var _="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),tt=function(t){function i(){return t.apply(this,arguments)||this}e(i,t);var r=i.prototype;return r.doOpen=function(){var t=this.uri(),n=this.opts.protocols,i=_?{}:D(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(i.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(t,n,i)}catch(t){return this.emitReserved("error",t)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()},r.addEventListeners=function(){var t=this;this.ws.onopen=function(){t.opts.autoUnref&&t.ws.S.unref(),t.onOpen()},this.ws.onclose=function(n){return t.onClose({description:"websocket connection closed",context:n})},this.ws.onmessage=function(n){return t.onData(n.data)},this.ws.onerror=function(n){return t.onError("websocket error",n)}},r.write=function(t){var n=this;this.writable=!1;for(var i=function(){var i=t[r],e=r===t.length-1;b(i,n.supportsBinary,(function(t){try{n.doWrite(i,t)}catch(t){}e&&L((function(){n.writable=!0,n.emitReserved("drain")}),n.setTimeoutFn)}))},r=0;r<t.length;r++)i()},r.doClose=function(){void 0!==this.ws&&(this.ws.onerror=function(){},this.ws.close(),this.ws=null)},r.uri=function(){var t=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=q()),this.supportsBinary||(n.b64=1),this.createUri(t,n)},n(i,[{key:"name",get:function(){return"websocket"}}])}(V),nt=R.WebSocket||R.MozWebSocket,it=function(t){function n(){return t.apply(this,arguments)||this}e(n,t);var i=n.prototype;return i.createSocket=function(t,n,i){return _?new nt(t,n,i):n?new nt(t,n):new nt(t)},i.doWrite=function(t,n){this.ws.send(n)},n}(tt),rt=function(t){function i(){return t.apply(this,arguments)||this}e(i,t);var r=i.prototype;return r.doOpen=function(){var t=this;try{this.M=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(t){return this.emitReserved("error",t)}this.M.closed.then((function(){t.onClose()})).catch((function(n){t.onError("webtransport error",n)})),this.M.ready.then((function(){t.M.createBidirectionalStream().then((function(n){var i=function(t,n){j||(j=new TextDecoder);var i=[],r=0,e=-1,o=!1;return new TransformStream({transform:function(s,u){for(i.push(s);;){if(0===r){if(M(i)<1)break;var f=x(i,1);o=!(128&~f[0]),e=127&f[0],r=e<126?3:126===e?1:2}else if(1===r){if(M(i)<2)break;var h=x(i,2);e=new DataView(h.buffer,h.byteOffset,h.length).getUint16(0),r=3}else if(2===r){if(M(i)<8)break;var c=x(i,8),a=new DataView(c.buffer,c.byteOffset,c.length),p=a.getUint32(0);if(p>Math.pow(2,21)-1){u.enqueue(l);break}e=p*Math.pow(2,32)+a.getUint32(4),r=3}else{if(M(i)<e)break;var v=x(i,e);u.enqueue(E(o?v:j.decode(v),n)),r=0}if(0===e||e>t){u.enqueue(l);break}}}})}(Number.MAX_SAFE_INTEGER,t.socket.binaryType),r=n.readable.pipeThrough(i).getReader(),e=S();e.readable.pipeTo(n.writable),t.C=e.writable.getWriter();!function n(){r.read().then((function(i){var r=i.done,e=i.value;r||(t.onPacket(e),n())})).catch((function(t){}))}();var o={type:"open"};t.query.sid&&(o.data='{"sid":"'.concat(t.query.sid,'"}')),t.C.write(o).then((function(){return t.onOpen()}))}))}))},r.write=function(t){var n=this;this.writable=!1;for(var i=function(){var i=t[r],e=r===t.length-1;n.C.write(i).then((function(){e&&L((function(){n.writable=!0,n.emitReserved("drain")}),n.setTimeoutFn)}))},r=0;r<t.length;r++)i()},r.doClose=function(){var t;null===(t=this.M)||void 0===t||t.close()},n(i,[{key:"name",get:function(){return"webtransport"}}])}(V),et={websocket:it,webtransport:rt,polling:Y},ot=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,st=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function ut(t){if(t.length>8e3)throw"URI too long";var n=t,i=t.indexOf("["),r=t.indexOf("]");-1!=i&&-1!=r&&(t=t.substring(0,i)+t.substring(i,r).replace(/:/g,";")+t.substring(r,t.length));for(var e,o,s=ot.exec(t||""),u={},f=14;f--;)u[st[f]]=s[f]||"";return-1!=i&&-1!=r&&(u.source=n,u.host=u.host.substring(1,u.host.length-1).replace(/;/g,":"),u.authority=u.authority.replace("[","").replace("]","").replace(/;/g,":"),u.ipv6uri=!0),u.pathNames=function(t,n){var i=/\/{2,9}/g,r=n.replace(i,"/").split("/");"/"!=n.slice(0,1)&&0!==n.length||r.splice(0,1);"/"==n.slice(-1)&&r.splice(r.length-1,1);return r}(0,u.path),u.queryKey=(e=u.query,o={},e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(t,n,i){n&&(o[n]=i)})),o),u}var ft="function"==typeof addEventListener&&"function"==typeof removeEventListener,ht=[];ft&&addEventListener("offline",(function(){ht.forEach((function(t){return t()}))}),!1);var ct=function(t){function n(n,r){var e;if((e=t.call(this)||this).binaryType="arraybuffer",e.writeBuffer=[],e.L=0,e.R=-1,e.D=-1,e.P=-1,e.I=1/0,n&&"object"===f(n)&&(r=n,n=null),n){var o=ut(n);r.hostname=o.host,r.secure="https"===o.protocol||"wss"===o.protocol,r.port=o.port,o.query&&(r.query=o.query)}else r.host&&(r.hostname=ut(r.host).host);return $(e,r),e.secure=null!=r.secure?r.secure:"undefined"!=typeof location&&"https:"===location.protocol,r.hostname&&!r.port&&(r.port=e.secure?"443":"80"),e.hostname=r.hostname||("undefined"!=typeof location?location.hostname:"localhost"),e.port=r.port||("undefined"!=typeof location&&location.port?location.port:e.secure?"443":"80"),e.transports=[],e.$={},r.transports.forEach((function(t){var n=t.prototype.name;e.transports.push(n),e.$[n]=t})),e.opts=i({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},r),e.opts.path=e.opts.path.replace(/\/$/,"")+(e.opts.addTrailingSlash?"/":""),"string"==typeof e.opts.query&&(e.opts.query=function(t){for(var n={},i=t.split("&"),r=0,e=i.length;r<e;r++){var o=i[r].split("=");n[decodeURIComponent(o[0])]=decodeURIComponent(o[1])}return n}(e.opts.query)),ft&&(e.opts.closeOnBeforeunload&&(e.q=function(){e.transport&&(e.transport.removeAllListeners(),e.transport.close())},addEventListener("beforeunload",e.q,!1)),"localhost"!==e.hostname&&(e.N=function(){e.V("transport close",{description:"network connection lost"})},ht.push(e.N))),e.opts.withCredentials&&(e.X=void 0),e.H(),e}e(n,t);var r=n.prototype;return r.createTransport=function(t){var n=i({},this.opts.query);n.EIO=4,n.transport=t,this.id&&(n.sid=this.id);var r=i({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[t]);return new this.$[t](r)},r.H=function(){var t=this;if(0!==this.transports.length){var i=this.opts.rememberUpgrade&&n.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket")?"websocket":this.transports[0];this.readyState="opening";var r=this.createTransport(i);r.open(),this.setTransport(r)}else this.setTimeoutFn((function(){t.emitReserved("error","No transports available")}),0)},r.setTransport=function(t){var n=this;this.transport&&this.transport.removeAllListeners(),this.transport=t,t.on("drain",this.F.bind(this)).on("packet",this.G.bind(this)).on("error",this.O.bind(this)).on("close",(function(t){return n.V("transport close",t)}))},r.onOpen=function(){this.readyState="open",n.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush()},r.G=function(t){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",t),this.emitReserved("heartbeat"),t.type){case"open":this.onHandshake(JSON.parse(t.data));break;case"ping":this.J("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this.W();break;case"error":var n=new Error("server error");n.code=t.data,this.O(n);break;case"message":this.emitReserved("data",t.data),this.emitReserved("message",t.data)}},r.onHandshake=function(t){this.emitReserved("handshake",t),this.id=t.sid,this.transport.query.sid=t.sid,this.R=t.pingInterval,this.D=t.pingTimeout,this.P=t.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.W()},r.W=function(){var t=this;this.clearTimeoutFn(this.K);var n=this.R+this.D;this.I=Date.now()+n,this.K=this.setTimeoutFn((function(){t.V("ping timeout")}),n),this.opts.autoUnref&&this.K.unref()},r.F=function(){this.writeBuffer.splice(0,this.L),this.L=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()},r.flush=function(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){var t=this.Y();this.transport.send(t),this.L=t.length,this.emitReserved("flush")}},r.Y=function(){if(!(this.P&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;for(var t,n=1,i=0;i<this.writeBuffer.length;i++){var r=this.writeBuffer[i].data;if(r&&(n+="string"==typeof(t=r)?function(t){for(var n=0,i=0,r=0,e=t.length;r<e;r++)(n=t.charCodeAt(r))<128?i+=1:n<2048?i+=2:n<55296||n>=57344?i+=3:(r++,i+=4);return i}(t):Math.ceil(1.33*(t.byteLength||t.size))),i>0&&n>this.P)return this.writeBuffer.slice(0,i);n+=2}return this.writeBuffer},r.Z=function(){var t=this;if(!this.I)return!0;var n=Date.now()>this.I;return n&&(this.I=0,L((function(){t.V("ping timeout")}),this.setTimeoutFn)),n},r.write=function(t,n,i){return this.J("message",t,n,i),this},r.send=function(t,n,i){return this.J("message",t,n,i),this},r.J=function(t,n,i,r){if("function"==typeof n&&(r=n,n=void 0),"function"==typeof i&&(r=i,i=null),"closing"!==this.readyState&&"closed"!==this.readyState){(i=i||{}).compress=!1!==i.compress;var e={type:t,data:n,options:i};this.emitReserved("packetCreate",e),this.writeBuffer.push(e),r&&this.once("flush",r),this.flush()}},r.close=function(){var t=this,n=function(){t.V("forced close"),t.transport.close()},i=function i(){t.off("upgrade",i),t.off("upgradeError",i),n()},r=function(){t.once("upgrade",i),t.once("upgradeError",i)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(function(){t.upgrading?r():n()})):this.upgrading?r():n()),this},r.O=function(t){if(n.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&"opening"===this.readyState)return this.transports.shift(),this.H();this.emitReserved("error",t),this.V("transport error",t)},r.V=function(t,n){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState){if(this.clearTimeoutFn(this.K),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),ft&&(this.q&&removeEventListener("beforeunload",this.q,!1),this.N)){var i=ht.indexOf(this.N);-1!==i&&ht.splice(i,1)}this.readyState="closed",this.id=null,this.emitReserved("close",t,n),this.writeBuffer=[],this.L=0}},n}(C);ct.protocol=4;var at=function(t){function n(){var n;return(n=t.apply(this,arguments)||this)._=[],n}e(n,t);var i=n.prototype;return i.onOpen=function(){if(t.prototype.onOpen.call(this),"open"===this.readyState&&this.opts.upgrade)for(var n=0;n<this._.length;n++)this.tt(this._[n])},i.tt=function(t){var n=this,i=this.createTransport(t),r=!1;ct.priorWebsocketSuccess=!1;var e=function(){r||(i.send([{type:"ping",data:"probe"}]),i.once("packet",(function(t){if(!r)if("pong"===t.type&&"probe"===t.data){if(n.upgrading=!0,n.emitReserved("upgrading",i),!i)return;ct.priorWebsocketSuccess="websocket"===i.name,n.transport.pause((function(){r||"closed"!==n.readyState&&(c(),n.setTransport(i),i.send([{type:"upgrade"}]),n.emitReserved("upgrade",i),i=null,n.upgrading=!1,n.flush())}))}else{var e=new Error("probe error");e.transport=i.name,n.emitReserved("upgradeError",e)}})))};function o(){r||(r=!0,c(),i.close(),i=null)}var s=function(t){var r=new Error("probe error: "+t);r.transport=i.name,o(),n.emitReserved("upgradeError",r)};function u(){s("transport closed")}function f(){s("socket closed")}function h(t){i&&t.name!==i.name&&o()}var c=function(){i.removeListener("open",e),i.removeListener("error",s),i.removeListener("close",u),n.off("close",f),n.off("upgrading",h)};i.once("open",e),i.once("error",s),i.once("close",u),this.once("close",f),this.once("upgrading",h),-1!==this._.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((function(){r||i.open()}),200):i.open()},i.onHandshake=function(n){this._=this.nt(n.upgrades),t.prototype.onHandshake.call(this,n)},i.nt=function(t){for(var n=[],i=0;i<t.length;i++)~this.transports.indexOf(t[i])&&n.push(t[i]);return n},n}(ct),pt=function(t){function n(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r="object"===f(n)?n:i;return(!r.transports||r.transports&&"string"==typeof r.transports[0])&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map((function(t){return et[t]})).filter((function(t){return!!t}))),t.call(this,n,r)||this}return e(n,t),n}(at);return function(t,n){return new pt(t,n)}}));
18651
18998
  //# sourceMappingURL=engine.io.min.js.map
18652
18999
  ;
18653
19000
  function BindingHelper(handlerContext) {
@@ -18743,12 +19090,13 @@ function BindingHelper(handlerContext) {
18743
19090
  define( 'helpers/binding',[],function() { return BindingHelper });
18744
19091
  /*
18745
19092
  * This file is part of the gina package.
18746
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
19093
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
18747
19094
  *
18748
19095
  * For the full copyright and license information, please view the LICENSE
18749
19096
  * file that was distributed with this source code.
18750
19097
  */
18751
19098
 
19099
+
18752
19100
  // nodejs dependencies
18753
19101
  if ( typeof(module) !== 'undefined' && module.exports) {
18754
19102
  var fs = require('fs');
@@ -18786,8 +19134,10 @@ function Domain(options, cb) {
18786
19134
  var isGFFCtx = ( ( typeof(module) !== 'undefined' ) && module.exports ) ? false : true;
18787
19135
  // Detect if user is on IE browser
18788
19136
  var isIE = false;
19137
+ var defaultUrl = "/_gina/assets/public_suffix_list.dat";
18789
19138
  if (isGFFCtx) {
18790
19139
  isIE = !!window.MSInputMethodContext && !!document.documentMode;
19140
+ defaultUrl = gina.config.webroot + defaultUrl.substring(1);
18791
19141
  }
18792
19142
 
18793
19143
  if ( typeof(arguments[0]) == 'function' ) {
@@ -18799,20 +19149,31 @@ function Domain(options, cb) {
18799
19149
  // if isGFFCtx, should be place in the public folder to be served by your own host
18800
19150
  // e.g.: "./public_suffix_list.dat" located under "/my-www-folder/"
18801
19151
  filename : "../dist/public_suffix_list.dat",
18802
- url : "https://publicsuffix.org/list/public_suffix_list.dat",
19152
+ url : defaultUrl,
19153
+ // url : "https://publicsuffix.org/list/public_suffix_list.dat",
18803
19154
  alternativeUrl : "https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat",
18804
19155
  // only available from backend calls
18805
19156
  isCachingRequired : false,
18806
19157
  isUpdating : false
18807
19158
  }
18808
19159
 
19160
+ if (
19161
+ !isGFFCtx
19162
+ && typeof(options) != 'undefined'
19163
+ && typeof(options.webroot) != 'undefined'
19164
+ ) {
19165
+ defaultOptions.url = options.webroot + defaultUrl.substring(1);
19166
+ }
19167
+
19168
+ // Get the commit version
19169
+ // cat ./framework/v0.1.6-alpha.83/core/asset/data/public_suffix_list.dat|grep 'COMMIT:'|sed 's/^\/\/ COMMIT\: //'
19170
+
18809
19171
  var self = {
18810
19172
  options : null,
18811
19173
  rawPSL : null,
18812
19174
  PSL : [],
18813
19175
  };
18814
19176
 
18815
-
18816
19177
  var init = function(proto, options, cb) {
18817
19178
  if ( typeof(options) == 'undefined' ) {
18818
19179
  options = defaultOptions
@@ -18843,9 +19204,8 @@ function Domain(options, cb) {
18843
19204
  return
18844
19205
  }
18845
19206
 
18846
- console.debug('[DOMAIN] PSL Loaded');
19207
+ console.debug('[DOMAIN][CB] PSL Loaded');
18847
19208
  // return proto
18848
-
18849
19209
  cb(err, proto)
18850
19210
  });
18851
19211
  }
@@ -19045,7 +19405,7 @@ function Domain(options, cb) {
19045
19405
  return host
19046
19406
  }
19047
19407
 
19048
- console.debug('[DOMAIN][getFQDN] UQDN: ' + host);
19408
+ console.debug('[DOMAIN][getFQDN] FQDN: ' + host);
19049
19409
  var ipObj = null
19050
19410
  , err = null
19051
19411
  ;
@@ -19094,6 +19454,7 @@ function Domain(options, cb) {
19094
19454
  if ( typeof(jsonFormat) == 'undefined' ) {
19095
19455
  jsonFormat = false
19096
19456
  }
19457
+ urlOrHostname = urlOrHostname.trim();
19097
19458
  var isSLD = false
19098
19459
  , isRegisteredTldOrSld = false
19099
19460
  , rootDomain = urlOrHostname.replace(/^(.*)\:\/\/|\/(.*)/g, '')
@@ -19739,13 +20100,15 @@ define('gina/link', [ 'require', 'jquery', 'vendor/uuid', 'lib/domain', 'lib/mer
19739
20100
  instance.getLinkByUrl = getLinkByUrl;
19740
20101
  }
19741
20102
 
19742
- new Domain( function onReady(err, _domainInstance) {
19743
- if (err) {
19744
- throw err
19745
- }
20103
+ if (!domainInstance) {
20104
+ new Domain( function onReady(err, _domainInstance) {
20105
+ if (err) {
20106
+ throw err
20107
+ }
19746
20108
 
19747
- domainInstance = _domainInstance;
19748
- });
20109
+ domainInstance = _domainInstance;
20110
+ });
20111
+ }
19749
20112
 
19750
20113
  return init(options)
19751
20114
  }
@@ -21528,13 +21891,15 @@ define('gina/popin', [ 'require', 'vendor/uuid', 'jquery', 'lib/domain', 'lib/me
21528
21891
  popinGetContainer()
21529
21892
  }
21530
21893
 
21531
- new Domain( function onReady(err, _domainInstance) {
21532
- if (err) {
21533
- throw err
21534
- }
21894
+ if (!domainInstance) {
21895
+ new Domain( function onReady(err, _domainInstance) {
21896
+ if (err) {
21897
+ throw err
21898
+ }
21535
21899
 
21536
- domainInstance = _domainInstance;
21537
- });
21900
+ domainInstance = _domainInstance;
21901
+ });
21902
+ }
21538
21903
 
21539
21904
  return init(options)
21540
21905
  }
@@ -21654,7 +22019,7 @@ define("utils/polyfill", function(){});
21654
22019
 
21655
22020
  /**
21656
22021
  * This file is part of the gina package.
21657
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
22022
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
21658
22023
  *
21659
22024
  * For the full copyright and license information, please view the LICENSE
21660
22025
  * file that was distributed with this source code.