gina 0.1.6-alpha.16 → 0.1.6-alpha.160

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 (410) 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.16/lib/inherits → v0.1.6-alpha.160}/LICENSE +1 -1
  7. package/framework/v0.1.6-alpha.160/VERSION +1 -0
  8. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/plugin/README.md +1 -0
  9. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  10. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  11. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
  12. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +1 -1
  13. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/html/toolbar.html.br +0 -0
  14. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/html/toolbar.html.gz +0 -0
  15. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/plugin/dist/vendor/gina/js/gina.js +6441 -5612
  16. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.min.js +790 -0
  17. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  18. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  19. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
  20. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +9 -0
  21. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  22. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  23. package/framework/v0.1.6-alpha.160/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
  24. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/config.js +149 -57
  25. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/index.js +108 -26
  26. package/framework/{v0.1.6-alpha.16/core/connectors/couchbase/lib/connector.v4.js → v0.1.6-alpha.160/core/connectors/couchbase/lib/connector.v3.js} +170 -69
  27. package/framework/v0.1.6-alpha.160/core/connectors/couchbase/lib/connector.v4.js +470 -0
  28. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/lib/session-store.v4.js +5 -2
  29. package/framework/v0.1.6-alpha.160/core/content.encoding +9 -0
  30. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/controller/controller.js +847 -1274
  31. package/framework/v0.1.6-alpha.160/core/controller/controller.render-json.js +262 -0
  32. package/framework/v0.1.6-alpha.160/core/controller/controller.render-swig.js +1080 -0
  33. package/framework/v0.1.6-alpha.160/core/controller/controller.render-v1.js +911 -0
  34. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/controller/index.js +2 -2
  35. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
  36. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
  37. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/README.md +191 -0
  38. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
  39. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
  40. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
  41. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
  42. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
  43. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
  44. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/lib/index.js +57 -0
  45. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
  46. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
  47. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/lib/utils.js +596 -0
  48. package/framework/v0.1.6-alpha.160/core/deps/busboy-1.6.0/package.json +22 -0
  49. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/.travis.yml +4 -0
  50. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/LICENSE +21 -0
  51. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/bool.js +10 -0
  52. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/boolean_double.js +7 -0
  53. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/boolean_single.js +7 -0
  54. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/default_hash.js +8 -0
  55. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/default_singles.js +7 -0
  56. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/divide.js +8 -0
  57. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/line_count.js +20 -0
  58. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/line_count_options.js +29 -0
  59. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/line_count_wrap.js +29 -0
  60. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/nonopt.js +4 -0
  61. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/reflect.js +2 -0
  62. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/short.js +3 -0
  63. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/string.js +11 -0
  64. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/usage-options.js +19 -0
  65. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/example/xup.js +10 -0
  66. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/index.js +343 -0
  67. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/package.json +31 -0
  68. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/package.json.dist +39 -0
  69. package/framework/v0.1.6-alpha.160/core/deps/optimist-0.6.1/readme.markdown +513 -0
  70. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/HISTORY.md +498 -0
  71. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/LICENSE +7 -0
  72. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/README.md +88 -0
  73. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/bin/swig.js +161 -0
  74. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/bin/swig.js.dist +161 -0
  75. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
  76. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/dist/swig.min.js.map +8 -0
  77. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/index.js +1 -0
  78. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/dateformatter.js +198 -0
  79. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/filters.js +630 -0
  80. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/lexer.js +306 -0
  81. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/loaders/filesystem.js +59 -0
  82. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/loaders/index.js +53 -0
  83. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/loaders/memory.js +63 -0
  84. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/parser.js +744 -0
  85. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/swig.js +740 -0
  86. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/autoescape.js +37 -0
  87. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/block.js +25 -0
  88. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/else.js +25 -0
  89. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/elseif.js +28 -0
  90. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/extends.js +19 -0
  91. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/filter.js +68 -0
  92. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/for.js +130 -0
  93. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/if.js +86 -0
  94. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/import.js +91 -0
  95. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/include.js +100 -0
  96. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/index.js +16 -0
  97. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/macro.js +79 -0
  98. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/parent.js +51 -0
  99. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/raw.js +23 -0
  100. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/set.js +109 -0
  101. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/tags/spaceless.js +42 -0
  102. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/lib/utils.js +184 -0
  103. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/package.json +57 -0
  104. package/framework/v0.1.6-alpha.160/core/deps/swig-1.4.2/package.json.dist +61 -0
  105. package/framework/v0.1.6-alpha.160/core/deps/swig-client/swig.js +5031 -0
  106. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/dev/index.js +1 -1
  107. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/dev/lib/factory.js +1 -1
  108. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/gna.js +123 -23
  109. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/index.js +3 -3
  110. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/src/make.js +1 -1
  111. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/mime.types +1 -0
  112. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/model/entity.js +5 -5
  113. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/model/index.js +30 -26
  114. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/model/template/entityFactory.js +1 -1
  115. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/model/template/index.js +1 -1
  116. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/index.js +3 -3
  117. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/file/package.json +2 -2
  118. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/intl/package.json +2 -2
  119. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/storage/package.json +2 -2
  120. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/validator/package.json +2 -2
  121. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/validator/src/form-validator.js +39 -27
  122. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/validator/src/main.js +496 -119
  123. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/router.js +100 -49
  124. package/framework/v0.1.6-alpha.160/core/server.isaac.js +790 -0
  125. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/server.js +437 -160
  126. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/status.codes +1 -11
  127. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/controllers/setup.js +2 -2
  128. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/command/gina.tpl +1 -1
  129. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/conf/env.json +28 -2
  130. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/conf/settings.json +4 -1
  131. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/conf/templates.json +4 -2
  132. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/console.js +1 -1
  133. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/context.js +30 -13
  134. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/data/package.json +2 -2
  135. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/data/src/main.js +1 -1
  136. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/dateFormat.js +1 -1
  137. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/index.js +1 -1
  138. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/json/package.json +2 -2
  139. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/json/src/main.js +7 -4
  140. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/path.js +32 -16
  141. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/plugins/package.json +2 -2
  142. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/plugins/src/api-error.js +2 -2
  143. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/plugins/src/main.js +1 -1
  144. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/prototypes.js +8 -1
  145. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/task.js +2 -2
  146. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/text.js +1 -1
  147. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/archiver/package.json +2 -2
  148. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/archiver/src/main.js +11 -11
  149. package/framework/v0.1.6-alpha.160/lib/cache/README.md +19 -0
  150. package/framework/v0.1.6-alpha.160/lib/cache/package.json +20 -0
  151. package/framework/v0.1.6-alpha.160/lib/cache/src/main.js +239 -0
  152. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/add.js +2 -1
  153. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/restart.js +2 -2
  154. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/start.js +26 -11
  155. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/get.js +1 -1
  156. package/framework/v0.1.6-alpha.160/lib/cmd/env/help.js +30 -0
  157. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/set.js +21 -0
  158. package/framework/v0.1.6-alpha.160/lib/cmd/framework/arguments.json +7 -0
  159. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/build.js +1 -1
  160. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/dot.js +21 -0
  161. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/init.js +21 -3
  162. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/link-node-modules.js +2 -3
  163. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/link.js +3 -2
  164. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/restart.js +3 -3
  165. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/start.js +1 -1
  166. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/tail.js +29 -12
  167. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/version.js +15 -1
  168. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/helper.js +44 -15
  169. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/index.js +1 -1
  170. package/framework/v0.1.6-alpha.160/lib/cmd/minion/help.txt +18 -0
  171. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/port/reset.js +1 -1
  172. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/add.js +7 -2
  173. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/arguments.json +1 -0
  174. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/build.js +32 -7
  175. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/help.txt +4 -0
  176. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/list.js +1 -1
  177. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/protocol/list.js +71 -50
  178. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/collection/package.json +2 -2
  179. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/collection/src/main.js +62 -23
  180. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/config.js +1 -1
  181. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cron/package.json +2 -2
  182. package/framework/v0.1.6-alpha.160/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +15754 -0
  183. package/framework/v0.1.6-alpha.160/lib/domain/dist/public_suffix_list.dat +15754 -0
  184. package/framework/v0.1.6-alpha.160/lib/domain/dist/public_suffix_list.dat.br +0 -0
  185. package/framework/v0.1.6-alpha.160/lib/domain/dist/public_suffix_list.dat.gz +0 -0
  186. package/framework/v0.1.6-alpha.160/lib/domain/exemples/backend.js +12 -0
  187. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/domain/package.json +2 -2
  188. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/domain/src/main.js +75 -13
  189. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/generator/index.js +1 -1
  190. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/index.js +3 -2
  191. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160/lib/inherits}/LICENSE +1 -1
  192. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/inherits/package.json +2 -2
  193. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/inherits/src/main.js +1 -1
  194. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/package.json +2 -2
  195. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/containers/file/index.js +2 -0
  196. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/containers/mq/listener.js +10 -2
  197. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/helper.js +1 -1
  198. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/main.js +1 -1
  199. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/math/index.js +1 -1
  200. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/merge/package.json +2 -2
  201. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/model.js +3 -3
  202. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/proc.js +10 -2
  203. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/routing/package.json +2 -2
  204. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/routing/src/main.js +204 -35
  205. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/session-store.js +3 -3
  206. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/shell.js +7 -6
  207. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/swig-filters/package.json +2 -2
  208. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/swig-filters/src/main.js +98 -92
  209. package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/validator.js +2 -2
  210. package/framework/v0.1.6-alpha.160/package.json +11 -0
  211. package/package.json +3 -3
  212. package/resources/package.json.template +1 -1
  213. package/script/post_install.js +4 -4
  214. package/script/pre_install.js +3 -3
  215. package/utils/helper.js +38 -14
  216. package/framework/v0.1.6-alpha.16/VERSION +0 -1
  217. package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +0 -1
  218. package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -766
  219. package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +0 -8
  220. package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -7
  221. package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +0 -8
  222. package/framework/v0.1.6-alpha.16/core/connectors/couchbase/lib/connector.v3.js +0 -432
  223. package/framework/v0.1.6-alpha.16/core/deps/busboy/.travis.yml +0 -17
  224. package/framework/v0.1.6-alpha.16/core/deps/busboy/README.md +0 -225
  225. package/framework/v0.1.6-alpha.16/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -73
  226. package/framework/v0.1.6-alpha.16/core/deps/busboy/deps/encoding/encoding.js +0 -2391
  227. package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/main.js +0 -89
  228. package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/types/multipart.js +0 -328
  229. package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/types/urlencoded.js +0 -214
  230. package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/utils.js +0 -191
  231. package/framework/v0.1.6-alpha.16/core/deps/busboy/package.json +0 -69
  232. package/framework/v0.1.6-alpha.16/core/server.isaac.js +0 -480
  233. package/framework/v0.1.6-alpha.16/lib/domain/dist/public_suffix_list.dat +0 -14186
  234. package/framework/v0.1.6-alpha.16/package.json +0 -14
  235. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/AUTHORS +0 -0
  236. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/html/nolayout.html +0 -0
  237. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/html/static.html +0 -0
  238. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/img/android-chrome-192x192.png +0 -0
  239. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/img/android-chrome-512x512.png +0 -0
  240. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/img/apple-touch-icon.png +0 -0
  241. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/img/favicon-16x16.png +0 -0
  242. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/img/favicon-32x32.png +0 -0
  243. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/img/favicon.ico +0 -0
  244. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  245. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/asset/plugin/uuid.json +0 -0
  246. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/lib/connector.js +0 -0
  247. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/lib/connector.v2.js +0 -0
  248. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/lib/n1ql.js +0 -0
  249. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/lib/session-store.js +0 -0
  250. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  251. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  252. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/controller/controller.framework.js +0 -0
  253. /package/framework/{v0.1.6-alpha.16/core/deps/busboy → v0.1.6-alpha.160/core/deps/busboy-1.6.0}/LICENSE +0 -0
  254. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  255. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/dev/lib/class.js +0 -0
  256. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/dev/lib/tools.js +0 -0
  257. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/README.md +0 -0
  258. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/currency.json +0 -0
  259. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/dist/language/en.json +0 -0
  260. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/dist/language/fr.json +0 -0
  261. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/dist/region/en.json +0 -0
  262. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/dist/region/fr.json +0 -0
  263. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/src/resources/currency.csv +0 -0
  264. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/src/resources/region.csv +0 -0
  265. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/locales/src/resources/region.mapping.json +0 -0
  266. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/README.md +0 -0
  267. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/file/README.md +0 -0
  268. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/file/build.json +0 -0
  269. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/intl/README.md +0 -0
  270. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/intl/build.json +0 -0
  271. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/intl/src/main.js +0 -0
  272. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/storage/README.md +0 -0
  273. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/storage/build.json +0 -0
  274. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/storage/src/main.js +0 -0
  275. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/validator/README.md +0 -0
  276. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/plugins/lib/validator/build.json +0 -0
  277. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/server.express.js +0 -0
  278. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/_gitignore +0 -0
  279. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/config/app.json +0 -0
  280. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/config/routing.json +0 -0
  281. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/config/settings.json +0 -0
  282. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  283. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/config/templates.json +0 -0
  284. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  285. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  286. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle/index.js +0 -0
  287. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  288. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  289. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  290. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  291. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  292. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_public/readme.md +0 -0
  293. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  294. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  295. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  296. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  297. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  298. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/command/gina.bat.tpl +0 -0
  299. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/conf/manifest.json +0 -0
  300. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/conf/package.json +0 -0
  301. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/conf/statics.json +0 -0
  302. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/error/client/json/401.json +0 -0
  303. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/error/client/json/403.json +0 -0
  304. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/error/client/json/404.json +0 -0
  305. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/error/server/html/50x.html +0 -0
  306. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/error/server/json/500.json +0 -0
  307. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/error/server/json/503.json +0 -0
  308. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/core/template/extensions/logger/config.json +0 -0
  309. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/data/LICENSE +0 -0
  310. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/data/README.md +0 -0
  311. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/json/LICENSE +0 -0
  312. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/json/README.md +0 -0
  313. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/helpers/plugins/README.md +0 -0
  314. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/archiver/README.md +0 -0
  315. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/archiver/build.json +0 -0
  316. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/archiver/src/dep/jszip.min.js +0 -0
  317. /package/framework/{v0.1.6-alpha.16/lib/collection → v0.1.6-alpha.160/lib/cache}/build.json +0 -0
  318. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/aliases.json +0 -0
  319. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/arguments.json +0 -0
  320. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/copy.js +0 -0
  321. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/cp.js +0 -0
  322. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/help.js +0 -0
  323. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/help.txt +0 -0
  324. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/list.js +0 -0
  325. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/remove.js +0 -0
  326. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/rename.js +0 -0
  327. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/rm.js +0 -0
  328. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/status.js +0 -0
  329. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/bundle/stop.js +0 -0
  330. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/add.js +0 -0
  331. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/help.txt +0 -0
  332. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/link-dev.js +0 -0
  333. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/list.js +0 -0
  334. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/remove.js +0 -0
  335. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/rm.js +0 -0
  336. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/unset.js +0 -0
  337. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/env/use.js +0 -0
  338. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/get.js +0 -0
  339. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/help.js +0 -0
  340. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/help.txt +0 -0
  341. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/msg.json +0 -0
  342. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/open.js +0 -0
  343. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/set.js +0 -0
  344. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/status.js +0 -0
  345. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/stop.js +0 -0
  346. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/framework/update.js +0 -0
  347. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/gina-dev.1.md +0 -0
  348. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/gina-framework.1.md +0 -0
  349. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/gina.1.md +0 -0
  350. /package/framework/{v0.1.6-alpha.16/lib/cmd/env → v0.1.6-alpha.160/lib/cmd/minion}/help.js +0 -0
  351. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/msg.json +0 -0
  352. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/port/help.js +0 -0
  353. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/port/help.txt +0 -0
  354. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/port/inc/scan.js +0 -0
  355. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/port/list.js +0 -0
  356. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/port/set.js +0 -0
  357. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/help.js +0 -0
  358. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/import.js +0 -0
  359. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/move.js +0 -0
  360. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/remove.js +0 -0
  361. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/rename.js +0 -0
  362. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/restart.js +0 -0
  363. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/rm.js +0 -0
  364. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/start.js +0 -0
  365. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/status.js +0 -0
  366. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/project/stop.js +0 -0
  367. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/protocol/help.js +0 -0
  368. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/protocol/help.txt +0 -0
  369. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/protocol/set.js +0 -0
  370. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/add.js +0 -0
  371. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/help.js +0 -0
  372. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/help.txt +0 -0
  373. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/link-local.js +0 -0
  374. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/link-production.js +0 -0
  375. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/list.js +0 -0
  376. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/remove.js +0 -0
  377. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/rm.js +0 -0
  378. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/scope/use.js +0 -0
  379. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cmd/view/add.js +0 -0
  380. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/collection/README.md +0 -0
  381. /package/framework/{v0.1.6-alpha.16/lib/routing → v0.1.6-alpha.160/lib/collection}/build.json +0 -0
  382. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cron/README.md +0 -0
  383. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/cron/src/main.js +0 -0
  384. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/domain/LICENSE +0 -0
  385. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/domain/README.md +0 -0
  386. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/domain/exemples/frontend.html +0 -0
  387. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/inherits/README.md +0 -0
  388. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/inherits/example/inheriting_eventemitter.js +0 -0
  389. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/inherits/example/protected_inheritance.js +0 -0
  390. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/inherits/example/simple_inheritance.js +0 -0
  391. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
  392. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/README.md +0 -0
  393. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/containers/default/index.js +0 -0
  394. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  395. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  396. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/containers/mq/index.js +0 -0
  397. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/logger/src/containers/mq/speaker.js +0 -0
  398. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/merge/README.md +0 -0
  399. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/merge/example/merge.js +0 -0
  400. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/merge/example/merge_2_literal objects.js +0 -0
  401. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/merge/example/merge_and_preserve_first.js +0 -0
  402. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/merge/src/main.js +0 -0
  403. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/routing/README.md +0 -0
  404. /package/framework/{v0.1.6-alpha.16/lib/domain/exemples/backend.js → v0.1.6-alpha.160/lib/routing/build.json} +0 -0
  405. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/swig-filters/README.md +0 -0
  406. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/url/README.md +0 -0
  407. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/url/index.js +0 -0
  408. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/url/mocks.json +0 -0
  409. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/url/routing.json +0 -0
  410. /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.160}/lib/url/test.js +0 -0
@@ -1,17 +1,16 @@
1
- //"use strict";
2
1
  //Imports.
3
2
  const fs = require('fs');
4
3
  const os = require('os');
5
4
  const path = require('path');
6
5
  const EventEmitter = require('events').EventEmitter;
7
- const Busboy = require('./deps/busboy');
6
+ const swig = require('./deps/swig-1.4.2');
7
+ const Busboy = require('./deps/busboy-1.6.0');
8
8
  const Stream = require('stream');
9
- const zlib = require('zlib'); // gzip / deflate
10
9
  const util = require('util');
11
10
  var https = require('https');
12
11
  const sslChecker = require('ssl-checker');
13
12
 
14
- const swig = require( _(GINA_FRAMEWORK_DIR +'/node_modules/swig', true) );
13
+
15
14
  var Config = require('./config');
16
15
  var Router = require('./router');
17
16
  var lib = require('./../lib');
@@ -21,6 +20,8 @@ var merge = lib.merge;
21
20
  var Proc = lib.Proc;
22
21
  var console = lib.logger;
23
22
  var SwigFilters = lib.SwigFilters;
23
+ var Domain = lib.Domain;
24
+ var domainLib = new Domain();
24
25
 
25
26
  function Server(options) {
26
27
 
@@ -48,7 +49,7 @@ function Server(options) {
48
49
  var swigOptions = {
49
50
  autoescape: ( typeof(conf.autoescape) != 'undefined') ? conf.autoescape: false,
50
51
  loader: swig.loaders.fs(dir),
51
- cache: (conf.cacheless) ? false : 'memory'
52
+ cache: (conf.isCacheless) ? false : 'memory'
52
53
  };
53
54
 
54
55
  swig.setDefaults(swigOptions);
@@ -60,8 +61,8 @@ function Server(options) {
60
61
 
61
62
  try {
62
63
  // Allows you to get a bundle web root
63
- // swig.setFilter('getWebroot', filters.getWebroot);
64
- // swig.setFilter('nl2br', filters.nl2br);
64
+ // e.g.: swig.setFilter('getWebroot', filters.getWebroot);
65
+ // e.g.: swig.setFilter('nl2br', filters.nl2br);
65
66
  for (let filter in filters) {
66
67
  if ( typeof(filters[filter]) == 'function' && !/^getConfig$/.test(filter) ) {
67
68
  swig.setFilter(filter, filters[filter]);
@@ -144,9 +145,14 @@ function Server(options) {
144
145
  },
145
146
  serverOpt,
146
147
  {
147
- engine: options.conf[self.appName][self.env].server.engine,
148
- protocol: options.conf[self.appName][self.env].server.protocol,
149
- scheme: options.conf[self.appName][self.env].server.scheme
148
+ engine : options.conf[self.appName][self.env].server.engine,
149
+ protocol : options.conf[self.appName][self.env].server.protocol,
150
+ scheme : options.conf[self.appName][self.env].server.scheme,
151
+ coreConfiguration : options.conf[self.appName][self.env].server.coreConfiguration,
152
+ isCacheless : options.conf[self.appName][self.env].isCacheless,
153
+ routing : options.conf[self.appName][self.env].routing,
154
+ allRoutes : options.conf.routing,
155
+ cachePath : options.conf[self.appName][self.env].cachePath
150
156
  }
151
157
  );
152
158
 
@@ -162,9 +168,10 @@ function Server(options) {
162
168
  ;
163
169
 
164
170
  // locking port & protocol so it can't be changed by the user's settings
165
- self.conf[self.appName][self.env].server.protocol = serverOpt.protocol;
166
- self.conf[self.appName][self.env].server.scheme = serverOpt.scheme;
167
- self.conf[self.appName][self.env].server.engine = serverOpt.engine;
171
+ self.conf[self.appName][self.env].server.protocol = serverOpt.protocol;
172
+ self.conf[self.appName][self.env].server.scheme = serverOpt.scheme;
173
+ self.conf[self.appName][self.env].server.engine = serverOpt.engine;
174
+ self.conf[self.appName][self.env].server.cachePath = serverOpt.cachePath;
168
175
 
169
176
  serverOpt.port = self.conf[self.appName][self.env].server.port = portsReverse[ self.appName +'@'+ self.projectName ][self.env][serverOpt.protocol][serverOpt.scheme];
170
177
  self.conf[self.appName][self.env].server.debugPort = getContext().debugPort;
@@ -225,7 +232,13 @@ function Server(options) {
225
232
  init(options);
226
233
  }
227
234
 
228
-
235
+ /**
236
+ * Verify certificate validity
237
+ *
238
+ * @param {string} endpoint
239
+ * @param {number} port
240
+ * @returns
241
+ */
229
242
  this.verifyCertificate = async function(endpoint, port) {
230
243
  let sslDetails = null;
231
244
  console.debug('Checking certificate validity...');
@@ -293,6 +306,24 @@ function Server(options) {
293
306
 
294
307
  if (failed) {
295
308
  if (sslDetails.daysRemaining > -1) {
309
+ var isProxyHost = getContext('isProxyHost');
310
+ if ( /^true$/i.test(isProxyHost) ) {
311
+ console.warn("Host is behind a reverse proxy, skipping server.verifyCertificate(...) ");
312
+ return;
313
+ }
314
+ var rootDomain = domainLib.getRootDomain(endpoint).value;
315
+ hasMatchedEntry = false;
316
+ for (let i in sslDetails.validFor) {
317
+ if ( new RegExp(sslDetails.validFor[i].replace(/^\*\./, '') + '$').test(rootDomain) ) {
318
+ hasMatchedEntry = true;
319
+ break;
320
+ }
321
+ }
322
+ if (!hasMatchedEntry) {
323
+ console.warn(`[Certificate] "${endpoint}" : Root domain not matching your certificate. If you plan to run your service behind a revese proxy, please do not forget to add "proxy.json" at the root of your project while going to production.${'\n'} ${humanView}`);
324
+ return;
325
+ }
326
+ // sslDetails.validFor
296
327
  console.emerg(`[Certificate] ${endpoint} : It is like there is a problem with your CA certificate${'\n'} ${humanView}`);
297
328
  return;
298
329
  }
@@ -311,6 +342,16 @@ function Server(options) {
311
342
  instance.getAssets = getAssets;
312
343
  instance.completeHeaders = completeHeaders;
313
344
 
345
+ if ( typeof(instance._cached) == 'undefined' ) {
346
+ instance._cached = new Map();
347
+ }
348
+ if ( typeof(instance._cachedPath) == 'undefined' ) {
349
+ instance._cachePath = self.conf[self.appName][self.env].server.cache.path;
350
+ }
351
+ if ( typeof(instance._cacheIsEnabled) == 'undefined' ) {
352
+ instance._cacheIsEnabled = self.conf[self.appName][self.env].server.cache.enable;
353
+ }
354
+
314
355
  router.setServerInstance(instance);
315
356
  }
316
357
 
@@ -331,7 +372,7 @@ function Server(options) {
331
372
  , serverCoreConf = self.conf.core
332
373
  , routing = {}
333
374
  , reverseRouting = {}
334
- , cacheless = config.isCacheless()
375
+ , isCacheless = config.isCacheless()
335
376
  , env = self.env
336
377
  , scope = self.scope
337
378
  , apps = conf.allBundles // conf.bundles
@@ -371,7 +412,7 @@ function Server(options) {
371
412
  filename = main
372
413
  }
373
414
 
374
- if (cacheless) {
415
+ if (isCacheless) {
375
416
  delete require.cache[require.resolve(_(filename, true))]
376
417
  }
377
418
 
@@ -424,15 +465,15 @@ function Server(options) {
424
465
  }
425
466
 
426
467
  if (typeof(tmp[rule].url) != 'object') {
427
- if (tmp[rule].url.length > 1 && tmp[rule].url.substr(0,1) != '/') {
468
+ if (tmp[rule].url.length > 1 && tmp[rule].url.substring(0,1) != '/') {
428
469
  tmp[rule].url = '/'+tmp[rule].url
429
470
  }
430
- /** else if (tmp[rule].url.length > 1 && conf.envConf[apps[i]][env].server.webroot.substr(conf.envConf[apps[i]][env].server.webroot.length-1,1) == '/') {
431
- tmp[rule].url = tmp[rule].url.substr(1)
471
+ /** else if (tmp[rule].url.length > 1 && conf.envConf[apps[i]][env].server.webroot.substring(conf.envConf[apps[i]][env].server.webroot.length-1,1) == '/') {
472
+ tmp[rule].url = tmp[rule].url.substring(1)
432
473
  }*/
433
474
  else {
434
- if (wroot.substr(wroot.length-1,1) == '/') {
435
- wroot = wroot.substr(wroot.length-1,1).replace('/', '')
475
+ if (wroot.substring(wroot.length-1,1) == '/') {
476
+ wroot = wroot.substring(wroot.length-1,1).replace('/', '')
436
477
  }
437
478
  }
438
479
 
@@ -448,8 +489,8 @@ function Server(options) {
448
489
  localWroot = '/'+ routing[rule].bundle;
449
490
  conf.envConf[tmp[rule].bundle][env].server.webroot = localWroot
450
491
  }
451
- if (localWroot.substr(localWroot.length-1,1) == '/') {
452
- localWroot = localWroot.substr(localWroot.length-1,1).replace('/', '')
492
+ if (localWroot.substring(localWroot.length-1,1) == '/') {
493
+ localWroot = localWroot.substring(localWroot.length-1,1).replace('/', '')
453
494
  }
454
495
  if ( typeof(tmp[rule].param.ignoreWebRoot) == 'undefined' || !tmp[rule].param.ignoreWebRoot )
455
496
  tmp[rule].url = localWroot + tmp[rule].url
@@ -463,11 +504,11 @@ function Server(options) {
463
504
  } else {
464
505
 
465
506
  for (var u=0; u<tmp[rule].url.length; ++u) {
466
- if (tmp[rule].url[u].length > 1 && tmp[rule].url[u].substr(0,1) != '/') {
507
+ if (tmp[rule].url[u].length > 1 && tmp[rule].url[u].substring(0,1) != '/') {
467
508
  tmp[rule].url[u] = '/'+tmp[rule].url[u]
468
509
  } else {
469
- if (wroot.substr(wroot.length-1,1) == '/') {
470
- wroot = wroot.substr(wroot.length-1,1).replace('/', '')
510
+ if (wroot.substring(wroot.length-1,1) == '/') {
511
+ wroot = wroot.substring(wroot.length-1,1).replace('/', '')
471
512
  }
472
513
  }
473
514
  if ( typeof(tmp[rule].param.ignoreWebRoot) == 'undefined' || !tmp[rule].param.ignoreWebRoot )
@@ -584,7 +625,7 @@ function Server(options) {
584
625
  ) {
585
626
 
586
627
  // by default
587
- path = url.replace(url.substr(url.lastIndexOf('/')+1), '');
628
+ path = url.replace(url.substring(url.lastIndexOf('/')+1), '');
588
629
  if ( typeof(altConf) != 'undefined' && altConf ) {
589
630
  bundleConf = self.conf[altConf.split(/\@/)[1]][bundleConf.env];
590
631
  backedupPath = path;
@@ -592,7 +633,7 @@ function Server(options) {
592
633
  }
593
634
 
594
635
 
595
- // catch `statics.json` defined paths || bundleConf.staticResources.indexOf(url.replace(url.substr(url.lastIndexOf('/')+1), '')) > -1
636
+ // catch `statics.json` defined paths || bundleConf.staticResources.indexOf(url.replace(url.substring(url.lastIndexOf('/')+1), '')) > -1
596
637
  if ( bundleConf.staticResources.indexOf(path) > -1 || bundleConf.staticResources.indexOf(staticProps.firstLevel) > -1 ) {
597
638
  if ( typeof(altConf) != 'undefined' && altConf && backedupPath ) {
598
639
  filename = (bundleConf.staticResources.indexOf(path) > -1) ? bundleConf.content.statics[path] + url.replace(backedupPath, '/') : bundleConf.content.statics[staticProps.firstLevel] + url.replace(staticProps.firstLevel, '/');
@@ -631,8 +672,8 @@ function Server(options) {
631
672
  */
632
673
  var getAssets = function (bundleConf, layoutStr, swig, data) {
633
674
 
634
- // layout search for <link|script|img>
635
- var layoutAssets = layoutStr.match(/<link .*?<\/link>|<link .*?(rel\=\"(stylesheet|icon|manifest|(.*)\-icon))(.*)|<script.*?<\/script>|<img .*?(.*)/g) || [];
675
+ // layout search for <link|source|script|img>
676
+ var layoutAssets = layoutStr.match(/<link .*?<\/link>|<link .*?(rel\=\"(stylesheet|icon|manifest|(.*)\-icon))(.*)|<source .*?(type\=\"(image))(.*)|<script.*?<\/script>|<img .*?(.*)/g) || [];
636
677
 
637
678
  var assets = {}
638
679
  , cssFiles = []
@@ -652,63 +693,150 @@ function Server(options) {
652
693
  // layout assets
653
694
  i = 0;
654
695
  len = layoutAssets.length;
655
- var type = null
656
- , isAvailable = null
657
- , tag = null
658
- , properties = null
659
- , p = 0
660
- , pArr = []
696
+ var type = null
697
+ , isAvailable = null
698
+ , tag = null
699
+ , properties = null
700
+ , p = 0
701
+ , pArr = []
702
+ , sourceTagSrcSetStr = ''
661
703
  ;
662
704
  for (; i < len; ++i) {
663
705
 
664
706
  if (
665
- !/(\<img|\<link|\<script)/g.test(layoutAssets[i])
666
- || /\<img/.test(layoutAssets[i]) && /srcset/.test(layoutAssets[i]) // not able to handle this case for now
707
+ !/(\<img|\<link|\<source|\<script)/g.test(layoutAssets[i])
708
+ // ||
709
+ // not able to handle srcset case for now
710
+ /**
711
+ /\<img/.test(layoutAssets[i])
712
+ && /srcset/.test(layoutAssets[i])*/
667
713
  ) {
668
714
  continue;
669
715
  }
670
716
 
717
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload
718
+ let asType = null;
719
+
671
720
  if ( /\<img/.test(layoutAssets[i]) ) {
672
721
  type = 'image';
673
722
  tag = 'img';
723
+ asType = type;
674
724
  }
675
725
 
676
- if ( /\<script/.test(layoutAssets[i]) ) {
677
- type = 'javascript';
678
- tag = 'script';
679
- }
726
+
680
727
 
681
728
  if ( /\<link/.test(layoutAssets[i]) ) {
682
- if ( /rel\=\"stylesheet/.test(layoutAssets[i]) ) {
683
- type = 'stylesheet';
684
- } else if ( /rel\=\"(icon|(.*)\-icon)/.test(layoutAssets[i]) ) {
685
- type = 'image';
686
- } else {
687
- type = 'file';
729
+ // if ( /rel\=\"stylesheet/.test(layoutAssets[i]) ) {
730
+ // type = 'stylesheet';
731
+ // } else if ( /rel\=\"(icon|(.*)\-icon)/.test(layoutAssets[i]) ) {
732
+ // type = 'image';
733
+ // } else {
734
+ // type = 'file';
735
+ // }
736
+ type = layoutAssets[i].match(/rel=\"[-a-z 0-9]+\"/)[0] || null;
737
+ if (type) {
738
+ type = type.replace(/^rel\=\"|"$/g, '');
739
+ }
740
+
741
+
742
+ switch (type) {
743
+ case /stylesheet/.test(type):
744
+ asType = 'style';
745
+ break;
746
+
747
+ case /javascript/.test(type):
748
+ asType = 'script';
749
+ break;
750
+
751
+ default:
752
+ asType = null;
753
+ if ( /icon/.test(type) ) {
754
+ asType = 'image';
755
+ // ignoring all (fav)icons type: rel="*icon*" case
756
+ continue;
757
+ }
758
+ if ( /font/.test(type) ) {
759
+ asType = 'font';
760
+ }
761
+ // if ( /manifest/.test(type) ) {
762
+ // asType = 'webmanifest';
763
+ // }
764
+ break;
688
765
  }
689
766
 
690
767
  tag = 'link';
691
768
  }
692
769
 
770
+ if ( /\<source/.test(layoutAssets[i]) ) {
771
+ if ( /type\=\"image/.test(layoutAssets[i]) ) {
772
+ type = 'image';
773
+ }
774
+
775
+ tag = 'source';
776
+ }
777
+
778
+ if ( /\<script/.test(layoutAssets[i]) ) {
779
+ type = 'javascript';
780
+ tag = 'script';
781
+ }
782
+
693
783
  domain = null;
784
+ let isEncodedContent = false;
785
+ // repsonsive images
786
+ // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset
787
+ let srcset = null;
788
+ // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesizes
789
+ let sizes = null;
790
+ let urlArr = null;
694
791
  try {
695
- url = layoutAssets[i].match(/(src|href)\=(\".*?\"|\'.*?\')/)[0];
792
+ urlArr = layoutAssets[i].match(/(src|href|srcset)\=(\".*?\"|\'.*?\')/g);
793
+ for (let u=0, uLen=urlArr.length; u<uLen; u++) {
794
+ if ( /data\:/.test(urlArr[u]) ) {
795
+ isEncodedContent = true;
796
+ break;
797
+ }
798
+ if ( /^srcset\=/.test(urlArr[u]) ) {
799
+ srcset = urlArr[u]
800
+ .replace(/((src|href|srcset)\=\"|(src|href|srcset)\=\')/g, '')
801
+ .replace(/\"/g, '');
802
+ if ( /source/i.test(tag) ) {
803
+ sourceTagSrcSetStr += srcset + ','
804
+ }
805
+ }
806
+ if ( /^(src|href)\=/.test(urlArr[u]) ) {
807
+ url = urlArr[u]
808
+ .replace(/((src|href|srcset)\=\"|(src|href|srcset)\=\')/g, '')
809
+ .replace(/\"/g, '');
810
+ }
811
+ }
812
+ if ( isEncodedContent ) { // ignoring "data:..."
813
+ continue
814
+ }
815
+ // url = urlArr[0];
696
816
  } catch (err) {
697
- console.warn('Problem with this asset ('+ i +'/'+ len +'): '+ layoutAssets[i].substr(0, 80) +'...');
817
+ console.warn('Problem with this asset ('+ i +'/'+ len +'): '+ layoutAssets[i].substring(0, 80) +'...');
698
818
  continue;
699
819
  }
700
820
 
701
-
702
- if ( /data\:/.test(url) ) { // ignoring "data:..."
703
- continue
821
+ if ( /source/i.test(tag) ) {
822
+ continue;
704
823
  }
824
+
825
+
826
+ // if ( /data\:/.test(url) ) { // ignoring "data:..."
827
+ // continue
828
+ // }
705
829
  //url = url.replace(/((src|href)\=\"|(src|href)\=\'|\"|\')/g, '');
706
- url = url.replace(/((src|href)\=\"|(src|href)\=\')/g, '');
830
+ // url = url
831
+ // .replace(/((src|href|srcset)\=\"|(src|href|srcset)\=\')/g, '')
832
+ // .replace(/\"/g, '')
833
+ // ;
707
834
  if ( !/^\{\{/.test(url) ) {
708
835
  url = url.replace(/(\"|\')/g, '');
709
836
  }
710
- if (swig && /^\{\{/.test(url) )
837
+ if (swig && /^\{\{/.test(url) ) {
711
838
  url = swig.compile(url, swig.getOptions())(data);
839
+ }
712
840
 
713
841
  if (!/(\:\/\/|^\/\/)/.test(url) ) {
714
842
  filename = getAssetFilenameFromUrl(bundleConf, url);
@@ -728,7 +856,7 @@ function Server(options) {
728
856
  isAvailable = ( /404/.test(filename) ) ? false : true;
729
857
  if ( isAvailable ) {
730
858
  try {
731
- ext = url.substr(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/)[0];
859
+ ext = url.substring(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/)[0];
732
860
  } catch(err) {
733
861
 
734
862
  console.warn('No extension found for `'+ filename +'`\n'+ err.stack );
@@ -739,15 +867,41 @@ function Server(options) {
739
867
 
740
868
  assets[key] = {
741
869
  type : type,
870
+ as : asType,
742
871
  url : url,
743
872
  ext : ext,
744
- mime : (!ext) ? 'NA' : (bundleConf.server.coreConfiguration.mime[ext.substr(1)] || 'NA'),
873
+ mime : (!ext) ? 'NA' : (bundleConf.server.coreConfiguration.mime[ext.substring(1)] || 'NA'),
745
874
  filename : ( /404/.test(filename) ) ? 'not found' : filename,
746
875
  isAvailable : isAvailable
747
876
  };
748
877
 
749
- if (domain)
878
+ //sourceTagSrcSetStr
879
+ if (sourceTagSrcSetStr.length > 0) {
880
+ assets[key]['imagesrcset'] = sourceTagSrcSetStr.substring(0, sourceTagSrcSetStr.length-1);
881
+ // reset
882
+ sourceTagSrcSetStr = '';
883
+ }
884
+
885
+ if (srcset) {
886
+ if ( typeof(assets[key]['imagesrcset']) != 'undefined' ) {
887
+ assets[key]['imagesrcset'] += ', '+ srcset;
888
+ } else {
889
+ assets[key]['imagesrcset'] = srcset;
890
+ }
891
+
892
+ }
893
+
894
+ if (sizes) {
895
+ if ( typeof(assets[key]['imagesizes']) != 'undefined' ) {
896
+ assets[key]['imagesizes'] += ', '+ sizes;
897
+ } else {
898
+ assets[key]['imagesizes'] = sizes;
899
+ }
900
+ }
901
+
902
+ if (domain) {
750
903
  assets[key].domain = domain;
904
+ }
751
905
 
752
906
  if ( type == 'stylesheet' && !/not found/.test(assets[key].filename) ) {
753
907
  cssFiles.push(assets[key].filename)
@@ -873,14 +1027,14 @@ function Server(options) {
873
1027
  //key = (( /404/.test(filename) ) ? '[404]' : '[200]') +' '+ url;
874
1028
  key = url;
875
1029
  isAvailable = ( /404/.test(filename) ) ? false : true;
876
- ext = url.substr(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/)[0];
1030
+ ext = url.substring(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/)[0];
877
1031
  assets[key] = {
878
1032
  referrer : cssFiles[i],
879
1033
  definition : definition,
880
1034
  type : type,
881
1035
  url : url,
882
1036
  ext : ext,
883
- mime : bundleConf.server.coreConfiguration.mime[ext.substr(1)] || 'NA',
1037
+ mime : bundleConf.server.coreConfiguration.mime[ext.substring(1)] || 'NA',
884
1038
  filename : ( /404/.test(filename) ) ? 'not found' : filename
885
1039
  };
886
1040
 
@@ -936,12 +1090,14 @@ function Server(options) {
936
1090
  * }
937
1091
  */
938
1092
 
939
- if (swig) {
1093
+
1094
+ if (swig) { // Deprecated
940
1095
  var assetsStr = JSON.stringify(assets);
941
1096
  assets = swig.compile( assetsStr.substring(1, assetsStr.length-1), swig.getOptions() )(data);
942
- return '{'+ assets +'}'
1097
+
1098
+ return '{'+ assets +'}';
943
1099
  } else {
944
- return assets
1100
+ return JSON.stringify(assets)
945
1101
  }
946
1102
  }
947
1103
 
@@ -997,8 +1153,10 @@ function Server(options) {
997
1153
  if ( typeof(request.headers.origin) != 'undefined' ) {
998
1154
  authority = request.headers.origin;
999
1155
  } else if (request.headers.referer) {
1000
- referer = request.headers.referer.match(/^[https://|http://][a-z0-9-_.:/]+\//)[0];
1001
- referer = referer.substring(0, referer.length-1);
1156
+ referer = request.headers.referer.match(/^[https://|http://][a-z0-9-_.:/]+\//);
1157
+ if (Array.isArray(referer) && referer.length > 0) {
1158
+ referer = referer[0].substring(0, referer.length-1);
1159
+ }
1002
1160
  }
1003
1161
 
1004
1162
  // access-control-allow-origin settings
@@ -1027,6 +1185,7 @@ function Server(options) {
1027
1185
 
1028
1186
  re = new RegExp(authority);
1029
1187
  allowedOrigin = ( typeof(conf.server.response.header['access-control-allow-origin']) != 'undefined' && conf.server.response.header['access-control-allow-origin'] != '' ) ? conf.server.response.header['access-control-allow-origin'] : authority;
1188
+ // console.debug('[ server ][access-control-allow-origin] ', allowedOrigin);
1030
1189
  var found = null, origin = null, origins = null; // to handles multiple origins
1031
1190
 
1032
1191
  var originHostReplacement = function(name) {
@@ -1035,8 +1194,8 @@ function Server(options) {
1035
1194
  return name
1036
1195
  }
1037
1196
 
1038
- var env = self.conf.env
1039
- , scope = self.conf.scope
1197
+ var env = self.conf.env || self.env
1198
+ , scope = self.conf.scope || self.scope
1040
1199
  ;
1041
1200
 
1042
1201
  for (let i=0, len=matched.length; i<len; ++i) {
@@ -1054,6 +1213,9 @@ function Server(options) {
1054
1213
  project = arr[0];
1055
1214
  env = (arr[1]) ? arr[1] : env;
1056
1215
  }
1216
+ if ( typeof(self.conf[bundle]) == 'undefined' ) {
1217
+ continue;
1218
+ }
1057
1219
  scheme = self.conf[bundle][env].server.scheme;
1058
1220
  hostname = ( !self.conf[bundle][env].hostname ) ? self.conf[bundle][env].server.scheme + '://' + self.conf[bundle][env].host + ':' + self.conf[bundle][env].server.port : self.conf[bundle][env].hostname;
1059
1221
  name = name.replace(oldHost, hostname);
@@ -1112,7 +1274,7 @@ function Server(options) {
1112
1274
 
1113
1275
  // update response
1114
1276
  try {
1115
- if ( responseHeaders && responseHeaders.count() > 0 ) {
1277
+ if ( responseHeaders && Object.keys(responseHeaders).length > 0 ) {
1116
1278
  return merge(responseHeaders, response.getHeaders());
1117
1279
  }
1118
1280
  return response.getHeaders();
@@ -1122,13 +1284,13 @@ function Server(options) {
1122
1284
  }
1123
1285
 
1124
1286
  this.onHttp2Stream = function(stream, headers, response) {
1125
- var header = null
1126
- , isWebroot = false
1127
- , pathname = null
1128
- , asset = null
1129
- , assets = this._options.template.assets
1130
- , conf = this._options.conf
1131
- , cacheless = conf.cacheless
1287
+ var header = null
1288
+ , isWebroot = false
1289
+ , pathname = null
1290
+ , asset = null
1291
+ , assets = this._options.template.assets
1292
+ , conf = this._options.conf
1293
+ , isCacheless = conf.isCacheless
1132
1294
  ;
1133
1295
 
1134
1296
 
@@ -1157,7 +1319,17 @@ function Server(options) {
1157
1319
  ) ? true: false
1158
1320
  ;
1159
1321
 
1160
- if (!stream.pushAllowed) {
1322
+ if (!stream.pushAllowed ) {
1323
+
1324
+ // Fix added for static sites
1325
+ if (
1326
+ !assets[ url ]
1327
+ ||
1328
+ !assets[ url ].isBinary && !assets[ url ].isHandler
1329
+ ) {
1330
+ return;
1331
+ }
1332
+
1161
1333
  asset = {
1162
1334
  url : url,
1163
1335
  filename : assets[ url ].filename,
@@ -1203,6 +1375,7 @@ function Server(options) {
1203
1375
  , header
1204
1376
  //, { onError }
1205
1377
  );
1378
+
1206
1379
  } else {
1207
1380
  stream.respond(header);
1208
1381
  stream.end();
@@ -1227,7 +1400,7 @@ function Server(options) {
1227
1400
  ':status': 301
1228
1401
  };
1229
1402
 
1230
- if (cacheless) {
1403
+ if (isCacheless) {
1231
1404
  header['cache-control'] = 'no-cache, no-store, must-revalidate';
1232
1405
  header['pragma'] = 'no-cache';
1233
1406
  header['expires'] = '0';
@@ -1300,7 +1473,7 @@ function Server(options) {
1300
1473
  header['content-length'] = fs.statSync(assets[ url ].filename).size;
1301
1474
  }
1302
1475
 
1303
- if (cacheless) {
1476
+ if (isCacheless) {
1304
1477
  // source maps integration for javascript & css
1305
1478
  if ( /(.js|.css)$/.test(asset.filename) && fs.existsSync(asset.filename +'.map') ) {
1306
1479
  //pathname = asset.filename +'.map';
@@ -1389,7 +1562,7 @@ function Server(options) {
1389
1562
  self._options.conf = bundleConf
1390
1563
  }
1391
1564
 
1392
- var cacheless = bundleConf.cacheless;
1565
+ var isCacheless = bundleConf.isCacheless;
1393
1566
  // by default
1394
1567
  var filename = bundleConf.publicPath + pathname;
1395
1568
  var isFilenameDir = null
@@ -1397,6 +1570,9 @@ function Server(options) {
1397
1570
  , isBinary = null
1398
1571
  , isHandler = null
1399
1572
  , hanlersPath = null
1573
+ , preferedEncoding = bundleConf.server.preferedCompressionEncodingOrder
1574
+ , acceptEncodingArr = (request.headers['accept-encoding']) ? request.headers['accept-encoding'].replace(/\s+/g, '').split(/\,/) : []
1575
+ , acceptEncoding = null
1400
1576
  ;
1401
1577
 
1402
1578
  // catch `statics.json` defined paths
@@ -1417,7 +1593,6 @@ function Server(options) {
1417
1593
  var key = pathname.replace(pathname.split('/').splice(-1), '');
1418
1594
  for ( ; s < sLen; ++s ) {
1419
1595
  if ( bundleConf.staticResources[s] == key ) {
1420
- // if ( eval('/^' + bundleConf.staticResources[s].replace(/\//g,'\\/') +'/').test(pathname) ) {
1421
1596
  filename = bundleConf.content.statics[ bundleConf.staticResources[s] ] +'/'+ pathname.replace(bundleConf.staticResources[s], '');
1422
1597
  break;
1423
1598
  }
@@ -1431,9 +1606,11 @@ function Server(options) {
1431
1606
 
1432
1607
 
1433
1608
  filename = decodeURIComponent(filename);
1434
- fs.exists(filename, function onStaticExists(exist) {
1609
+ let filenameObj = new _(filename, true);
1610
+ filenameObj.exists(function onStaticExists(exists) {
1611
+ // fs.exists(filename, function onStaticExists(exists) {
1435
1612
 
1436
- if (!exist) {
1613
+ if (!exists) {
1437
1614
  return throwError(response, 404, 'Page not found: \n' + pathname, next);
1438
1615
  }
1439
1616
 
@@ -1446,48 +1623,49 @@ function Server(options) {
1446
1623
  if ( !fs.existsSync(filename) ) {
1447
1624
  throwError(response, 403, 'Forbidden: \n' + pathname, next);
1448
1625
  return;
1449
- } else {
1450
- var ext = 'html';
1451
- if ( /http\/2/.test(protocol) ) {
1452
- header = {
1453
- ':status': 301,
1454
- 'location': request.url,
1455
- 'content-type': bundleConf.server.coreConfiguration.mime[ext]+'; charset='+ bundleConf.encoding
1456
- };
1626
+ }
1457
1627
 
1458
- if (cacheless) {
1459
- header['cache-control'] = 'no-cache, no-store, must-revalidate';
1460
- header['pragma'] = 'no-cache';
1461
- header['expires'] = '0';
1462
- }
1463
- request = checkPreflightRequest(request, response);
1464
- header = completeHeaders(header, request, response);
1628
+ var ext = 'html';
1629
+ if ( /http\/2/.test(protocol) ) {
1630
+ header = {
1631
+ ':status': 301,
1632
+ 'location': request.url,
1633
+ 'content-type': bundleConf.server.coreConfiguration.mime[ext]+'; charset='+ bundleConf.encoding
1634
+ };
1465
1635
 
1466
- if (!stream.destroyed) {
1467
- stream.respond(header);
1468
- stream.end();
1469
- }
1636
+ if (isCacheless) {
1637
+ header['cache-control'] = 'no-cache, no-store, must-revalidate';
1638
+ header['pragma'] = 'no-cache';
1639
+ header['expires'] = '0';
1640
+ }
1641
+ request = checkPreflightRequest(request, response);
1642
+ header = completeHeaders(header, request, response);
1470
1643
 
1471
- } else {
1472
- response.setHeader('location', request.url);
1473
- request = checkPreflightRequest(request, response);
1474
- completeHeaders(null, request, response);
1475
- if (cacheless) {
1476
- response.writeHead(301, {
1477
- 'cache-control': 'no-cache, no-store, must-revalidate', // preventing browsers from using cache
1478
- 'pragma': 'no-cache',
1479
- 'expires': '0',
1480
- 'content-type': bundleConf.server.coreConfiguration.mime[ext]
1481
- });
1482
- }
1483
- response.end()
1644
+ if (!stream.destroyed) {
1645
+ stream.respond(header);
1646
+ stream.end();
1647
+ }
1648
+
1649
+ } else {
1650
+ response.setHeader('location', request.url);
1651
+ request = checkPreflightRequest(request, response);
1652
+ completeHeaders(null, request, response);
1653
+ if (isCacheless) {
1654
+ response.writeHead(301, {
1655
+ 'cache-control': 'no-cache, no-store, must-revalidate', // preventing browsers from using cache
1656
+ 'pragma': 'no-cache',
1657
+ 'expires': '0',
1658
+ 'content-type': bundleConf.server.coreConfiguration.mime[ext]
1659
+ });
1484
1660
  }
1661
+ response.end()
1485
1662
  }
1663
+
1486
1664
  return;
1487
1665
  }
1488
1666
 
1489
1667
 
1490
- if (cacheless) {
1668
+ if (isCacheless) {
1491
1669
  delete require.cache[require.resolve(filename)];
1492
1670
  }
1493
1671
 
@@ -1527,6 +1705,23 @@ function Server(options) {
1527
1705
  isBinary = false;
1528
1706
  isHandler = true;
1529
1707
  file = '(gina.ready(function onGinaReady($){\n'+ file + '\n},window["originalContext"]));'
1708
+
1709
+ // acceptEncodingArr = request.headers['accept-encoding'].replace(/\s+/g, '').split(/\,/);
1710
+ // acceptEncoding = null;
1711
+ for (let e=0, eLen=preferedEncoding.length; e<eLen; e++) {
1712
+ if ( acceptEncodingArr && acceptEncodingArr.indexOf(preferedEncoding[e]) > -1 ) {
1713
+ acceptEncoding = bundleConf.server.coreConfiguration.encoding[ preferedEncoding[e] ] ;
1714
+ break;
1715
+ }
1716
+ }
1717
+ // Compressed content
1718
+ if (
1719
+ !isCacheless
1720
+ && acceptEncoding
1721
+ && fs.existsSync(filename + acceptEncoding)
1722
+ ) {
1723
+ isBinary = true;
1724
+ }
1530
1725
  }
1531
1726
  }
1532
1727
 
@@ -1537,8 +1732,12 @@ function Server(options) {
1537
1732
  request.url = ( ext != null && typeof(ext[0]) != 'undefined' ) ? request.url : request.url + 'index.html';
1538
1733
 
1539
1734
  self._responseHeaders = response.getHeaders();
1540
- if (!isBinary && typeof(self._options.template.assets[request.url]) == 'undefined')
1735
+ if (
1736
+ !isBinary
1737
+ && typeof(self._options.template.assets[request.url]) == 'undefined'
1738
+ ) {
1541
1739
  self._options.template.assets = getAssets(bundleConf, file);
1740
+ }
1542
1741
 
1543
1742
  if (
1544
1743
  typeof(self._options.template.assets[request.url]) == 'undefined'
@@ -1603,7 +1802,7 @@ function Server(options) {
1603
1802
  'location': request.url
1604
1803
  };
1605
1804
 
1606
- if (cacheless) {
1805
+ if (isCacheless) {
1607
1806
  header['cache-control'] = 'no-cache, no-store, must-revalidate';
1608
1807
  header['pragma'] = 'no-cache';
1609
1808
  header['expires'] = '0';
@@ -1674,11 +1873,11 @@ function Server(options) {
1674
1873
  'content-type': contentType + '; charset='+ bundleConf.encoding
1675
1874
  };
1676
1875
 
1677
- if (cacheless) {
1876
+ if (isCacheless) {
1678
1877
  // source maps integration for javascript & css
1679
1878
  if ( /(.js|.css)$/.test(filename) && fs.existsSync(filename +'.map') && !/sourceMappingURL/.test(file) ) {
1680
1879
  //pathname = pathname +'.map';
1681
- pathname = webroot + pathname.substr(1) +'.map';
1880
+ pathname = webroot + pathname.substring(1) +'.map';
1682
1881
  // serve without cache
1683
1882
  header['X-SourceMap'] = pathname;
1684
1883
  header['cache-control'] = 'no-cache, no-store, must-revalidate';
@@ -1702,17 +1901,40 @@ function Server(options) {
1702
1901
  completeHeaders(null, request, response);
1703
1902
  response.setHeader('content-type', contentType +'; charset='+ bundleConf.encoding);
1704
1903
  // if (/\.(woff|woff2)$/i.test(filename) ) {
1705
- // response.setHeader("Transfer-Encoding", 'Identity')
1904
+ // response.setHeader("transfer-encoding", 'Identity')
1706
1905
  // }
1906
+
1907
+
1707
1908
  if (isBinary) {
1708
1909
  response.setHeader('content-length', fs.statSync(filename).size);
1910
+
1911
+ // acceptEncodingArr = request.headers['accept-encoding'].replace(/\s+/g, '').split(/\,/);
1912
+ // acceptEncoding = null;
1913
+ for (let e=0, eLen=preferedEncoding.length; e<eLen; e++) {
1914
+ if ( acceptEncodingArr && acceptEncodingArr.indexOf(preferedEncoding[e]) > -1 ) {
1915
+ acceptEncoding = bundleConf.server.coreConfiguration.encoding[ preferedEncoding[e] ] ;
1916
+ break;
1917
+ }
1918
+ }
1919
+ // Compressed content
1920
+ if (
1921
+ !isCacheless
1922
+ && acceptEncoding
1923
+ && fs.existsSync(filename + acceptEncoding)
1924
+ ) {
1925
+ filename += acceptEncoding;
1926
+ // https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Encoding
1927
+ response.setHeader('content-encoding', acceptEncoding.replace(/^\./, ''));
1928
+ // override content length
1929
+ response.setHeader('content-length', fs.statSync(filename).size);
1930
+ }
1709
1931
  }
1710
1932
 
1711
- if (cacheless) {
1933
+ if (isCacheless) {
1712
1934
  // source maps integration for javascript & css
1713
1935
  if ( /(.js|.css)$/.test(filename) && fs.existsSync(filename +'.map') && !/sourceMappingURL/.test(file) ) {
1714
1936
  //pathname = pathname +'.map'
1715
- pathname = webroot + pathname.substr(1) +'.map';
1937
+ pathname = webroot + pathname.substring(1) +'.map';
1716
1938
  response.setHeader("X-SourceMap", pathname)
1717
1939
  }
1718
1940
 
@@ -1729,6 +1951,7 @@ function Server(options) {
1729
1951
 
1730
1952
 
1731
1953
  if (isBinary) { // images, javascript, pdf ....
1954
+
1732
1955
  fs.createReadStream(filename)
1733
1956
  .on('end', function onResponse(){
1734
1957
  console.info(request.method +' [200] '+ pathname);
@@ -1753,7 +1976,8 @@ function Server(options) {
1753
1976
  });
1754
1977
 
1755
1978
 
1756
- })
1979
+ });
1980
+ filenameObj = null;
1757
1981
  }
1758
1982
 
1759
1983
 
@@ -1765,6 +1989,28 @@ function Server(options) {
1765
1989
  // catch all (request urls)
1766
1990
  self.instance.all('*', function onInstance(request, response, next) {
1767
1991
 
1992
+ // Caching = [...]
1993
+ // TODO - handle this through a middleware
1994
+ /**
1995
+ * var cacheIndex = ['/api/document/get/b47c4dd3-f7c4-44b2-b1fb-401948be1ca4'].indexOf(request.url)
1996
+ * if ( cacheIndex > -1) {
1997
+ * // return caching[cacheIndex].content
1998
+ * }
1999
+ */
2000
+
2001
+ // Retrieving cached route
2002
+ // var cachedUrls = ['/'];
2003
+ // if (cachedUrls.indexOf(request.url) > -1) {
2004
+ // request.routing = JSON.parse('{"method":"GET","namespace":"home","url":"/","rule":"home@public","param":{"control":"home","file":"../home"},"middleware":["middlewares.maintenance.check"],"bundle":"public","isXMLRequest":false,"isWithCredentials":false}');
2005
+ // var headers = JSON.parse('{"X-Powered-By":"Gina I/O - v0.1.6-alpha.94","access-control-allow-headers":"X-Requested-With, Content-Type","access-control-allow-methods":"GET","access-control-allow-credentials":true,"vary":"Origin","accept-language":"en-US,en;q=0.8,fr;q=0.6"}');
2006
+ // for (let h in headers) {
2007
+ // response.setHeader(h, headers[h]);
2008
+ // }
2009
+
2010
+ // return local.router.route(request, response, next, request.routing);
2011
+ // }
2012
+
2013
+
1768
2014
 
1769
2015
  request.setEncoding(self.conf[self.appName][self.env].encoding);
1770
2016
  // be carfull, if you are using jQuery + cross domain, you have to set the header manually in your $.ajax query -> headers: {'X-Requested-With': 'XMLHttpRequest'}
@@ -1811,7 +2057,7 @@ function Server(options) {
1811
2057
 
1812
2058
  local.request = request;
1813
2059
 
1814
- response.setHeader('x-powered-by', 'Gina/'+ GINA_VERSION );
2060
+ response.setHeader('X-Powered-By', 'Gina/'+ GINA_VERSION );
1815
2061
 
1816
2062
 
1817
2063
 
@@ -1864,7 +2110,7 @@ function Server(options) {
1864
2110
  if ( typeof(ext) != 'undefined' && ext != null) {
1865
2111
  ext = ext[0];
1866
2112
  // if image with `@` found
1867
- if ( /^image/i.test(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.substr(1)]) ) {
2113
+ if ( /^image/i.test(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.substring(1)]) ) {
1868
2114
  isImage = true
1869
2115
  }
1870
2116
  }
@@ -1873,7 +2119,7 @@ function Server(options) {
1873
2119
  // and must not be an email
1874
2120
  && !/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(request.url)
1875
2121
  // and must be handled by mime.types
1876
- && typeof(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.substr(1)]) != 'undefined'
2122
+ && typeof(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.substring(1)]) != 'undefined'
1877
2123
  ||
1878
2124
  ext != null
1879
2125
  && isImage
@@ -1899,7 +2145,7 @@ function Server(options) {
1899
2145
 
1900
2146
  if (
1901
2147
  staticProps.isStaticFilename && staticsArr.indexOf(request.url) > -1
1902
- || staticProps.isStaticFilename && staticsArr.indexOf( request.url.replace(request.url.substr(request.url.lastIndexOf('/')+1), '') ) > -1
2148
+ || staticProps.isStaticFilename && staticsArr.indexOf( request.url.replace(request.url.substring(request.url.lastIndexOf('/')+1), '') ) > -1
1903
2149
  || staticProps.isStaticFilename && new RegExp('^'+ staticProps.firstLevel).test(request.url)
1904
2150
  || /\/$/.test(request.url) && !isWebrootHandledByRouting && !/\/engine\.io\//.test(request.url)
1905
2151
  ) {
@@ -2067,11 +2313,14 @@ function Server(options) {
2067
2313
  'method': 'POST',
2068
2314
  'bundle' : self.appName
2069
2315
  };
2070
- var busboy = new Busboy({ headers: request.headers });
2316
+ var busboy = Busboy({ headers: request.headers });
2071
2317
 
2072
2318
  // busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
2073
2319
  // console.log('Field [' + fieldname + ']: value: ' + inspect(val));
2074
2320
  // });
2321
+
2322
+ // Attention: on busboy upgrade, we needs to adapt `busboy/lib/types/multipart.js`
2323
+ // For this, check the emit method
2075
2324
  busboy.on('file', function(fieldname, file, filename, encoding, mimetype, group) {
2076
2325
 
2077
2326
  file._dataLen = 0;
@@ -2087,7 +2336,7 @@ function Server(options) {
2087
2336
  && opt.groups[group].allowedExtensions != '*'
2088
2337
  ) {
2089
2338
  var ext = opt.groups[group].allowedExtensions;
2090
- var fileExt = filename.substr(filename.lastIndexOf('.')+1)
2339
+ var fileExt = filename.substring(filename.lastIndexOf('.')+1)
2091
2340
  if ( !Array.isArray(ext) ) {
2092
2341
  ext = [ext]
2093
2342
  }
@@ -2224,10 +2473,11 @@ function Server(options) {
2224
2473
 
2225
2474
  });//EO this.instance
2226
2475
 
2227
- self.instance.listen(self.conf[self.appName][self.env].server.port);//By Default 3100
2476
+
2228
2477
  // Timeout in milliseconds - e.g.: (1000x60)x2 => 2 min
2229
2478
  self.instance.timeout = 0; // zero for unlimited
2230
-
2479
+ //Port by default would be 3100
2480
+ self.instance.listen(self.conf[self.appName][self.env].server.port);
2231
2481
 
2232
2482
  self.emit('started', self.conf[self.appName][self.env], true);
2233
2483
  }
@@ -2243,12 +2493,12 @@ function Server(options) {
2243
2493
  // get rid of encoding issues
2244
2494
  try {
2245
2495
  if ( !/multipart\/form-data;/.test(request.headers['content-type']) ) {
2246
- if ( /application\/x\-www\-form\-urlencoded/.test(request.headers['content-type']) && /\+/.test(request.body) ) {
2496
+ if ( !/application\/x\-www\-form\-urlencoded/.test(request.headers['content-type']) && /\+/.test(request.body) ) {
2247
2497
  request.body = request.body.replace(/\+/g, ' ');
2248
2498
  }
2249
2499
 
2250
- if ( request.body.substr(0,1) == '?')
2251
- request.body = request.body.substr(1);
2500
+ if ( request.body.substring(0,1) == '?')
2501
+ request.body = request.body.substring(1);
2252
2502
 
2253
2503
  try {
2254
2504
  bodyStr = decodeURIComponent(request.body); // it is already a string for sure
@@ -2399,8 +2649,8 @@ function Server(options) {
2399
2649
  request.body = request.body.replace(/\+/g, ' ');
2400
2650
  }
2401
2651
 
2402
- if ( request.body.substr(0,1) == '?')
2403
- request.body = request.body.substr(1);
2652
+ if ( request.body.substring(0,1) == '?')
2653
+ request.body = request.body.substring(1);
2404
2654
 
2405
2655
  // false & true case
2406
2656
  try {
@@ -2521,8 +2771,10 @@ function Server(options) {
2521
2771
 
2522
2772
  var config = new Config();
2523
2773
  config.setBundles(self.bundles);
2524
- var conf = config.getInstance(); // for all loaded bundles
2525
- if ( typeof(conf) != 'undefined') {//for cacheless mode
2774
+ // for all loaded bundles
2775
+ var conf = config.getInstance();
2776
+ //for cacheless mode
2777
+ if ( typeof(conf) != 'undefined') {
2526
2778
  self.conf = conf;
2527
2779
  }
2528
2780
 
@@ -2537,7 +2789,7 @@ function Server(options) {
2537
2789
  if (self.bundles.indexOf(b) < 0) continue;
2538
2790
  if ( typeof(conf[b][self.env].content) != 'undefined' && typeof(conf[b][self.env].content.statics) != 'undefined' && conf[b][self.env].content.statics.count() > 0 ) {
2539
2791
  for (let s in conf[b][self.env].content.statics) {
2540
- s = (s.substr(0,1) == '/') ? s.substr(1) : s;
2792
+ s = (s.substring(0,1) == '/') ? s.substring(1) : s;
2541
2793
  if ( (new RegExp('^/'+s)).test(pathname) ) {
2542
2794
  bundle = b;
2543
2795
  break end
@@ -2572,18 +2824,18 @@ function Server(options) {
2572
2824
  }
2573
2825
 
2574
2826
  var onBundleConfigLoaded = function(bundle, options) {
2575
- var err = options.err
2576
- , cacheless = options.config.isCacheless()
2577
- , pathname = options.pathname
2578
- , req = options.req
2579
- , res = options.res
2580
- , config = options.conf
2581
- , next = options.next
2582
- , callback = options.callback
2827
+ var err = options.err
2828
+ , isCacheless = options.config.isCacheless()
2829
+ , pathname = options.pathname
2830
+ , req = options.req
2831
+ , res = options.res
2832
+ , config = options.conf
2833
+ , next = options.next
2834
+ , callback = options.callback
2583
2835
  ;
2584
2836
 
2585
2837
  //Reloading assets & files.
2586
- // if (!cacheless) { // all but dev & debug
2838
+ // if (!isCacheless) { // all but dev & debug
2587
2839
  callback(err, bundle, pathname, options.config, req, res, next)
2588
2840
  // } else {
2589
2841
  // config.refresh(bundle, function(err, routing) {
@@ -2703,10 +2955,10 @@ function Server(options) {
2703
2955
  var handle = async function(req, res, next, bundle, pathname, config) {
2704
2956
 
2705
2957
  var matched = false
2706
- , isRoute = {}
2958
+ , isRoute = null
2707
2959
  , withViews = hasViews(bundle)
2708
2960
  , router = local.router
2709
- , cacheless = config.isCacheless()
2961
+ , isCacheless = config.isCacheless()
2710
2962
  , wroot = null
2711
2963
  ;
2712
2964
 
@@ -2734,13 +2986,35 @@ function Server(options) {
2734
2986
  return;
2735
2987
  }
2736
2988
  var isMethodAllowed = null, hostname = null;
2989
+
2990
+ // Checking cached route
2991
+ var hasCachedRoute = await routingLib.getCached(req.method +':'+ pathname, req) || null;
2992
+ if ( hasCachedRoute ) {
2993
+ // Supposed to have everything we need to route
2994
+ isRoute = hasCachedRoute;
2995
+ // req = isRoute.request;
2996
+ } else {
2997
+ isRoute = {}
2998
+ }
2999
+
2737
3000
  out:
2738
3001
  for (let name in routing) {
3002
+ // Ignore cached route
3003
+ if ( hasCachedRoute ) {
3004
+ matched = true;
3005
+ break;
3006
+ }
3007
+
3008
+ // Ignoring routes out of scope
3009
+ if ( routing[name].scopes.indexOf(process.env.NODE_SCOPE) < 0 ) {
3010
+ continue;
3011
+ }
3012
+
2739
3013
  if ( typeof(routing[name]['param']) == 'undefined' ) {
2740
3014
  break;
2741
3015
  }
2742
3016
 
2743
- // updating hostname
3017
+ // Updating hostname
2744
3018
  // if (
2745
3019
  // typeof(routing[name].hostname) == 'undefined' && !/^redirect$/.test(routing[name].param.control)
2746
3020
  // || !routing[name].hostname && !/^redirect$/.test(routing[name].param.control)
@@ -2755,7 +3029,7 @@ function Server(options) {
2755
3029
  // }
2756
3030
 
2757
3031
  if (routing[name].bundle != bundle) continue;
2758
- // method filter
3032
+ // Method filter
2759
3033
  method = routing[name].method;
2760
3034
  if ( /\,/.test( method ) && reMethod.test(method) ) {
2761
3035
  method = req.method
@@ -2764,10 +3038,12 @@ function Server(options) {
2764
3038
  // Preparing params to relay to the router.
2765
3039
  params = {
2766
3040
  method : method,
3041
+ control : routing[name].param.control,
2767
3042
  requirements : routing[name].requirements,
2768
3043
  namespace : routing[name].namespace || undefined,
2769
3044
  url : decodeURI(pathname), /// avoid %20
2770
3045
  rule : routing[name].originalRule || name,
3046
+ cache : routing[name].cache || null,
2771
3047
  // We clone because we are going to modify it while comparing urls
2772
3048
  param : JSON.clone(routing[name].param),
2773
3049
  // We clone because we are going to modify it while routing (.splice(..))
@@ -2777,7 +3053,7 @@ function Server(options) {
2777
3053
  isWithCredentials : req.isWithCredentials
2778
3054
  };
2779
3055
 
2780
- //Parsing for the right url.
3056
+ // Parsing for the right url.
2781
3057
  try {
2782
3058
  isRoute = await routingLib.compareUrls(params, routing[name].url, req, res, next);
2783
3059
  } catch (err) {
@@ -2793,7 +3069,7 @@ function Server(options) {
2793
3069
 
2794
3070
  _routing = req.routing;
2795
3071
 
2796
- // comparing routing method VS request.url method
3072
+ // Comparing routing method VS request.url method
2797
3073
  isMethodAllowed = reMethod.test(_routing.method);
2798
3074
  if (!isMethodAllowed) {
2799
3075
  // Exception - Method override
@@ -2807,7 +3083,7 @@ function Server(options) {
2807
3083
  }
2808
3084
  }
2809
3085
 
2810
- // handling GET method exception - if no param found
3086
+ // Handling GET method exception - if no param found
2811
3087
  var methods = ['get', 'delete'], method = req.method.toLowerCase();
2812
3088
  var p = null;
2813
3089
  if (
@@ -2845,13 +3121,14 @@ function Server(options) {
2845
3121
  // onRouting Event ???
2846
3122
  if (isRoute.past) {
2847
3123
  matched = true;
3124
+ // Caching route
3125
+ routingLib.cache(req.method +':'+ pathname, name, routing[name], params, req[method]);
2848
3126
  isRoute = {};
2849
3127
 
2850
3128
  break;
2851
3129
  }
2852
-
2853
3130
  }
2854
- }
3131
+ } // EO for (let name in routing) {
2855
3132
 
2856
3133
 
2857
3134
 
@@ -2961,11 +3238,11 @@ function Server(options) {
2961
3238
  , ext = null
2962
3239
  , isHtmlContent = false
2963
3240
  , hasCustomErrorFile = false
2964
- , eCode = code.toString().substr(0,1) + 'xx'
3241
+ , eCode = code.toString().substring(0,1) + 'xx'
2965
3242
  ;
2966
- var extArr = url.substr(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/);
3243
+ var extArr = url.substring(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/);
2967
3244
  if (extArr) {
2968
- ext = extArr[0].substr(1);
3245
+ ext = extArr[0].substring(1);
2969
3246
  }
2970
3247
  if ( !ext || /^(html|htm)$/i.test(ext) ) {
2971
3248
  isHtmlContent = true;