gina 0.1.1-alpha.99 → 0.1.2-alpha.2

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 (370) hide show
  1. package/LICENSE +1 -1
  2. package/README-4Contributors.md +30 -0
  3. package/README.md +125 -39
  4. package/bin/cli +130 -41
  5. package/bin/cli-debug +46 -15
  6. package/bin/cmd +63 -41
  7. package/bin/gina +57 -49
  8. package/framework/{v0.1.1-alpha.99/lib/inherits → v0.1.2-alpha.2}/LICENSE +1 -1
  9. package/framework/v0.1.2-alpha.2/VERSION +1 -0
  10. package/framework/{v0.1.1-alpha.99/core/asset/js/plugin/readme.md → v0.1.2-alpha.2/core/asset/plugin/README.md} +34 -12
  11. package/framework/v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/css/gina.min.css +1 -0
  12. package/framework/v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
  13. package/framework/v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/html/toolbar.html +251 -0
  14. package/framework/{v0.1.1-alpha.99/core/asset/js/plugin/dist → v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/js}/gina.js +4588 -3416
  15. package/framework/v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js +765 -0
  16. package/framework/v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
  17. package/framework/v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +7 -0
  18. package/framework/v0.1.2-alpha.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
  19. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/config.js +315 -131
  20. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/connectors/couchbase/index.js +460 -274
  21. package/framework/v0.1.2-alpha.2/core/connectors/couchbase/lib/connector.js +22 -0
  22. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/connectors/couchbase/lib/connector.v2.js +51 -51
  23. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/connectors/couchbase/lib/connector.v3.js +51 -51
  24. package/framework/v0.1.2-alpha.2/core/connectors/couchbase/lib/connector.v4.js +384 -0
  25. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/connectors/couchbase/lib/n1ql.js +3 -2
  26. package/framework/v0.1.2-alpha.2/core/connectors/couchbase/lib/session-store.js +22 -0
  27. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/connectors/couchbase/lib/session-store.v3.js +12 -12
  28. package/framework/v0.1.2-alpha.2/core/connectors/couchbase/lib/session-store.v4.js +361 -0
  29. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/controller/controller.js +1351 -902
  30. package/framework/v0.1.2-alpha.2/core/controller/index.js +23 -0
  31. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/dev/index.js +1 -1
  32. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/dev/lib/class.js +1 -1
  33. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/dev/lib/factory.js +2 -2
  34. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/gna.js +48 -24
  35. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/README.md +5 -0
  36. package/framework/v0.1.2-alpha.2/core/locales/dist/region/en.json +5727 -0
  37. package/framework/v0.1.2-alpha.2/core/locales/dist/region/fr.json +11452 -0
  38. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/index.js +2 -2
  39. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/src/make.js +39 -41
  40. package/framework/v0.1.2-alpha.2/core/locales/src/resources/region.mapping.json +43 -0
  41. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/model/entity.js +87 -67
  42. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/model/index.js +16 -16
  43. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/model/template/entityFactory.js +1 -1
  44. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/model/template/index.js +17 -15
  45. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/index.js +1 -1
  46. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/file/package.json +1 -1
  47. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/intl/package.json +1 -1
  48. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/intl/src/main.js +5 -5
  49. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/storage/package.json +1 -1
  50. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/storage/src/main.js +6 -5
  51. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/validator/package.json +1 -1
  52. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/validator/src/form-validator.js +404 -300
  53. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/validator/src/main.js +1384 -1314
  54. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/router.js +221 -122
  55. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/server.express.js +69 -65
  56. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/server.isaac.js +274 -180
  57. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/server.js +710 -615
  58. package/framework/v0.1.2-alpha.2/core/template/boilerplate/bundle/config/settings.json +12 -0
  59. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle/config/settings.server.json +4 -4
  60. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle/config/templates.json +4 -4
  61. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle/controllers/controller.content.js +1 -1
  62. package/framework/v0.1.2-alpha.2/core/template/boilerplate/bundle/controllers/setup.js +111 -0
  63. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle/index.js +13 -1
  64. package/framework/v0.1.2-alpha.2/core/template/boilerplate/bundle_templates/html/content/homepage.html +8 -0
  65. package/framework/v0.1.2-alpha.2/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +11 -0
  66. package/framework/v0.1.2-alpha.2/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +8 -0
  67. package/framework/{v0.1.1-alpha.99/core/template/boilerplate/bundle_templates/html/layout → v0.1.2-alpha.2/core/template/boilerplate/bundle_templates/html/layouts}/main.html +10 -3
  68. package/framework/v0.1.2-alpha.2/core/template/command/gina.bat.tpl +8 -0
  69. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/command/gina.tpl +4 -4
  70. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/conf/env.json +12 -0
  71. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/conf/manifest.json +2 -0
  72. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/conf/package.json +2 -2
  73. package/framework/v0.1.2-alpha.2/core/template/conf/statics.json +12 -0
  74. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/conf/templates.json +9 -9
  75. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/console.js +3 -3
  76. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/context.js +233 -75
  77. package/framework/v0.1.2-alpha.2/helpers/data/LICENSE +9 -0
  78. package/framework/v0.1.2-alpha.2/helpers/data/README.md +12 -0
  79. package/framework/v0.1.2-alpha.2/helpers/data/package.json +20 -0
  80. package/framework/v0.1.2-alpha.2/helpers/data/src/main.js +295 -0
  81. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/dateFormat.js +9 -7
  82. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/index.js +13 -8
  83. package/framework/v0.1.2-alpha.2/helpers/json/LICENSE +9 -0
  84. package/framework/v0.1.2-alpha.2/helpers/json/README.md +12 -0
  85. package/framework/{v0.1.1-alpha.99/helpers/plugins → v0.1.2-alpha.2/helpers/json}/package.json +2 -2
  86. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/json/src/main.js +33 -28
  87. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/path.js +97 -22
  88. package/framework/{v0.1.1-alpha.99/helpers/json → v0.1.2-alpha.2/helpers/plugins}/package.json +2 -2
  89. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/plugins/src/api-error.js +23 -23
  90. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/plugins/src/main.js +3 -3
  91. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/prototypes.js +46 -38
  92. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/text.js +2 -2
  93. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/archiver/package.json +1 -1
  94. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/archiver/src/dep/jszip.min.js +3 -3
  95. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/archiver/src/main.js +183 -168
  96. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/aliases.json +4 -1
  97. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/add.js +84 -28
  98. package/framework/v0.1.2-alpha.2/lib/cmd/bundle/arguments.json +8 -0
  99. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/help.txt +4 -2
  100. package/framework/v0.1.2-alpha.2/lib/cmd/bundle/list.js +175 -0
  101. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/remove.js +39 -27
  102. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/restart.js +14 -8
  103. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/start.js +283 -49
  104. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/stop.js +93 -74
  105. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/add.js +87 -49
  106. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/list.js +26 -4
  107. package/framework/{v0.1.1-alpha.99/lib/cmd/scope → v0.1.2-alpha.2/lib/cmd/env}/remove.js +29 -24
  108. package/framework/v0.1.2-alpha.2/lib/cmd/env/use.js +106 -0
  109. package/framework/v0.1.2-alpha.2/lib/cmd/framework/build.js +93 -0
  110. package/framework/v0.1.2-alpha.2/lib/cmd/framework/init.js +932 -0
  111. package/framework/v0.1.2-alpha.2/lib/cmd/framework/link-node-modules.js +123 -0
  112. package/framework/v0.1.2-alpha.2/lib/cmd/framework/link.js +137 -0
  113. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/open.js +25 -1
  114. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/restart.js +78 -26
  115. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/set.js +120 -40
  116. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/start.js +49 -20
  117. package/framework/v0.1.2-alpha.2/lib/cmd/framework/status.js +144 -0
  118. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/stop.js +64 -31
  119. package/framework/v0.1.2-alpha.2/lib/cmd/framework/tail.js +303 -0
  120. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/version.js +19 -4
  121. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/helper.js +357 -53
  122. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/index.js +23 -23
  123. package/framework/v0.1.2-alpha.2/lib/cmd/port/inc/scan.js +142 -0
  124. package/framework/v0.1.2-alpha.2/lib/cmd/port/list.js +464 -0
  125. package/framework/v0.1.2-alpha.2/lib/cmd/port/reset.js +417 -0
  126. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/add.js +344 -157
  127. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/arguments.json +2 -1
  128. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/build.js +28 -28
  129. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/help.txt +7 -1
  130. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/list.js +22 -2
  131. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/remove.js +19 -17
  132. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/rename.js +11 -11
  133. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/protocol/set.js +260 -211
  134. package/framework/v0.1.2-alpha.2/lib/cmd/scope/add.js +129 -0
  135. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/scope/help.txt +4 -4
  136. package/framework/{v0.1.1-alpha.99/lib/cmd/env/use.js → v0.1.2-alpha.2/lib/cmd/scope/link-production.js} +22 -21
  137. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/scope/list.js +34 -11
  138. package/framework/v0.1.2-alpha.2/lib/cmd/scope/remove.js +122 -0
  139. package/framework/v0.1.2-alpha.2/lib/cmd/scope/use.js +68 -0
  140. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/view/add.js +35 -10
  141. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/collection/package.json +1 -1
  142. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/collection/src/main.js +247 -244
  143. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/config.js +33 -31
  144. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cron/package.json +1 -1
  145. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cron/src/main.js +16 -11
  146. package/framework/v0.1.2-alpha.2/lib/domain/LICENSE +9 -0
  147. package/framework/v0.1.2-alpha.2/lib/domain/README.md +46 -0
  148. package/framework/v0.1.2-alpha.2/lib/domain/dist/public_suffix_list.dat +14186 -0
  149. package/framework/v0.1.2-alpha.2/lib/domain/package.json +20 -0
  150. package/framework/v0.1.2-alpha.2/lib/domain/src/main.js +442 -0
  151. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/generator/index.js +5 -5
  152. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/index.js +3 -2
  153. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2/lib/inherits}/LICENSE +1 -1
  154. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/inherits/README.md +2 -2
  155. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/inherits/package.json +3 -4
  156. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/inherits/src/main.js +3 -3
  157. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/package.json +2 -2
  158. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/containers/default/index.js +15 -2
  159. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/containers/file/index.js +109 -14
  160. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/containers/mq/index.js +12 -3
  161. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/containers/mq/listener.js +29 -21
  162. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/containers/mq/speaker.js +33 -4
  163. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/helper.js +22 -1
  164. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/main.js +36 -9
  165. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/math/index.js +9 -9
  166. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/merge/README.md +2 -2
  167. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/merge/package.json +1 -1
  168. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/merge/src/main.js +118 -91
  169. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/model.js +10 -10
  170. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/proc.js +92 -49
  171. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/routing/package.json +1 -1
  172. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/routing/src/main.js +377 -420
  173. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/session-store.js +13 -7
  174. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/shell.js +3 -3
  175. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/swig-filters/package.json +1 -1
  176. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/swig-filters/src/main.js +140 -119
  177. package/framework/v0.1.2-alpha.2/lib/url/README.md +0 -0
  178. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/validator.js +2 -2
  179. package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/package.json +1 -1
  180. package/package.json +10 -10
  181. package/resources/home/main.json +39 -5
  182. package/resources/home/settings.json +8 -0
  183. package/resources/package.json.template +1 -1
  184. package/script/lib.js +0 -0
  185. package/script/post_install.js +179 -89
  186. package/script/pre_install.js +95 -12
  187. package/services/.gna/67fdf1b224a2ed5597e63d4b64283834468e05e3.txt +0 -0
  188. package/services/.gna/arch +1 -0
  189. package/services/.gna/locals.json +14 -0
  190. package/services/.gna/platform +1 -0
  191. package/services/configure +6 -0
  192. package/services/env.json +18 -0
  193. package/services/manifest.json +30 -0
  194. package/services/package.json +11 -0
  195. package/services/src/proxy/config/app.json +6 -0
  196. package/services/src/proxy/config/routing.json +11 -0
  197. package/services/src/proxy/config/settings.json +9 -0
  198. package/services/src/proxy/config/settings.server.json +31 -0
  199. package/services/src/proxy/config/statics.json +3 -0
  200. package/services/src/proxy/controllers/controller.content.js +58 -0
  201. package/services/src/proxy/controllers/controller.js +30 -0
  202. package/{framework/v0.1.1-alpha.99/core/template/boilerplate/bundle → services/src/proxy}/controllers/setup.js +14 -14
  203. package/services/src/proxy/index.js +31 -0
  204. package/services/src/proxy/lib/domain/README.md +48 -0
  205. package/services/src/proxy/lib/domain/src/config/public_suffix_list.dat +14186 -0
  206. package/services/src/toolbar/config/app.json +6 -0
  207. package/services/src/toolbar/config/routing.json +11 -0
  208. package/{framework/v0.1.1-alpha.99/core/template/boilerplate/bundle → services/src/toolbar}/config/settings.json +0 -0
  209. package/services/src/toolbar/config/settings.server.json +30 -0
  210. package/services/src/toolbar/controllers/controller.content.js +39 -0
  211. package/services/src/toolbar/controllers/controller.js +30 -0
  212. package/services/src/toolbar/controllers/setup.js +111 -0
  213. package/services/src/toolbar/index.js +43 -0
  214. package/utils/helper.js +25 -156
  215. package/utils/prototypes.js +9 -9
  216. package/utils/prototypes.json_clone.js +70 -37
  217. package/framework/v0.1.1-alpha.99/VERSION +0 -1
  218. package/framework/v0.1.1-alpha.99/core/asset/js/plugin/dist/gina.js.map +0 -56
  219. package/framework/v0.1.1-alpha.99/core/asset/js/plugin/dist/gina.min.css +0 -1
  220. package/framework/v0.1.1-alpha.99/core/asset/js/plugin/dist/gina.min.css.map +0 -1
  221. package/framework/v0.1.1-alpha.99/core/asset/js/plugin/dist/gina.min.js +0 -736
  222. package/framework/v0.1.1-alpha.99/core/asset/js/plugin/dist/gina.min.js.map +0 -56
  223. package/framework/v0.1.1-alpha.99/core/asset/js/plugin/dist/gina.onload.min.js +0 -5
  224. package/framework/v0.1.1-alpha.99/core/asset/js/plugin/dist/gina.onload.min.js.map +0 -8
  225. package/framework/v0.1.1-alpha.99/core/connectors/couchbase/lib/connector.js +0 -20
  226. package/framework/v0.1.1-alpha.99/core/connectors/couchbase/lib/session-store.js +0 -21
  227. package/framework/v0.1.1-alpha.99/core/controller/index.js +0 -27
  228. package/framework/v0.1.1-alpha.99/core/locales/dist/region/en.json +0 -9492
  229. package/framework/v0.1.1-alpha.99/core/locales/dist/region/fr.json +0 -9492
  230. package/framework/v0.1.1-alpha.99/core/locales/src/resources/region.mapping.json +0 -28
  231. package/framework/v0.1.1-alpha.99/core/template/boilerplate/bundle_templates/html/homepage.html +0 -4
  232. package/framework/v0.1.1-alpha.99/core/template/conf/statics.json +0 -10
  233. package/framework/v0.1.1-alpha.99/lib/cmd/bundle/arguments.json +0 -4
  234. package/framework/v0.1.1-alpha.99/lib/cmd/bundle/list.js +0 -129
  235. package/framework/v0.1.1-alpha.99/lib/cmd/env/remove.js +0 -150
  236. package/framework/v0.1.1-alpha.99/lib/cmd/framework/init.js +0 -541
  237. package/framework/v0.1.1-alpha.99/lib/cmd/framework/status.js +0 -72
  238. package/framework/v0.1.1-alpha.99/lib/cmd/framework/tail.js +0 -184
  239. package/framework/v0.1.1-alpha.99/lib/cmd/port/inc/scan.js +0 -108
  240. package/framework/v0.1.1-alpha.99/lib/cmd/port/list.js +0 -176
  241. package/framework/v0.1.1-alpha.99/lib/cmd/scope/set.js +0 -57
  242. package/framework/v0.1.1-alpha.99/lib/cmd/scope/unset.js +0 -44
  243. package/framework/v0.1.1-alpha.99/lib/cmd/scope/use.js +0 -79
  244. package/script/post_publish.js +0 -185
  245. package/script/prepare_version.js +0 -552
  246. /package/{framework/v0.1.1-alpha.99/core/template/command/gina.bat.tpl → bin/gina.bat} +0 -0
  247. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/AUTHORS +0 -0
  248. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/html/nolayout.html +0 -0
  249. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/html/static.html +0 -0
  250. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/img/android-chrome-192x192.png +0 -0
  251. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/img/android-chrome-512x512.png +0 -0
  252. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/img/apple-touch-icon.png +0 -0
  253. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/img/favicon-16x16.png +0 -0
  254. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/img/favicon-32x32.png +0 -0
  255. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/asset/img/favicon.ico +0 -0
  256. /package/framework/{v0.1.1-alpha.99/core/asset/js → v0.1.2-alpha.2/core/asset}/plugin/uuid.json +0 -0
  257. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  258. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/controller/controller.framework.js +0 -0
  259. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/.travis.yml +0 -0
  260. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/LICENSE +0 -0
  261. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/README.md +0 -0
  262. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -0
  263. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/deps/encoding/encoding.js +0 -0
  264. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/lib/main.js +0 -0
  265. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/lib/types/multipart.js +0 -0
  266. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/lib/types/urlencoded.js +0 -0
  267. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/lib/utils.js +0 -0
  268. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/busboy/package.json +0 -0
  269. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  270. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/dev/lib/tools.js +0 -0
  271. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/currency.json +0 -0
  272. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/dist/language/en.json +0 -0
  273. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/dist/language/fr.json +0 -0
  274. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/src/resources/currency.csv +0 -0
  275. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/locales/src/resources/region.csv +0 -0
  276. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/mime.types +0 -0
  277. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/README.md +0 -0
  278. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/file/README.md +0 -0
  279. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/file/build.json +0 -0
  280. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/intl/README.md +0 -0
  281. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/intl/build.json +0 -0
  282. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/storage/README.md +0 -0
  283. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/storage/build.json +0 -0
  284. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/validator/README.md +0 -0
  285. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/plugins/lib/validator/build.json +0 -0
  286. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/status.codes +0 -0
  287. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle/config/app.json +0 -0
  288. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
  289. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  290. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  291. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  292. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  293. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  294. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  295. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
  296. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  297. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/conf/settings.json +0 -0
  298. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/error/client/json/401.json +0 -0
  299. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/error/client/json/403.json +0 -0
  300. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/error/client/json/404.json +0 -0
  301. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/error/server/html/50x.html +0 -0
  302. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/error/server/json/500.json +0 -0
  303. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/error/server/json/503.json +0 -0
  304. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/core/template/extensions/logger/config.json +0 -0
  305. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/plugins/README.md +0 -0
  306. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/helpers/task.js +0 -0
  307. /package/framework/{v0.1.1-alpha.99/helpers/json → v0.1.2-alpha.2/lib/archiver}/README.md +0 -0
  308. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/archiver/build.json +0 -0
  309. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/copy.js +0 -0
  310. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/cp.js +0 -0
  311. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/help.js +0 -0
  312. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/rename.js +0 -0
  313. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/rm.js +0 -0
  314. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/bundle/status.js +0 -0
  315. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/get.js +0 -0
  316. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/help.js +0 -0
  317. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/help.txt +0 -0
  318. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/link-dev.js +0 -0
  319. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/rm.js +0 -0
  320. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/set.js +0 -0
  321. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/env/unset.js +0 -0
  322. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/dot.js +0 -0
  323. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/get.js +0 -0
  324. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/help.js +0 -0
  325. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/help.txt +0 -0
  326. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/msg.json +0 -0
  327. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/framework/update.js +0 -0
  328. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/gina-dev.1.md +0 -0
  329. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/gina-framework.1.md +0 -0
  330. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/gina.1.md +0 -0
  331. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/msg.json +0 -0
  332. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/port/help.js +0 -0
  333. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/port/help.txt +0 -0
  334. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/port/set.js +0 -0
  335. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/help.js +0 -0
  336. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/import.js +0 -0
  337. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/move.js +0 -0
  338. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/restart.js +0 -0
  339. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/rm.js +0 -0
  340. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/start.js +0 -0
  341. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/status.js +0 -0
  342. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/project/stop.js +0 -0
  343. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/protocol/help.js +0 -0
  344. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/protocol/help.txt +0 -0
  345. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/protocol/list.js +0 -0
  346. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/scope/help.js +0 -0
  347. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/scope/link-local.js +0 -0
  348. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cmd/scope/rm.js +0 -0
  349. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/collection/README.md +0 -0
  350. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/collection/build.json +0 -0
  351. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/cron/README.md +0 -0
  352. /package/framework/{v0.1.1-alpha.99/lib/archiver/README.md → v0.1.2-alpha.2/lib/domain/exemples/backend.js} +0 -0
  353. /package/framework/{v0.1.1-alpha.99/lib/routing/README.md → v0.1.2-alpha.2/lib/domain/exemples/frontend.html} +0 -0
  354. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  355. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/inherits/example/protected_inheritance.js +0 -0
  356. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/inherits/example/simple_inheritance.js +0 -0
  357. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
  358. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/README.md +0 -0
  359. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  360. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  361. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/merge/example/merge.js +0 -0
  362. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/merge/example/merge_2_literal objects.js +0 -0
  363. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/merge/example/merge_and_preserve_first.js +0 -0
  364. /package/framework/{v0.1.1-alpha.99/lib/swig-filters → v0.1.2-alpha.2/lib/routing}/README.md +0 -0
  365. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/routing/build.json +0 -0
  366. /package/framework/{v0.1.1-alpha.99/lib/url → v0.1.2-alpha.2/lib/swig-filters}/README.md +0 -0
  367. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/url/index.js +0 -0
  368. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/url/mocks.json +0 -0
  369. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/url/routing.json +0 -0
  370. /package/framework/{v0.1.1-alpha.99 → v0.1.2-alpha.2}/lib/url/test.js +0 -0
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * This file is part of the gina package.
3
- * Copyright (c) 2009-2022 Rhinostone <contact@gina.io>
3
+ * Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
4
4
  *
5
5
  * For the full copyright and license information, please view the LICENSE
6
6
  * file that was distributed with this source code.
@@ -21,12 +21,18 @@ function Routing() {
21
21
  allowedMethods: ['get', 'post', 'put', 'delete'],
22
22
  reservedParams: ['controle', 'file','title', 'namespace', 'path'],
23
23
  notFound: {}
24
- };
25
-
24
+ };
25
+
26
26
  self.allowedMethodsString = self.allowedMethods.join(',');
27
-
28
- // loading utils & plugins
29
- var plugins = null, inherits = null, merge = null, Validator = null, fs = null, promisify = null;
27
+
28
+ // loading lib & plugins
29
+ var plugins = null
30
+ , inherits = null
31
+ , merge = null
32
+ , Validator = null
33
+ , fs = null
34
+ , promisify = null
35
+ ;
30
36
  if (!isGFFCtx) {
31
37
  fs = require('fs');
32
38
  promisify = require('util').promisify;
@@ -34,26 +40,26 @@ function Routing() {
34
40
  merge = require('../../merge');
35
41
  plugins = require(__dirname+'/../../../core/plugins') || getContext('gina').plugins;
36
42
  Validator = plugins.Validator;
37
-
38
- }
43
+
44
+ }
39
45
  // BO - In case of partial rendering whithout handler defined for the partial
40
46
  else {
41
47
  if ( !merge || typeof(merge) != 'function' ) {
42
- var merge = require('utils/merge');
48
+ merge = require('lib/merge');
43
49
  }
44
- if ( !Validator || typeof(Validator) != 'function' ) {
45
- var Validator = require('utils/form-validator');
50
+ if ( !Validator || typeof(Validator) != 'function' ) {
51
+ Validator = require('lib/form-validator');
46
52
  }
47
- }
53
+ }
48
54
  // EO - In case of partial rendering whithout handler defined for the partial
49
-
55
+
50
56
  /**
51
57
  * Get url props
52
58
  * Used to retrieve additional properties for routes with redirect flag for example
53
- *
59
+ *
54
60
  * @param {string} [bundle]
55
- * @param {string} [env]
56
- *
61
+ * @param {string} [env]
62
+ *
57
63
  * @returns {object} urlProps - { .host, .hostname, .webroot }
58
64
  */
59
65
  self.getUrlProps = function(bundle, env) {
@@ -69,7 +75,7 @@ function Routing() {
69
75
  urlProps.hostname = _route.hostname;
70
76
  urlProps.host = _route.host;
71
77
  urlProps.webroot = _route.webroot;
72
- }
78
+ }
73
79
  } else {
74
80
  config = getContext('gina').config;
75
81
  if ( typeof(getContext('argvFilename')) != 'undefined' ) {
@@ -81,47 +87,47 @@ function Routing() {
81
87
  if ( typeof(env) == 'undefined' ) {
82
88
  env = config.env;
83
89
  }
84
-
90
+
85
91
  urlProps.hostname = config.envConf[bundle][env].hostname;
86
92
  urlProps.host = config.envConf[bundle][env].host;
87
93
  urlProps.webroot = config.envConf[bundle][env].server.webroot;
88
94
  }
89
-
95
+
90
96
  return urlProps;
91
97
  }
92
-
98
+
93
99
  /**
94
100
  * Load bundle routing configuration
95
- *
101
+ *
96
102
  * @param {object} options
97
103
  * {
98
104
  * isStadalone: false,
99
105
  * bundle: 'default', // bundle's name
100
106
  * wroot: '/', // by default
101
- *
107
+ *
102
108
  * }
103
- *
109
+ *
104
110
  */
105
111
  // self.loadBundleRoutingConfiguration = function(options, filename) {
106
-
112
+
107
113
  // }
108
-
114
+
109
115
  /**
110
116
  * Get routing
111
- *
117
+ *
112
118
  * @param {string} [bundle]
113
119
  */
114
120
  // self.getRouting = function(bundle) {
115
-
121
+
116
122
  // }
117
-
123
+
118
124
  /**
119
125
  * Get reversed routing
120
- *
126
+ *
121
127
  * @param {string} [bundle]
122
128
  */
123
129
  // self.getReverseRouting = function(bundle) {
124
-
130
+
125
131
  // }
126
132
 
127
133
  /**
@@ -136,7 +142,7 @@ function Routing() {
136
142
  * @returns {object|false} foundRoute
137
143
  * */
138
144
  self.compareUrls = async function(params, url, request, response, next) {
139
-
145
+
140
146
  if ( typeof(request) == 'undefined' ) {
141
147
  request = { routing: {} };
142
148
  }
@@ -159,10 +165,14 @@ function Routing() {
159
165
  ++i;
160
166
  }
161
167
 
168
+ i = null;
169
+ urls = null;
170
+ len = null;
171
+
162
172
  return foundRoute;
163
- } else {
164
- return await parseRouting(params, url, request, response, next);
165
173
  }
174
+
175
+ return await parseRouting(params, url, request, response, next);
166
176
  };
167
177
 
168
178
  /**
@@ -174,7 +184,7 @@ function Routing() {
174
184
  * @private
175
185
  * */
176
186
  var hasParams = function(pathname) {
177
- return (/:/.test(pathname)) ? true : false;
187
+ return (/\:/.test(pathname)) ? true : false;
178
188
  };
179
189
 
180
190
  /**
@@ -190,13 +200,21 @@ function Routing() {
190
200
  *
191
201
  * */
192
202
  var parseRouting = async function(params, url, request, response, next) {
193
-
203
+
194
204
  // Sample debug break for specific rule
195
205
  // if ( params.rule == 'my-specific-rule@bundle' ) {
196
206
  // console.debug('passed '+ params.rule);
197
207
  // }
198
-
199
- var uRe = params.url.split(/\//)
208
+
209
+ var paramUrlSplit = null;
210
+ try {
211
+ paramUrlSplit = params.url.split(/\//);
212
+ } catch (paramUrlSplitErr) {
213
+ console.warn(paramUrlSplitErr);
214
+ paramUrlSplit = ['']
215
+ }
216
+
217
+ var uRe = paramUrlSplit
200
218
  , uRo = url.split(/\//)
201
219
  , uReCount = 0
202
220
  , uRoCount = 0
@@ -206,119 +224,16 @@ function Routing() {
206
224
  , i = 0
207
225
  , method = request.method.toLowerCase()
208
226
  ;
209
-
210
- // TODO - remove comments
211
- // when requirement is not listed but still validated
212
- // if (
213
- // typeof(params.requirements) != 'undefined'
214
- // && method == params.method.toLowerCase()
215
- // //&& /validator\:\:/.test(JSON.stringify(params.requirements))
216
- // ) {
217
-
218
- // var requiremements = Object.getOwnPropertyNames(params.requirements);
219
- // var r = 0;
220
- // // In order to filter variables
221
- // var uRoVars = uRo.join(',').match(/\:[-_a-z0-9]+/g);
222
- // // var uRoVarCount = (uRoVars) ? uRoVars.length : 0;
223
- // while ( r < requiremements.length ) {
224
-
225
- // // if not listed, but still needing validation
226
- // if (
227
- // typeof(params.param[ requiremements[r] ]) == 'undefined'
228
- // && /^validator\:\:/i.test(params.requirements[ requiremements[r] ])
229
- // && typeof(request[method][ requiremements[r] ])
230
- // ) {
231
- // if (uRo.length != uRe.length) {
232
- // // r++;
233
- // // continue;
234
- // break;
235
- // }
236
- // // updating uRoVars
237
- // uRoVars = uRo.join(',').match(/\:[-_a-z0-9]+/g);
238
- // /**
239
- // * "requirements" : {
240
- // * "email": "validator::{ isEmail: true, isString: [7] }"
241
- // * }
242
- // *
243
- // * e.g.: result = new Validator('routing', _data, null, {email: {isEmail: true, subject: \"Anything\"}} ).isEmail().valid;
244
- // */
245
- // let regex = params.requirements[ requiremements[r] ];
246
- // let _data = {}, _ruleObj = {}, _rule = {};
247
-
248
- // try {
249
- // _ruleObj = JSON.parse(
250
- // regex.split(/::/).splice(1)[0]
251
- // .replace(/([^\:\"\s+](\w+))\:/g, '"$1":') // { query: { validIf: true }} => { "query": { "validIf": true }}
252
- // .replace(/([^\:\"\s+](\w+))\s+\:/g, '"$1":') // note the space between `validIf` & `:` { query: { validIf : true }} => { "query": { "validIf": true }}
253
- // );
254
- // } catch (err) {
255
- // throw err;
256
- // }
257
-
258
- // let key = requiremements[r];
259
- // // validator.query case
260
- // if (typeof(_ruleObj.query) != 'undefined' && typeof(_ruleObj.query.data) != 'undefined') {
261
- // _data = _ruleObj.query.data;
262
- // // filter _data vs uRoVars by removing from data those not present in uRoVars
263
- // for (let k in _data) {
264
- // if ( uRoVars.indexOf(_data[k]) < 0 ) {
265
- // delete _data[k]
266
- // }
267
- // }
268
- // for (let p = 0, pLen = uRo.length; p < pLen; p++) {
269
- // // :variable only
270
- // if (!/^\:/.test(uRo[p])) continue;
271
-
272
- // let pName = uRo[p].replace(/^\:/, '');
273
- // if ( pName != '' && typeof(uRe[p]) != 'undefined' ) {
274
- // _data[ pName ] = uRe[p];
275
- // // Updating params
276
- // if ( typeof(request.params[pName]) == 'undefined' ) {
277
- // // Set in case it is not found
278
- // request.params[pName] = uRe[p];
279
- // }
280
- // }
281
- // }
282
- // }
283
- // // normal case
284
- // _data = merge(_data, request[method]);
285
-
286
- // if ( typeof(_data[key]) == 'undefined' ) {
287
- // // init default value for unlisted variable/param
288
- // _data[key] = null;
289
- // }
290
-
291
- // _rule[key] = _ruleObj;
292
- // _validator = new Validator('routing', _data, null, _rule );
293
-
294
- // if (_ruleObj.count() == 0 ) {
295
- // console.error('Route validation failed '+ params.rule);
296
- // return false;
297
- // }
298
-
299
- // for (let rule in _ruleObj) {
300
- // let _result = null;
301
- // if (Array.isArray(_ruleObj[rule])) { // has args
302
- // _result = await _validator[key][rule].apply(_validator[key], _ruleObj[rule]);
303
- // } else {
304
- // _result = await _validator[key][rule](_ruleObj[rule], request, response, next);
305
- // }
306
- // //let condition = _ruleObj[rule].validIf.replace(new RegExp('\\$isValid'), _result.isValid);
307
- // // if ( eval(condition)) {
308
- // if ( !_result.isValid ) {
309
- // --score;
310
- // }
311
- // }
312
- // }
313
- // r++
314
- // }
315
- // }
316
-
317
- // attaching routing description for this request
318
- var paramMethod = params.method.toLowerCase();
319
-
227
+
228
+ // Attaching routing description for this request
229
+ var paramMethod = 'get'; // by default
230
+ try {
231
+ paramMethod = params.method.toLowerCase();
232
+ } catch(methodErr) {}
233
+
234
+
320
235
  var hasAlreadyBeenScored = false;
321
- if (
236
+ if (
322
237
  typeof(params.requirements) != 'undefined'
323
238
  && /get|delete/i.test(method)
324
239
  && typeof(request[method]) != 'undefined'
@@ -327,20 +242,20 @@ function Routing() {
327
242
  typeof(params.requirements) != 'undefined'
328
243
  && /get/i.test(method)
329
244
  && /delete/i.test(paramMethod)
330
- ) {
245
+ ) {
331
246
  if ( /get/i.test(method) && /delete/i.test(paramMethod) ) {
332
247
  method = paramMethod;
333
248
  }
334
249
  // `delete` methods don't have a body
335
250
  // So, request.delete is {} by default
336
- if ( /^(delete)$/i.test(method) && uRe.length === uRo.length ) {
251
+ if ( /^(delete)$/i.test(method) && uRe.length === uRo.length ) {
337
252
  // just in case
338
253
  if ( typeof(request[method]) == 'undefined' ) {
339
254
  request[method] = {};
340
255
  }
341
256
  for (let p = 0, pLen = uRo.length; p < pLen; p++) {
342
- if (uRe[p] === uRo[p]) {
343
- ++score;
257
+ if (uRe[p] === uRo[p]) {
258
+ ++score;
344
259
  continue;
345
260
  }
346
261
  let _key = uRo[p].substr(1);
@@ -355,61 +270,65 @@ function Routing() {
355
270
  continue;
356
271
  }
357
272
  if (
358
- /^:/.test(uRo[p])
273
+ /^:/.test(uRo[p])
359
274
  && typeof(condition) != 'undefined'
360
275
  && new RegExp(condition).test(uRe[p])
361
276
  ) {
362
- ++score;
363
- request[method][uRo[p].substr(1)] = uRe[p];
277
+ ++score;
278
+ request[method][uRo[p].substr(1)] = uRe[p];
364
279
  }
365
280
  }
366
- hasAlreadyBeenScored = true;
367
- }
368
-
281
+ hasAlreadyBeenScored = true;
282
+ }
283
+
369
284
  // Sample debug break for specific rule
370
285
  // if ( params.rule == 'my-specific-rule@bundle' ) {
371
286
  // console.debug('passed '+ params.rule);
372
287
  // }
373
288
  for (let p in request[method]) {
374
289
  if ( typeof(params.requirements[p]) != 'undefined' && uRo.indexOf(':' + p) < 0 ) {
375
- uRo[uRoCount] = ':' + p;
290
+ uRo[uRoCount] = ':' + p;
376
291
  ++uRoCount;
377
-
292
+
378
293
  uRe[uReCount] = request[method][p];
379
294
  ++uReCount;
380
- if (!hasAlreadyBeenScored && uRe.length === uRo.length)
381
- ++maxLen;
295
+ if (!hasAlreadyBeenScored && uRe.length === uRo.length) {
296
+ ++maxLen;
297
+ }
382
298
  }
383
299
  }
384
300
  }
385
-
386
-
301
+
302
+
387
303
  // Sample debug break for specific rule
388
304
  // if ( params.rule == 'my-specific-rule@bundle' ) {
389
305
  // console.debug('passed '+ params.rule);
390
306
  // }
391
-
307
+
392
308
  if (!hasAlreadyBeenScored && uRe.length === uRo.length) {
393
-
309
+
394
310
  for (; i < maxLen; ++i) {
395
-
311
+
396
312
  if (uRe[i] === uRo[i]) {
397
313
  ++score;
398
314
  }
399
- else if (score == i && hasParams(uRo[i]) && await fitsWithRequirements(uRo[i], uRe[i], params, request, response, next)) {
315
+ else if (
316
+ score == i && hasParams(uRo[i])
317
+ && await fitsWithRequirements(uRo[i], uRe[i], params, request, response, next)
318
+ ) {
400
319
  ++score;
401
320
  }
402
321
  }
403
322
  }
404
-
323
+
405
324
  // This test is done to catch `validator::` rules under requirements
406
- if (
407
- typeof(params.requirements) != 'undefined'
325
+ if (
326
+ typeof(params.requirements) != 'undefined'
408
327
  && method == params.method.toLowerCase()
409
328
  && !hasAlreadyBeenScored
410
329
  && score >= maxLen
411
330
  ) {
412
-
331
+
413
332
  var requiremements = Object.getOwnPropertyNames(params.requirements);
414
333
  var r = 0;
415
334
  // In order to filter variables
@@ -419,12 +338,12 @@ function Routing() {
419
338
  // requirement name as `key`
420
339
  let key = requiremements[r];
421
340
  // if not listed, but still needing validation
422
- if (
423
- typeof(params.param[ key ]) == 'undefined'
341
+ if (
342
+ typeof(params.param[ key ]) == 'undefined'
424
343
  && /^validator\:\:/i.test(params.requirements[ key ])
425
344
  ) {
426
345
  if (uRo.length != uRe.length) {
427
- // r++;
346
+ // r++;
428
347
  // continue;
429
348
  break;
430
349
  }
@@ -434,22 +353,22 @@ function Routing() {
434
353
  * "requirements" : {
435
354
  * "email": "validator::{ isEmail: true, isString: [7] }"
436
355
  * }
437
- *
356
+ *
438
357
  * e.g.: result = new Validator('routing', _data, null, {email: {isEmail: true, subject: \"Anything\"}} ).isEmail().valid;
439
- */
358
+ */
440
359
  let regex = params.requirements[ key ];
441
360
  let _data = {}, _ruleObj = {}, _rule = {};
442
-
361
+
443
362
  try {
444
363
  _ruleObj = JSON.parse(
445
364
  regex.split(/::/).splice(1)[0]
446
365
  .replace(/([^\:\"\s+](\w+))\:/g, '"$1":') // { query: { validIf: true }} => { "query": { "validIf": true }}
447
366
  .replace(/([^\:\"\s+](\w+))\s+\:/g, '"$1":') // note the space between `validIf` & `:` { query: { validIf : true }} => { "query": { "validIf": true }}
448
- );
367
+ );
449
368
  } catch (err) {
450
369
  throw err;
451
370
  }
452
-
371
+
453
372
  // validator.query case
454
373
  if (typeof(_ruleObj.query) != 'undefined' && typeof(_ruleObj.query.data) != 'undefined') {
455
374
  _data = _ruleObj.query.data;
@@ -462,7 +381,7 @@ function Routing() {
462
381
  for (let p = 0, pLen = uRo.length; p < pLen; p++) {
463
382
  // :variable only
464
383
  if (!/^\:/.test(uRo[p])) continue;
465
-
384
+
466
385
  let pName = uRo[p].replace(/^\:/, '');
467
386
  if ( pName != '' && typeof(uRe[p]) != 'undefined' ) {
468
387
  _data[ pName ] = uRe[p];
@@ -472,30 +391,30 @@ function Routing() {
472
391
  request.params[pName] = uRe[p];
473
392
  }
474
393
  }
475
- }
394
+ }
476
395
  }
477
-
396
+
478
397
  // If validator.query has data, _data should inherit from request data
479
- _data = merge(_data, JSON.clone(request[method]) || {} );
398
+ _data = merge(_data, JSON.clone(request[method]) || {} );
480
399
  // This test is to initialize query.data[key] to null by default
481
400
  if ( typeof(_data[key]) == 'undefined' ) {
482
401
  // init default value for unlisted variable/param
483
402
  _data[key] = null;
484
403
  }
485
-
486
- _rule[key] = _ruleObj;
404
+
405
+ _rule[key] = _ruleObj;
487
406
  if (!isGFFCtx) {
488
407
  _validator = new Validator('routing', _data, null, _rule );
489
408
  } else {
490
409
  _validator = new Validator(_data);
491
410
  }
492
-
411
+
493
412
  if (_ruleObj.count() == 0 ) {
494
413
  console.error('Route validation failed '+ params.rule);
495
414
  --score;
496
415
  r++;
497
416
  continue;
498
- }
417
+ }
499
418
  // for each validation rule
500
419
  for (let rule in _ruleObj) {
501
420
  // updating query.data
@@ -507,8 +426,8 @@ function Routing() {
507
426
  _result = await _validator[key][rule].apply(_validator[key], _ruleObj[rule]);
508
427
  } else {
509
428
  _result = await _validator[key][rule](_ruleObj[rule], request, response, next);
510
- }
511
-
429
+ }
430
+
512
431
  //let condition = _ruleObj[rule].validIf.replace(new RegExp('\\$isValid'), _result.isValid);
513
432
  // if ( eval(condition)) {
514
433
  if ( !_result.isValid ) {
@@ -521,10 +440,14 @@ function Routing() {
521
440
  }
522
441
  r++
523
442
  }
443
+
444
+ r = null;
445
+ uRoVars = null;
446
+ requiremements = null;
524
447
  }
525
448
 
526
449
  foundRoute.past = (score === maxLen) ? true : false;
527
-
450
+
528
451
  if (foundRoute.past) {
529
452
  // attaching routing description for this request
530
453
  //request.routing = params; // can be retried in controller with: req.routing
@@ -532,7 +455,7 @@ function Routing() {
532
455
  request.routing = checkRouteParams(params, request[method]);
533
456
  foundRoute.request = request;
534
457
  }
535
-
458
+
536
459
 
537
460
  return foundRoute;
538
461
  };
@@ -563,7 +486,7 @@ function Routing() {
563
486
  , flags = null
564
487
  , key = null
565
488
  , tested = false
566
-
489
+
567
490
  , _validator = null
568
491
  , _data = null
569
492
  , _ruleObj = null
@@ -573,57 +496,59 @@ function Routing() {
573
496
  // request method
574
497
  , requestMethod = request.method.toLowerCase()
575
498
  ;
576
-
499
+
577
500
  if (!_param.length) return false;
578
501
 
579
502
  // if custom path, path rewrite
580
503
  if (params.param.path && regex.test(params.param.path)) {
581
504
  params.param.path = params.param.path.replace(regex, urlVal);
582
505
  }
583
-
506
+
584
507
  // if custom namespace, namespace rewrite
585
- if (params.param.namespace && regex.test(params.param.namespace)) {
586
- params.param.namespace = params.param.namespace.replace(regex, urlVal);
508
+ if (params.param.namespace && regex.test(params.param.namespace)) {
509
+ params.param.namespace = params.param.namespace.replace(regex, urlVal);
587
510
  }
588
-
511
+
589
512
  // if custom file, file rewrite
590
- // if (params.param.file && regex.test(params.param.file)) {
591
- // params.param.file = params.param.file.replace(regex, urlVal);
513
+ // if (params.param.file && regex.test(params.param.file)) {
514
+ // params.param.file = params.param.file.replace(regex, urlVal);
592
515
  // }
593
516
  // file is handle like url replacement (path is like pathname)
594
- if (typeof (params.param.file) != 'undefined' && /:/.test(params.param.file)) {
595
- var _regex = new RegExp('(:'+urlVar+'/|:'+urlVar+'$)', 'g');
596
- replacement.variable = urlVal;
517
+ if ( typeof(params.param.file) != 'undefined' && /\:/.test(params.param.file)) {
518
+ var _regex = new RegExp('(:'+urlVar+'/|:'+urlVar+'$)', 'g');
519
+ replacement.variable = urlVal;
597
520
  params.param.file = params.param.file.replace( _regex, replacement );
521
+ _regex = null;
598
522
  }
599
523
 
600
524
  // if custom title, title rewrite
601
- if (params.param.title && regex.test(params.param.title)) {
525
+ if (params.param.title && regex.test(params.param.title)) {
602
526
  params.param.title = params.param.title.replace(regex, urlVal);
603
527
  }
604
528
 
529
+
605
530
  if (_param.length == 1) { // fast one
606
-
531
+
607
532
  re = new RegExp( _param[0]);
608
533
  matched = (_param.indexOf(urlVar) > -1) ? _param.indexOf(urlVar) : false;
609
-
534
+
610
535
  if (matched === false ) {
611
536
  // In order to support rules defined like :
612
537
  // { params.url } => `/section/:name/page:number`
613
538
  // { request.url } => `/section/plante/page4`
614
539
  //
615
540
  // with keys = [ ":name", ":number" ]
616
-
541
+
617
542
  if ( urlVar.match(re) ) {
618
543
  matched = 0;
619
544
  }
620
545
  }
621
-
546
+
622
547
 
623
548
  if (matched === false) return matched;
624
549
  // filter on method
625
550
  if (params.method.toLowerCase() !== requestMethod) return false;
626
-
551
+
627
552
  if ( typeof(request[requestMethod]) == 'undefined' ) {
628
553
  request[requestMethod] = {}
629
554
  }
@@ -635,7 +560,7 @@ function Routing() {
635
560
  regex = params.requirements[key];
636
561
  if (/^\//.test(regex)) {
637
562
  re = regex.match(/\/(.*)\//).pop();
638
- flags = regex.replace('/' + re + '/', '');
563
+ flags = regex.replace('/' + re + '/', '');
639
564
 
640
565
  tested = new RegExp(re, flags).test(urlVal)
641
566
  } else if ( /^validator\:\:/.test(regex) && urlVal) {
@@ -644,11 +569,11 @@ function Routing() {
644
569
  * "id" : "/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i",
645
570
  * "email": "validator::{ isEmail: true, isString: [7] }"
646
571
  * }
647
- *
572
+ *
648
573
  * e.g.: tested = new Validator('routing', _data, null, {email: {isEmail: true, subject: \"Anything\"}} ).isEmail().valid;
649
- */
650
- _data = {}; _ruleObj = {}; _rule = {}; str = '';
651
- urlVar.replace( new RegExp('[^'+ key +']','g'), function(){ str += arguments[0] });
574
+ */
575
+ _data = {}; _ruleObj = {}; _rule = {}; str = '';
576
+ urlVar.replace( new RegExp('[^'+ key +']','g'), function(){ str += arguments[0] });
652
577
  _data[key] = urlVal.replace( new RegExp(str, 'g'), '');
653
578
  try {
654
579
  //_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
@@ -656,11 +581,11 @@ function Routing() {
656
581
  regex.split(/::/).splice(1)[0]
657
582
  .replace(/([^\:\"\s+](\w+))\:/g, '"$1":') // { query: { validIf: true }} => { "query": { "validIf": true }}
658
583
  .replace(/([^\:\"\s+](\w+))\s+\:/g, '"$1":') // note the space between `validIf` & `:` { query: { validIf : true }} => { "query": { "validIf": true }}
659
- );
584
+ );
660
585
  } catch (err) {
661
586
  throw err;
662
587
  }
663
- //_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
588
+ //_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
664
589
  if (typeof(_ruleObj.query) != 'undefined' && typeof(_ruleObj.query.data) != 'undefined') {
665
590
  // since we only have one param
666
591
  // :var1 == :var1
@@ -670,7 +595,7 @@ function Routing() {
670
595
  request.params[key] = _data[key];
671
596
  }
672
597
  }
673
- _rule[key] = _ruleObj;
598
+ _rule[key] = _ruleObj;
674
599
  _validator = new Validator('routing', _data, null, _rule );
675
600
  if (_ruleObj.count() == 0 ) {
676
601
  console.error('Route validation failed '+ params.rule);
@@ -681,7 +606,7 @@ function Routing() {
681
606
  await _validator[key][rule].apply(_validator[key], _ruleObj[rule]);
682
607
  } else {
683
608
  await _validator[key][rule](_ruleObj[rule], request, response, next);
684
- }
609
+ }
685
610
  }
686
611
  tested = _validator.isValid();
687
612
  } else {
@@ -694,7 +619,7 @@ function Routing() {
694
619
  typeof(params.requirements[key]) != 'undefined' &&
695
620
  typeof(request.params) != 'undefined' &&
696
621
  tested
697
- ) {
622
+ ) {
698
623
  request.params[key] = urlVal;
699
624
  if ( typeof(request[requestMethod][key]) == 'undefined' ) {
700
625
  request[requestMethod][key] = urlVal;
@@ -744,22 +669,22 @@ function Routing() {
744
669
  * "id" : "/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i",
745
670
  * "email": "validator::{ isEmail: true, isString: [7] }"
746
671
  * }
747
- *
672
+ *
748
673
  * e.g.: tested = new Validator('routing', _data, null, {email: {isEmail: true}} ).isEmail().valid;
749
- */
750
- _data = {}; _ruleObj = {}; _rule = {}; str = '';
751
- urlVar.replace( new RegExp('[^'+ key[0] +']','g'), function(){ str += arguments[0] });
674
+ */
675
+ _data = {}; _ruleObj = {}; _rule = {}; str = '';
676
+ urlVar.replace( new RegExp('[^'+ key[0] +']','g'), function(){ str += arguments[0] });
752
677
  _data[key[0]] = urlVal.replace( new RegExp(str, 'g'), '');
753
- _ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
754
- _rule[key[0]] = _ruleObj;
678
+ _ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
679
+ _rule[key[0]] = _ruleObj;
755
680
  _validator = new Validator('routing', _data, null, _rule );
756
-
681
+
757
682
  for (let rule in _ruleObj) {
758
683
  if (Array.isArray(_ruleObj[rule])) { // has args
759
684
  _validator[key[0]][rule].apply(_validator[key[0]], _ruleObj[rule])
760
685
  } else {
761
686
  _validator[key[0]][rule](_ruleObj[rule])
762
- }
687
+ }
763
688
  }
764
689
  tested = _validator.isValid();
765
690
  } else {
@@ -817,9 +742,9 @@ function Routing() {
817
742
 
818
743
  return false
819
744
  }
820
-
745
+
821
746
  var replacement = function(matched){
822
- return ( /\/$/.test(matched) ? replacement.variable+ '/': replacement.variable )
747
+ return ( /\/$/.test(matched) ? replacement.variable+ '/': replacement.variable )
823
748
  };
824
749
  var checkRouteParams = function(route, params) {
825
750
  var variable = null
@@ -833,48 +758,48 @@ function Routing() {
833
758
  ;
834
759
  for (p in route.param) {
835
760
  if ( typeof(params) != 'undefined' && typeof(params[p]) == 'undefined' ) continue;
836
-
761
+
837
762
  if ( /^:/.test(route.param[p]) ) {
838
763
  variable = route.param[p].substr(1);
839
-
764
+
840
765
  if ( typeof(params) != 'undefined' && typeof(params[variable]) != 'undefined' ) {
841
-
842
- regex = new RegExp('(:'+variable+'/|:'+variable+'$)', 'g');
843
-
844
766
 
845
- if ( typeof(route.param.path) != 'undefined' && /:/.test(route.param.path) ) {
767
+ regex = new RegExp('(:'+variable+'/|:'+variable+'$)', 'g');
768
+
769
+
770
+ if ( typeof(route.param.path) != 'undefined' && /\:/.test(route.param.path) ) {
846
771
  route.param.path = route.param.path.replace( regex, params[variable]);
847
772
  }
848
- if (typeof (route.param.title) != 'undefined' && /:/.test(route.param.title)) {
773
+ if (typeof (route.param.title) != 'undefined' && /\:/.test(route.param.title)) {
849
774
  route.param.title = route.param.title.replace( regex, params[variable]);
850
775
  }
851
- if (typeof (route.param.namespace) != 'undefined' && /:/.test(route.param.namespace)) {
776
+ if (typeof (route.param.namespace) != 'undefined' && /\:/.test(route.param.namespace)) {
852
777
  route.param.namespace = route.param.namespace.replace( regex, params[variable]);
853
778
  }
854
779
  // file is handle like url replacement (path is like pathname)
855
- if (typeof (route.param.file) != 'undefined' && /:/.test(route.param.file)) {
856
- replacement.variable = params[variable];
780
+ if (typeof (route.param.file) != 'undefined' && /\:/.test(route.param.file)) {
781
+ replacement.variable = params[variable];
857
782
  route.param.file = route.param.file.replace( regex, replacement );
858
783
  }
859
-
860
- if ( /\,/.test(route.url) ) {
784
+
785
+ if ( /\,/.test(route.url) ) {
861
786
  urls = route.url.split(/\,/g);
862
787
  i = 0; len = urls.length;
863
788
  for (; i < len; ++i) {
864
- replacement.variable = params[variable];
789
+ replacement.variable = params[variable];
865
790
  urls[i] = urls[i].replace( regex, replacement );
866
791
  }
867
792
  route.url = urls.join(',');
868
- } else {
869
- replacement.variable = params[variable];
793
+ } else {
794
+ replacement.variable = params[variable];
870
795
  route.url = route.url.replace( regex, replacement );
871
796
  }
872
797
  }
873
798
  }
874
799
  }
875
-
800
+
876
801
  // Selecting url in case of multiple urls & optional requirmements
877
- if ( urls ) {
802
+ if ( urls ) {
878
803
  i = 0; len = urls.length;
879
804
  var rawUrlVars = null
880
805
  , rawUrlScore = null
@@ -901,8 +826,8 @@ function Routing() {
901
826
  route.urlIndex = i;
902
827
  }
903
828
  }
904
- }
905
-
829
+ }
830
+
906
831
  return route;
907
832
  }
908
833
 
@@ -916,7 +841,7 @@ function Routing() {
916
841
  * @returns {object} route
917
842
  * */
918
843
  self.getRoute = function(rule, params, urlIndex) {
919
-
844
+
920
845
  var config = null;
921
846
  if (isGFFCtx) {
922
847
  config = window.gina.config;
@@ -926,13 +851,13 @@ function Routing() {
926
851
  config.getRouting = getContext('gina').Config.instance.getRouting;
927
852
  }
928
853
  }
929
-
854
+
930
855
  var env = config.env || GINA_ENV // by default, takes the current bundle
931
856
  , envTmp = null
932
857
  //, scheme = null
933
858
  , bundle = config.bundle // by default, takes the current bundle
934
859
  ;
935
-
860
+
936
861
  if ( !/\@/.test(rule) && typeof(bundle) != 'undefined' && bundle != null) {
937
862
  rule = rule.toLowerCase()
938
863
  rule += '@' + bundle
@@ -957,22 +882,16 @@ function Routing() {
957
882
 
958
883
  rule = arr[0].toLowerCase() +'@'+ bundle;
959
884
  }
960
-
961
-
885
+
886
+
962
887
  var routing = config.getRouting(bundle, env);
963
888
 
964
889
  if ( typeof(routing[rule]) == 'undefined' ) {
965
890
  throw new Error('[ RoutingHelper::getRouting(rule, params) ] : `' +rule + '` not found !')
966
891
  }
967
892
 
968
- var route = JSON.clone(routing[rule]);
969
- var variable = null
970
- , regex = null
971
- , urls = null
972
- , i = null
973
- , len = null
974
- , msg = null
975
- ;
893
+ var route = JSON.clone(routing[rule]);
894
+ var msg = null;
976
895
  route = checkRouteParams(route, params);
977
896
 
978
897
  if ( /\,/.test(route.url) ) {
@@ -981,64 +900,92 @@ function Routing() {
981
900
  delete route.urlIndex;
982
901
  }
983
902
  urlIndex = ( typeof(urlIndex) != 'undefined' ) ? urlIndex : 0;
984
- route.url = route.url.split(/,/g)[urlIndex];
903
+ route.url = route.url.split(/,/g)[urlIndex];
985
904
  }
986
905
  // fix url in case of empty param value allowed by the routing rule
987
906
  // to prevent having a folder.
988
907
  // eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
989
908
  if ( /\/$/.test(route.url) && route.url != '/' )
990
909
  route.url = route.url.substr(0, route.url.length-1);
991
-
910
+
992
911
  // Completeting url with extra params e.g.: ?param1=val1&param2=val2
993
912
  if ( /GET/i.test(route.method) && typeof(params) != 'undefined' ) {
994
- var queryParams = '?', maskedUrl = routing[rule].url;
995
- //self.reservedParams;
913
+ var queryParams = '?'
914
+ , maskedUrl = routing[rule].url
915
+ ;
916
+
917
+ // in route.rule params
918
+ var extracted = [], i = 0;
996
919
  for (let r in route.param) {
997
920
  if ( self.reservedParams.indexOf(r) > -1 || new RegExp(route.param[r]).test(maskedUrl) )
998
921
  continue;
999
- if (typeof(params[r]) != 'undefined' )
1000
- queryParams += r +'='+ encodeURIComponent(params[r])+ '&';
922
+ if (typeof(params[r]) != 'undefined' ) {
923
+ queryParams += r +'='+ encodeRFC5987ValueChars(params[r])+ '&';
924
+ extracted[i] = params[r];
925
+ ++i;
926
+ }
1001
927
  }
1002
-
928
+
929
+ // extra params ( not declared in the rule, but added by getUrl() )
930
+ for (let p in params) {
931
+ if (
932
+ self.reservedParams.indexOf(p) > -1
933
+ || typeof(route.requirements[p]) != 'undefined'
934
+ || extracted.indexOf(p) > -1
935
+ ) {
936
+ continue;
937
+ }
938
+ if ( typeof(params[p]) == 'object' ) {
939
+ queryParams += p +'='+ encodeRFC5987ValueChars(JSON.stringify(params[p])) +'&';
940
+ } else {
941
+ queryParams += p +'='+ params[p] +'&';
942
+ }
943
+ }
944
+ maskedUrl = null;
945
+ extracted = null;
946
+ i = null;
947
+
1003
948
  if (queryParams.length > 1) {
1004
949
  queryParams = queryParams.substring(0, queryParams.length-1);
950
+
1005
951
  route.url += queryParams;
1006
952
  }
953
+ queryParams = null;
1007
954
  }
1008
-
955
+
1009
956
  // recommanded for x-bundle coms
1010
957
  // leave `ignoreWebRoot` empty or set it to false for x-bundle coms
1011
958
  route.toUrl = function (ignoreWebRoot) {
1012
-
959
+
1013
960
  var urlProps = null;
1014
961
  if ( /^redirect$/i.test(this.param.control) ) {
1015
962
  urlProps = self.getUrlProps(this.bundle, (env||GINA_ENV));
1016
963
  }
1017
-
964
+
1018
965
  var wroot = this.webroot || urlProps.webroot
1019
966
  , hostname = this.hostname || urlProps.hostname
1020
967
  , path = this.url
1021
968
  ;
1022
-
969
+
1023
970
  this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
1024
971
 
1025
972
  return hostname + this.url
1026
973
  };
1027
-
974
+
1028
975
  /**
1029
976
  * request current url
1030
- *
1031
- *
1032
- *
977
+ *
978
+ *
979
+ *
1033
980
  * @param {boolean} [ignoreWebRoot]
1034
981
  * @param {object} [options] - see: https://nodejs.org/api/https.html#https_new_agent_options
1035
982
  * @param {object} [_this] - current context: only used when `promisify`is used
1036
- *
983
+ *
1037
984
  * @callback {callback} [cb] - see: https://nodejs.org/api/https.html#https_new_agent_options
1038
985
  * @param {object} res
1039
986
  */
1040
987
  route.request = function(ignoreWebRoot, options) {
1041
-
988
+
1042
989
  var cb = null, _this = null;
1043
990
  if ( typeof(arguments[arguments.length-1]) == 'function' ) {
1044
991
  cb = arguments[arguments.length-1];
@@ -1046,72 +993,78 @@ function Routing() {
1046
993
  if ( typeof(arguments[2]) == 'object' ) {
1047
994
  _this = arguments[2];
1048
995
  }
1049
-
996
+
1050
997
  var wroot = this.webroot || _this.webroot
1051
998
  , hostname = this.hostname || _this.hostname
1052
999
  , url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : this.url || _this.url
1053
1000
  ;
1054
-
1001
+
1055
1002
  var scheme = ( /^https/.test(hostname) ) ? 'https' : 'http';
1056
-
1003
+
1057
1004
  if (isGFFCtx) {
1058
1005
  var target = ( typeof(options) != 'undefined' && typeof(options.target) != 'undefined' ) ? options.target : "_self";
1059
- window.open(url, target)
1060
- } else {
1061
- if ( typeof(options.agent) == 'undefined' ) {
1062
- // See.: https://nodejs.org/api/http.html#http_class_http_agent
1063
- // create an agent just for this request
1064
- options.agent = false;
1065
- }
1066
- var agent = require(''+scheme);
1067
- var onAgentResponse = function(res) {
1068
-
1069
- var data = '', err = false;
1070
-
1071
- res.on('data', function (chunk) {
1072
- data += chunk;
1073
- });
1074
- res.on('error', function (error) {
1075
- err = 'Failed to get mail content';
1076
- if (error && typeof(error.stack) != 'undefined' ) {
1077
- err += error.stack;
1078
- } else if ( typeof(error) == 'string' ) {
1079
- err += '\n' + error;
1080
- }
1081
- });
1082
- res.on('end', function () {
1083
- if (/^\{/.test(data) ) {
1084
- try {
1085
- data = JSON.parse(data);
1086
- if (typeof(data.error) != 'undefined') {
1087
- err = JSON.clone(data);
1088
- data = null;
1089
- }
1090
- } catch(parseError) {
1091
- err = parseError
1006
+ window.open(url, target);
1007
+ return;
1008
+ }
1009
+
1010
+ if ( typeof(options.agent) == 'undefined' ) {
1011
+ // See.: https://nodejs.org/api/http.html#http_class_http_agent
1012
+ // create an agent just for this request
1013
+ options.agent = false;
1014
+ }
1015
+ var agent = require(''+scheme);
1016
+ var onAgentResponse = function(res) {
1017
+
1018
+ var data = '', err = false;
1019
+
1020
+ res.on('data', function (chunk) {
1021
+ data += chunk;
1022
+ });
1023
+ res.on('error', function (error) {
1024
+ err = 'Failed to get mail content';
1025
+ if (error && typeof(error.stack) != 'undefined' ) {
1026
+ err += error.stack;
1027
+ } else if ( typeof(error) == 'string' ) {
1028
+ err += '\n' + error;
1029
+ }
1030
+ });
1031
+ res.on('end', function () {
1032
+ if (/^\{/.test(data) ) {
1033
+ try {
1034
+ data = JSON.parse(data);
1035
+ if (typeof(data.error) != 'undefined') {
1036
+ err = JSON.clone(data);
1037
+ data = null;
1092
1038
  }
1039
+ } catch(parseError) {
1040
+ err = parseError
1093
1041
  }
1094
- if (err) {
1095
- cb(err);
1096
- return;
1097
- }
1098
-
1099
- cb(false, data);
1042
+ }
1043
+ if (err) {
1044
+ cb(err);
1100
1045
  return;
1101
- });
1102
- }
1103
- if (cb) {
1104
- agent.get(url, options, onAgentResponse);
1105
- } else {
1106
- // just throw the request without waiting/handling response
1107
- agent.get(url, options);
1108
- }
1046
+ }
1047
+
1048
+ cb(false, data);
1049
+ return;
1050
+ });
1051
+ }
1052
+ if (cb) {
1053
+ agent.get(url, options, onAgentResponse);
1054
+ } else {
1055
+ // just throw the request without waiting/handling response
1056
+ agent.get(url, options);
1109
1057
  }
1110
- return;
1111
-
1058
+ return;
1059
+
1112
1060
  } // EO route.request()
1113
-
1114
- if ( /\:/.test(route.url) ) {
1061
+
1062
+ if (
1063
+ /\:/.test(route.url)
1064
+ // Avoiding : `/bundle/path?redirect=https://bundle-dev-scope-v1.docmain.com:3132/bundle/referrer-path`
1065
+ && !/\:d+\//.test(route.url)
1066
+ && !/\:\/\//.test(route.url)
1067
+ ) {
1115
1068
  var paramList = route.url
1116
1069
  .match(/(\:(.*)\/|\:(.*)$)/g)
1117
1070
  .map(function(el){ return el.replace(/\//g, ''); }).join(', ');
@@ -1119,6 +1072,9 @@ function Routing() {
1119
1072
  msg = msg.replace(/\%r/, rule);
1120
1073
  var err = new Error(msg);
1121
1074
  console.warn( err );
1075
+ paramList = null;
1076
+ err = null;
1077
+ msg = null;
1122
1078
  // Do not throw error nor return here !!!
1123
1079
  }
1124
1080
 
@@ -1134,21 +1090,21 @@ function Routing() {
1134
1090
  // adding hash if found
1135
1091
  if (hash)
1136
1092
  url += hash;
1137
-
1093
+
1138
1094
  route.url = url;
1139
1095
  // recommanded for x-bundle coms
1140
1096
  // leave `ignoreWebRoot` empty or set it to false for x-bundle coms
1141
- route.toUrl = function (ignoreWebRoot) {
1097
+ route.toUrl = function (ignoreWebRoot) {
1142
1098
  var wroot = this.webroot
1143
1099
  , hostname = this.hostname
1144
1100
  , path = this.url
1145
1101
  ;
1146
-
1102
+
1147
1103
  this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
1148
1104
 
1149
1105
  return hostname + this.url
1150
1106
  };
1151
-
1107
+
1152
1108
  return route
1153
1109
  }
1154
1110
 
@@ -1161,18 +1117,19 @@ function Routing() {
1161
1117
  * @param {string} url e.g.: /webroot/some/url/path or http
1162
1118
  * @param {string} [bundle] targeted bundle
1163
1119
  * @param {string} [method] request method (GET|PUT|PUT|DELETE) - GET is set by default
1164
- * @param {object} [request]
1120
+ * @param {object} [request]
1165
1121
  * @param {boolean} [isOverridinMethod] // will replace request.method by the provided method - Used for redirections
1166
- *
1122
+ *
1167
1123
  * @returns {object|boolean} route - when route is found; `false` when not found
1168
1124
  * */
1169
-
1125
+
1170
1126
  self.getRouteByUrl = function (url, bundle, method, request, isOverridinMethod) {
1171
-
1127
+
1172
1128
  if (
1173
- arguments.length == 2
1174
- && typeof(arguments[1]) != 'undefined'
1175
- && self.allowedMethods.indexOf(arguments[1].toLowerCase()) > -1
1129
+ arguments.length == 2
1130
+ && typeof(arguments[1]) != 'undefined'
1131
+ && arguments[1]
1132
+ && self.allowedMethods.indexOf(arguments[1].toLowerCase()) > -1
1176
1133
  ) {
1177
1134
  method = arguments[1];
1178
1135
  bundle = undefined;
@@ -1185,24 +1142,24 @@ function Routing() {
1185
1142
  , hostname = null
1186
1143
  , host = null
1187
1144
  ;
1188
-
1145
+
1189
1146
  if ( /\#/.test(url) && url.length > 1 ) {
1190
1147
  var urlPart = url.split(/\#/);
1191
1148
  url = urlPart[0];
1192
1149
  hash = '#' + urlPart[1];
1193
-
1150
+
1194
1151
  urlPart = null;
1195
1152
  }
1196
-
1153
+
1197
1154
  // fast method
1198
1155
  if (
1199
- arguments.length == 1
1200
- && typeof(arguments[0]) != 'undefined'
1156
+ arguments.length == 1
1157
+ && typeof(arguments[0]) != 'undefined'
1201
1158
  ) {
1202
1159
  if ( !/^(https|http)/i.test(url) && !/^\//.test(url)) {
1203
1160
  url = '/'+ url;
1204
1161
  }
1205
-
1162
+
1206
1163
  webroot = '/' + url.split(/\//g)[1];
1207
1164
  if (isGFFCtx) {
1208
1165
  reverseRouting = gina.config.reverseRouting;
@@ -1216,24 +1173,24 @@ function Routing() {
1216
1173
  host = infos.host;
1217
1174
  hostname = infos.hostname;
1218
1175
  infos = null;
1219
- }
1176
+ }
1220
1177
  }
1221
-
1178
+
1222
1179
  isOverridinMethod = ( typeof(arguments[arguments.length-1]) != 'boolean') ? false : arguments[arguments.length-1];
1223
1180
 
1224
- var matched = false
1181
+ var matched = false
1225
1182
  , config = null
1226
1183
  , env = null
1227
1184
  , prefix = null
1228
1185
  , pathname = null
1229
1186
  , params = null
1230
1187
  , isRoute = null
1231
- , foundRoute = null
1232
- , routeObj = null
1188
+ , foundRoute = null
1189
+ , routeObj = null
1233
1190
  ;
1234
-
1235
-
1236
-
1191
+
1192
+
1193
+
1237
1194
  var isMethodProvidedByDefault = ( typeof(method) != 'undefined' ) ? true : false;
1238
1195
 
1239
1196
  if (isGFFCtx) {
@@ -1257,18 +1214,18 @@ function Routing() {
1257
1214
  } else {
1258
1215
 
1259
1216
  var gnaCtx = getContext('gina');
1260
-
1217
+
1261
1218
  config = gnaCtx.config;
1262
1219
  bundle = (typeof (bundle) != 'undefined') ? bundle : config.bundle;
1263
1220
  env = config.env;
1264
1221
  routing = config.getRouting(bundle);
1265
-
1266
-
1222
+
1223
+
1267
1224
 
1268
1225
  hostname = config.envConf[bundle][env].hostname;
1269
1226
  webroot = config.envConf[bundle][env].server.webroot;
1270
1227
  prefix = hostname + webroot;
1271
-
1228
+
1272
1229
  if ( !request ) {
1273
1230
  request = {
1274
1231
  routing: {},
@@ -1286,15 +1243,15 @@ function Routing() {
1286
1243
 
1287
1244
  pathname = url.replace( new RegExp('^('+ hostname +'|'+hostname.replace(/\:\d+/, '') +')' ), '');
1288
1245
  if ( typeof(request.routing.path) == 'undefined' )
1289
- request.routing.path = unescape(pathname);
1246
+ request.routing.path = decodeURI(pathname);
1290
1247
  method = ( typeof(method) != 'undefined' ) ? method.toLowerCase() : 'get';
1291
-
1248
+
1292
1249
  if (isMethodProvidedByDefault) {
1293
1250
  // to handle 303 redirect like PUT -> GET
1294
1251
  request.originalMethod = request.method;
1295
-
1252
+
1296
1253
  request.method = method;
1297
- request.routing.path = unescape(pathname)
1254
+ request.routing.path = decodeURI(pathname)
1298
1255
  }
1299
1256
  // last method check
1300
1257
  if ( !request.method)
@@ -1302,8 +1259,8 @@ function Routing() {
1302
1259
 
1303
1260
  // getting params
1304
1261
  params = {};
1305
-
1306
-
1262
+
1263
+
1307
1264
 
1308
1265
  var paramsList = null;
1309
1266
  var re = new RegExp(method, 'i');
@@ -1318,18 +1275,18 @@ function Routing() {
1318
1275
  if (routing[name].bundle != bundle) continue;
1319
1276
 
1320
1277
  // method filter
1321
- localMethod = routing[name].method;
1278
+ localMethod = routing[name].method;
1322
1279
  if ( /\,/.test( localMethod ) && re.test(localMethod) ) {
1323
1280
  localMethod = request.method
1324
- }
1281
+ }
1325
1282
  if (typeof (routing[name].method) != 'undefined' && !re.test(localMethod)) continue;
1326
-
1327
- //Preparing params to relay to the core/router.
1283
+
1284
+ //Preparing params to relay to the core/router.
1328
1285
  params = {
1329
1286
  method : localMethod,
1330
1287
  requirements : routing[name].requirements,
1331
1288
  namespace : routing[name].namespace || undefined,
1332
- url : unescape(pathname), /// avoid %20
1289
+ url : decodeURI(pathname), /// avoid %20
1333
1290
  rule : routing[name].originalRule || name,
1334
1291
  param : routing[name].param,
1335
1292
  //middleware: routing[name].middleware,
@@ -1340,8 +1297,8 @@ function Routing() {
1340
1297
 
1341
1298
  // normal case
1342
1299
  //Parsing for the right url.
1343
- try {
1344
-
1300
+ try {
1301
+
1345
1302
  isRoute = self.compareUrls(params, routing[name].url, request);
1346
1303
 
1347
1304
  if (isRoute.past) {
@@ -1361,96 +1318,96 @@ function Routing() {
1361
1318
  } //EO for break out
1362
1319
 
1363
1320
  if (!matched) {
1364
- if (isGFFCtx) {
1365
- var urlHasChanged = false;
1366
- if (
1367
- url == '#'
1368
- && /GET/i.test(method)
1369
- && isMethodProvidedByDefault
1321
+ if (isGFFCtx) {
1322
+ var urlHasChanged = false;
1323
+ if (
1324
+ url == '#'
1325
+ && /GET/i.test(method)
1326
+ && isMethodProvidedByDefault
1370
1327
  || /^404\:/.test(url)
1371
1328
  ) {
1372
1329
  url = location.pathname;
1373
1330
  urlHasChanged = true;
1374
1331
  }
1375
-
1332
+
1376
1333
  if ( typeof(self.notFound) == 'undefined' ) {
1377
1334
  self.notFound = {}
1378
1335
  }
1379
-
1336
+
1380
1337
  var notFound = null, msg = '[ RoutingHelper::getRouteByUrl(rule[, bundle, method]) ] : route [ %r ] is called but not found inside your view: `' + url + '` !';
1381
1338
  if ( gina.hasPopinHandler && gina.popinIsBinded ) {
1382
1339
  notFound = gina.popin.getActivePopin().target.innerHTML.match(/404\:\[\w+\][a-z 0-9-_@]+/);
1383
1340
  } else {
1384
1341
  notFound = document.body.innerHTML.match(/404\:\[\w+\][a-z 0-9-_@]+/);
1385
1342
  }
1386
-
1343
+
1387
1344
  notFound = (notFound && notFound.length > 0) ? notFound[0] : null;
1388
-
1345
+
1389
1346
  if ( notFound && isMethodProvidedByDefault && urlHasChanged ) {
1390
-
1391
- var m = notFound.match(/\[\w+\]/)[0];
1392
-
1347
+
1348
+ var m = notFound.match(/\[\w+\]/)[0];
1349
+
1393
1350
  notFound = notFound.replace('404:'+m, m.replace(/\[|\]/g, '')+'::' );
1394
-
1351
+
1395
1352
  msg = msg.replace(/\%r/, notFound.replace(/404\:\s+/, ''));
1396
-
1353
+
1397
1354
  if (typeof(self.notFound[notFound]) == 'undefined') {
1398
- self.notFound[notFound] = {
1355
+ self.notFound[notFound] = {
1399
1356
  count: 1,
1400
- message: msg
1357
+ message: msg
1401
1358
  };
1402
1359
  } else if ( isMethodProvidedByDefault && typeof(self.notFound[notFound]) != 'undefined' ) {
1403
1360
  ++self.notFound[notFound].count;
1404
1361
  }
1405
-
1406
- return false
1407
- }
1408
-
1409
- notFound = null;
1410
-
1411
- var altRule = gina.config.reverseRouting[url] || null;
1362
+
1363
+ return false
1364
+ }
1365
+
1366
+ notFound = null;
1367
+
1368
+ var altRule = gina.config.reverseRouting[url] || null;
1412
1369
  if (
1413
- !notFound
1370
+ !notFound
1414
1371
  && altRule
1415
1372
  && typeof(altRule) != 'undefined'
1416
1373
  && altRule.split(/\@(.+)$/)[1] == bundle
1417
1374
  ) {
1418
-
1375
+
1419
1376
  notFound = altRule;
1420
1377
  if ( typeof(self.notFound[notFound]) == 'undefined' ) {
1421
-
1378
+
1422
1379
  msg = msg.replace(/\%r/, method.toUpperCase() +'::'+ altRule);
1423
-
1424
- self.notFound[notFound] = {
1380
+
1381
+ self.notFound[notFound] = {
1425
1382
  count: 1,
1426
- message: msg
1383
+ message: msg
1427
1384
  };
1428
- //console.warn(msg);
1385
+ //console.warn(msg);
1429
1386
  } else if ( isMethodProvidedByDefault && typeof(self.notFound[notFound]) != 'undefined' ) {
1430
1387
  ++self.notFound[notFound].count;
1431
1388
  }
1432
-
1389
+
1433
1390
  return false
1434
1391
  }
1435
-
1392
+
1436
1393
  // forms
1437
1394
  var altRoute = self.compareUrls(params, url, request) || null;
1438
1395
  if(altRoute.past && isMethodProvidedByDefault) {
1439
1396
  notFound = method.toUpperCase() +'::'+ altRoute.request.routing.rule;
1440
1397
  if ( typeof(self.notFound[notFound]) == 'undefined' ) {
1441
1398
  msg = msg.replace(/\%r/, notFound);
1442
- //console.warn(msg);
1399
+ //console.warn(msg);
1443
1400
  } else {
1444
1401
  ++self.notFound[notFound].count;
1445
1402
  }
1446
-
1403
+
1447
1404
  return false
1448
- }
1405
+ }
1449
1406
  return false
1450
1407
  }
1451
1408
 
1452
-
1453
- console.warn( new Error('[ RoutingHelper::getRouteByUrl(rule[, bundle, method, request]) ] : route not found for url: `' + url + '` !').stack );
1409
+
1410
+ console.warn( new Error('[ RoutingHelper::getRouteByUrl(rule[, bundle, method, request]) ] : route not found for url: `' + url + '` !').stack );
1454
1411
  return false;
1455
1412
  } else {
1456
1413
  // fix url in case of empty param value allowed by the routing rule
@@ -1461,21 +1418,21 @@ function Routing() {
1461
1418
  // adding hash if found
1462
1419
  if (hash)
1463
1420
  url += hash;
1464
-
1421
+
1465
1422
  route.url = url;
1466
1423
  // recommanded for x-bundle coms
1467
1424
  // leave `ignoreWebRoot` empty or set it to false for x-bundle coms
1468
- route.toUrl = function (ignoreWebRoot) {
1425
+ route.toUrl = function (ignoreWebRoot) {
1469
1426
  var wroot = this.webroot
1470
1427
  , hostname = this.hostname
1471
1428
  , path = this.url
1472
1429
  ;
1473
-
1430
+
1474
1431
  this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
1475
-
1432
+
1476
1433
  return hostname + this.url
1477
1434
  };
1478
-
1435
+
1479
1436
  return route
1480
1437
  }
1481
1438
  }
@@ -1487,6 +1444,6 @@ if ((typeof (module) !== 'undefined') && module.exports) {
1487
1444
  // Publish as node.js module
1488
1445
  module.exports = Routing()
1489
1446
  } else if (typeof (define) === 'function' && define.amd) {
1490
- // Publish as AMD module
1491
- define('utils/routing', ['require', 'utils/form-validator', 'utils/merge'], function() { return Routing() })
1447
+ // Publish as AMD module
1448
+ define('lib/routing', ['require', 'lib/form-validator', 'lib/merge'], function() { return Routing() })
1492
1449
  }