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,7 @@
1
1
  //"use strict";
2
2
  // Imports.
3
3
  var fs = require('fs');
4
+ const { version } = require('os');
4
5
  //var util = require('util');
5
6
  //var promisify = require('util').promisify;
6
7
  // Use couchbase module from the user's project dependencies if not found
@@ -15,14 +16,16 @@ var console = lib.logger;
15
16
  /**
16
17
  * Couchbase Class
17
18
  *
18
- * @package Freelancer.CoreAPI
19
+ * @package Connectors.Couchbase
19
20
  * @author Rhinostone
20
21
  */
21
22
 
22
23
  function Couchbase(conn, infos) {
23
- var EntitySuperClass = null, EntityN1qlClass = null;
24
- var envIsDev = ( /^true$/i.test(process.env.NODE_ENV_IS_DEV) ) ? true : false;
25
-
24
+ var EntitySuperClass = null, EntityN1qlClass = null;
25
+ var envIsDev = ( /^true$/i.test(process.env.NODE_ENV_IS_DEV) ) ? true : false;
26
+ var scopeIsLocal = ( /^true$/i.test(process.env.NODE_SCOPE_IS_LOCAL) ) ? true : false;
27
+ var scopeIsProduction = ( /^true$/i.test(process.env.NODE_SCOPE_IS_PRODUCTION) ) ? true : false;
28
+
26
29
  /**
27
30
  * Init
28
31
  * @constructor
@@ -97,61 +100,96 @@ function Couchbase(conn, infos) {
97
100
 
98
101
 
99
102
  for (; f<files.length; ++f) {
100
- // ignoring filename starting with .
103
+ // skip hidden
101
104
  if ( /^\./.test(files[f]) ) {
102
105
  continue;
103
106
  }
104
-
107
+
105
108
  filename = _(dir +'/'+ files[f]);
106
109
  loadN1QL(entities, filename)
107
110
  }
108
111
  }
109
-
112
+
110
113
  return entities
111
114
  };
112
115
 
113
- var loadN1QL = function(entities, filename) {
114
-
116
+ var loadN1QL = function(entities, filename, originalInfos) {
117
+ var arr = null
118
+ , entityName = null
119
+ ;
120
+ // n1ql/<entityName>/
115
121
  if ( fs.statSync(filename).isDirectory() ) {
116
122
  var files = fs.readdirSync(filename)
117
123
  , f = 0
118
- , arr = filename.split(/\//g)
119
- , entityName = arr[arr.length-1];
124
+ ;
125
+ arr = filename.split(/\//g);
126
+ entityName = arr[arr.length-1];
127
+ entityName = entityName.charAt(0).toUpperCase() + entityName.slice(1);
128
+ if ( typeof(originalInfos) != 'undefined' ) {
129
+ entityName = originalInfos.entityName;
130
+ }
131
+ // n1ql/<entityName>/<method>
132
+ for (; f < files.length; ++f) {
133
+ // skip hidden
134
+ if ( /^\./.test(files[f]) ) {
135
+ continue;
136
+ }
137
+
138
+ let methodFilename = _(filename + '/' + files[f], true);
139
+ // will ignore <sub folder> excepted when `<sub folder>/_main.sql` is found
140
+ if ( fs.statSync(methodFilename).isDirectory() ) {
141
+ // skip empty
142
+ if (fs.readdirSync(methodFilename).length === 0) {
143
+ continue;
144
+ }
145
+
146
+ // _main.sql case
147
+ let altFilenameObj = new _(methodFilename + '/_main.sql', true);
148
+ if (altFilenameObj.existsSync()) {
149
+ let arr = methodFilename.split(/\//g);
150
+ let altMethodName = arr[arr.length-1].replace(/\.sql/, '') || null;
151
+ readSource(entities, entityName, altFilenameObj.toString(), altMethodName);
152
+ continue;
153
+ }
154
+ // TODO - See if <sub folder>For/<anything> is possible
155
+ // loadN1QL(entities, methodFilename, {entityName: entityName});
156
+ continue;
157
+ }
120
158
 
121
- entityName = entityName.charAt(0).toUpperCase() + entityName.slice(1);
122
159
 
123
- for (; f < files.length; ++f) {
124
160
  // ignoring filename starting with . & sub folders
125
- if (
161
+ if (
126
162
  /^\./.test(files[f])
127
163
  ||
128
- !/\.sql$/i.test(files[f])
129
- ||
130
- fs.statSync( _(filename + '/' + files[f], true) ).isDirectory()
164
+ !/\.sql$/i.test(files[f])
131
165
  ) {
132
166
  continue;
133
167
  }
134
- readSource(entities, entityName, filename + '/' + files[f])
168
+ readSource(entities, entityName, methodFilename)
135
169
  }
136
170
 
137
- } else {
138
- var arr = filename.split(/\//g)
139
- , entityName = arr[arr.length-1].replace(/\.sql/, '').split(/\_/)[0];
171
+ return;
172
+ }
140
173
 
141
- entityName = entityName.charAt(0).toUpperCase() + entityName.slice(1);
142
- nbbnnb
143
- readSource(entities, entityName, filename)
174
+ arr = filename.split(/\//g);
175
+ entityName = arr[arr.length-1].replace(/\.sql/, '').split(/\_/)[0];
176
+ entityName = entityName.charAt(0).toUpperCase() + entityName.slice(1);
177
+ if ( typeof(originalInfos) != 'undefined' ) {
178
+ entityName = originalInfos.entityName;
144
179
  }
180
+
181
+ readSource(entities, entityName, filename);
145
182
  }
146
183
 
147
- var readSource = function (entities, entityName, source) {
184
+ var readSource = function (entities, entityName, source, altMethodName) {
148
185
  var arr = source.split(/\//g)
149
- , name = arr[arr.length-1].replace(/\.sql/, '') || null
186
+ , name = altMethodName || arr[arr.length-1].replace(/\.sql/, '') || null
150
187
  , comments = ''
151
188
  , queryString = null
152
189
  , includes = null
153
190
  , queryStatement= null // this is the usable queryString
154
191
  , params = []
192
+ , paramTypes = []
155
193
  , inlineParams = [] // order of use inside the query
156
194
  , returnType = null // Array or Object : Array by default
157
195
  , returnVariable= null // return variable
@@ -166,28 +204,34 @@ function Couchbase(conn, infos) {
166
204
  if ( includes && includes.length > 0 ) {
167
205
  for (let i = 0, len = includes.length; i < len; i++) {
168
206
  let filename = includes[i].replace(/\"|\'|\;|(\@include\s+|\@include)/g, '');
169
- if (
207
+ if (
170
208
  /^\./.test(filename)
171
209
  ||
172
210
  // windows style location
173
- /^[a-z]:(\\|\/\/)/i.test(filename)
211
+ /^[a-z]:(\\|\/\/)/i.test(filename)
174
212
  ||
175
213
  // not unix absolut
176
214
  !/^\//.test(filename)
177
215
  && !/^[a-z]:(\\|\/\/)/i.test(filename)
178
-
216
+
179
217
  ) {
180
218
  let dir = new _(source).toUnixStyle();
181
219
  dir = dir.substr(0, dir.lastIndexOf('/')) + '/'
182
220
  filename = _(dir + filename.replace(/^\.\//, ''), true);
183
221
  }
184
- // remove @include calls
222
+ // remove @include calls
185
223
  //console.debug('including .....'+ filename);
186
224
  queryString = queryString.replace(includes[i], fs.readFileSync( filename ).toString() );
187
225
  }
188
226
  }
227
+ paramTypes = queryString.match(/\@param \{(.*)\}/gm);
228
+ if ( paramTypes && Array.isArray(paramTypes) ) {
229
+ for (let t=0, tLen = paramTypes.length; t<tLen; t++) {
230
+ paramTypes[t] = paramTypes[t].match(/\{(.*)\}/)[1];
231
+ }
232
+ }
189
233
  queryString = queryString.replace(/\n/g, ' ');
190
-
234
+
191
235
  // extract comments
192
236
  comments = queryString.match(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(\/\/.*)/g);
193
237
  // extract return type
@@ -200,9 +244,9 @@ function Couchbase(conn, infos) {
200
244
  params = comments[0].match(/\$\w+/g); // param list from comments
201
245
  queryString = queryString.replace(comments[0], '');
202
246
  }
203
-
247
+
204
248
  inlineParams = queryString.match(/\$\w+/g);
205
-
249
+
206
250
  // getting rid of duplicated
207
251
  if ( typeof(Set) == 'function' ) { // ES6
208
252
  inlineParams = Array.from(new Set(inlineParams))
@@ -210,6 +254,28 @@ function Couchbase(conn, infos) {
210
254
  inlineParams = Array.from(inlineParams)
211
255
  }
212
256
 
257
+ var cast = function(dataArray, paramTypes) {
258
+ for (let t=0, tLen=paramTypes.length; t<tLen; t++) {
259
+ switch (paramTypes[t]) {
260
+ case 'number':
261
+ case 'integer':
262
+ dataArray[t] = parseInt(dataArray[t]);
263
+ break;
264
+
265
+ case 'float':
266
+ dataArray[t] = parseFloat(dataArray[t].replace(/\,/, '.'));
267
+ break;
268
+
269
+ case 'string':
270
+ dataArray[t] = ''+dataArray[t];
271
+ break;
272
+
273
+ // default:
274
+ // break;
275
+ }
276
+ }
277
+ }
278
+
213
279
  try {
214
280
 
215
281
  if ( typeof(entities[entityName]) == 'undefined' ) {
@@ -222,8 +288,8 @@ function Couchbase(conn, infos) {
222
288
  entities[entityName].prototype._collection = entityName;
223
289
  entities[entityName].prototype._filename = _( __dirname + '/lib/n1ql.js', true );
224
290
  }
225
-
226
-
291
+
292
+
227
293
  entities[entityName].prototype[name] = function() {
228
294
  var self = this;
229
295
  var key = null
@@ -234,15 +300,19 @@ function Couchbase(conn, infos) {
234
300
  , _mainCallback = null;
235
301
 
236
302
  if ( params && params.length != args.length && !/function/.test(typeof(args[args.length-1])) ) {
237
- throw new Error('[ N1QL:' + entityName+'#'+name+'() ] arguments must match parameters length. Please refer to [ '+ source +' ]\nFound in param list: ('+ params.join(', ') +') !')
303
+ throw new Error('[N1QL][ ' + entityName+'#'+name+'() ] arguments must match parameters length. Please refer to [ '+ source +' ]\nFound in param list: ('+ params.join(', ') +') !')
238
304
  } else if ( /function/.test( typeof(args[args.length-1]) ) ) {
239
305
  // to hande Nodejs Util.promisify
240
306
  _mainCallback = args[args.length-1]
241
307
  }
242
308
 
309
+ if ( paramTypes && paramTypes.length > 0 ) {
310
+ cast(args, paramTypes)
311
+ }
312
+
243
313
  var sdkVersion = conn.sdk.version || 2;
244
- var queryParams = [];
245
- queryStatement = queryString.slice(0);
314
+ var queryParams = [];
315
+ queryStatement = queryString.slice(0);
246
316
  if (params) {
247
317
  // BO - patch prepared statement case when placeholder is used as a cursor
248
318
  var p = []
@@ -254,7 +324,7 @@ function Couchbase(conn, infos) {
254
324
  // rightCase already handled by default
255
325
  //, foundSpecialRightCase = /(\$|\%)\d+\.\w+/.test(qStr)
256
326
  ;
257
-
327
+
258
328
  // e.g.: c.documentNextId.$2 = $3
259
329
  // e.g.: n.alertedOn.$1 = true
260
330
  if (foundSpecialLeftCase) {
@@ -263,159 +333,206 @@ function Couchbase(conn, infos) {
263
333
  key = inl.indexOf(params[i]);
264
334
  if (key > -1) {
265
335
  p[key] = args[key];
266
-
267
- re = new RegExp('(.*)\\.'+ inl[key].replace(/([$%]+)/, '\\$1'));
336
+
337
+ re = new RegExp('(.*)\\.'+ inl[key].replace(/([$%]+)/, '\\$1'));
268
338
  if ( re.test(qStr) ) {
269
339
  p[key] = args[key];
270
340
  qStr = qStr.replace( new RegExp('(.*)\\.'+ params[i].replace(/([$%]+)/, '\\$1')), '$1\.'+args[i]);
271
341
  inl.splice(key, 1);
272
342
  }
273
- }
343
+ }
274
344
  }
275
345
 
276
- queryStatement = qStr;
277
- if ( sdkVersion > 2 ) { // starting from SDK v3
346
+
347
+ if ( sdkVersion == 3 ) { // SDK v3 ONLY
278
348
  queryParams = {};
279
- index = 0; i = 0; len = inlineParams.length;
349
+ index = 0; i = 0; len = inlineParams.length;
280
350
  var matched = null;
281
- for (; i < len; ++i) {
351
+ for (; i < len; ++i) {
282
352
  //matched = params.indexOf( inlineParams[i] );
283
353
  matched = params.indexOf( inl[i] );
284
- if ( matched > -1 && typeof(p[matched]) != 'undefined' ) {
285
- // e.g.: queryParams[ $3 ] = 1
286
- queryParams[ inl[i] ] = p[matched]
354
+ if ( matched > -1 && typeof(p[matched]) != 'undefined' ) {
355
+ // e.g.: queryParams[ $3 ] = 1
356
+ // queryParams[ inl[i] ] = p[matched];
357
+ // qStr = qStr.replace( new RegExp('\\'+ inl[i], 'g'), '"' + p[matched] + '"')
287
358
  }
288
359
  }
289
- } else {
290
- // Novemeber 2020 patch
360
+ } else { // v2 & v > 3
361
+
362
+ // April 2023 patch - Replaced p[i] by args[i]
291
363
  index = 0; i = 0; len = params.length;
292
- for (; i < len; ++i) {
293
- if ( typeof(p[i]) != 'undefined' ) {
294
- queryParams[i] = p[i];
364
+ for (; i < len; ++i) {
365
+ if ( typeof(args[i]) != 'undefined' ) {
366
+ queryParams[i] = args[i];
295
367
  } else { // means that placeholder has been replaced
296
368
  // But we still need to keep the reference in the list
297
369
  queryParams[i] = null
298
370
  }
299
371
  }
300
372
  }
301
-
373
+
374
+ queryStatement = qStr;
375
+
302
376
  }
303
-
377
+
304
378
  // e.g.: c.id = $1.id
305
379
  // if (foundSpecialRightCase) {
306
380
  // console.debug('foundSpecialRightCase...')
307
381
  // }
308
-
382
+
309
383
  // normal case
310
384
  if (
311
- !foundSpecialLeftCase /**&& !foundSpecialRightCase*/
312
- || Array.isArray(queryParams) && queryParams.length == 0
313
- ) {
314
- queryParams = args;
385
+ !foundSpecialLeftCase
386
+ || Array.isArray(queryParams) && queryParams.length == 0
387
+ ) {
388
+ queryParams = JSON.clone(args);
389
+ // starting from SDK v3
390
+ if ( typeof(queryParams[queryParams.length-1]) == 'function' ) {
391
+ queryParams.splice(queryParams.length-1, 1)
392
+ }
315
393
  }
316
394
  // EO - patch
317
395
  }
318
-
396
+
319
397
  var query = null, execQuery = null, _collection = null;
320
- // values by default
398
+ // adhoc option: @param {boolean} options.adhoc [ true | false ]
399
+ // default is set to false
400
+ //queryOptions.adhoc = false;
401
+
402
+ // scan consistency level: @param {number} options.consistency [ 1 | 2 | 3 ]
403
+ // Default is set to 1
404
+ //
405
+ // Default
406
+ // code : NOT_BOUNDED
407
+ // number : 1
408
+ // description : This is the default (for single-statement requests).
409
+ //
410
+ // Request plus
411
+ // code : REQUEST_PLUS
412
+ // number : 2
413
+ // description : This implements strong consistency per request.
414
+ // Update cycle every «20ms for memdb & 200ms for forestdb»
415
+ //
416
+ // Statement plus
417
+ // code : STATEMENT_PLUS
418
+ // number : 3
419
+ // description : This implements strong consistency per statement.
420
+ // Update cycle every «20ms for memdb & 200ms for forestdb»
421
+ //
422
+ //
423
+ // For more, visit :
424
+ // - https://blog.couchbase.com/high-performance-consistency/
425
+ // - https://developer.couchbase.com/documentation/server/current/architecture/querying-data-with-n1ql.html
426
+ // Query options values by default
321
427
  var queryOptions = {
322
- // Do not turn off the adhoc flag for each query since
428
+ // Do not turn off the adhoc flag for each query since
323
429
  // only a finite number of query plans (currently 5000) can be stored in the SDK
324
430
  adhoc: false, // false to use plan optimization, but need a statement `name param` or `num param`
325
431
  consistency: 1 // NOT_BOUNDED, but STATEMENT_PLUS is set by default for insert & update
326
432
  };
433
+
434
+
435
+ if ( /^(insert|update)/i.test(statement) ) {
436
+ queryOptions.adhoc = true;
437
+ queryOptions.consistency = 3; // STATEMENT_PLUS
438
+ }
439
+
327
440
  if ( sdkVersion > 2 ) { // starting from SDK v3
328
- _collection = queryStatement.match(/\_collection(\s+\=|=)(.*)(\'|\")/);
329
- if (_collection.length > 0) {
330
- _collection = _collection[0];
331
- if ( /\_collection/.test(_collection) ) {
332
- _collection = _collection.replace(/\_collection|\W+/ig, '');
333
- } else {
334
- _collection = null
335
- }
336
- }
337
-
338
- //var bucket = conn._cluster.bucket(conn._name);
441
+ // _collection = queryStatement.match(/\_collection(\s+\=|=)(.*)(\'|\")/);
442
+ // if (_collection.length > 0) {
443
+ // _collection = _collection[0];
444
+ // if ( /\_collection/.test(_collection) ) {
445
+ // _collection = _collection.replace(/\_collection|\W+/ig, '');
446
+ // } else {
447
+ // _collection = null
448
+ // }
449
+ // }
450
+
339
451
  //var scope = conn.scope(conn._name);
340
452
  //var coll = (_collection) ? scope.collection(_collection) : scope.defaultCollection();
341
453
  //execQuery = conn._cluster.query;
342
454
  execQuery = inherits(conn, conn._cluster.query);
343
-
455
+
344
456
  query = queryStatement;
345
457
  queryOptions.parameters = queryParams;
346
-
458
+
347
459
  } else { // version 2
348
- // prepared statement
460
+ // prepared statement
349
461
  query = N1qlQuery.fromString(queryStatement.replace(/^\s+/, ''));
350
462
  // query options
351
463
  // @param {object} options
352
464
  // @param {string} options.sample
353
465
 
354
- // adhoc option: @param {boolean} options.adhoc [ true | false ]
355
- // default is set to false
356
- //queryOptions.adhoc = false;
357
-
358
- // scan consistency level: @param {number} options.consistency [ 1 | 2 | 3 ]
359
- // Default is set to 1
360
- //
361
- // Default
362
- // code : NOT_BOUNDED
363
- // number : 1
364
- // description : This is the default (for single-statement requests).
365
- //
366
- // Request plus
367
- // code : REQUEST_PLUS
368
- // number : 2
369
- // description : This implements strong consistency per request.
370
- //
371
- // Statement plus
372
- // code : STATEMENT_PLUS
373
- // number : 3
374
- // description : This implements strong consistency per statement.
375
- //
376
- //
377
- // For more, visit :
378
- // - https://blog.couchbase.com/high-performance-consistency/
379
- // - https://developer.couchbase.com/documentation/server/current/architecture/querying-data-with-n1ql.html
380
- // queryOptions.consistency = 2; // 3
381
- // .adhoc(queryOptions.adhoc)
382
- // .consistency(queryOptions.consistency)
383
- //if ( /^(insert|update)/i.test(statement) ) {
384
- queryOptions.adhoc = true;
385
- queryOptions.consistency = 3; // NOT_BOUNDED
386
- query.consistency(3); // NOT_BOUNDED
387
- //}
466
+
467
+ // Setting up consistency
468
+ query.consistency(queryOptions.consistency);
388
469
  // merge options
389
470
  for (var qOpt in queryOptions) {
390
471
  if ( typeof(query[ qOpt ]) == 'undefined' ) {
391
- console.warn('N1QL:'+entityName.toLowerCase()+ '#'+ name + ': `'+ qOpt +'` is not a valid queryOption. Ignorig...');
472
+ console.warn('[N1QL]['+entityName.toLowerCase()+ '#'+ name + '] `'+ qOpt +'` is not a valid queryOption. Ignorig...');
392
473
  continue;
393
474
  }
394
475
  query[ qOpt ]( queryOptions[ qOpt ] );
395
- }
396
-
476
+ }
477
+
478
+ }
479
+
480
+ // JUNE 2021 patch
481
+ // Adding support for FTS since it is not implemented in sdkVersion 2:
482
+ // variables not replaced by value
483
+ // looking for FTS (Full Text Search)
484
+ var ftsClause = ( sdkVersion > 2 ) ? query.match(/(search\(|search\s+\().*\)/i) : query.options.statement.match(/(search\(|search\s+\().*\)/i);
485
+ if (ftsClause && Array.isArray(queryParams) ) {
486
+ var originalFtsClauses = JSON.clone(ftsClause), _queryParams = null;
487
+
488
+ if ( sdkVersion > 2 && Array.isArray(queryOptions.parameters) ) {
489
+ _queryParams = queryOptions.parameters;
490
+ } else if (sdkVersion <=2 && Array.isArray(queryParams) ) {
491
+ _queryParams = queryParams;
492
+ }
493
+
494
+ for (let s = 0, sLen = ftsClause.length; s < sLen; s++) {
495
+ if ( !/\)$/.test(ftsClause[s]) ) continue;
496
+ for (let p = 0, pLen = _queryParams.length; p < pLen; p++) {
497
+ if ( typeof(_queryParams[p]) == 'function' ) continue;
498
+ let searchValue = ( /^(true|false)$/i.test(_queryParams[p]) ) ? _queryParams[p] : '"'+_queryParams[p]+'"';
499
+ ftsClause[s] = ftsClause[s].replace( new RegExp('\\$'+ (p+1),'g'), searchValue)
500
+ }
501
+
502
+ if ( sdkVersion > 2 ) {
503
+ query = query.replace(originalFtsClauses[s], ftsClause[s]);
504
+ } else {
505
+ query.options.statement = query.options.statement.replace(originalFtsClauses[s], ftsClause[s]);
506
+ }
507
+ }
508
+
509
+ originalFtsClauses = null;
397
510
  }
511
+ ftsClause = null;
512
+
398
513
 
399
-
400
514
 
401
515
 
402
516
  // trick to set event on the fly
403
517
  var trigger = 'N1QL:'+entityName.toLowerCase()+ '#'+ name;
404
518
  var statement = (sdkVersion <= 2) ? query.options.statement : query;
405
-
519
+
406
520
  if (envIsDev) {
407
521
  //var statement = (sdkVersion <= 2) ? query.options.statement : query;
408
522
  console.debug('[ ' + trigger +' ] '+ statement);
409
523
  //console.debug('[ ' + trigger +' ] options: '+ JSON.stringify(queryOptions, null, 2));
524
+ if (queryParams.length > 0) {
525
+ console.debug('[ ' + trigger +' ] Found query params: '+ queryParams);
526
+ }
410
527
  }
411
-
412
-
413
-
528
+
529
+
530
+
414
531
  var onQueryCallback = function(err, data, meta) {
415
532
  // if (/^company#getDocumentNextId$/.test(trigger)) {
416
533
  // console.log('[ ' + trigger + '] onQueryCallback => ', err, data, meta);
417
534
  // }
418
-
535
+
419
536
  if (!data || data.length == 0) {
420
537
  data = null
421
538
  }
@@ -428,26 +545,26 @@ function Couchbase(conn, infos) {
428
545
  err.message = '[ '+source+' ]\n'+ err.message;
429
546
  err.stack = '[ '+source+' ]\n'+ err.stack;
430
547
  }
431
-
548
+
432
549
  // handle return type
433
- if ( returnType && returnType == 'boolean' ) {
550
+ if ( returnType && returnType == 'boolean' ) {
434
551
  // CASE #1
435
552
  // SELECT COUNT(a) AS someField <- means that keyword `COUNT(` is found in queryString
436
- // [ { someField: 1 }] <- a collection with only one object which has prop: <number>
437
- if (
553
+ // [ { someField: 1 }] <- a collection with only one object which has prop: <number>
554
+ if (
438
555
  /count\(|count\s+\(/i.test(queryString)
439
- && Array.isArray(data)
556
+ && Array.isArray(data)
440
557
  && /object/i.test(typeof(data[0]))
441
558
  && Object.keys(data[0]).length == 1
442
559
  && /number/i.test( typeof(data[0][Object.keys(data[0])]) )
443
560
  ) {
444
561
  data = ( data[0][Object.keys(data[0])] > 0 ) ? true : false
445
- }
562
+ }
446
563
  // CASE #2
447
564
  // regular query, just counting result
448
565
  else {
449
566
  data = ( typeof(data.length) != 'undefined' && data.length > 0 ) ? true : false
450
- }
567
+ }
451
568
  } else if ( returnType && returnType == 'object' ) {
452
569
 
453
570
  data = (data) ? data[0] : data
@@ -472,52 +589,54 @@ function Couchbase(conn, infos) {
472
589
  } else { // Promise case
473
590
  throw err
474
591
  }
475
-
592
+
476
593
  } else {
477
594
  if ( typeof(self.emit) != 'undefined' ) {
478
595
  self.emit(trigger, err, data, meta);
479
596
  } else { // Promise case
480
597
  return data
481
- }
598
+ }
482
599
  }
483
- return
600
+ return
484
601
  }
485
-
486
- } catch (_err) {
602
+
603
+ } catch (_err) {
487
604
  if ( _mainCallback != null ) {
488
605
  _mainCallback(err, data, meta)
489
606
  } else {
490
607
  if ( typeof(self.emit) != 'undefined' ) {
491
608
  self.emit(trigger, _err);
492
609
  } else {
493
- throw new Error('[ Couchbase ][ Core Entity Exception] '+ trigger + '\n'+ _err.stack)
494
- }
495
- }
610
+ throw new Error('[ Couchbase ][ Core Entity Exception] '+ trigger + '\n'+ _err.stack)
611
+ }
612
+ }
496
613
  }
497
614
  }; // EO onQueryCallback
498
-
615
+
499
616
  self._isRegisteredFromProto = false;
617
+ // `register()` is only used for v2
500
618
  var register = function (trigger, queryParams, onQueryCallback, cb) {
501
- // JUNE 2021 patch
502
- // Adding support for FTS since it is not implemented in sdkVersion 2:
503
- // variables not replaced by value
504
- // looking for FTS (Full Text Search)
505
- var ftsClause = query.options.statement.match(/(search\(|search\s+\().*\)/i);
506
- if (ftsClause && Array.isArray(queryParams) ) {
507
- var originalFtsClauses = JSON.clone(ftsClause);
508
- for (let s = 0, sLen = ftsClause.length; s < sLen; s++) {
509
- if ( !/\)$/.test(ftsClause[s]) ) continue;
510
- for (let p = 0, pLen = queryParams.length; p < pLen; p++) {
511
- if ( typeof(queryParams[p]) == 'function' ) continue;
512
- let searchValue = ( /^(true|false)$/i.test(queryParams[p]) ) ? queryParams[p] : '"'+queryParams[p]+'"';
513
- ftsClause[s] = ftsClause[s].replace( new RegExp('\\$'+ (p+1),'g'), searchValue)
514
- }
515
- query.options.statement = query.options.statement.replace(originalFtsClauses[s], ftsClause[s]);
516
- }
517
- originalFtsClauses = null;
518
- }
519
- ftsClause = null;
520
-
619
+ // // JUNE 2021 patch
620
+ // // Adding support for FTS since it is not implemented in sdkVersion 2:
621
+ // // variables not replaced by value
622
+ // // looking for FTS (Full Text Search)
623
+ // var ftsClause = query.options.statement.match(/(search\(|search\s+\().*\)/i);
624
+ // if (ftsClause && Array.isArray(queryParams) ) {
625
+ // var originalFtsClauses = JSON.clone(ftsClause);
626
+ // for (let s = 0, sLen = ftsClause.length; s < sLen; s++) {
627
+ // if ( !/\)$/.test(ftsClause[s]) ) continue;
628
+ // for (let p = 0, pLen = queryParams.length; p < pLen; p++) {
629
+ // if ( typeof(queryParams[p]) == 'function' ) continue;
630
+ // let searchValue = ( /^(true|false)$/i.test(queryParams[p]) ) ? queryParams[p] : '"'+queryParams[p]+'"';
631
+ // ftsClause[s] = ftsClause[s].replace( new RegExp('\\$'+ (p+1),'g'), searchValue)
632
+ // }
633
+ // query.options.statement = query.options.statement.replace(originalFtsClauses[s], ftsClause[s]);
634
+ // }
635
+ // originalFtsClauses = null;
636
+ // }
637
+ // ftsClause = null;
638
+
639
+
521
640
  if ( typeof(self.once) != 'undefined' && typeof(cb) != 'undefined' ) {
522
641
  self._isRegisteredFromProto = true;
523
642
  //console.debug('registered trigger: ', trigger, self._isRegisteredFromProto);
@@ -525,106 +644,113 @@ function Couchbase(conn, infos) {
525
644
  //console.debug('received ', trigger, meta, err);
526
645
  try {
527
646
  cb(err, data, meta)
528
- } catch (onCompleteError) {
647
+ } catch (onCompleteError) {
648
+ // catch errors inside the call of the user code
529
649
  cb(onCompleteError)
530
- }
650
+ }
531
651
  });
532
652
  // if (/triggerToDebug/.test(trigger)) {
533
653
  // console.log('[ ' + trigger + '] onQuery => ', query, queryParams);
534
654
  // }
535
- conn.query(query, queryParams, onQueryCallback);
536
- } // else promise case
537
-
538
-
655
+
656
+ if (sdkVersion > 2) {
657
+ conn._cluster.query(query, queryParams)
658
+ .catch( function onError(err) {
659
+ try {
660
+ var error = new Error(err.cause.first_error_message);
661
+ error.stack = trigger +'\n'+ err.cause.http_body;
662
+ onQueryCallback(error);
663
+ } catch (_err) {
664
+ console.error(_err.stack);
665
+ }
666
+ })
667
+ .then( function onResult(data, meta) {
668
+ try {
669
+ onQueryCallback(false, data.rows, data.meta);
670
+ } catch (_err) {
671
+ _err.stack = '[ ' + trigger + '] onQueryCallbackError: \n\t- Did you leave any bad comments ?\n\t- Did you try to run your query ?\r\n'+ query +'\r\n'+ _err.stack;
672
+ console.error(_err.stack);
673
+ }
674
+ });
675
+ // Added on 2023-03-25
676
+ return;
677
+ } else {
678
+ conn.query(query, queryParams, onQueryCallback);
679
+ }
680
+
681
+
682
+ } // else promise case
683
+
684
+
539
685
  if (!self._isRegisteredFromProto) {
540
686
  //console.debug('regular trigger: ', trigger, self._isRegisteredFromProto);
541
687
  // if (/triggerToDebug/.test(trigger)) {
542
688
  // console.log('[ ' + trigger + '] onQuery => ', query, queryParams);
543
689
  // }
544
- conn.query(query, queryParams, onQueryCallback);
690
+
691
+ if (sdkVersion > 2) {
692
+ conn._cluster.query(query, queryParams)
693
+ .catch( function onError(err) {
694
+ try {
695
+ var error = new Error(err.cause.first_error_message);
696
+ error.stack = trigger +'\n'+ err.cause.http_body;
697
+ onQueryCallback(error);
698
+ } catch (_err) {
699
+ console.error(_err.stack);
700
+ }
701
+ })
702
+ .then( function onResult(data) {
703
+ try {
704
+ onQueryCallback(false, data.rows, data.meta);
705
+ } catch (_err) {
706
+ console.error(_err.stack);
707
+ }
708
+ });
709
+ } else {
710
+ conn.query(query, queryParams, onQueryCallback);
711
+ }
545
712
  }
546
- }
547
-
713
+ } //EO register
714
+
548
715
  var _proto = {
549
- onComplete : function(cb) {
550
- //console.debug('onComplete trigger: ', trigger, self._isRegisteredFromProto);
551
- register(trigger, queryParams, onQueryCallback, cb)
716
+ onComplete : function(cb) {
717
+ // console.warn('onComplete trigger: ', trigger, self._isRegisteredFromProto);
718
+ if ( sdkVersion > 2 ) {
719
+ register(trigger, queryOptions, onQueryCallback, cb)
720
+ } else {
721
+ register(trigger, queryParams, onQueryCallback, cb)
722
+ }
552
723
  }
553
724
  };
554
-
555
-
556
- if ( sdkVersion > 2 ) {
557
- var qErr = false, qData = null, qMeta = null;
558
-
559
- if ( _mainCallback == null ) {
560
- return {
561
- onComplete : function(cb) {
562
- //console.debug('registered trigger: ', trigger);
563
- self.once(trigger, function onComplete(err, data, meta){
564
- //console.debug('received ', trigger);
565
- try {
566
- cb(err, data, meta)
567
- } catch (onCompleteError) {
568
- cb(onCompleteError)
569
- }
570
- });
571
-
572
- conn._cluster.query(query, queryOptions)
573
- .catch( function onError(err) {
574
- qErr = err;
575
- })
576
- .then( function onResult(data, meta) {
577
- qData = data;
578
- qMeta = meta;
579
- });
580
-
581
- try {
582
- if ( qErr ) {
583
- onQueryCallback(qErr);
584
- } else {
585
- onQueryCallback(false, qData, qMeta);
586
- }
587
- } catch (_err) {
588
- console.error(_err.stack);
589
- }
725
+
726
+
727
+ if ( sdkVersion > 2 ) {
728
+ if ( _mainCallback == null ) {
729
+ setTimeout((trigger, queryOptions, onQueryCallback) => {
730
+ if (!self._isRegisteredFromProto) {
731
+ // needed when used as a synchrone method
732
+ register(trigger, queryOptions, onQueryCallback);
590
733
  }
591
- }
734
+ }, 0, trigger, queryOptions, onQueryCallback);
735
+ return _proto
736
+
592
737
  } else {
593
- conn._cluster.query(query, queryOptions)
594
- .catch( function onError(err) {
595
- qErr = err;
596
- })
597
- .then( function onResult(data, meta) {
598
- qData = data;
599
- qMeta = meta;
600
- });
601
-
602
- try {
603
- if ( qErr ) {
604
- onQueryCallback(qErr);
605
- } else {
606
- onQueryCallback(false, qData, qMeta);
607
- }
608
- } catch (_err) {
609
- console.error(_err.stack);
610
- }
611
- }
612
-
613
-
614
- } else {
615
-
616
- if ( _mainCallback == null ) {
738
+ register(trigger, queryOptions, onQueryCallback, _mainCallback)
739
+ }
740
+ } else {
741
+
742
+ if ( _mainCallback == null ) {
617
743
  setTimeout((trigger, queryParams, onQueryCallback) => {
618
- if (!self._isRegisteredFromProto) {
619
- // needed when used as a synchrone method
744
+ if (!self._isRegisteredFromProto) {
745
+ // needed when used as a synchrone method
620
746
  register(trigger, queryParams, onQueryCallback);
621
747
  }
622
- }, 0, trigger, queryParams, onQueryCallback);
623
- return _proto
624
-
748
+ }, 0, trigger, queryParams, onQueryCallback);
749
+ return _proto
750
+
625
751
  } else {
626
752
  register(trigger, queryParams, onQueryCallback, _mainCallback)
627
- }
753
+ }
628
754
  }
629
755
  }
630
756
 
@@ -637,27 +763,39 @@ function Couchbase(conn, infos) {
637
763
 
638
764
  /**
639
765
  * bulkInsert
640
- *
766
+ *
641
767
  * Supported options
642
768
  * - adhoc : [ true | false ]
643
- * // scan consistency level - default is 1
769
+ * // scan consistency level - here, default is 3
644
770
  * - consistency : [ 1 | 2 | 3 ] where 1 = NOT_BOUNDED, 2 = REQUEST_PLUS, 3 = STATEMENT_PLUS
645
- *
771
+ * not_bounded:
772
+ * Executes the query immediately, without requiring any consistency for the query. If index-maintenance is running behind, out-of-date results may be returned.
773
+ * at_plus:
774
+ * Executes the query, requiring indexes first to be updated to the timestamp of the last update. If index-maintenance is running behind, the query waits for it to catch up.
775
+ * request_plus:
776
+ * Executes the query, requiring the indexes first to be updated to the timestamp of the current query-request. If index-maintenance is running behind, the query waits for it to catch up.
777
+ *
646
778
  * @param {array} rec collection
647
- * @param {object} [options] e.g: { consistency: 3 }
648
- *
779
+ * @param {object} [options] e.g: { consistency: 2 }
780
+ *
649
781
  */
650
782
  var bulkInsert = function(rec, options) {
651
783
 
652
- try {
653
- var conn = this.getConnection();
654
- var sdkVersion = conn.sdk.version || 2;
784
+ try {
785
+ var conn = this.getConnection();
786
+ // retrieve & return the collection
787
+ // if ( typeof(conn._scope) == 'undefined' && typeof(conn.scope) != 'undefined' ) {
788
+ // var newConn = conn.scope(scope).collection(currentCollection);
789
+ // newConn.sdk = conn.sdk;
790
+ // conn = newConn;
791
+ // }
792
+ var sdkVersion = conn.sdk.version || 2;
655
793
  // by default
656
- var queryOptions = {
794
+ var queryOptions = {
657
795
  adhoc: true,
658
796
  consistency: 3
659
797
  };
660
-
798
+
661
799
  if ( typeof(options) != 'undefined' ) {
662
800
  queryOptions = merge(options, queryOptions)
663
801
  }
@@ -670,7 +808,8 @@ function Couchbase(conn, infos) {
670
808
 
671
809
 
672
810
  var queryString = 'INSERT INTO '+ this.database +' (KEY, VALUE)';
673
- for (var id in rec) {
811
+ var recCount = 0;
812
+ for (let id in rec) {
674
813
  if ( typeof(rec[id].values) == 'undefined' )
675
814
  throw new Error('rec["'+ id +'"].values not found ! Please inspect your record root: type must be an Array.');
676
815
 
@@ -680,67 +819,114 @@ function Couchbase(conn, infos) {
680
819
  rec[id].values._collection = this._collection;
681
820
 
682
821
  queryString += '\t\nVALUES ("'+ id +'", '+ JSON.stringify(rec[id].values) +'),';
822
+ recCount++;
683
823
  }
684
824
 
685
825
  queryString = queryString.substr(0, queryString.length-1);
686
826
  queryString += '\nRETURNING '+ this.database +'.*;';
687
827
 
688
-
828
+
689
829
  var query = null;
690
830
  if ( sdkVersion > 2) { // starting SDK v3
691
- var scope = conn.scope(conn._name);
692
- var coll = (_collection) ? scope.collection(_collection) : scope.defaultCollection();
693
- query = merge(queryString, queryOptions);
831
+ query = queryString;
832
+ // queryOptions.parameters = queryParams;
694
833
  } else {
695
834
  // prepared statement
696
835
  query = N1qlQuery.fromString(queryString);
836
+ query.consistency(queryOptions.consistency);
697
837
  // merge options
698
838
  for (var qOpt in queryOptions) {
699
839
  if ( typeof(query[ qOpt ]) == 'undefined' ) {
700
- console.warn('N1QL:'+entityName.toLowerCase()+ '#'+ name + ': `'+ qOpt +'` is not a valid queryOption. Ignorig...');
840
+ console.warn('[N1QL]['+entityName.toLowerCase()+ '#'+ name + '] `'+ qOpt +'` is not a valid queryOption. Ignorig...');
701
841
  continue;
702
842
  }
703
843
  query[ qOpt ]( queryOptions[ qOpt ] )
704
844
  }
705
845
  }
706
-
846
+
707
847
 
708
848
  // trick to set event on the fly
709
849
  var trigger = 'N1QL:'+ this.name.toLowerCase()+ '#'+ name;
710
850
  // trick to set event on the fly
711
851
  var statement = (sdkVersion <= 2) ? query.options.statement : query;
712
-
852
+
713
853
  if (envIsDev) {
714
854
  console.debug('[ ' + trigger +' ] '+statement);
715
855
  }
716
856
 
717
857
  var self = this;
718
- conn.query(query, rec, function(err, data, meta) {
719
- if (!data || data.length == 0) {
720
- data = null
721
- }
722
858
 
723
- if (!err && meta && typeof(meta.errors) != 'undefined' ) {
724
- err = new Error('`GenericN1QLError::bulkInsert`\n'+meta.errors[0].msg);
725
- err.status = 403;
726
- } else if (err) {
727
- err.status = 500;
728
- err.message = '`GenericN1QLError::bulkInsert`\n'+ err.message;
729
- err.stack = '`GenericN1QLError::bulkInsert`\n'+ err.stack;
730
- }
731
- if (envIsDev) {
732
- console.debug('[ bulkInsert response ] : err ? '+ err + ', meta : \n'+ JSON.stringify(meta) +'\n data :\n'+ JSON.stringify(data) );
733
- }
859
+ if (sdkVersion > 2) {
860
+ var err = false;
861
+ conn._scope._bucket._cluster.query(query, queryOptions)
862
+ .catch( function onError(err) {
863
+ try {
864
+ var error = new Error(err.cause.first_error_message);
865
+ error.stack = trigger +'\n'+ err.cause.http_body;
866
+ self.emit(trigger, error);
867
+ } catch (_err) {
868
+ console.error(_err.stack);
869
+ }
870
+ })
871
+ .then( function onResult(data) {
872
+ try {
873
+ var _data = data.rows, _meta = data.meta;
874
+ if (!_data || _data.length == 0) {
875
+ _data = null
876
+ }
877
+
878
+ if (!err && _meta && typeof(_meta.errors) != 'undefined' ) {
879
+ err = new Error('`GenericN1QLError::bulkInsert`\n'+_meta.errors[0].msg);
880
+ err.status = 403;
881
+ } else if (err) {
882
+ err.status = 500;
883
+ err.message = '`GenericN1QLError::bulkInsert`\n'+ err.message;
884
+ err.stack = '`GenericN1QLError::bulkInsert`\n'+ err.stack;
885
+ }
886
+ if (envIsDev) {
887
+ console.debug('[ bulkInsert response ] : err ? '+ err + ', meta : \n'+ JSON.stringify(_meta) +'\n data :\n'+ JSON.stringify(_data) );
888
+ }
889
+
890
+ self.emit(trigger, err, data.rows, data.meta);
891
+ // Tempory fix
892
+ // setTimeout(() => {
893
+ // self.emit(trigger, err, data.rows, data.meta);
894
+ // }, (9+recCount) );
895
+
896
+ } catch (_err) {
897
+ console.error(_err.stack);
898
+ }
899
+ });
900
+ } else {
901
+ conn.query(query, rec, function(err, data, meta) {
902
+ if (!data || data.length == 0) {
903
+ data = null
904
+ }
905
+
906
+ if (!err && meta && typeof(meta.errors) != 'undefined' ) {
907
+ err = new Error('`GenericN1QLError::bulkInsert`\n'+meta.errors[0].msg);
908
+ err.status = 403;
909
+ } else if (err) {
910
+ err.status = 500;
911
+ err.message = '`GenericN1QLError::bulkInsert`\n'+ err.message;
912
+ err.stack = '`GenericN1QLError::bulkInsert`\n'+ err.stack;
913
+ }
914
+ if (envIsDev) {
915
+ console.debug('[ bulkInsert response ] : err ? '+ err + ', meta : \n'+ JSON.stringify(meta) +'\n data :\n'+ JSON.stringify(data) );
916
+ }
917
+
918
+ self.emit(trigger, err, data, meta);
919
+ });
920
+ }
734
921
 
735
- self.emit(trigger, err, data, meta);
736
- });
737
922
 
738
923
  return {
739
924
  onComplete : function(cb) {
740
925
  self.once(trigger, function(err, data, meta){
741
926
  if (envIsDev) {
742
- console.debug('[ bulkInsert triggerd ] '+ trigger);
927
+ console.debug('[ bulkInsert triggerd ] '+ trigger + ' - Rec count: '+ recCount);
743
928
  }
929
+
744
930
  cb(err, data, meta)
745
931
  })
746
932
  }
@@ -752,6 +938,6 @@ function Couchbase(conn, infos) {
752
938
  }
753
939
 
754
940
  return init(conn, infos)
755
- };
941
+ }
756
942
 
757
- module.exports = Couchbase
943
+ module.exports = Couchbase;