gina 0.1.6-alpha.13 → 0.1.6-alpha.131

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/LICENSE +1 -1
  2. package/README-4Contributors.md +14 -8
  3. package/README.md +13 -4
  4. package/bin/cli +16 -2
  5. package/bin/gina +29 -1
  6. package/framework/{v0.1.6-alpha.13/lib/inherits → v0.1.6-alpha.131}/LICENSE +1 -1
  7. package/framework/v0.1.6-alpha.131/VERSION +1 -0
  8. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/plugin/README.md +1 -0
  9. package/framework/v0.1.6-alpha.131/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
  10. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +1 -1
  11. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/plugin/dist/vendor/gina/js/gina.js +655 -235
  12. package/framework/v0.1.6-alpha.131/core/asset/plugin/dist/vendor/gina/js/gina.min.js +778 -0
  13. package/framework/v0.1.6-alpha.131/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
  14. package/framework/v0.1.6-alpha.131/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
  15. package/framework/v0.1.6-alpha.131/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
  16. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/config.js +159 -76
  17. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/index.js +108 -26
  18. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/connector.v4.js +124 -22
  19. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/session-store.v4.js +5 -2
  20. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/controller/controller.js +762 -189
  21. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/controller/index.js +2 -2
  22. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
  23. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
  24. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/README.md +191 -0
  25. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
  26. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
  27. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
  28. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
  29. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
  30. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
  31. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/lib/index.js +57 -0
  32. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
  33. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
  34. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/lib/utils.js +596 -0
  35. package/framework/v0.1.6-alpha.131/core/deps/busboy-1.6.0/package.json +22 -0
  36. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/.travis.yml +4 -0
  37. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/LICENSE +21 -0
  38. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/bool.js +10 -0
  39. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/boolean_double.js +7 -0
  40. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/boolean_single.js +7 -0
  41. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/default_hash.js +8 -0
  42. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/default_singles.js +7 -0
  43. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/divide.js +8 -0
  44. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/line_count.js +20 -0
  45. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/line_count_options.js +29 -0
  46. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/line_count_wrap.js +29 -0
  47. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/nonopt.js +4 -0
  48. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/reflect.js +2 -0
  49. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/short.js +3 -0
  50. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/string.js +11 -0
  51. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/usage-options.js +19 -0
  52. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/example/xup.js +10 -0
  53. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/index.js +343 -0
  54. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/package.json +31 -0
  55. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/package.json.dist +39 -0
  56. package/framework/v0.1.6-alpha.131/core/deps/optimist-0.6.1/readme.markdown +513 -0
  57. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/HISTORY.md +498 -0
  58. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/LICENSE +7 -0
  59. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/README.md +88 -0
  60. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/bin/swig.js +161 -0
  61. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/bin/swig.js.dist +161 -0
  62. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
  63. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/dist/swig.min.js.map +8 -0
  64. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/index.js +1 -0
  65. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/dateformatter.js +198 -0
  66. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/filters.js +630 -0
  67. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/lexer.js +306 -0
  68. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/loaders/filesystem.js +59 -0
  69. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/loaders/index.js +53 -0
  70. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/loaders/memory.js +63 -0
  71. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/parser.js +744 -0
  72. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/swig.js +740 -0
  73. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/autoescape.js +37 -0
  74. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/block.js +25 -0
  75. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/else.js +25 -0
  76. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/elseif.js +28 -0
  77. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/extends.js +19 -0
  78. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/filter.js +68 -0
  79. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/for.js +130 -0
  80. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/if.js +86 -0
  81. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/import.js +91 -0
  82. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/include.js +100 -0
  83. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/index.js +16 -0
  84. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/macro.js +79 -0
  85. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/parent.js +51 -0
  86. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/raw.js +23 -0
  87. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/set.js +109 -0
  88. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/tags/spaceless.js +42 -0
  89. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/lib/utils.js +184 -0
  90. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/package.json +57 -0
  91. package/framework/v0.1.6-alpha.131/core/deps/swig-1.4.2/package.json.dist +61 -0
  92. package/framework/v0.1.6-alpha.131/core/deps/swig-client/swig.js +5031 -0
  93. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/dev/index.js +1 -1
  94. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/dev/lib/factory.js +1 -1
  95. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/gna.js +104 -22
  96. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/index.js +3 -3
  97. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/src/make.js +1 -1
  98. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/mime.types +1 -0
  99. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/model/entity.js +5 -5
  100. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/model/index.js +30 -26
  101. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/model/template/entityFactory.js +1 -1
  102. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/model/template/index.js +1 -1
  103. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/index.js +3 -3
  104. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/file/package.json +2 -2
  105. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/intl/package.json +2 -2
  106. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/storage/package.json +2 -2
  107. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/validator/package.json +2 -2
  108. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/validator/src/form-validator.js +39 -27
  109. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/validator/src/main.js +419 -102
  110. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/router.js +92 -47
  111. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/server.isaac.js +92 -43
  112. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/server.js +322 -133
  113. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/status.codes +1 -11
  114. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/controllers/setup.js +2 -2
  115. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/command/gina.tpl +1 -1
  116. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/conf/env.json +19 -0
  117. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/conf/templates.json +4 -2
  118. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/console.js +1 -1
  119. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/context.js +29 -12
  120. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/data/package.json +2 -2
  121. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/data/src/main.js +1 -1
  122. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/dateFormat.js +1 -1
  123. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/index.js +1 -1
  124. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/json/package.json +2 -2
  125. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/json/src/main.js +6 -4
  126. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/path.js +31 -15
  127. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/plugins/package.json +2 -2
  128. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/plugins/src/api-error.js +2 -2
  129. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/plugins/src/main.js +1 -1
  130. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/task.js +2 -2
  131. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/text.js +1 -1
  132. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/archiver/package.json +2 -2
  133. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/archiver/src/main.js +11 -11
  134. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/add.js +2 -1
  135. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/start.js +21 -8
  136. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/get.js +1 -1
  137. package/framework/v0.1.6-alpha.131/lib/cmd/env/help.js +30 -0
  138. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/build.js +1 -1
  139. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/dot.js +21 -0
  140. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/init.js +18 -0
  141. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/link-node-modules.js +2 -3
  142. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/link.js +1 -0
  143. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/tail.js +28 -11
  144. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/version.js +15 -1
  145. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/helper.js +6 -2
  146. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/index.js +1 -1
  147. package/framework/v0.1.6-alpha.131/lib/cmd/minion/help.txt +18 -0
  148. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/add.js +7 -2
  149. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/arguments.json +1 -0
  150. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/build.js +4 -4
  151. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/help.txt +4 -0
  152. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/list.js +1 -1
  153. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/protocol/list.js +71 -50
  154. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/collection/package.json +2 -2
  155. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/collection/src/main.js +20 -14
  156. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/config.js +1 -1
  157. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cron/package.json +2 -2
  158. package/framework/v0.1.6-alpha.131/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +15754 -0
  159. package/framework/v0.1.6-alpha.131/lib/domain/dist/public_suffix_list.dat +15754 -0
  160. package/framework/v0.1.6-alpha.131/lib/domain/exemples/backend.js +12 -0
  161. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/domain/package.json +2 -2
  162. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/domain/src/main.js +20 -6
  163. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/generator/index.js +1 -1
  164. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/index.js +1 -1
  165. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131/lib/inherits}/LICENSE +1 -1
  166. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/inherits/package.json +2 -2
  167. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/inherits/src/main.js +1 -1
  168. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/package.json +2 -2
  169. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/containers/mq/listener.js +10 -2
  170. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/helper.js +1 -1
  171. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/main.js +1 -1
  172. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/math/index.js +1 -1
  173. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/merge/package.json +2 -2
  174. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/model.js +3 -3
  175. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/proc.js +10 -2
  176. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/routing/package.json +2 -2
  177. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/routing/src/main.js +79 -26
  178. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/session-store.js +3 -3
  179. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/swig-filters/package.json +2 -2
  180. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/swig-filters/src/main.js +76 -15
  181. package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/validator.js +2 -2
  182. package/framework/v0.1.6-alpha.131/package.json +11 -0
  183. package/package.json +3 -3
  184. package/resources/package.json.template +1 -1
  185. package/script/post_install.js +1 -1
  186. package/script/pre_install.js +1 -1
  187. package/utils/helper.js +33 -9
  188. package/framework/v0.1.6-alpha.13/VERSION +0 -1
  189. package/framework/v0.1.6-alpha.13/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +0 -1
  190. package/framework/v0.1.6-alpha.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -766
  191. package/framework/v0.1.6-alpha.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +0 -8
  192. package/framework/v0.1.6-alpha.13/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -7
  193. package/framework/v0.1.6-alpha.13/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +0 -8
  194. package/framework/v0.1.6-alpha.13/core/deps/busboy/.travis.yml +0 -17
  195. package/framework/v0.1.6-alpha.13/core/deps/busboy/README.md +0 -225
  196. package/framework/v0.1.6-alpha.13/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -73
  197. package/framework/v0.1.6-alpha.13/core/deps/busboy/deps/encoding/encoding.js +0 -2391
  198. package/framework/v0.1.6-alpha.13/core/deps/busboy/lib/main.js +0 -89
  199. package/framework/v0.1.6-alpha.13/core/deps/busboy/lib/types/multipart.js +0 -328
  200. package/framework/v0.1.6-alpha.13/core/deps/busboy/lib/types/urlencoded.js +0 -214
  201. package/framework/v0.1.6-alpha.13/core/deps/busboy/lib/utils.js +0 -191
  202. package/framework/v0.1.6-alpha.13/core/deps/busboy/package.json +0 -69
  203. package/framework/v0.1.6-alpha.13/lib/domain/dist/public_suffix_list.dat +0 -14186
  204. package/framework/v0.1.6-alpha.13/lib/domain/exemples/backend.js +0 -0
  205. package/framework/v0.1.6-alpha.13/package.json +0 -14
  206. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/AUTHORS +0 -0
  207. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/html/nolayout.html +0 -0
  208. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/html/static.html +0 -0
  209. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/img/android-chrome-192x192.png +0 -0
  210. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/img/android-chrome-512x512.png +0 -0
  211. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/img/apple-touch-icon.png +0 -0
  212. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/img/favicon-16x16.png +0 -0
  213. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/img/favicon-32x32.png +0 -0
  214. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/img/favicon.ico +0 -0
  215. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  216. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/asset/plugin/uuid.json +0 -0
  217. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/connector.js +0 -0
  218. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  219. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  220. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/n1ql.js +0 -0
  221. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/session-store.js +0 -0
  222. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  223. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  224. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/controller/controller.framework.js +0 -0
  225. /package/framework/{v0.1.6-alpha.13/core/deps/busboy → v0.1.6-alpha.131/core/deps/busboy-1.6.0}/LICENSE +0 -0
  226. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  227. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/dev/lib/class.js +0 -0
  228. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/dev/lib/tools.js +0 -0
  229. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/README.md +0 -0
  230. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/currency.json +0 -0
  231. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/dist/language/en.json +0 -0
  232. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/dist/language/fr.json +0 -0
  233. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/dist/region/en.json +0 -0
  234. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/dist/region/fr.json +0 -0
  235. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/src/resources/currency.csv +0 -0
  236. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/src/resources/region.csv +0 -0
  237. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/locales/src/resources/region.mapping.json +0 -0
  238. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/README.md +0 -0
  239. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/file/README.md +0 -0
  240. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/file/build.json +0 -0
  241. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/intl/README.md +0 -0
  242. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/intl/build.json +0 -0
  243. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/intl/src/main.js +0 -0
  244. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/storage/README.md +0 -0
  245. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/storage/build.json +0 -0
  246. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/storage/src/main.js +0 -0
  247. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/validator/README.md +0 -0
  248. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/plugins/lib/validator/build.json +0 -0
  249. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/server.express.js +0 -0
  250. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/_gitignore +0 -0
  251. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/config/app.json +0 -0
  252. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/config/routing.json +0 -0
  253. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/config/settings.json +0 -0
  254. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  255. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/config/templates.json +0 -0
  256. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  257. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  258. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle/index.js +0 -0
  259. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  260. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  261. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  262. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  263. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  264. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_public/readme.md +0 -0
  265. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  266. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  267. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  268. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  269. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  270. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/command/gina.bat.tpl +0 -0
  271. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/conf/manifest.json +0 -0
  272. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/conf/package.json +0 -0
  273. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/conf/settings.json +0 -0
  274. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/conf/statics.json +0 -0
  275. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/error/client/json/401.json +0 -0
  276. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/error/client/json/403.json +0 -0
  277. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/error/client/json/404.json +0 -0
  278. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/error/server/html/50x.html +0 -0
  279. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/error/server/json/500.json +0 -0
  280. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/error/server/json/503.json +0 -0
  281. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/core/template/extensions/logger/config.json +0 -0
  282. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/data/LICENSE +0 -0
  283. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/data/README.md +0 -0
  284. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/json/LICENSE +0 -0
  285. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/json/README.md +0 -0
  286. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/plugins/README.md +0 -0
  287. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/helpers/prototypes.js +0 -0
  288. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/archiver/README.md +0 -0
  289. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/archiver/build.json +0 -0
  290. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/archiver/src/dep/jszip.min.js +0 -0
  291. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/aliases.json +0 -0
  292. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/arguments.json +0 -0
  293. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/copy.js +0 -0
  294. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/cp.js +0 -0
  295. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/help.js +0 -0
  296. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/help.txt +0 -0
  297. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/list.js +0 -0
  298. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/remove.js +0 -0
  299. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/rename.js +0 -0
  300. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/restart.js +0 -0
  301. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/rm.js +0 -0
  302. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/status.js +0 -0
  303. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/bundle/stop.js +0 -0
  304. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/add.js +0 -0
  305. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/help.txt +0 -0
  306. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/link-dev.js +0 -0
  307. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/list.js +0 -0
  308. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/remove.js +0 -0
  309. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/rm.js +0 -0
  310. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/set.js +0 -0
  311. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/unset.js +0 -0
  312. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/env/use.js +0 -0
  313. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/get.js +0 -0
  314. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/help.js +0 -0
  315. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/help.txt +0 -0
  316. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/msg.json +0 -0
  317. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/open.js +0 -0
  318. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/restart.js +0 -0
  319. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/set.js +0 -0
  320. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/start.js +0 -0
  321. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/status.js +0 -0
  322. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/stop.js +0 -0
  323. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/framework/update.js +0 -0
  324. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/gina-dev.1.md +0 -0
  325. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/gina-framework.1.md +0 -0
  326. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/gina.1.md +0 -0
  327. /package/framework/{v0.1.6-alpha.13/lib/cmd/env → v0.1.6-alpha.131/lib/cmd/minion}/help.js +0 -0
  328. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/msg.json +0 -0
  329. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/port/help.js +0 -0
  330. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/port/help.txt +0 -0
  331. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/port/inc/scan.js +0 -0
  332. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/port/list.js +0 -0
  333. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/port/reset.js +0 -0
  334. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/port/set.js +0 -0
  335. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/help.js +0 -0
  336. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/import.js +0 -0
  337. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/move.js +0 -0
  338. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/remove.js +0 -0
  339. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/rename.js +0 -0
  340. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/restart.js +0 -0
  341. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/rm.js +0 -0
  342. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/start.js +0 -0
  343. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/status.js +0 -0
  344. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/project/stop.js +0 -0
  345. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/protocol/help.js +0 -0
  346. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/protocol/help.txt +0 -0
  347. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/protocol/set.js +0 -0
  348. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/add.js +0 -0
  349. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/help.js +0 -0
  350. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/help.txt +0 -0
  351. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/link-local.js +0 -0
  352. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/link-production.js +0 -0
  353. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/list.js +0 -0
  354. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/remove.js +0 -0
  355. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/rm.js +0 -0
  356. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/scope/use.js +0 -0
  357. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cmd/view/add.js +0 -0
  358. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/collection/README.md +0 -0
  359. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/collection/build.json +0 -0
  360. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cron/README.md +0 -0
  361. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/cron/src/main.js +0 -0
  362. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/domain/LICENSE +0 -0
  363. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/domain/README.md +0 -0
  364. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/domain/exemples/frontend.html +0 -0
  365. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/inherits/README.md +0 -0
  366. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  367. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/inherits/example/protected_inheritance.js +0 -0
  368. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/inherits/example/simple_inheritance.js +0 -0
  369. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
  370. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/README.md +0 -0
  371. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/containers/default/index.js +0 -0
  372. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/containers/file/index.js +0 -0
  373. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  374. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  375. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/containers/mq/index.js +0 -0
  376. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/logger/src/containers/mq/speaker.js +0 -0
  377. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/merge/README.md +0 -0
  378. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/merge/example/merge.js +0 -0
  379. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/merge/example/merge_2_literal objects.js +0 -0
  380. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/merge/example/merge_and_preserve_first.js +0 -0
  381. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/merge/src/main.js +0 -0
  382. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/routing/README.md +0 -0
  383. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/routing/build.json +0 -0
  384. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/shell.js +0 -0
  385. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/swig-filters/README.md +0 -0
  386. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/url/README.md +0 -0
  387. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/url/index.js +0 -0
  388. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/url/mocks.json +0 -0
  389. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/lib/url/routing.json +0 -0
  390. /package/framework/{v0.1.6-alpha.13 → v0.1.6-alpha.131}/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
  }
@@ -3072,6 +3073,9 @@ function handleXhr(xhr, $el, options, require) {
3072
3073
 
3073
3074
  // catching ready state cb
3074
3075
  xhr.onreadystatechange = function (event) {
3076
+ if ( typeof(merge) == 'undefined' ) {
3077
+ merge = require('lib/merge');
3078
+ }
3075
3079
  // In case the user is also redirecting
3076
3080
  var redirectDelay = (/Google Inc/i.test(navigator.vendor)) ? 50 : 0;
3077
3081
 
@@ -3108,7 +3112,7 @@ function handleXhr(xhr, $el, options, require) {
3108
3112
  var url = window.URL.createObjectURL(blob);
3109
3113
  a.href = url;
3110
3114
  var contentDisposition = xhr.getResponseHeader('Content-Disposition');
3111
- a.download = contentDisposition.match('\=(.*)')[0].substr(1);
3115
+ a.download = contentDisposition.match('\=(.*)')[0].substring(1);
3112
3116
  //programatically click the link to trigger the download
3113
3117
  a.click();
3114
3118
  //release the reference to the file by revoking the Object URL
@@ -3277,6 +3281,10 @@ function handleXhr(xhr, $el, options, require) {
3277
3281
  // This fires after the blob has been read/loaded.
3278
3282
  reader.addEventListener('loadend', (e) => {
3279
3283
 
3284
+ if ( typeof(merge) == 'undefined' ) {
3285
+ merge = require('lib/merge');
3286
+ }
3287
+
3280
3288
  if ( /string/i.test(typeof(e.srcElement.result)) ) {
3281
3289
  blobError += e.srcElement.result;
3282
3290
  } else if ( typeof(e.srcElement.result) == 'object' ) {
@@ -3848,7 +3856,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
3848
3856
  ;
3849
3857
  /*
3850
3858
  * This file is part of the gina package.
3851
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
3859
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
3852
3860
  *
3853
3861
  * For the full copyright and license information, please view the LICENSE
3854
3862
  * file that was distributed with this source code.
@@ -4629,10 +4637,9 @@ function Collection(content, options) {
4629
4637
  */
4630
4638
  var search = function(filter, field, _content, matched, searchOptionRules) {
4631
4639
  var reValidCount = null, searchOptCount = null;
4632
- if (filter === null && _content === null) { // null case
4633
-
4640
+ // null case
4641
+ if (filter === null && _content === null) {
4634
4642
  ++matched;
4635
-
4636
4643
  } else if (
4637
4644
  filter
4638
4645
  && keywords.indexOf(localeLowerCase) > -1
@@ -4698,7 +4705,6 @@ function Collection(content, options) {
4698
4705
  && searchOptions
4699
4706
  && typeof(searchOptions[field]) != 'undefined'
4700
4707
  ) {
4701
-
4702
4708
  reValidCount = 0;
4703
4709
  searchOptCount = searchOptions[field].count();
4704
4710
  for ( var rule in searchOptions[field]) {
@@ -4797,7 +4803,7 @@ function Collection(content, options) {
4797
4803
 
4798
4804
  field = arr[1];
4799
4805
  if (/^\./.test(field) )
4800
- field = field.substr(1);
4806
+ field = field.substring(1);
4801
4807
 
4802
4808
  var subMatched = 0;
4803
4809
  if (collection) {
@@ -5124,15 +5130,15 @@ function Collection(content, options) {
5124
5130
  }
5125
5131
 
5126
5132
  // 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
5133
+ var r = 0
5134
+ , rLen = foundResults.length
5135
+ , c = 0
5136
+ , cLen = currentResult.length
5137
+ , f = 0
5138
+ , fLen = filters.count()
5139
+ , keyLen = null
5140
+ , matched = 0
5141
+ , fullFiltersMatched = 0
5136
5142
  ;
5137
5143
  if ( uuidSearchModeEnabled && typeof(currentResult[c]) != 'undefined' && currentResult[c].hasOwnProperty(key) ) {
5138
5144
  // for every single result found
@@ -5593,6 +5599,13 @@ function Collection(content, options) {
5593
5599
 
5594
5600
 
5595
5601
  if ( typeof(a) == 'string' && a != '' || typeof(b) == 'string' ) {
5602
+ // Fixed on 2025-03-08: allowed to compare with one of the fields being NULL or not defined
5603
+ if ( typeof(a) == 'undefined' || a == null) {
5604
+ a = ''; // cast to string
5605
+ }
5606
+ if ( typeof(b) == 'undefined' || b == null) {
5607
+ b = ''; // cast to string
5608
+ }
5596
5609
 
5597
5610
  if ( typeof(a) == 'number' ) {
5598
5611
  a = ''+a; // cast to string
@@ -5601,6 +5614,7 @@ function Collection(content, options) {
5601
5614
  b = ''+b; // cast to string
5602
5615
  }
5603
5616
 
5617
+
5604
5618
  return a.localeCompare(b, undefined, {sensitivity: 'case', caseFirst: 'upper'})
5605
5619
  }
5606
5620
 
@@ -6230,11 +6244,12 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6230
6244
  // system error
6231
6245
  systemError = result.error;
6232
6246
  }
6233
- // Fixed on 2023-01-10
6247
+ // Fixed added on 2023-01-10
6234
6248
  // We want `local.errorLabels['query']` before the generic|user defined `rule` error
6235
6249
  var optionError = ( typeof(options['error']) != 'undefined' ) ? options['error'] : null;
6236
6250
  errors['query'] = replace(systemError || _this['error'] || optionError || local.errorLabels['query'], _this);
6237
- console.debug('[1] query error detected !! ', result);
6251
+
6252
+ console.debug('[1] query error detected !! ', result, errorFields, errors['query']);
6238
6253
  }
6239
6254
 
6240
6255
  if ( !errors['query'] && _this.value == '' ) {
@@ -6304,6 +6319,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6304
6319
 
6305
6320
  var id = _this.target.id || _this.target.getAttribute('id');
6306
6321
  console.debug('prematurely completed event `'+ 'asyncCompleted.' + id +'`');
6322
+
6307
6323
  return triggerEvent(gina, _this.target, 'asyncCompleted.' + id, self[_this['name']]);
6308
6324
  } // EO onResult
6309
6325
 
@@ -6526,7 +6542,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6526
6542
  //instance: self.serverInstance,
6527
6543
  //template: (routeHasViews) ? conf.content.templates[templateName] : undefined,
6528
6544
  //isUsingTemplate: local.isUsingTemplate,
6529
- cacheless: conf.cacheless //,
6545
+ isCacheless: conf.isCacheless //,
6530
6546
  //path: params.param.path || null, // user custom path : namespace should be ignored | left blank
6531
6547
  //assets: {}
6532
6548
  };
@@ -6699,7 +6715,7 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
6699
6715
  isValid = condition;
6700
6716
  } else if (!isValid) {
6701
6717
  var re = null, flags = null;
6702
- // Fixed on 2021-03-13: $variable now replaced with real value beafore validation
6718
+ // Fixed added on 2021-03-13: $variable now replaced with real value beafore validation
6703
6719
  if ( /[\!\=>\>\<a-z 0-9]+/i.test(condition) ) {
6704
6720
  var variables = condition.match(/\${0}[-_,.\[\]a-z0-9]+/ig); // without space(s)
6705
6721
  if (variables && variables.length > 0) {
@@ -7075,24 +7091,26 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7075
7091
 
7076
7092
 
7077
7093
  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,'');
7094
+ // Fixed on 2025-03-12
7095
+ // In case we are dealing with a filtered value (swig::formatNumber())
7096
+ var val = document.getElementById(this.target.getAttribute('id')).value || this.value
7097
+ isFloatingWithCommas = false
7098
+ ;
7099
+ if ( typeof(val) == 'string' ) {
7100
+ val = val.replace(/\s+/g, '');
7101
+ // Fixed on 2025-03-12
7102
+ // thousand separator ?
7103
+ if ( /\,/.test(val) && /\./.test(val) ) {
7104
+ val = val.replace(/\,/g,'');
7105
+ }
7106
+ else if ( /\,/.test(val) ) {
7107
+ val = val.replace(/\,/g,'.');
7108
+ isFloatingWithCommas = true;
7091
7109
  }
7092
7110
  }
7093
7111
 
7094
- var val = local.data[this.name] = this.value
7095
- , errors = self[this['name']]['errors'] || {}
7112
+ local.data[this.name] = val;
7113
+ var errors = self[this['name']]['errors'] || {}
7096
7114
  , isValid = true
7097
7115
  ;
7098
7116
 
@@ -7107,32 +7125,40 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet) {
7107
7125
  } else {
7108
7126
  if ( this['isNumber']().valid ) {
7109
7127
  try {
7110
-
7111
7128
  if ( !Number.isFinite(val) ) {
7112
- val = this.value = local.data[this.name] = new Number(parseFloat(val.match(/[0-9.,]+/g).join('').replace(/,/, '.')));// Number <> number
7129
+ // Number <> number
7130
+ val = new Number(parseFloat(val.match(/[0-9.,]+/g).join('').replace(/,/, '.')));
7113
7131
  }
7114
- if (isGFFCtx)
7115
- this.target.setAttribute('value', val);
7116
7132
  } catch(err) {
7117
7133
  isValid = false;
7118
- errors['toFloat'] = replace(this.error || local.errorLabels['toFloat'], this);
7134
+ errors['toFloat'] = replace(this.error || local.errorLabels['toFloat'], this);
7119
7135
  this.valid = false;
7120
7136
  if ( errors.count() > 0 )
7121
7137
  this['errors'] = errors;
7122
7138
  }
7123
7139
  } else {
7124
7140
  isValid = false;
7125
- errors['toFloat'] = replace(this.error || local.errorLabels['toFloatNAN'], this)
7141
+ errors['toFloat'] = replace(this.error || local.errorLabels['toFloatNAN'], this)
7126
7142
  }
7127
7143
  }
7128
7144
 
7129
7145
  if (this['decimals'] && val && !errors['toFloat']) {
7130
- this.value = local.data[this.name] = parseFloat(this.value.toFixed(this['decimals']));
7146
+ val = parseFloat(val.toFixed(this['decimals']));
7147
+ }
7148
+
7149
+ this.value = local.data[this.name] = val;
7150
+ if (isGFFCtx) {
7151
+ // restore original input format for display
7152
+ if (isFloatingWithCommas) {
7153
+ val = (''+val).replace(/\./g,',');
7154
+ }
7155
+ this.target.setAttribute('value', val);
7131
7156
  }
7132
7157
 
7133
7158
  this.valid = isValid;
7134
- if ( errors.count() > 0 )
7159
+ if ( errors.count() > 0 ) {
7135
7160
  this['errors'] = errors;
7161
+ }
7136
7162
 
7137
7163
  return self[this.name]
7138
7164
  }
@@ -7711,7 +7737,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
7711
7737
  };
7712
7738
  /*
7713
7739
  * This file is part of the gina package.
7714
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
7740
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
7715
7741
  *
7716
7742
  * For the full copyright and license information, please view the LICENSE
7717
7743
  * file that was distributed with this source code.
@@ -7727,7 +7753,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
7727
7753
 
7728
7754
  function Routing() {
7729
7755
 
7730
- var isGFFCtx = ((typeof (module) !== 'undefined') && module.exports) ? false :  true;
7756
+ var isGFFCtx = ((typeof (module) !== 'undefined') && module.exports) ? false : true;
7731
7757
  var self = {
7732
7758
  allowedMethods: ['get', 'post', 'put', 'delete'],
7733
7759
  reservedParams: ['controle', 'file','title', 'namespace', 'path'],
@@ -7782,7 +7808,7 @@ function Routing() {
7782
7808
  urlProps.hostname = config.hostname;
7783
7809
  if ( typeof(bundle) != 'undefined' ) {
7784
7810
  // get from webroot
7785
- _route = routing.getRoute('webroot@'+ bundle);
7811
+ _route = this.getRoute('webroot@'+ bundle);
7786
7812
  urlProps.hostname = _route.hostname;
7787
7813
  urlProps.host = _route.host;
7788
7814
  urlProps.webroot = _route.webroot;
@@ -7883,9 +7909,11 @@ function Routing() {
7883
7909
  return foundRoute;
7884
7910
  }
7885
7911
 
7912
+
7886
7913
  return await parseRouting(params, url, request, response, next);
7887
7914
  };
7888
7915
 
7916
+
7889
7917
  /**
7890
7918
  * Check if rule has params
7891
7919
  *
@@ -7969,13 +7997,13 @@ function Routing() {
7969
7997
  ++score;
7970
7998
  continue;
7971
7999
  }
7972
- let _key = uRo[p].substr(1);
8000
+ let _key = uRo[p].substring(1);
7973
8001
  if ( typeof(params.requirements[_key]) == 'undefined' ) {
7974
8002
  continue;
7975
8003
  }
7976
8004
  let condition = params.requirements[_key];
7977
8005
  if ( /^\//.test(condition) ) {
7978
- condition = condition.substr(1, condition.lastIndexOf('/')-1);
8006
+ condition = condition.substring(1, condition.lastIndexOf('/')-1);
7979
8007
  } else if ( /^validator\:\:/.test(condition) && await fitsWithRequirements(uRo[p], uRe[p], params, request, response, next) ) {
7980
8008
  ++score;
7981
8009
  continue;
@@ -7986,7 +8014,7 @@ function Routing() {
7986
8014
  && new RegExp(condition).test(uRe[p])
7987
8015
  ) {
7988
8016
  ++score;
7989
- request[method][uRo[p].substr(1)] = uRe[p];
8017
+ request[method][uRo[p].substring(1)] = uRe[p];
7990
8018
  }
7991
8019
  }
7992
8020
  hasAlreadyBeenScored = true;
@@ -8264,7 +8292,7 @@ function Routing() {
8264
8292
  request[requestMethod] = {}
8265
8293
  }
8266
8294
 
8267
- key = _param[matched].substr(1);
8295
+ key = _param[matched].substring(1);
8268
8296
  // escaping `\` characters
8269
8297
  // TODO - remove comment : all regex requirement must start with `/`
8270
8298
  //regex = ( /\\/.test(params.requirements[key]) ) ? params.requirements[key].replace(/\\/, '') : params.requirements[key];
@@ -8366,7 +8394,7 @@ function Routing() {
8366
8394
  } else if (c > (tplUrl.indexOf(keys[0]) + keys[0].length)) {
8367
8395
 
8368
8396
  regex = params.requirements[keys[0]];
8369
- urlVal = strVal.substr(0, strVal.length);
8397
+ urlVal = strVal.substring(0, strVal.length);
8370
8398
 
8371
8399
  if (/^\//.test(regex)) {
8372
8400
  re = regex.match(/\/(.*)\//).pop();
@@ -8403,7 +8431,7 @@ function Routing() {
8403
8431
  }
8404
8432
 
8405
8433
  if (tested) {
8406
- values[keys[0].substr(1)] = urlVal
8434
+ values[keys[0].substring(1)] = urlVal
8407
8435
  } else {
8408
8436
  return false
8409
8437
  }
@@ -8422,7 +8450,7 @@ function Routing() {
8422
8450
  if (c == posLen - 1) {
8423
8451
 
8424
8452
  regex = params.requirements[keys[0]];
8425
- urlVal = strVal.substr(0, strVal.length);
8453
+ urlVal = strVal.substring(0, strVal.length);
8426
8454
 
8427
8455
  if (/^\//.test(regex)) {
8428
8456
  re = regex.match(/\/(.*)\//).pop();
@@ -8435,7 +8463,7 @@ function Routing() {
8435
8463
  }
8436
8464
 
8437
8465
  if (tested) {
8438
- values[keys[0].substr(1)] = urlVal
8466
+ values[keys[0].substring(1)] = urlVal
8439
8467
  } else {
8440
8468
  return false
8441
8469
  }
@@ -8471,7 +8499,7 @@ function Routing() {
8471
8499
  if ( typeof(params) != 'undefined' && typeof(params[p]) == 'undefined' ) continue;
8472
8500
 
8473
8501
  if ( /^:/.test(route.param[p]) ) {
8474
- variable = route.param[p].substr(1);
8502
+ variable = route.param[p].substring(1);
8475
8503
 
8476
8504
  if ( typeof(params) != 'undefined' && typeof(params[variable]) != 'undefined' ) {
8477
8505
 
@@ -8526,7 +8554,7 @@ function Routing() {
8526
8554
  p = 0;
8527
8555
  pLen = rawUrlVars.length;
8528
8556
  for (; p < pLen; p++) {
8529
- pKey = rawUrlVars[p].substr(1);
8557
+ pKey = rawUrlVars[p].substring(1);
8530
8558
  if ( typeof(params[ pKey ]) != 'undefined' && params[ pKey ] ) {
8531
8559
  rawUrlScore++;
8532
8560
  }
@@ -8553,14 +8581,24 @@ function Routing() {
8553
8581
  * */
8554
8582
  self.getRoute = function(rule, params, urlIndex) {
8555
8583
 
8556
- var config = null;
8584
+ var config = null, isProxyHost = false;
8557
8585
  if (isGFFCtx) {
8586
+ if (
8587
+ !window.location.port
8588
+ && window.location.hostname == window.gina.config.hostname.replace(/^(https|http|wss|ws)\:\/\//, '').replace(/\:\d+$/, '')
8589
+ ) {
8590
+ isProxyHost = true;
8591
+ window.gina.config.hostname = window.gina.config.hostname.replace(/^(https|http|wss|ws)\:\/\//, '').replace(/\:\d+$/, '')
8592
+ }
8558
8593
  config = window.gina.config;
8559
8594
  } else {
8595
+
8560
8596
  config = getContext('gina').config;
8561
8597
  if ( typeof(getContext('argvFilename')) != 'undefined' ) {
8562
8598
  config.getRouting = getContext('gina').Config.instance.getRouting;
8563
8599
  }
8600
+
8601
+ isProxyHost = getContext('isProxyHost');
8564
8602
  }
8565
8603
 
8566
8604
  var env = config.env || GINA_ENV // by default, takes the current bundle
@@ -8605,6 +8643,23 @@ function Routing() {
8605
8643
  var msg = null;
8606
8644
  route = checkRouteParams(route, params);
8607
8645
 
8646
+ route.isProxyHost = isProxyHost;
8647
+ if (isProxyHost) {
8648
+ if (isGFFCtx) {
8649
+ route.proxy_hostname = window.location.protocol +'//'+ document.location.hostname;
8650
+ } else {
8651
+ route.proxy_hostname = process.gina.PROXY_HOSTNAME || config.envConf._proxyHostname;
8652
+ }
8653
+ route.proxy_host = route.proxy_hostname.replace(/^(https|http)\:\/\//, '');
8654
+
8655
+ } else if (
8656
+ !isGFFCtx
8657
+ && typeof(process.gina.PROXY_HOSTNAME) != 'undefined'
8658
+ ) {
8659
+ route.proxy_hostname = process.gina.PROXY_HOSTNAME;
8660
+ route.proxy_host = route.proxy_hostname.replace(/^(https|http)\:\/\//, '');
8661
+ }
8662
+
8608
8663
  if ( /\,/.test(route.url) ) {
8609
8664
  if ( typeof(route.urlIndex) != 'undefined' ) {
8610
8665
  urlIndex = route.urlIndex; // set by checkRouteParams(route, params)
@@ -8617,7 +8672,7 @@ function Routing() {
8617
8672
  // to prevent having a folder.
8618
8673
  // eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
8619
8674
  if ( /\/$/.test(route.url) && route.url != '/' )
8620
- route.url = route.url.substr(0, route.url.length-1);
8675
+ route.url = route.url.substring(0, route.url.length-1);
8621
8676
 
8622
8677
  // Completeting url with extra params e.g.: ?param1=val1&param2=val2
8623
8678
  if ( /GET/i.test(route.method) && typeof(params) != 'undefined' ) {
@@ -8674,18 +8729,30 @@ function Routing() {
8674
8729
  }
8675
8730
 
8676
8731
  var wroot = this.webroot || urlProps.webroot
8677
- , hostname = this.hostname || urlProps.hostname
8678
- , path = this.url
8732
+ , hostname = ''+this.hostname || ''+urlProps.hostname
8733
+ , path = ''+this.url
8679
8734
  ;
8735
+ if (this.isProxyHost) {
8736
+ hostname = ''+this.proxy_hostname;
8737
+ }
8738
+
8739
+ this.url = (
8740
+ typeof(ignoreWebRoot) != 'undefined'
8741
+ && /^true$/i.test(ignoreWebRoot)
8742
+ ) ? path.replace( new RegExp('^'+ wroot), '/') : path.replace( new RegExp('^('+wroot +'|\/$)'), wroot);
8743
+
8744
+ // this.url = (
8745
+ // typeof(ignoreWebRoot) != 'undefined'
8746
+ // && /^true$/i.test(ignoreWebRoot)
8747
+ // ) ? path.replace( new RegExp('\/'+ wroot), '/') : path;
8680
8748
 
8681
- this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
8682
8749
 
8683
8750
  return hostname + this.url
8684
8751
  };
8685
8752
 
8686
8753
  /**
8687
8754
  * request current url
8688
- *
8755
+ * Attention: You should first try without an authentification middleware
8689
8756
  *
8690
8757
  *
8691
8758
  * @param {boolean} [ignoreWebRoot]
@@ -8710,6 +8777,10 @@ function Routing() {
8710
8777
  , url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : this.url || _this.url
8711
8778
  ;
8712
8779
 
8780
+ if ( /^\//.test(url) ) {
8781
+ url = hostname + url;
8782
+ }
8783
+
8713
8784
  var scheme = ( /^https/.test(hostname) ) ? 'https' : 'http';
8714
8785
 
8715
8786
  if (isGFFCtx) {
@@ -8792,12 +8863,13 @@ function Routing() {
8792
8863
  return route
8793
8864
  };
8794
8865
 
8866
+ // TODO - Remove this : deprecated && not used
8795
8867
  var getFormatedRoute = function(route, url, hash) {
8796
8868
  // fix url in case of empty param value allowed by the routing rule
8797
8869
  // to prevent having a folder.
8798
8870
  // eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
8799
8871
  if ( /\/$/.test(url) && url != '/' )
8800
- url = url.substr(0, url.length-1);
8872
+ url = url.substring(0, url.length-1);
8801
8873
  // adding hash if found
8802
8874
  if (hash)
8803
8875
  url += hash;
@@ -8822,12 +8894,13 @@ function Routing() {
8822
8894
  /**
8823
8895
  * Get route by url
8824
8896
  * N.B.: this will only work with rules declared with `GET` method property
8897
+ * ATTENTION !!! Not fully working for frontend because of unresolved promises !!!!
8825
8898
  *
8826
8899
  * @function getRouteByUrl
8827
8900
  *
8828
8901
  * @param {string} url e.g.: /webroot/some/url/path or http
8829
8902
  * @param {string} [bundle] targeted bundle
8830
- * @param {string} [method] request method (GET|PUT|PUT|DELETE) - GET is set by default
8903
+ * @param {string} [method] 2nd or 3rd - request method (GET|PUT|PUT|DELETE) - GET is set by default
8831
8904
  * @param {object} [request]
8832
8905
  * @param {boolean} [isOverridinMethod] // will replace request.method by the provided method - Used for redirections
8833
8906
  *
@@ -8922,6 +8995,9 @@ function Routing() {
8922
8995
  params: {},
8923
8996
  url: url
8924
8997
  };
8998
+ if (bundle) {
8999
+ request.bundle = bundle;
9000
+ }
8925
9001
  } else {
8926
9002
 
8927
9003
  var gnaCtx = getContext('gina');
@@ -9009,11 +9085,8 @@ function Routing() {
9009
9085
  // normal case
9010
9086
  //Parsing for the right url.
9011
9087
  try {
9012
-
9013
9088
  isRoute = self.compareUrls(params, routing[name].url, request);
9014
-
9015
9089
  if (isRoute.past) {
9016
-
9017
9090
  route = JSON.clone(routing[name]);
9018
9091
  route.name = name;
9019
9092
 
@@ -9035,7 +9108,7 @@ function Routing() {
9035
9108
  url == '#'
9036
9109
  && /GET/i.test(method)
9037
9110
  && isMethodProvidedByDefault
9038
- || /^404\:/.test(url)
9111
+ || /^404\:/.test(url)
9039
9112
  ) {
9040
9113
  url = location.pathname;
9041
9114
  urlHasChanged = true;
@@ -9125,7 +9198,7 @@ function Routing() {
9125
9198
  // to prevent having a folder.
9126
9199
  // eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
9127
9200
  if ( /\/$/.test(url) && url != '/' )
9128
- url = url.substr(0, url.length-1);
9201
+ url = url.substring(0, url.length-1);
9129
9202
  // adding hash if found
9130
9203
  if (hash)
9131
9204
  url += hash;
@@ -9152,6 +9225,12 @@ function Routing() {
9152
9225
  }
9153
9226
 
9154
9227
  if ((typeof (module) !== 'undefined') && module.exports) {
9228
+
9229
+ // Loading logger
9230
+ if ( typeof(console.err) == 'undefined' ) {
9231
+ console = require('../../logger');
9232
+ }
9233
+
9155
9234
  // Publish as node.js module
9156
9235
  module.exports = Routing()
9157
9236
  } else if (typeof (define) === 'function' && define.amd) {
@@ -9689,7 +9768,7 @@ define("utils/effects", function(){});
9689
9768
 
9690
9769
  /*
9691
9770
  * This file is part of the gina package.
9692
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
9771
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
9693
9772
  *
9694
9773
  * For the full copyright and license information, please view the LICENSE
9695
9774
  * file that was distributed with this source code.
@@ -10002,7 +10081,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10002
10081
  * @param {object} [ data ] // from request
10003
10082
  * @param {string} [ formId ]
10004
10083
  * */
10005
- function ValidatorPlugin(rules, data, formId) {
10084
+ function ValidatorPlugin(rules, data, formId) {
10006
10085
 
10007
10086
  this.plugin = 'validator';
10008
10087
 
@@ -10112,6 +10191,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10112
10191
  'eventData' : {},
10113
10192
  'target' : (isGFFCtx) ? document : null, // by default
10114
10193
  'cachedErrors' : {},
10194
+ 'lastFocused' : (isGFFCtx) ? [] : null,
10115
10195
  'binded' : false,
10116
10196
  'unbinded' : false,
10117
10197
  'withUserBindings' : false,
@@ -10137,16 +10217,16 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10137
10217
  * */
10138
10218
  var xhr = null;
10139
10219
  var xhrOptions = {
10140
- 'url' : '',
10141
- 'method' : 'GET',
10142
- 'isSynchrone' : false,
10143
- 'withCredentials': false,
10144
- 'headers' : {
10220
+ 'url' : '',
10221
+ 'method' : 'GET',
10222
+ 'isSynchrone' : false,
10223
+ 'withCredentials' : false,
10224
+ 'withRateLimit' : true,
10225
+ 'headers' : {
10145
10226
  // to upload, use `multipart/form-data` for `enctype`
10146
10227
  'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
10147
10228
  // cross domain is enabled by default, but you need to setup `Access-Control-Allow-Origin`
10148
10229
  'X-Requested-With': 'XMLHttpRequest' // in case of cross domain origin
10149
-
10150
10230
  }
10151
10231
  };
10152
10232
 
@@ -10213,6 +10293,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10213
10293
  var setOptions = function (options) {
10214
10294
  options = merge(options, xhrOptions);
10215
10295
  xhrOptions = options;
10296
+
10297
+ return this;
10216
10298
  }
10217
10299
 
10218
10300
 
@@ -10392,22 +10474,34 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10392
10474
  }
10393
10475
 
10394
10476
  var refreshWarning = function($el) {
10395
- var formId = $el.form.getAttribute('id');
10477
+ var formId = $el.form.id || $el.form.getAttribute('id');
10478
+ var elName = $el.name || $el.form.getAttribute('name');
10479
+ var currentElName = document.activeElement.name;
10396
10480
  if ( /^true$/i.test(instance.$forms[formId].isValidating) ) {
10397
10481
  return;
10398
10482
  }
10399
10483
 
10400
- var $parent = $el.parentNode, isErrorMessageHidden = false;
10401
- var $children = $parent.getElementsByTagName('div');
10484
+ var $parent = $el.parentNode
10485
+ , isErrorMessageHidden = false
10486
+ , $children = $parent.getElementsByTagName('div')
10487
+ ;
10402
10488
 
10403
- if ( /form\-item\-warning/.test($parent.className) ) {
10489
+ if ( /form\-item\-warning/.test($parent.className) && currentElName != elName ) {
10404
10490
  $parent.className = $parent.className.replace(/form\-item\-warning/, 'form-item-error');
10405
10491
 
10406
- } else if (/form\-item\-error/.test($parent.className) ) {
10492
+ } else if (/form\-item\-error/.test($parent.className) && currentElName == elName ) {
10407
10493
  $parent.className = $parent.className.replace(/form\-item\-error/, 'form-item-warning');
10408
10494
  isErrorMessageHidden = true;
10409
10495
  }
10410
10496
 
10497
+ // Fixed on 2025-03-16
10498
+ if (
10499
+ /^true$/i.test(instance.$forms[formId].isValidating)
10500
+ && !isErrorMessageHidden
10501
+ ) {
10502
+ return;
10503
+ }
10504
+
10411
10505
 
10412
10506
  for (var c = 0, cLen = $children.length; c<cLen; ++c) {
10413
10507
  if ( /form\-item\-error\-message/.test($children[c].className) ) {
@@ -10429,7 +10523,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10429
10523
  * @param {object} $form - Target (HTMLFormElement)
10430
10524
  * @param {object} errors
10431
10525
  * @param {object|null} data
10432
- * @param {object|null} [fileName]
10526
+ * @param {string|null} [fileName]
10433
10527
  */
10434
10528
  var liveCheckErrors = {}; // Per Form & Per Element
10435
10529
  var handleErrorsDisplay = function($form, errors, data, fieldName) {
@@ -10460,7 +10554,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10460
10554
  if ( typeof(liveCheckErrors[formId]) == 'undefined') {
10461
10555
  liveCheckErrors[formId] = {};
10462
10556
  }
10463
- if (errors.count() > 0) {
10557
+ if (errors && errors.count() > 0) {
10464
10558
  // reset field name
10465
10559
  liveCheckErrors[formId][fieldName] = {};
10466
10560
  // override
@@ -10470,8 +10564,29 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10470
10564
  }
10471
10565
  errors = liveCheckErrors[formId];
10472
10566
  // only if the form has not been sent yet
10473
- if (!instance.$forms[formId].sent || instance.$forms[formId].isValidating) {
10567
+ if (
10568
+ !instance.$forms[formId].sent
10569
+ ||
10570
+ instance.$forms[formId].isValidating
10571
+ ) {
10474
10572
  isWarning = true;
10573
+ // Fixed on 2025-03-16
10574
+ var lastFocused = instance.$forms[formId].lastFocused;
10575
+ // console.debug('fieldName: '+ fieldName + '\nactiveElement: '+ document.activeElement.getAttribute('name') +'\nlastFocused: ', lastFocused);
10576
+ if (
10577
+ lastFocused.length > 0
10578
+ && typeof(lastFocused[1]) != 'undefined'
10579
+ && lastFocused[1].name == fieldName
10580
+ ||
10581
+ lastFocused.length > 0
10582
+ && !lastFocused[1]
10583
+ && document.activeElement.getAttribute('name') != lastFocused[0].name
10584
+ ||
10585
+ document.activeElement.getAttribute('name') != fieldName
10586
+ ) {
10587
+ isWarning = false;
10588
+ }
10589
+ // console.debug('isWarning: '+isWarning);
10475
10590
  }
10476
10591
  } else {
10477
10592
  if ( typeof(liveCheckErrors[formId][fieldName]) != 'undefined') {
@@ -10535,7 +10650,11 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10535
10650
 
10536
10651
  if (!name) continue;
10537
10652
 
10538
- if ( typeof(errors[name]) != 'undefined' && !/(form\-item\-error|form\-item\-warning)/.test($parent.className) ) {
10653
+ if (
10654
+ errors
10655
+ && typeof(errors[name]) != 'undefined'
10656
+ && !/(form\-item\-error|form\-item\-warning)/.test($parent.className)
10657
+ ) {
10539
10658
 
10540
10659
  if (isWarning) {
10541
10660
  // adding warning class
@@ -10576,7 +10695,24 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10576
10695
 
10577
10696
 
10578
10697
 
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) ) {
10698
+ } else if (
10699
+ errors
10700
+ && typeof(errors[name]) == 'undefined'
10701
+ && /(form\-item\-error|form\-item\-warning)/.test($parent.className)
10702
+ ||
10703
+ errors
10704
+ && typeof(errors[name]) != 'undefined' && errors[name].count() == 0
10705
+ && /(form\-item\-error|form\-item\-warning)/.test($parent.className)
10706
+ ) {
10707
+ // Fixed on 2025-03-10
10708
+ // targeted field must be the active element
10709
+ // if (
10710
+ // document.activeElement.getAttribute('name') != fieldName
10711
+ // && errors.count() > 0
10712
+ // ) {
10713
+ // break
10714
+ // }
10715
+ console.debug('[handleErrorsDisplay] Resetting when not in error');
10580
10716
  // reset when not in error
10581
10717
  // remove child elements
10582
10718
  var $children = $parent.getElementsByTagName('div');
@@ -10590,16 +10726,34 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10590
10726
 
10591
10727
  $parent.className = $parent.className.replace(/(\s+form\-item\-error|form\-item\-error|\s+form\-item\-warning|form\-item\-warning)/, '');
10592
10728
 
10593
- } else if ( typeof(errors[name]) != 'undefined' && errAttr) {
10729
+ } else if (
10730
+ errors.count() > 0
10731
+ && typeof(errors[name]) != 'undefined'
10732
+ && errAttr
10733
+ ) {
10594
10734
  // refreshing already displayed error on msg update
10595
10735
  var $divs = $parent.getElementsByTagName('div');
10596
10736
  for (var d = 0, dLen = $divs.length; d<dLen; ++d) {
10597
- if ($divs[d].className == 'form-item-error-message') {
10737
+ // Fixed on 2025-03-05: className can have more than one !!
10738
+ let foundMessage = $divs[d].className.match("form-item-error-message");
10739
+ if (
10740
+ foundMessage
10741
+ && typeof(foundMessage.length) != 'undefined'
10742
+ && foundMessage.length > 0
10743
+ ) {
10598
10744
 
10599
10745
  $divs[d].parentElement.removeChild($divs[d]);
10600
10746
  $err = document.createElement('div');
10601
10747
  $err.setAttribute('class', 'form-item-error-message');
10602
10748
 
10749
+ // Fixed on 2025-03-09: className cleanup
10750
+ if (
10751
+ !isWarning
10752
+ && /(\s+form\-item\-warning|form\-item\-warning)/.test($parent.className)
10753
+ ) {
10754
+ $parent.className = $parent.className.replace(/(\s+form\-item\-warning|form\-item\-warning)/, ' form-item-error');
10755
+ }
10756
+
10603
10757
  // injecting error messages
10604
10758
  // {
10605
10759
  // field: {
@@ -10624,12 +10778,17 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10624
10778
  }
10625
10779
  }
10626
10780
 
10627
- if ($err && $target.type != 'hidden')
10781
+ if ($err && $target.type != 'hidden') {
10628
10782
  insertAfter($target, $err);
10629
-
10783
+ }
10630
10784
  }
10631
10785
 
10632
- if (typeof(fieldName) != 'undefined' && fieldName === $el.name) break;
10786
+ if (
10787
+ typeof(fieldName) != 'undefined'
10788
+ && fieldName === $el.name
10789
+ ) {
10790
+ break;
10791
+ }
10633
10792
  }
10634
10793
 
10635
10794
 
@@ -10824,7 +10983,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10824
10983
  *
10825
10984
  *
10826
10985
  * @param {object} data - FormData object (https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects)
10827
- * @param {object} [ options ] : { isSynchrone: true, withCredentials: true }
10986
+ * @param {object} [ options ] : { isSynchrone: false, withCredentials: true, withRateLimit: true }
10828
10987
  * */
10829
10988
  var send = function(data, options) {
10830
10989
 
@@ -10836,19 +10995,28 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10836
10995
  var isAttachment = null; // handle download
10837
10996
  var hFormIsRequired = null;
10838
10997
 
10998
+ options = (typeof (options) != 'undefined') ? merge(options, xhrOptions) : xhrOptions;
10999
+
11000
+ // Rate Limit to one request at the time
11001
+ // Attention: this should be an option
11002
+ // the request needs to be completed before another can be made
11003
+ // TODO - Check same url
10839
11004
  if (
10840
- typeof($form.isSending) != 'undefined'
11005
+ /^true$/i.test(options.withRateLimit)
11006
+ && typeof($form.isSending) != 'undefined'
10841
11007
  && /^true$/i.test($form.isSending)
10842
11008
  ||
10843
- typeof($form.sent) != 'undefined'
11009
+ /^true$/i.test(options.withRateLimit)
11010
+ && typeof($form.sent) != 'undefined'
10844
11011
  && /^true$/i.test($form.sent)
10845
11012
  ) {
10846
11013
  return;
10847
11014
  }
11015
+
10848
11016
  instance.$forms[id].isSending = true;
10849
11017
 
10850
11018
 
10851
- options = (typeof (options) != 'undefined') ? merge(options, xhrOptions) : xhrOptions;
11019
+
10852
11020
  // `x-gina-form`definition
10853
11021
  //options.headers['X-Gina-Form-Location'] = gina.config.bundle;
10854
11022
  if ( typeof($form.id) != 'undefined' ) {
@@ -10958,14 +11126,15 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10958
11126
  $form.isSending = false;
10959
11127
 
10960
11128
  // limit send trigger to 1 sec to prevent from double clicks
10961
- setTimeout( function onSent() {
10962
- $form.sent = false;
10963
- }, 1000);
11129
+ // setTimeout( function onSent() {
11130
+ // $form.sent = false;
11131
+ // }, 1000); // 1000
10964
11132
 
10965
11133
  // In case the user is also redirecting
10966
11134
  var redirectDelay = (/Google Inc/i.test(navigator.vendor)) ? 50 : 0;
10967
11135
 
10968
- if (xhr.readyState == 2) { // responseType interception
11136
+ // responseType interception
11137
+ if (xhr.readyState == 2) {
10969
11138
  isAttachment = ( /^attachment\;/.test( xhr.getResponseHeader("Content-Disposition") ) ) ? true : false;
10970
11139
  // force blob response type
10971
11140
  if ( !xhr.responseType && isAttachment ) {
@@ -10999,7 +11168,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
10999
11168
  var url = window.URL.createObjectURL(blob);
11000
11169
  a.href = url;
11001
11170
  var contentDisposition = xhr.getResponseHeader("Content-Disposition");
11002
- a.download = contentDisposition.match('\=(.*)')[0].substr(1);
11171
+ a.download = contentDisposition.match('\=(.*)')[0].substring(1);
11003
11172
  //programatically click the link to trigger the download
11004
11173
  a.click();
11005
11174
 
@@ -11018,7 +11187,9 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11018
11187
  size : blob.size
11019
11188
  }
11020
11189
 
11021
- } else { // normal case
11190
+ }
11191
+ // normal case
11192
+ else {
11022
11193
  result = xhr.responseText;
11023
11194
  }
11024
11195
 
@@ -11027,9 +11198,14 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11027
11198
  if ( /\/json/.test( contentType ) ) {
11028
11199
  result = JSON.parse(xhr.responseText);
11029
11200
 
11030
- if ( typeof(result.status) == 'undefined' )
11201
+ if ( typeof(result.status) == 'undefined' ) {
11031
11202
  result.status = xhr.status;
11032
-
11203
+ }
11204
+ // Fixed on 2025-03-13 Allowing toolbar to ubdate after xhr results
11205
+ // TODO - Allowing to revert to previously loaded data via a close button
11206
+ if (gina && envIsDev && typeof(window.ginaToolbar) && typeof(result) != 'undefined') {
11207
+ window.ginaToolbar.update('data-xhr', result);
11208
+ }
11033
11209
  }
11034
11210
 
11035
11211
  if ( /\/html/.test( contentType ) ) {
@@ -11260,6 +11436,13 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11260
11436
  // } else { // external - need to remove `X-Requested-With` from `options.headers`
11261
11437
  result.location = (!/^http/.test(result.location) && !/^\//.test(result.location) ) ? location.protocol +'//' + result.location : result.location;
11262
11438
  //}
11439
+ // isProxyHost ?
11440
+ if (
11441
+ result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:\/\//, '').split(/\//g)[0] == gina.config.hostname
11442
+ && gina.config.hostname == window.location.host
11443
+ ) {
11444
+ result.location = location.protocol + result.location.replace(/^http(.*)\:\d+/, '$1').replace(/^\:/, '')
11445
+ }
11263
11446
 
11264
11447
  return setTimeout(() => {
11265
11448
  window.location.href = result.location;
@@ -11889,7 +12072,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
11889
12072
  filesToBeRemoved.push(childNodeFilePreview);
11890
12073
  }
11891
12074
  } else {
11892
- let file = childNodes[i].src.substr(childNodes[i].src.lastIndexOf('/')+1);
12075
+ let file = childNodes[i].src.substring(childNodes[i].src.lastIndexOf('/')+1);
11893
12076
  childNodeFile = file;
11894
12077
  filesToBeRemoved.push(childNodeFile);
11895
12078
  }
@@ -12325,7 +12508,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
12325
12508
  for (let m = 0, mLen = mergingRules.length; m < mLen; m++) {
12326
12509
  if ( re.test(mergingRules[m]) ) {
12327
12510
  let tmpStr = JSON.stringify(rule);
12328
- tmpStr = tmpStr.substr(1, tmpStr.length-1);// removing ->{ ... }<-
12511
+ tmpStr = tmpStr.substring(1, tmpStr.length-1);// removing ->{ ... }<-
12329
12512
  // is last ?
12330
12513
  if (m < mLen-1) {
12331
12514
  tmpStr += ','
@@ -13092,7 +13275,9 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13092
13275
 
13093
13276
  var processEvent = function() {
13094
13277
 
13095
- console.debug('processing: ' + event.target.name+ '/'+ event.target.id);
13278
+ if ( !/^(password)$/i.test(event.target.type) ) {
13279
+ console.debug('processing: ' + event.target.name+ '/'+ event.target.id);
13280
+ }
13096
13281
 
13097
13282
  // Do not validate `onChange` if `input value` === `orignal value`
13098
13283
  // Or else, you will get an endless loop
@@ -13110,7 +13295,6 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13110
13295
  } else {
13111
13296
  handleErrorsDisplay(event.target.form, errors, null, event.target.name);
13112
13297
  }
13113
- //return cancelEvent(event);
13114
13298
  }
13115
13299
 
13116
13300
 
@@ -13120,7 +13304,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13120
13304
 
13121
13305
  instance.$forms[event.target.form.getAttribute('id')].isValidating = true;
13122
13306
  validate(event.target, localField, $localField, $form.rules, function onLiveValidation(result){
13123
- instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
13307
+ // instance.$forms[event.target.form.getAttribute('id')].isValidating = false;
13124
13308
  //console.debug('validation on processEvent(...) ', result);
13125
13309
 
13126
13310
  var isFormValid = result.isValid();
@@ -13146,8 +13330,10 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13146
13330
  instance.$forms[formId].isValidating = true;
13147
13331
  validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
13148
13332
  instance.$forms[formId].isValidating = false;
13149
- console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
13333
+ console.debug('['+ formId +'] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
13334
+ // var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
13150
13335
  var isFormValid = gResult.isValid();
13336
+ // var isFormValid = gResult.isValid();
13151
13337
  if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
13152
13338
  // update toolbar
13153
13339
  if (!gina.forms.errors)
@@ -13162,6 +13348,27 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13162
13348
  }
13163
13349
 
13164
13350
 
13351
+ if ( !isFormValid && gResult.error ) {
13352
+ // Fixed on 2025-03-16 - we need past and live errors
13353
+ instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
13354
+ // Fixed on 2025-03-16
13355
+ for (let eField in gResult.error) {
13356
+ refreshWarning($gFields[eField]);
13357
+ handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
13358
+ }
13359
+ }
13360
+ // Fixed on 2025-03-16
13361
+ // Eg.: input select change impacting another element: solve `no more errors`
13362
+ else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
13363
+ // recheck if valid
13364
+ //resetting error display
13365
+ instance.$forms[ formId ].errors = {};
13366
+ console.debug('resetting field: '+ $el.name);
13367
+ liveCheckErrors[formId] = {};
13368
+ // $form.dataset.ginaFormIsResetting = true;
13369
+ handleErrorsDisplay($gForm, {}, null, $el.name);
13370
+ }
13371
+
13165
13372
  updateSubmitTriggerState( $gForm, isFormValid);
13166
13373
 
13167
13374
  once = false;
@@ -13195,13 +13402,16 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13195
13402
  // other inputs & textareas
13196
13403
  else if ( /^focusin\./i.test(event.type) ) {
13197
13404
  if ( /\-error/.test($el.parentNode.className) ) {
13198
- console.debug('#1 you just focusin ....'+$el.id, $el.value);
13405
+ console.debug('#1 you just focusin ....'+$el.id, $el.value, instance.$forms[ $el.form.getAttribute('id') ].isValidating);
13199
13406
  refreshWarning($el);
13200
13407
  }
13201
13408
  }
13202
13409
  else if ( /^focusout\./i.test(event.type) ) {
13203
13410
  if ( /\-warning/.test($el.parentNode.className) ) {
13204
13411
  console.debug('#1 you just focusout ....'+$el.id, $el.value);
13412
+ // Removed on 2025-03-16
13413
+ instance.$forms[ $el.form.getAttribute('id') ].isValidating = false;
13414
+
13205
13415
  refreshWarning($el);
13206
13416
  // in case error context is changed by another task
13207
13417
  handleErrorsDisplay($el.form, instance.$forms[ $el.form.getAttribute('id') ].errors, null, $el.name);
@@ -13210,12 +13420,86 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13210
13420
  else if ( /^keyup\./i.test(event.type) ) {
13211
13421
  $el.ginaFormValidatorTestedValue = $el.value;
13212
13422
  liveCheckTimer = setTimeout( function onLiveCheckTimer() {
13213
- // do not trigger for copy/paste event
13214
- if ( ['91', '17'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
13423
+ // Do not trigger for copy/paste events
13424
+ if ( ['91', '17', '16'].indexOf(''+event.keyCode) > -1 && keyboardMapping.count() == 0) {
13215
13425
  //console.debug('mapping ', keyboardMapping);
13216
13426
  return;
13217
13427
  }
13218
- console.debug(' keyup ('+ event.keyCode +') .... '+$el.id, $el.value, ' VS ',$el.ginaFormValidatorTestedValue + '(old)');
13428
+
13429
+ // Fixed on 2025-03-16:
13430
+ // Treat TAB as focus in/out
13431
+ // if ( ['9'].indexOf(''+event.keyCode) > -1 ) {
13432
+
13433
+ // console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"');
13434
+ // var $gForm = event.target.form, gFields = null, $gFields = null, gRules = null;
13435
+ // var gValidatorInfos = getFormValidationInfos($gForm, rules);
13436
+ // gFields = gValidatorInfos.fields;
13437
+ // $gFields = gValidatorInfos.$fields;
13438
+ // var formId = $gForm.getAttribute('id');
13439
+ // gRules = instance.$forms[formId].rules;
13440
+ // // Don't be tempted to revome fields that has already been validated
13441
+ // instance.$forms[formId].isValidating = true;
13442
+ // validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
13443
+ // instance.$forms[formId].isValidating = false;
13444
+ // console.debug('['+ formId +'] [9] onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult, gFields);
13445
+ // var isFormValid = ( gResult.isValid() && instance.$forms[formId].errors && instance.$forms[formId].errors.count() == 0 )? true : false;
13446
+ // // var isFormValid = gResult.isValid();
13447
+ // if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
13448
+ // // update toolbar
13449
+ // if (!gina.forms.errors)
13450
+ // gina.forms.errors = {};
13451
+
13452
+ // var objCallback = {
13453
+ // id : formId,
13454
+ // errors : gResult.error || {}
13455
+ // };
13456
+
13457
+ // window.ginaToolbar.update('forms', objCallback);
13458
+ // }
13459
+
13460
+
13461
+ // if ( !isFormValid && gResult.error ) {
13462
+ // // Fixed on 2025-03-16 - we need past and live errors
13463
+ // instance.$forms[ $el.form.getAttribute('id') ].errors = merge(result.error, gResult.error);
13464
+ // // Fixed on 2025-03-16
13465
+ // for (let eField in instance.$forms[ $el.form.getAttribute('id') ].errors) {
13466
+ // refreshWarning($gFields[eField]);
13467
+ // handleErrorsDisplay($gForm, instance.$forms[ $el.form.getAttribute('id') ].errors, gResult.data, eField);
13468
+ // }
13469
+ // }
13470
+ // // Fixed on 2025-03-16
13471
+ // // Eg.: input select change impacting another element: solve `no more errors`
13472
+ // else if ( instance.$forms[formId].errors && !instance.$forms[formId].errors.count() ) {
13473
+ // // recheck if valid
13474
+ // //resetting error display
13475
+ // instance.$forms[ formId ].errors = {};
13476
+ // console.debug('resetting field: '+ $el.name);
13477
+ // liveCheckErrors[formId] = {};
13478
+ // // $form.dataset.ginaFormIsResetting = true;
13479
+ // handleErrorsDisplay($gForm, {}, null, $el.name);
13480
+ // }
13481
+
13482
+ // updateSubmitTriggerState( $gForm, isFormValid);
13483
+
13484
+ // once = false;
13485
+ // });
13486
+ // // var $previeousEl = document.getElementById(instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id);
13487
+ // // var errors = instance.$forms[ $previeousEl.form.getAttribute('id') ].errors;
13488
+ // // var isFormValid = (!errors[$previeousEl.name]) ? true : false;
13489
+ // // console.debug('[TAB] you just focusout from "'+ instance.$forms[ $el.form.getAttribute('id') ].lastFocused[1].id +'" to "'+ $el.id +'"', "errors: ", errors);
13490
+ // // if (errors && errors.count() > 0 ) {
13491
+ // // instance.$forms[ $previeousEl.form.getAttribute('id') ].isValidating = false;
13492
+ // // isFormValid = false;
13493
+ // // }
13494
+ // // refreshWarning($previeousEl);
13495
+ // // // // in case error context is changed by another task
13496
+ // // handleErrorsDisplay($previeousEl.form, errors, null, $previeousEl.name);
13497
+ // // updateSubmitTriggerState( $el.form, isFormValid);
13498
+ // return;
13499
+ // }
13500
+
13501
+
13502
+ console.debug('[A]['+keyboardMapping.count()+'] keyup ('+ event.keyCode +') .... '+$el.id, $el.value, ' VS ',$el.ginaFormValidatorTestedValue + '(old)');
13219
13503
  processEvent();
13220
13504
  }, 1000);
13221
13505
  }
@@ -13315,16 +13599,42 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13315
13599
  //console.debug('pressed: '+ e.key+'('+ e.keyCode+')', ' S:'+posStart, ' E:'+posEnd, ' MAP: '+ JSON.stringify(keyboardMapping));
13316
13600
  switch (e.keyCode) {
13317
13601
  case 46: //Delete
13602
+ if (posStart != posEnd) {
13603
+ $_el.value = str.substring(0, posStart) + str.substring(posEnd);
13604
+ if (posStart == 0) {
13605
+ $_el.value = str.substring(posEnd+1);
13606
+ }
13607
+ } else if (posStart == 0) {
13608
+ $_el.value = str.substring(posStart+1);
13609
+ } else {
13610
+ $_el.value = str.substring(0, posStart) + str.substring(posEnd+1);
13611
+ }
13612
+
13613
+ e.currentTarget.setAttribute('readonly', 'readonly');
13614
+ setTimeout(() => {
13615
+ $_el.removeAttribute('readonly');
13616
+ setTimeout(() => {
13617
+ if (posStart != posEnd) {
13618
+ setCaretToPos($_el, posStart);
13619
+ } else if (posStart == 0) {
13620
+ setCaretToPos($_el, posStart);
13621
+ } else {
13622
+ setCaretToPos($_el, posStart);
13623
+ }
13624
+ }, 0)
13625
+
13626
+ }, 0);
13627
+ break
13318
13628
  case 8: //Backspace
13319
13629
  if (posStart != posEnd) {
13320
- $_el.value = str.substr(0, posStart) + str.substr(posEnd);
13630
+ $_el.value = str.substring(0, posStart) + str.substring(posEnd);
13321
13631
  if (posStart == 0) {
13322
- $_el.value = str.substr(posEnd);
13632
+ $_el.value = str.substring(posEnd);
13323
13633
  }
13324
13634
  } else if (posStart == 0) {
13325
13635
  $_el.value = str.substring(posStart+1);
13326
13636
  } else {
13327
- $_el.value = str.substr(0, posStart-1) + str.substr(posEnd);
13637
+ $_el.value = str.substring(0, posStart-1) + str.substring(posEnd);
13328
13638
  }
13329
13639
 
13330
13640
  e.currentTarget.setAttribute('readonly', 'readonly');
@@ -13362,9 +13672,9 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13362
13672
  }
13363
13673
  break;
13364
13674
  // Shortcuts
13365
- case 17: //CTRL
13366
- case 91: //CMD
13367
- console.debug("CMD hit");
13675
+ case 17: // CTRL
13676
+ case 91: // CMD
13677
+ console.debug("CMD, CTRL hit");
13368
13678
  e.preventDefault();
13369
13679
  break;
13370
13680
  case 67: // to handle CMD+C (copy)
@@ -13411,15 +13721,18 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13411
13721
  }
13412
13722
  default:
13413
13723
  // Replace selection
13724
+ if (e.key.length > 1) {
13725
+ break;
13726
+ }
13414
13727
  if (posStart != posEnd) {
13415
- $_el.value = str.substr(0, posStart) + e.key;
13728
+ $_el.value = str.substring(0, posStart) + e.key;
13416
13729
  if (posEnd-1 < str.length) {
13417
13730
  $_el.value += str.substring(posEnd)
13418
13731
  }
13419
13732
  } else if (posStart == 0) {
13420
13733
  $_el.value = e.key + str.substring(posStart);
13421
13734
  } else {
13422
- $_el.value = str.substr(0, posStart) + e.key + str.substr(posEnd);
13735
+ $_el.value = str.substring(0, posStart) + e.key + str.substring(posEnd);
13423
13736
  }
13424
13737
  e.currentTarget.setAttribute('readonly', 'readonly');
13425
13738
  // Force restore last caret position
@@ -13561,24 +13874,53 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13561
13874
  }
13562
13875
 
13563
13876
  /**
13564
- * reBindForm - This is a WIP
13877
+ * reBindForm
13878
+ * Allows form rebinding: it is like reseting validation
13565
13879
  *
13566
- * @param {object} HTMLElement
13567
- * @param {object} rules
13568
- * @returns {object} formValidatorInstance
13880
+ * E.g.:
13881
+ * $validator
13882
+ * .getFormById('my-form-id')
13883
+ * .reBind();
13884
+ *
13885
+ * @param {string} [formId]
13886
+ * @param {string} [rules]
13887
+ * @param {callback} [cb]
13569
13888
  */
13570
- var reBindForm = function($target, rules, cb) {
13571
- // Unbind form
13572
- var formInstance = unbindForm($target);
13889
+ var reBindForm = function(formId, rules, cb) {
13890
+ var $form = null
13891
+ , _id = null
13892
+ ;
13893
+ if (
13894
+ typeof(this.target) != 'undefined'
13895
+ && /FORM/i.test(this.target.tagName)
13896
+ ) {
13897
+ _id = formId = this.target.getAttribute('id')
13898
+ } else if ( /string/i.test(typeof(formId)) ) {
13899
+ _id = formId
13900
+ }
13901
+
13902
+ if ( typeof(instance.$forms[_id]) != 'undefined') {
13903
+ $form = instance.$forms[_id];
13904
+ } else {
13905
+ throw new Error('form instance `'+ _id +'` not found');
13906
+ }
13907
+
13573
13908
  // reset errors
13574
- //resetErrorsDisplay(formInstance.id);
13909
+ resetErrorsDisplay(_id);
13910
+ // Unbind form
13911
+ unbindForm($form.target);
13575
13912
  // Bind
13576
- bindForm(formInstance.target, rules);
13913
+ if ( typeof(rule) != 'undefined' ) {
13914
+ bindForm($form.target, rules);
13915
+ } else {
13916
+ bindForm($form.target);
13917
+ }
13577
13918
 
13578
13919
  if ( cb ) {
13579
- return cb(formInstance);
13920
+ return cb($form);
13580
13921
  }
13581
- return formInstance;
13922
+
13923
+ return $form;
13582
13924
  }
13583
13925
 
13584
13926
  var unbindForm = function($target) {
@@ -13596,7 +13938,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13596
13938
 
13597
13939
  } else if ( typeof($target.target) != 'undefined' ) {
13598
13940
  $form = $target;
13599
- _id = $form.id;
13941
+ _id = ( $target.getAttribute && $target.getAttribute('id') ) ? $form.getAttribute('id') : $form.id;
13600
13942
  } else {
13601
13943
  throw new Error('Validator::unbindForm($target): `$target` must be a DOM element\n'+err.stack )
13602
13944
  }
@@ -13635,7 +13977,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13635
13977
  // submit buttons
13636
13978
  $elTMP = $form.target.getElementsByTagName('button');
13637
13979
  if ( $elTMP.length > 0 ) {
13638
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
13980
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13639
13981
  // if button is != type="submit", you will need to provide : data-gina-form-submit
13640
13982
  // TODO - On button binding, you can then provide data-gina-form-action & data-gina-form-method
13641
13983
  $els.push($elTMP[i])
@@ -13645,7 +13987,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13645
13987
  // submit links
13646
13988
  $elTMP = $form.target.getElementsByTagName('a');
13647
13989
  if ( $elTMP.length > 0 ) {
13648
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
13990
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13649
13991
  $els.push($elTMP[i])
13650
13992
  }
13651
13993
  }
@@ -13701,7 +14043,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13701
14043
  // textarea
13702
14044
  $elTMP = $form.target.getElementsByTagName('textarea');
13703
14045
  if ( $elTMP.length > 0 ) {
13704
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
14046
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13705
14047
  $els.push( $elTMP[i] )
13706
14048
  }
13707
14049
  }
@@ -13710,7 +14052,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13710
14052
  // forms inside main form
13711
14053
  $elTMP = $form.target.getElementsByTagName('form');
13712
14054
  if ( $elTMP.length > 0 ) {
13713
- for(let i = 0, len = $elTMP.length; i < len; ++i) {
14055
+ for (let i = 0, len = $elTMP.length; i < len; ++i) {
13714
14056
  $els.push( $elTMP[i] )
13715
14057
  }
13716
14058
  }
@@ -13795,8 +14137,10 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13795
14137
  /**
13796
14138
  * bindForm
13797
14139
  *
13798
- * @param {object} $target - DOM element
13799
- * @param {object} [customRule]
14140
+ * @param {object} [$target] - DOM element
14141
+ * @param {object|string} [customRule]
14142
+ *
14143
+ * @return {object} bindedForm
13800
14144
  * */
13801
14145
  var bindForm = function($target, customRule) {
13802
14146
 
@@ -13805,23 +14149,32 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
13805
14149
  , rules = ( typeof(local.rules.count() > 0 ) ) ? local.rules : instance.rules
13806
14150
  ;
13807
14151
 
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');
14152
+ if (
14153
+ typeof($target) == 'undefined'
14154
+ && typeof(this.target) != 'undefined'
14155
+ && /FORM/i.test(this.target.tagName)
14156
+ ||
14157
+ !/object/i.test( typeof($target) )
14158
+ ) {
14159
+ _id = this.target.id || this.target.getAttribute('id');
14160
+ } else if ( /string/i.test(typeof($target)) ) {
14161
+ _id = $target
14162
+ } else {
14163
+ _id = $target.getAttribute('id')
14164
+ }
13815
14165
 
14166
+ try {
14167
+ if ( typeof(instance.$forms[_id]) != 'undefined') {
14168
+ $form = instance.$forms[_id];
14169
+ if ( typeof($form.target) == 'undefined' ) {
14170
+ throw new Error('Validator::bindForm($target, customRule): `$target` must be a DOM element\n');
14171
+ }
14172
+ $target = $form.target;
13816
14173
  } else {
13817
- throw new Error('Validator::bindForm($target, customRule): `$target` must be a DOM element\n'+err.stack )
14174
+ throw new Error('form instance `'+ _id +'` not found');
13818
14175
  }
13819
14176
  } 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
14177
+ throw new Error('Validator::bindForm($target, customRule) could not bind form `'+ $target +'`\n'+err.stack );
13825
14178
  }
13826
14179
 
13827
14180
  console.debug('binding for: '+ _id);
@@ -14127,7 +14480,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
14127
14480
  } else if ( /img/i.test($els[i].tagName) ) {
14128
14481
  $img = $els[i];
14129
14482
  deleteLinkId = uploadTriggerId + '-'+index+'-delete-trigger';
14130
- let file = $img.src.substr($img.src.lastIndexOf('/')+1);
14483
+ let file = $img.src.substring($img.src.lastIndexOf('/')+1);
14131
14484
  $uploadTrigger.customFiles.push({
14132
14485
  name: file,
14133
14486
  deleteLinkId: deleteLinkId
@@ -14519,7 +14872,16 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
14519
14872
  validate($gForm, gFields, $gFields, gRules, function onSilentGlobalLiveValidation(gResult){
14520
14873
  instance.$forms[formId].isValidating = false;
14521
14874
  console.debug('[updateSelect]: onSilentGlobalLiveValidation: '+ gResult.isValid(), gResult);
14875
+ // Fixed on 2025-03-16
14522
14876
  var isFormValid = gResult.isValid();
14877
+ if (!isFormValid) {
14878
+ instance.$forms[formId].errors = gResult.error;
14879
+ for (let eField in gResult.error) {
14880
+ // refreshWarning($gFields[eField]);
14881
+ handleErrorsDisplay($gForm, gResult.error, gResult.data, eField);
14882
+ }
14883
+ }
14884
+
14523
14885
  updateSubmitTriggerState( $gForm, isFormValid);
14524
14886
  once = false;
14525
14887
  })
@@ -15113,6 +15475,25 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15113
15475
  if (gina.events[_evt]) {
15114
15476
  cancelEvent(event);
15115
15477
 
15478
+ // Fixed on 2025-03-05 - "last focus" vs "current focus"
15479
+ // To get active element: document.activeElement
15480
+ var formId = event.target.form.getAttribute('id') || event.currentTarget.getAttribute('id');
15481
+ var lastFocused = {
15482
+ id : $el.id,
15483
+ name: $el.name
15484
+ };
15485
+ if (!instance.$forms[formId].lastFocused.length) {
15486
+ instance.$forms[formId].lastFocused[0] = lastFocused;
15487
+ } else {
15488
+ instance.$forms[formId].lastFocused.splice(0,0,lastFocused);
15489
+ }
15490
+ lastFocused = ( typeof(instance.$forms[formId].lastFocused[1]) != 'undefined' ) ? instance.$forms[formId].lastFocused[1].id : null;
15491
+
15492
+ // cleanup
15493
+ instance.$forms[formId].lastFocused.splice(2);
15494
+
15495
+ // console.debug('lastFocused: ', lastFocused, ' VS current: ', $el.id);
15496
+
15116
15497
  triggerEvent(gina, $el, _evt, event.detail);
15117
15498
  }
15118
15499
  });
@@ -15429,7 +15810,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15429
15810
  ;
15430
15811
  $buttonsTMP = $target.getElementsByTagName('button');
15431
15812
  if ( $buttonsTMP.length > 0 ) {
15432
- for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15813
+ for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15433
15814
  if ($buttonsTMP[b].type == 'submit') {
15434
15815
  $buttons.push($buttonsTMP[b])
15435
15816
  }
@@ -15439,7 +15820,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15439
15820
  // binding links
15440
15821
  $buttonsTMP = $target.getElementsByTagName('a');
15441
15822
  if ( $buttonsTMP.length > 0 ) {
15442
- for(let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15823
+ for (let b = 0, len = $buttonsTMP.length; b < len; ++b) {
15443
15824
  if ( $buttonsTMP[b].attributes.getNamedItem('data-gina-form-submit') ) {
15444
15825
  $buttons.push($buttonsTMP[b])
15445
15826
  } else if (
@@ -15696,7 +16077,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
15696
16077
  }
15697
16078
  updateSubmitTriggerState( $form, result.isValid() );
15698
16079
  });
15699
- } else if (!/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) ) {
16080
+ }
16081
+ else if (!/^(true)$/i.test($form.target.dataset.ginaFormLiveCheckEnabled) ) {
15700
16082
  updateSubmitTriggerState( $form , true );
15701
16083
  }
15702
16084
 
@@ -16159,7 +16541,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16159
16541
  if ( !/^form$/i.test($formOrElement.tagName) ) {
16160
16542
  $currentForm = $formOrElement.form;
16161
16543
  }
16162
- var formId = $currentForm.getAttribute('id');
16544
+ var formId = $currentForm.getAttribute('id');
16545
+ var isFormValid = null;
16163
16546
 
16164
16547
  if (
16165
16548
  hasParsedAllRules
@@ -16180,10 +16563,16 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16180
16563
  if ( typeof(instance.$forms[formId].errors) == 'undefined' ) {
16181
16564
  instance.$forms[formId].errors = {}
16182
16565
  }
16566
+ // Fixed on 2025-03-16
16567
+ if ( typeof(cb._errors[field]) != 'undefined' ) {
16568
+ instance.$forms[formId].errors[field] = cb._errors[field];
16569
+ }
16570
+ console.debug('[A] Refreshing warning/error on field '+ field);
16571
+ if (
16572
+ !isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)
16573
+ || d[field].target.value != ''
16183
16574
 
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 != '' ) {
16575
+ ) {
16187
16576
  refreshWarning($allFields[field]);
16188
16577
  handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
16189
16578
  updateSubmitTriggerState( $currentForm, isFormValid);
@@ -16191,8 +16580,9 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16191
16580
 
16192
16581
  if ( envIsDev && isGFFCtx && typeof(window.ginaToolbar) != 'undefined' && window.ginaToolbar ) {
16193
16582
  // update toolbar
16194
- if (!gina.forms.errors)
16583
+ if (!gina.forms.errors) {
16195
16584
  gina.forms.errors = {};
16585
+ }
16196
16586
 
16197
16587
  var objCallback = {
16198
16588
  id : formId,
@@ -16209,13 +16599,13 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16209
16599
  }
16210
16600
 
16211
16601
  // is this the last or the only field to be validated ?
16212
- var needsGlobalReValidation = false, isFormValid = null;
16602
+ var needsGlobalReValidation = false;
16213
16603
  if ( listedFields.length == 1 || listedFields[listedFields.length-1] == field) {
16214
16604
  // trigger end of validation
16215
16605
  // console.debug(field +' is the last element to be validated for formId: '+ formId, cb._errors, instance.$forms[formId].errors);
16216
16606
  isFormValid = ( cb._errors.count() > 0 ) ? false : true;
16217
16607
  if (!isFormValid && /^true|false$/i.test(instance.$forms[formId].isValidating)) {
16218
- //console.debug('should update error display now ', cb._errors);
16608
+ console.debug('[1] Should update error display now ', cb._errors);
16219
16609
  instance.$forms[formId].errors = merge(cb._errors, instance.$forms[formId].errors);
16220
16610
  refreshWarning($allFields[field]);
16221
16611
  handleErrorsDisplay($currentForm, cb._errors, cb._data, field);
@@ -16247,8 +16637,6 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16247
16637
  window.ginaToolbar.update('forms', objCallback);
16248
16638
  }
16249
16639
 
16250
-
16251
-
16252
16640
  handleErrorsDisplay($currentForm, gResult.error, gResult.data, field);
16253
16641
  updateSubmitTriggerState( $currentForm, isFormValid);
16254
16642
  })
@@ -16392,7 +16780,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16392
16780
 
16393
16781
  for (var c in rules) {
16394
16782
  if (!/^\_case\_/.test(c) ) continue;
16395
- if ( typeof(rules[c].conditions) == 'undefined' || Array.isArray(rules[c].conditions) && !rules[c].conditions.length ) continue;
16783
+ if ( typeof(rules[c].conditions) == 'undefined' || Array.isArray(rules[c].conditions) && !rules[c].conditions.length ) continue;
16396
16784
  if ( typeof(rules[c].conditions[0].rules) == 'undefined' ) continue;
16397
16785
 
16398
16786
 
@@ -16574,7 +16962,14 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16574
16962
  // filtering conditions
16575
16963
  for (var _c = 0, _cLen = rules[c].conditions.length; _c < _cLen; ++_c) {
16576
16964
 
16577
- if (rules[c].conditions[_c].case != caseValue) {
16965
+ if (
16966
+ Array.isArray(rules[c].conditions[_c].case)
16967
+ && rules[c].conditions[_c].case.indexOf(caseValue) == -1
16968
+ ||
16969
+ !Array.isArray(rules[c].conditions[_c].case)
16970
+ && rules[c].conditions[_c].case != caseValue
16971
+
16972
+ ) {
16578
16973
  continue;
16579
16974
  }
16580
16975
 
@@ -16719,7 +17114,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16719
17114
  if (
16720
17115
  conditions[c]['case'] === caseValue
16721
17116
  ||
16722
- Array.isArray(conditions[c]['case']) && conditions[c]['case'].indexOf(caseValue) > -1
17117
+ Array.isArray(conditions[c]['case'])
17118
+ && conditions[c]['case'].indexOf(caseValue) > -1
16723
17119
  ||
16724
17120
  /^\//.test(conditions[c]['case'])
16725
17121
  ) {
@@ -16836,8 +17232,6 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16836
17232
  }
16837
17233
  --i;
16838
17234
  }
16839
-
16840
-
16841
17235
  } // EO for
16842
17236
  }
16843
17237
 
@@ -16858,7 +17252,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16858
17252
  }
16859
17253
 
16860
17254
  if (isGFFCtx)
16861
- $fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].substr(0, fieldErrorsAttributes[field].length-1))
17255
+ $fields[field].setAttribute('data-gina-form-errors', fieldErrorsAttributes[field].substring(0, fieldErrorsAttributes[field].length-1))
16862
17256
  }
16863
17257
 
16864
17258
  //calling back
@@ -16929,6 +17323,8 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
16929
17323
  'data' : formatData( _data )
16930
17324
  });
16931
17325
  removeListener(gina, event.target, 'validated.' + event.target.id);
17326
+
17327
+
16932
17328
  return
16933
17329
  }
16934
17330
  });
@@ -17157,6 +17553,11 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17157
17553
  try {
17158
17554
 
17159
17555
  txt = ($json) ? $json.text() : '';
17556
+ // txt = txt
17557
+ // .replace(/:null/gi, ':\"null\"')
17558
+ // .replace(/:true/gi, ':\"true\"')
17559
+ // .replace(/:false/gi, ':\"false\"');
17560
+
17160
17561
  if (txt == '' || txt == 'null' ) {
17161
17562
  // $json.text('Empty')
17162
17563
  $json.text('{}')
@@ -17180,8 +17581,9 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17180
17581
 
17181
17582
  var sectionStr = ( section ) ? ' [ '+ section + ' ] ' : ' ';
17182
17583
  // 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;
17584
+ var _err = 'Could not load ['+ sectionStr +'] json\n' + err.message +'\n'+ err.stack;
17184
17585
  console.error(_err);
17586
+ return;
17185
17587
  // if ($json) {
17186
17588
  // $json.text(_err);
17187
17589
  // } else {
@@ -17806,7 +18208,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17806
18208
 
17807
18209
  foldingStateName += name
17808
18210
  } else {
17809
- foldingStateName = foldingStateName.substr(0, foldingStateName.length-1)
18211
+ foldingStateName = foldingStateName.substring(0, foldingStateName.length-1)
17810
18212
  }
17811
18213
 
17812
18214
  return foldingStateName.trim()
@@ -17843,8 +18245,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17843
18245
  html += '<ul class="gina-toolbar-object">' + parseObject(obj[i], ginaObj[i], id, elIsXHR, elSection) +'</ul>';
17844
18246
  html += '</li>';
17845
18247
  // clear one level
17846
- //id = id.substr(0, id.length - i.length - 1);
17847
- id = id.substr(0, id.length - i.length);
18248
+ //id = id.substring(0, id.length - i.length - 1);
18249
+ id = id.substring(0, id.length - i.length);
17848
18250
  } else if ( Array.isArray(obj[i]) ) {
17849
18251
  //id += i + '-';
17850
18252
  id += '-' + i.replace(/[^A-Za-z0-9_-]/g, '_');
@@ -17855,8 +18257,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17855
18257
  html += '<ul class="gina-toolbar-collection">' + parseCollection(obj[i], ginaObj[i], id, elIsXHR, elSection) +'</ul>';
17856
18258
  html += '</li>';
17857
18259
  // clear one level
17858
- //id = id.substr(0, id.length - i.length - 1);
17859
- id = id.substr(0, id.length - i.length);
18260
+ //id = id.substring(0, id.length - i.length - 1);
18261
+ id = id.substring(0, id.length - i.length);
17860
18262
  } else {
17861
18263
  objType = (ginaObj[i] === null) ? 'null' : typeof(ginaObj[i]);
17862
18264
  if ( objType == 'undefined' ) { // new key declaration added by user
@@ -17913,7 +18315,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17913
18315
  html += '<ul class="gina-toolbar-object">' + parseObject(arr[i], ginaArr[i], id, elIsXHR, elSection) +'</ul>';
17914
18316
  html += '</li>';
17915
18317
  // clear one level
17916
- id = id.substr(0, id.length - i.toString().length - 1);
18318
+ id = id.substring(0, id.length - i.toString().length - 1);
17917
18319
 
17918
18320
  } else if ( Array.isArray(arr[i]) ) {
17919
18321
  //id += i + '-';
@@ -17926,8 +18328,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17926
18328
  html += '<ul class="gina-toolbar-collection">' + parseCollection(arr[i], ginaArr[i], id, elIsXHR, elSection) +'</ul>';
17927
18329
  html += '</li>';
17928
18330
  // clear one level
17929
- //id = id.substr(0, id.length - i.toString().length - 1);
17930
- id = id.substr(0, id.length - i.toString().length);
18331
+ //id = id.substring(0, id.length - i.toString().length - 1);
18332
+ id = id.substring(0, id.length - i.toString().length);
17931
18333
  } else {
17932
18334
  html += '<li class="gina-toolbar-key-value"><span class="gina-toolbar-key">'+ i +':</span> <span class="gina-toolbar-value">'+ arr[i] +'</span></li>';
17933
18335
  }
@@ -17956,16 +18358,16 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17956
18358
  section = i;
17957
18359
  if ( typeof(obj[i]) == 'object' && !Array.isArray(obj[i]) && obj[i] !== null ) { // parse
17958
18360
 
17959
- $parent = $('#gina-toolbar-view-' + id.substr(0, id.length - 1));
18361
+ $parent = $('#gina-toolbar-view-' + id.substring(0, id.length - 1));
17960
18362
  hasParent = ( $parent.length ) ? true : false;
17961
18363
 
17962
18364
  if (!hasParent ) {
17963
18365
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
17964
18366
 
17965
18367
  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>' +
18368
+ var htmlParams = '<div id="gina-toolbar-view-'+ id.substring(0, id.length - 1) +'" class="gina-toolbar-section">' +
18369
+ '<h2 class="gina-toolbar-section-title">'+ id.substring(0, id.length - 1) +'</h2>' +
18370
+ '<ul class="'+ id.substring(0, id.length - 1) +'"></ul>' +
17969
18371
  '</div>';
17970
18372
 
17971
18373
  $('#gina-toolbar-view-html-properties')
@@ -17974,9 +18376,9 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17974
18376
 
17975
18377
  if ( !/^html/.test(id) ) {
17976
18378
 
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>' +
18379
+ var htmlOther = '<div id="gina-toolbar-view-'+ id.substring(0, id.length - 1) +'" class="gina-toolbar-section">' +
18380
+ '<h2 class="gina-toolbar-section-title">'+ id.substring(0, id.length - 1) +'</h2>' +
18381
+ '<ul class="'+ id.substring(0, id.length - 1) +'"></ul>' +
17980
18382
  '</div>';
17981
18383
 
17982
18384
  $html
@@ -17984,36 +18386,36 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
17984
18386
  }/** else { // add to properties section
17985
18387
  $root
17986
18388
  .find('.gina-toolbar-properties')
17987
- .append('ul.' + id.substr(0, id.length - 1))
18389
+ .append('ul.' + id.substring(0, id.length - 1))
17988
18390
  }*/
17989
18391
 
17990
18392
  }
17991
18393
 
17992
- parseView(obj[i], ginaObj[i], id, elIsXHR, $html.find('ul.'+ id.substr(0, id.length - 1)), $root );
18394
+ parseView(obj[i], ginaObj[i], id, elIsXHR, $html.find('ul.'+ id.substring(0, id.length - 1)), $root );
17993
18395
 
17994
18396
  } else {
17995
18397
 
17996
18398
  parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
17997
18399
 
17998
18400
  $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>');
18401
+ .find('ul.'+ id.substring(0, id.length - 1))
18402
+ .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
18403
 
18002
- parseView(obj[i], ginaObj[i], parentId, elIsXHR, $parent.find('ul.'+ id.substr(0, id.length - 1)), $root );
18404
+ parseView(obj[i], ginaObj[i], parentId, elIsXHR, $parent.find('ul.'+ id.substring(0, id.length - 1)), $root );
18003
18405
 
18004
18406
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18005
18407
  }
18006
18408
 
18007
18409
 
18008
18410
  // clear one level
18009
- id = id.substr(0, id.length - i.length - 1);
18411
+ id = id.substring(0, id.length - i.length - 1);
18010
18412
 
18011
18413
 
18012
18414
  } else if ( Array.isArray(obj[i]) ) { // parse collection
18013
18415
 
18014
18416
 
18015
18417
 
18016
- $parent = $('#gina-toolbar-view-' + id.substr(0, id.length - 1));
18418
+ $parent = $('#gina-toolbar-view-' + id.substring(0, id.length - 1));
18017
18419
 
18018
18420
  hasParent = ( $parent.length ) ? true : false;
18019
18421
 
@@ -18023,16 +18425,16 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18023
18425
  parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18024
18426
 
18025
18427
  $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>');
18428
+ //.find('ul.'+ id.substring(0, id.length - 1))
18429
+ .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
18430
 
18029
18431
 
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 );
18432
+ //parentId = parentId.substring(0, parentId.length - 1)+ '-';
18433
+ //parentId = id.substring(0, id.length - i.length - 1);
18434
+ //parseView(obj[i], ginaObj[i], parentId, elIsXHR, $parent.find('ul.'+ parentId.substring(0, parentId.length - 1)), $root );
18033
18435
 
18034
18436
  //id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18035
- //$parent = $('#gina-toolbar-view-' + id.substr(0, id.length - 1));
18437
+ //$parent = $('#gina-toolbar-view-' + id.substring(0, id.length - 1));
18036
18438
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18037
18439
  } else {
18038
18440
 
@@ -18040,8 +18442,8 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18040
18442
  parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18041
18443
 
18042
18444
  $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>');
18445
+ .find('li.'+ id.substring(0, id.length - 1) +' ul')
18446
+ .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
18447
 
18046
18448
  id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18047
18449
 
@@ -18052,7 +18454,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18052
18454
  // id = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18053
18455
  // $root
18054
18456
  // .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>');
18457
+ // .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
18458
 
18057
18459
 
18058
18460
  // } else {
@@ -18061,14 +18463,14 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18061
18463
  // parentId = id + i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18062
18464
 
18063
18465
  // $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>');
18466
+ // .find('li.'+ id.substring(0, id.length - 1) +' ul')
18467
+ // .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
18468
 
18067
18469
  // id += i.replace(/[^A-Za-z0-9_-]/g, '_') + '-';
18068
18470
  // }
18069
18471
 
18070
18472
  // clear one level
18071
- id = id.substr(0, id.length - i.length - 1);
18473
+ id = id.substring(0, id.length - i.length - 1);
18072
18474
  } else {
18073
18475
 
18074
18476
 
@@ -18076,7 +18478,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18076
18478
  objType = (ginaObj[i] === null) ? 'null' : typeof(ginaObj[i]);
18077
18479
  if ( objType == 'undefined' ) { // new key declaration added by user
18078
18480
  if (/\-$/.test(id)) {
18079
- id = id.substr(0, id.length - 1);
18481
+ id = id.substring(0, id.length - 1);
18080
18482
  }
18081
18483
 
18082
18484
  if (!id) continue;
@@ -18123,7 +18525,7 @@ define('gina/toolbar', ['require', 'jquery', 'vendor/uuid'/**, 'lib/merge'*/, 'l
18123
18525
  } else {
18124
18526
 
18125
18527
  $root
18126
- .find('ul.' + id.substr(0, id.length - 1))
18528
+ .find('ul.' + id.substring(0, id.length - 1))
18127
18529
  .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
18530
  }
18129
18531
  }
@@ -18643,11 +19045,11 @@ define('gina', [ 'require', 'vendor/uuid', 'lib/merge', 'utils/events', 'helpers
18643
19045
  return construct
18644
19046
  });
18645
19047
  /*!
18646
- * Engine.IO v6.2.2
18647
- * (c) 2014-2022 Guillermo Rauch
19048
+ * Engine.IO v6.6.3
19049
+ * (c) 2014-2025 Guillermo Rauch
18648
19050
  * Released under the MIT License.
18649
19051
  */
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)}}));
19052
+ !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
19053
  //# sourceMappingURL=engine.io.min.js.map
18652
19054
  ;
18653
19055
  function BindingHelper(handlerContext) {
@@ -18743,12 +19145,13 @@ function BindingHelper(handlerContext) {
18743
19145
  define( 'helpers/binding',[],function() { return BindingHelper });
18744
19146
  /*
18745
19147
  * This file is part of the gina package.
18746
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
19148
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
18747
19149
  *
18748
19150
  * For the full copyright and license information, please view the LICENSE
18749
19151
  * file that was distributed with this source code.
18750
19152
  */
18751
19153
 
19154
+
18752
19155
  // nodejs dependencies
18753
19156
  if ( typeof(module) !== 'undefined' && module.exports) {
18754
19157
  var fs = require('fs');
@@ -18786,8 +19189,10 @@ function Domain(options, cb) {
18786
19189
  var isGFFCtx = ( ( typeof(module) !== 'undefined' ) && module.exports ) ? false : true;
18787
19190
  // Detect if user is on IE browser
18788
19191
  var isIE = false;
19192
+ var defaultUrl = "/_gina/assets/public_suffix_list.dat";
18789
19193
  if (isGFFCtx) {
18790
19194
  isIE = !!window.MSInputMethodContext && !!document.documentMode;
19195
+ defaultUrl = gina.config.webroot + defaultUrl.substring(1);
18791
19196
  }
18792
19197
 
18793
19198
  if ( typeof(arguments[0]) == 'function' ) {
@@ -18799,20 +19204,31 @@ function Domain(options, cb) {
18799
19204
  // if isGFFCtx, should be place in the public folder to be served by your own host
18800
19205
  // e.g.: "./public_suffix_list.dat" located under "/my-www-folder/"
18801
19206
  filename : "../dist/public_suffix_list.dat",
18802
- url : "https://publicsuffix.org/list/public_suffix_list.dat",
19207
+ url : defaultUrl,
19208
+ // url : "https://publicsuffix.org/list/public_suffix_list.dat",
18803
19209
  alternativeUrl : "https://raw.githubusercontent.com/publicsuffix/list/master/public_suffix_list.dat",
18804
19210
  // only available from backend calls
18805
19211
  isCachingRequired : false,
18806
19212
  isUpdating : false
18807
19213
  }
18808
19214
 
19215
+ if (
19216
+ !isGFFCtx
19217
+ && typeof(options) != 'undefined'
19218
+ && typeof(options.webroot) != 'undefined'
19219
+ ) {
19220
+ defaultOptions.url = options.webroot + defaultUrl.substring(1);
19221
+ }
19222
+
19223
+ // Get the commit version
19224
+ // cat ./framework/v0.1.6-alpha.83/core/asset/data/public_suffix_list.dat|grep 'COMMIT:'|sed 's/^\/\/ COMMIT\: //'
19225
+
18809
19226
  var self = {
18810
19227
  options : null,
18811
19228
  rawPSL : null,
18812
19229
  PSL : [],
18813
19230
  };
18814
19231
 
18815
-
18816
19232
  var init = function(proto, options, cb) {
18817
19233
  if ( typeof(options) == 'undefined' ) {
18818
19234
  options = defaultOptions
@@ -18843,9 +19259,8 @@ function Domain(options, cb) {
18843
19259
  return
18844
19260
  }
18845
19261
 
18846
- console.debug('[DOMAIN] PSL Loaded');
19262
+ console.debug('[DOMAIN][CB] PSL Loaded');
18847
19263
  // return proto
18848
-
18849
19264
  cb(err, proto)
18850
19265
  });
18851
19266
  }
@@ -19045,7 +19460,7 @@ function Domain(options, cb) {
19045
19460
  return host
19046
19461
  }
19047
19462
 
19048
- console.debug('[DOMAIN][getFQDN] UQDN: ' + host);
19463
+ console.debug('[DOMAIN][getFQDN] FQDN: ' + host);
19049
19464
  var ipObj = null
19050
19465
  , err = null
19051
19466
  ;
@@ -19094,6 +19509,7 @@ function Domain(options, cb) {
19094
19509
  if ( typeof(jsonFormat) == 'undefined' ) {
19095
19510
  jsonFormat = false
19096
19511
  }
19512
+ urlOrHostname = urlOrHostname.trim();
19097
19513
  var isSLD = false
19098
19514
  , isRegisteredTldOrSld = false
19099
19515
  , rootDomain = urlOrHostname.replace(/^(.*)\:\/\/|\/(.*)/g, '')
@@ -19739,13 +20155,15 @@ define('gina/link', [ 'require', 'jquery', 'vendor/uuid', 'lib/domain', 'lib/mer
19739
20155
  instance.getLinkByUrl = getLinkByUrl;
19740
20156
  }
19741
20157
 
19742
- new Domain( function onReady(err, _domainInstance) {
19743
- if (err) {
19744
- throw err
19745
- }
20158
+ if (!domainInstance) {
20159
+ new Domain( function onReady(err, _domainInstance) {
20160
+ if (err) {
20161
+ throw err
20162
+ }
19746
20163
 
19747
- domainInstance = _domainInstance;
19748
- });
20164
+ domainInstance = _domainInstance;
20165
+ });
20166
+ }
19749
20167
 
19750
20168
  return init(options)
19751
20169
  }
@@ -21528,13 +21946,15 @@ define('gina/popin', [ 'require', 'vendor/uuid', 'jquery', 'lib/domain', 'lib/me
21528
21946
  popinGetContainer()
21529
21947
  }
21530
21948
 
21531
- new Domain( function onReady(err, _domainInstance) {
21532
- if (err) {
21533
- throw err
21534
- }
21949
+ if (!domainInstance) {
21950
+ new Domain( function onReady(err, _domainInstance) {
21951
+ if (err) {
21952
+ throw err
21953
+ }
21535
21954
 
21536
- domainInstance = _domainInstance;
21537
- });
21955
+ domainInstance = _domainInstance;
21956
+ });
21957
+ }
21538
21958
 
21539
21959
  return init(options)
21540
21960
  }
@@ -21654,7 +22074,7 @@ define("utils/polyfill", function(){});
21654
22074
 
21655
22075
  /**
21656
22076
  * This file is part of the gina package.
21657
- * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
22077
+ * Copyright (c) 2009-2025 Rhinostone <contact@gina.io>
21658
22078
  *
21659
22079
  * For the full copyright and license information, please view the LICENSE
21660
22080
  * file that was distributed with this source code.