gina 0.6.2 → 0.6.3

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 (570) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +41 -12
  3. package/ROADMAP.md +3 -2
  4. package/bin/cli +19 -2
  5. package/framework/v0.6.3/VERSION +1 -0
  6. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +6 -0
  7. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  8. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  9. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/index.html +1 -0
  10. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +50 -1
  11. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +457 -57
  12. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.js +1457 -58
  13. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js +625 -0
  14. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  15. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  16. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/index.js +114 -0
  17. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/connector.js +14 -3
  18. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/session-store.js +14 -3
  19. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/session-store.v3.js +29 -2
  20. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/session-store.v4.js +29 -2
  21. package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/session-store.js +24 -2
  22. package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/session-store.js +33 -9
  23. package/framework/{v0.6.2 → v0.6.3}/core/connectors/scylladb/lib/session-store.js +25 -2
  24. package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/lib/session-store.js +26 -2
  25. package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.js +201 -21
  26. package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-nunjucks.js +8 -0
  27. package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-swig.js +85 -4
  28. package/framework/{v0.6.2 → v0.6.3}/core/gna.js +23 -1
  29. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/csrf/src/main.js +9 -5
  30. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hide-powered-by/README.md +20 -0
  31. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/src/form-validator.js +119 -43
  32. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/src/main.js +451 -9
  33. package/framework/{v0.6.2 → v0.6.3}/core/server.isaac.js +50 -54
  34. package/framework/{v0.6.2 → v0.6.3}/core/server.js +240 -3
  35. package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/index.js +6 -4
  36. package/framework/{v0.6.2 → v0.6.3}/core/template/conf/settings.json +10 -0
  37. package/framework/{v0.6.2 → v0.6.3}/lib/cache/README.md +9 -1
  38. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/audit/verify.js +11 -9
  39. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/mcp-start.js +21 -12
  40. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/help.txt +1 -1
  41. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/init.js +13 -1
  42. package/framework/{v0.6.2 → v0.6.3}/lib/dto/src/main.js +18 -11
  43. package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/file/index.js +29 -1
  44. package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/mq/speaker.js +30 -1
  45. package/framework/{v0.6.2 → v0.6.3}/lib/math/index.js +57 -6
  46. package/framework/{v0.6.2 → v0.6.3}/lib/merge/src/main.js +34 -5
  47. package/framework/{v0.6.2 → v0.6.3}/lib/render-cache/src/main.js +77 -4
  48. package/framework/{v0.6.2 → v0.6.3}/lib/routing/src/main.js +13 -1
  49. package/framework/{v0.6.2 → v0.6.3}/lib/routing-introspect/src/main.js +64 -2
  50. package/framework/v0.6.3/lib/secrets/src/backends/env.js +75 -0
  51. package/framework/{v0.6.2 → v0.6.3}/package.json +1 -1
  52. package/gna.js +5 -4
  53. package/llms.txt +19 -17
  54. package/package.json +5 -4
  55. package/schema/connectors.json +2 -2
  56. package/schema/routing.json +5 -0
  57. package/schema/settings.json +6 -1
  58. package/script/generate_gna_types.js +1 -1
  59. package/script/soak/couchbase-soak.js +1316 -0
  60. package/types/globals.d.ts +2 -0
  61. package/types/gna.d.ts +5 -0
  62. package/types/index.d.ts +1 -0
  63. package/utils/helper.js +38 -7
  64. package/framework/v0.6.2/VERSION +0 -1
  65. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  66. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  67. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -603
  68. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  69. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  70. package/framework/v0.6.2/lib/secrets/src/backends/env.js +0 -60
  71. /package/framework/{v0.6.2 → v0.6.3}/AUTHORS +0 -0
  72. /package/framework/{v0.6.2 → v0.6.3}/LICENSE +0 -0
  73. /package/framework/{v0.6.2 → v0.6.3}/core/asset/html/nolayout.html +0 -0
  74. /package/framework/{v0.6.2 → v0.6.3}/core/asset/html/static.html +0 -0
  75. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/android-chrome-192x192.png +0 -0
  76. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/android-chrome-512x512.png +0 -0
  77. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/apple-touch-icon.png +0 -0
  78. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/favicon-16x16.png +0 -0
  79. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/favicon-32x32.png +0 -0
  80. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/favicon.ico +0 -0
  81. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/README.md +0 -0
  82. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  83. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  84. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  85. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  86. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  87. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  88. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  89. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  90. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  91. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  92. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  93. /package/framework/{v0.6.2 → v0.6.3}/core/config.js +0 -0
  94. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/ai/index.js +0 -0
  95. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/ai/lib/connector.js +0 -0
  96. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  97. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  98. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/n1ql.js +0 -0
  99. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/duckdb/index.js +0 -0
  100. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/duckdb/lib/connector.js +0 -0
  101. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/index.js +0 -0
  102. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/connector.js +0 -0
  103. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/job-store.js +0 -0
  104. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  105. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mysql/index.js +0 -0
  106. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mysql/lib/connector.js +0 -0
  107. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/postgresql/index.js +0 -0
  108. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/postgresql/lib/connector.js +0 -0
  109. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/index.js +0 -0
  110. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/connector.js +0 -0
  111. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/job-store.js +0 -0
  112. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/render-cache-store.js +0 -0
  113. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/scylladb/index.js +0 -0
  114. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/scylladb/lib/connector.js +0 -0
  115. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sql-parser.js +0 -0
  116. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/index.js +0 -0
  117. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/lib/connector.js +0 -0
  118. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/lib/job-store.js +0 -0
  119. /package/framework/{v0.6.2 → v0.6.3}/core/content.encoding +0 -0
  120. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.framework.js +0 -0
  121. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-json.js +0 -0
  122. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-nunjucks-async.js +0 -0
  123. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-stream.js +0 -0
  124. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-swig-async.js +0 -0
  125. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-v1.js +0 -0
  126. /package/framework/{v0.6.2 → v0.6.3}/core/controller/index.js +0 -0
  127. /package/framework/{v0.6.2 → v0.6.3}/core/controller/inspector-window-emit.js +0 -0
  128. /package/framework/{v0.6.2 → v0.6.3}/core/controller/release-banner.js +0 -0
  129. /package/framework/{v0.6.2 → v0.6.3}/core/dev/index.js +0 -0
  130. /package/framework/{v0.6.2 → v0.6.3}/core/dev/lib/class.js +0 -0
  131. /package/framework/{v0.6.2 → v0.6.3}/core/dev/lib/factory.js +0 -0
  132. /package/framework/{v0.6.2 → v0.6.3}/core/dev/lib/tools.js +0 -0
  133. /package/framework/{v0.6.2 → v0.6.3}/core/locales/README.md +0 -0
  134. /package/framework/{v0.6.2 → v0.6.3}/core/locales/currency.json +0 -0
  135. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/language/en.json +0 -0
  136. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/language/fr.json +0 -0
  137. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/region/en.json +0 -0
  138. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/region/fr.json +0 -0
  139. /package/framework/{v0.6.2 → v0.6.3}/core/locales/index.js +0 -0
  140. /package/framework/{v0.6.2 → v0.6.3}/core/mime.types +0 -0
  141. /package/framework/{v0.6.2 → v0.6.3}/core/model/entity.js +0 -0
  142. /package/framework/{v0.6.2 → v0.6.3}/core/model/index.js +0 -0
  143. /package/framework/{v0.6.2 → v0.6.3}/core/model/template/entityFactory.js +0 -0
  144. /package/framework/{v0.6.2 → v0.6.3}/core/model/template/index.js +0 -0
  145. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/README.md +0 -0
  146. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/index.js +0 -0
  147. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/csrf/README.md +0 -0
  148. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/csrf/package.json +0 -0
  149. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/README.md +0 -0
  150. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coep/README.md +0 -0
  151. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coep/package.json +0 -0
  152. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  153. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coop/README.md +0 -0
  154. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coop/package.json +0 -0
  155. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  156. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/corp/README.md +0 -0
  157. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/corp/package.json +0 -0
  158. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  159. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/csp/README.md +0 -0
  160. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/csp/package.json +0 -0
  161. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  162. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  163. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  164. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  165. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  166. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  167. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  168. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  169. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  170. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/package.json +0 -0
  171. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  172. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  173. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  174. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/src/main.js +0 -0
  175. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  176. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  177. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  178. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  179. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  180. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  181. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  182. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  183. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  184. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  185. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  186. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  187. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  188. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  189. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  190. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  191. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  192. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  193. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/session/README.md +0 -0
  194. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/session/package.json +0 -0
  195. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/session/src/main.js +0 -0
  196. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/README.md +0 -0
  197. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/build.json +0 -0
  198. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/package.json +0 -0
  199. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/src/main.js +0 -0
  200. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/README.md +0 -0
  201. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/build.json +0 -0
  202. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/package.json +0 -0
  203. /package/framework/{v0.6.2 → v0.6.3}/core/router.js +0 -0
  204. /package/framework/{v0.6.2 → v0.6.3}/core/server.express.js +0 -0
  205. /package/framework/{v0.6.2 → v0.6.3}/core/status.codes +0 -0
  206. /package/framework/{v0.6.2 → v0.6.3}/core/template/_gitignore +0 -0
  207. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/app.json +0 -0
  208. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  209. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/routing.json +0 -0
  210. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/settings.json +0 -0
  211. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  212. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/templates.json +0 -0
  213. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  214. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  215. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  216. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  217. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/locales/en.json +0 -0
  218. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  219. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  220. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  221. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  222. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  223. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  224. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  225. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  226. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/readme.md +0 -0
  227. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/sw.js +0 -0
  228. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  229. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  230. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  231. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  232. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  233. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  234. /package/framework/{v0.6.2 → v0.6.3}/core/template/command/gina.bat.tpl +0 -0
  235. /package/framework/{v0.6.2 → v0.6.3}/core/template/command/gina.tpl +0 -0
  236. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/env.json +0 -0
  237. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/manifest.json +0 -0
  238. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/package.json +0 -0
  239. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/statics.json +0 -0
  240. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/templates.json +0 -0
  241. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/client/json/401.json +0 -0
  242. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/client/json/403.json +0 -0
  243. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/client/json/404.json +0 -0
  244. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/server/html/50x.html +0 -0
  245. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/server/json/500.json +0 -0
  246. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/server/json/503.json +0 -0
  247. /package/framework/{v0.6.2 → v0.6.3}/core/template/extensions/logger/config.json +0 -0
  248. /package/framework/{v0.6.2 → v0.6.3}/helpers/console.js +0 -0
  249. /package/framework/{v0.6.2 → v0.6.3}/helpers/context.js +0 -0
  250. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/LICENSE +0 -0
  251. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/README.md +0 -0
  252. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/package.json +0 -0
  253. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/src/main.js +0 -0
  254. /package/framework/{v0.6.2 → v0.6.3}/helpers/dateFormat.js +0 -0
  255. /package/framework/{v0.6.2 → v0.6.3}/helpers/index.js +0 -0
  256. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/LICENSE +0 -0
  257. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/README.md +0 -0
  258. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/package.json +0 -0
  259. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/src/main.js +0 -0
  260. /package/framework/{v0.6.2 → v0.6.3}/helpers/path.js +0 -0
  261. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/README.md +0 -0
  262. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/package.json +0 -0
  263. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/src/api-error.js +0 -0
  264. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/src/main.js +0 -0
  265. /package/framework/{v0.6.2 → v0.6.3}/helpers/prototypes.js +0 -0
  266. /package/framework/{v0.6.2 → v0.6.3}/helpers/task.js +0 -0
  267. /package/framework/{v0.6.2 → v0.6.3}/helpers/text.js +0 -0
  268. /package/framework/{v0.6.2 → v0.6.3}/lib/admin/package.json +0 -0
  269. /package/framework/{v0.6.2 → v0.6.3}/lib/admin/src/main.js +0 -0
  270. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/README.md +0 -0
  271. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/build.json +0 -0
  272. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/package.json +0 -0
  273. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/src/dep/jszip.min.js +0 -0
  274. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/src/main.js +0 -0
  275. /package/framework/{v0.6.2 → v0.6.3}/lib/async/package.json +0 -0
  276. /package/framework/{v0.6.2 → v0.6.3}/lib/async/src/main.js +0 -0
  277. /package/framework/{v0.6.2 → v0.6.3}/lib/audit/package.json +0 -0
  278. /package/framework/{v0.6.2 → v0.6.3}/lib/audit/src/main.js +0 -0
  279. /package/framework/{v0.6.2 → v0.6.3}/lib/audit-store.js +0 -0
  280. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/package.json +0 -0
  281. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/src/lockout.js +0 -0
  282. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/src/main.js +0 -0
  283. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/src/totp.js +0 -0
  284. /package/framework/{v0.6.2 → v0.6.3}/lib/authz-gate/package.json +0 -0
  285. /package/framework/{v0.6.2 → v0.6.3}/lib/authz-gate/src/main.js +0 -0
  286. /package/framework/{v0.6.2 → v0.6.3}/lib/cache/build.json +0 -0
  287. /package/framework/{v0.6.2 → v0.6.3}/lib/cache/package.json +0 -0
  288. /package/framework/{v0.6.2 → v0.6.3}/lib/cache/src/main.js +0 -0
  289. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/aliases.json +0 -0
  290. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/audit/arguments.json +0 -0
  291. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/audit/help.txt +0 -0
  292. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/add.js +0 -0
  293. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/arguments.json +0 -0
  294. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/build.js +0 -0
  295. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/copy.js +0 -0
  296. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/cp.js +0 -0
  297. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/help.js +0 -0
  298. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/help.txt +0 -0
  299. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  300. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/list.js +0 -0
  301. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/man.js +0 -0
  302. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/mcp.js +0 -0
  303. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/oas.js +0 -0
  304. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/openapi.js +0 -0
  305. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/remove.js +0 -0
  306. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/rename.js +0 -0
  307. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/restart.js +0 -0
  308. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/rm.js +0 -0
  309. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/start.js +0 -0
  310. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/status.js +0 -0
  311. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/stop.js +0 -0
  312. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/types.js +0 -0
  313. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/arguments.json +0 -0
  314. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/clear.js +0 -0
  315. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/help.txt +0 -0
  316. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/stats.js +0 -0
  317. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/add.js +0 -0
  318. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/arguments.json +0 -0
  319. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/help.js +0 -0
  320. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/infer.js +0 -0
  321. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/list.js +0 -0
  322. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/migrate.js +0 -0
  323. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/models.js +0 -0
  324. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/remove.js +0 -0
  325. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/rm.js +0 -0
  326. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/test.js +0 -0
  327. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/arguments.json +0 -0
  328. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/help.js +0 -0
  329. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/help.txt +0 -0
  330. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/man.js +0 -0
  331. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/ps.js +0 -0
  332. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/stop.js +0 -0
  333. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/add.js +0 -0
  334. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/arguments.json +0 -0
  335. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/help.txt +0 -0
  336. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/args.js +0 -0
  337. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/namespace.js +0 -0
  338. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  339. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/reference-scan.js +0 -0
  340. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/scaffold.js +0 -0
  341. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/remove.js +0 -0
  342. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/rename.js +0 -0
  343. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/rm.js +0 -0
  344. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/add.js +0 -0
  345. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/get.js +0 -0
  346. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/help.js +0 -0
  347. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/help.txt +0 -0
  348. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/link-dev.js +0 -0
  349. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/list.js +0 -0
  350. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/remove.js +0 -0
  351. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/rm.js +0 -0
  352. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/set.js +0 -0
  353. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/unset.js +0 -0
  354. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/use.js +0 -0
  355. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/add.js +0 -0
  356. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/arguments.json +0 -0
  357. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/build.js +0 -0
  358. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/dot.js +0 -0
  359. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/get.js +0 -0
  360. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/help.js +0 -0
  361. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/help.txt +0 -0
  362. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/link-node-modules.js +0 -0
  363. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/link.js +0 -0
  364. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/list.js +0 -0
  365. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/man.js +0 -0
  366. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/msg.json +0 -0
  367. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/open.js +0 -0
  368. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/remove.js +0 -0
  369. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/reset.js +0 -0
  370. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/restart.js +0 -0
  371. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/set.js +0 -0
  372. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/start.js +0 -0
  373. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/status.js +0 -0
  374. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/stop.js +0 -0
  375. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/tail.js +0 -0
  376. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/update.js +0 -0
  377. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/version.js +0 -0
  378. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/gina-dev.1.md +0 -0
  379. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/gina-framework.1.md +0 -0
  380. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/gina.1.md +0 -0
  381. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/helper.js +0 -0
  382. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/add.js +0 -0
  383. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/arguments.json +0 -0
  384. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/export.js +0 -0
  385. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/help.js +0 -0
  386. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/help.txt +0 -0
  387. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/import.js +0 -0
  388. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/scan.js +0 -0
  389. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/_host.js +0 -0
  390. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/arguments.json +0 -0
  391. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/build.js +0 -0
  392. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/help.js +0 -0
  393. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/help.txt +0 -0
  394. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/list.js +0 -0
  395. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/man.js +0 -0
  396. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/rm.js +0 -0
  397. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/run.js +0 -0
  398. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/index.js +0 -0
  399. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/inspector/help.js +0 -0
  400. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/inspector/help.txt +0 -0
  401. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/inspector/open.js +0 -0
  402. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/man-render.js +0 -0
  403. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/arguments.json +0 -0
  404. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/help.js +0 -0
  405. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/help.txt +0 -0
  406. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/kill.js +0 -0
  407. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/list.js +0 -0
  408. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/msg.json +0 -0
  409. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/help.js +0 -0
  410. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/help.txt +0 -0
  411. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/inc/scan.js +0 -0
  412. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/list.js +0 -0
  413. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/reset.js +0 -0
  414. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/set.js +0 -0
  415. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/add.js +0 -0
  416. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/arguments.json +0 -0
  417. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/backup.js +0 -0
  418. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/build.js +0 -0
  419. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/help.js +0 -0
  420. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/help.txt +0 -0
  421. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/import.js +0 -0
  422. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/list.js +0 -0
  423. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/man.js +0 -0
  424. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/move.js +0 -0
  425. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/remove.js +0 -0
  426. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/rename.js +0 -0
  427. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/restart.js +0 -0
  428. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/restore.js +0 -0
  429. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/rm.js +0 -0
  430. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/start.js +0 -0
  431. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/status.js +0 -0
  432. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/stop.js +0 -0
  433. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/arguments.json +0 -0
  434. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/help.js +0 -0
  435. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/help.txt +0 -0
  436. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/list.js +0 -0
  437. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/remove.js +0 -0
  438. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/set.js +0 -0
  439. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/add.js +0 -0
  440. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/help.js +0 -0
  441. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/help.txt +0 -0
  442. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/link-local.js +0 -0
  443. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/link-production.js +0 -0
  444. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/list.js +0 -0
  445. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/remove.js +0 -0
  446. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/rm.js +0 -0
  447. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/use.js +0 -0
  448. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/arguments.json +0 -0
  449. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/check.js +0 -0
  450. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/help.js +0 -0
  451. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/help.txt +0 -0
  452. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/scan.js +0 -0
  453. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/help.js +0 -0
  454. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/help.txt +0 -0
  455. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/list.js +0 -0
  456. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/man.js +0 -0
  457. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/start.js +0 -0
  458. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/view/add.js +0 -0
  459. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd-status-format/package.json +0 -0
  460. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd-status-format/src/main.js +0 -0
  461. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/README.md +0 -0
  462. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/build.json +0 -0
  463. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/package.json +0 -0
  464. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/src/main.js +0 -0
  465. /package/framework/{v0.6.2 → v0.6.3}/lib/config.js +0 -0
  466. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-config/package.json +0 -0
  467. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-config/src/main.js +0 -0
  468. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-error/package.json +0 -0
  469. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-error/src/main.js +0 -0
  470. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-registry/package.json +0 -0
  471. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-registry/src/main.js +0 -0
  472. /package/framework/{v0.6.2 → v0.6.3}/lib/cron/README.md +0 -0
  473. /package/framework/{v0.6.2 → v0.6.3}/lib/cron/package.json +0 -0
  474. /package/framework/{v0.6.2 → v0.6.3}/lib/cron/src/main.js +0 -0
  475. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/LICENSE +0 -0
  476. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/README.md +0 -0
  477. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/package.json +0 -0
  478. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/src/main.js +0 -0
  479. /package/framework/{v0.6.2 → v0.6.3}/lib/dto/package.json +0 -0
  480. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-pipe/package.json +0 -0
  481. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-pipe/src/main.js +0 -0
  482. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-types/package.json +0 -0
  483. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-types/src/main.js +0 -0
  484. /package/framework/{v0.6.2 → v0.6.3}/lib/generator/index.js +0 -0
  485. /package/framework/{v0.6.2 → v0.6.3}/lib/i18n/package.json +0 -0
  486. /package/framework/{v0.6.2 → v0.6.3}/lib/i18n/src/main.js +0 -0
  487. /package/framework/{v0.6.2 → v0.6.3}/lib/image-build/package.json +0 -0
  488. /package/framework/{v0.6.2 → v0.6.3}/lib/image-build/src/main.js +0 -0
  489. /package/framework/{v0.6.2 → v0.6.3}/lib/index.js +0 -0
  490. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/LICENSE +0 -0
  491. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/README.md +0 -0
  492. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/package.json +0 -0
  493. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/src/main.js +0 -0
  494. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-events/package.json +0 -0
  495. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-events/src/main.js +0 -0
  496. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-redact/package.json +0 -0
  497. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-redact/src/main.js +0 -0
  498. /package/framework/{v0.6.2 → v0.6.3}/lib/instrument/package.json +0 -0
  499. /package/framework/{v0.6.2 → v0.6.3}/lib/instrument/src/main.js +0 -0
  500. /package/framework/{v0.6.2 → v0.6.3}/lib/job/package.json +0 -0
  501. /package/framework/{v0.6.2 → v0.6.3}/lib/job/src/main.js +0 -0
  502. /package/framework/{v0.6.2 → v0.6.3}/lib/job-store.js +0 -0
  503. /package/framework/{v0.6.2 → v0.6.3}/lib/json-config-header/package.json +0 -0
  504. /package/framework/{v0.6.2 → v0.6.3}/lib/json-config-header/src/main.js +0 -0
  505. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/README.md +0 -0
  506. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/package.json +0 -0
  507. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/default/index.js +0 -0
  508. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  509. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  510. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/mq/index.js +0 -0
  511. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/mq/listener.js +0 -0
  512. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/helper.js +0 -0
  513. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/main.js +0 -0
  514. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-dispatch/package.json +0 -0
  515. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-dispatch/src/main.js +0 -0
  516. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-http/package.json +0 -0
  517. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-http/src/main.js +0 -0
  518. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-server/package.json +0 -0
  519. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-server/src/main.js +0 -0
  520. /package/framework/{v0.6.2 → v0.6.3}/lib/merge/README.md +0 -0
  521. /package/framework/{v0.6.2 → v0.6.3}/lib/merge/package.json +0 -0
  522. /package/framework/{v0.6.2 → v0.6.3}/lib/metrics/package.json +0 -0
  523. /package/framework/{v0.6.2 → v0.6.3}/lib/metrics/src/main.js +0 -0
  524. /package/framework/{v0.6.2 → v0.6.3}/lib/model.js +0 -0
  525. /package/framework/{v0.6.2 → v0.6.3}/lib/net-locality/package.json +0 -0
  526. /package/framework/{v0.6.2 → v0.6.3}/lib/net-locality/src/main.js +0 -0
  527. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-filters/README.md +0 -0
  528. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-filters/package.json +0 -0
  529. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-filters/src/main.js +0 -0
  530. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-resolver/package.json +0 -0
  531. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-resolver/src/main.js +0 -0
  532. /package/framework/{v0.6.2 → v0.6.3}/lib/proc.js +0 -0
  533. /package/framework/{v0.6.2 → v0.6.3}/lib/release-watch/package.json +0 -0
  534. /package/framework/{v0.6.2 → v0.6.3}/lib/release-watch/src/main.js +0 -0
  535. /package/framework/{v0.6.2 → v0.6.3}/lib/render-cache/package.json +0 -0
  536. /package/framework/{v0.6.2 → v0.6.3}/lib/render-cache-store.js +0 -0
  537. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/README.md +0 -0
  538. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/build.json +0 -0
  539. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/package.json +0 -0
  540. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/src/radix.js +0 -0
  541. /package/framework/{v0.6.2 → v0.6.3}/lib/routing-introspect/package.json +0 -0
  542. /package/framework/{v0.6.2 → v0.6.3}/lib/secrets/package.json +0 -0
  543. /package/framework/{v0.6.2 → v0.6.3}/lib/secrets/src/main.js +0 -0
  544. /package/framework/{v0.6.2 → v0.6.3}/lib/session-store.js +0 -0
  545. /package/framework/{v0.6.2 → v0.6.3}/lib/shell.js +0 -0
  546. /package/framework/{v0.6.2 → v0.6.3}/lib/sqlite-driver.js +0 -0
  547. /package/framework/{v0.6.2 → v0.6.3}/lib/state.js +0 -0
  548. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-filters/README.md +0 -0
  549. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-filters/package.json +0 -0
  550. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-filters/src/main.js +0 -0
  551. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-resolver/package.json +0 -0
  552. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-resolver/src/main.js +0 -0
  553. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/package.json +0 -0
  554. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/src/loaders/http.js +0 -0
  555. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/src/loaders/memory.js +0 -0
  556. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/src/main.js +0 -0
  557. /package/framework/{v0.6.2 → v0.6.3}/lib/url/README.md +0 -0
  558. /package/framework/{v0.6.2 → v0.6.3}/lib/url/index.js +0 -0
  559. /package/framework/{v0.6.2 → v0.6.3}/lib/url/routing.json +0 -0
  560. /package/framework/{v0.6.2 → v0.6.3}/lib/uuid/package.json +0 -0
  561. /package/framework/{v0.6.2 → v0.6.3}/lib/uuid/src/main.js +0 -0
  562. /package/framework/{v0.6.2 → v0.6.3}/lib/validator.js +0 -0
  563. /package/framework/{v0.6.2 → v0.6.3}/lib/watcher/package.json +0 -0
  564. /package/framework/{v0.6.2 → v0.6.3}/lib/watcher/src/main.js +0 -0
  565. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-framing/package.json +0 -0
  566. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-framing/src/main.js +0 -0
  567. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-query/package.json +0 -0
  568. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-query/src/main.js +0 -0
  569. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-session/package.json +0 -0
  570. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-session/src/main.js +0 -0
@@ -38,6 +38,12 @@ function Couchbase(conn, infos) {
38
38
  * - `ExpressionScan` / `KeyScan` — USE KEYS direct KV lookup (green badge,
39
39
  * reported as "KV lookup (USE KEYS)")
40
40
  *
41
+ * Recursion covers the four child containers plans actually use: `~child`,
42
+ * `~children`, plus (#B193) the nested-scan containers `scans`
43
+ * (IntersectScan / UnionScan / OrderedIntersectScan) and `scan`
44
+ * (DistinctScan) — so a plan the planner serves with MULTIPLE indexes
45
+ * reports all of them instead of reading as "no index".
46
+ *
41
47
  * @inner
42
48
  * @param {object} profile - The plan object (meta.profile or EXPLAIN row)
43
49
  * @returns {Array<{name: string, primary: boolean}>|null} Array of index descriptors,
@@ -77,6 +83,20 @@ function Couchbase(conn, infos) {
77
83
  walk(node['~children'][i]);
78
84
  }
79
85
  }
86
+ // #B193 — the multi-index operators nest their child scans under
87
+ // `scans` (IntersectScan / UnionScan / OrderedIntersectScan) or
88
+ // `scan` (DistinctScan), NOT ~child/~children. Unwalked, every
89
+ // multi-index plan returned [] and the Inspector rendered it as
90
+ // "no index — full bucket scan" — a false negative that invites a
91
+ // pointless (write-amplifying) index build for a query the planner
92
+ // was already serving with several indexes. seen[] above already
93
+ // dedupes an index appearing in more than one child scan.
94
+ if (node['scan']) walk(node['scan']);
95
+ if (node['scans'] && Array.isArray(node['scans'])) {
96
+ for (var j = 0; j < node['scans'].length; j++) {
97
+ walk(node['scans'][j]);
98
+ }
99
+ }
80
100
  };
81
101
  walk(root);
82
102
  return results;
@@ -127,6 +147,84 @@ function Couchbase(conn, infos) {
127
147
  return cluster;
128
148
  };
129
149
 
150
+ /**
151
+ * #B243 — guards the assembled N1QL parameter list against values the
152
+ * Couchbase SDK cannot serialize. This defends against a PROCESS ABORT,
153
+ * not a normal validation failure.
154
+ *
155
+ * The SDK maps `JSON.stringify` over the parameter list. For a `function`,
156
+ * a `symbol`, or an `undefined`, `JSON.stringify` returns the VALUE
157
+ * `undefined` rather than a string; the native binding coerces that to the
158
+ * empty string, and the C++ core's JSON parse of `""` throws
159
+ * `tao::pegtl::parse_error` on an internal thread, reaching
160
+ * `std::terminate()` and then `abort()`. That kills the whole bundle — no
161
+ * `try/catch`, `uncaughtException` or `unhandledRejection` can intercept
162
+ * it, so the request cannot even fail with a 500. Measured against a live
163
+ * cluster on SDK 4.1.3 and 4.7.1 (4.2.0+ maps a bare `undefined` to null,
164
+ * but still aborts on functions and symbols).
165
+ *
166
+ * Reachable WITHOUT any misuse of the SDK: the cursor-style assembly branch
167
+ * fills `queryParams[i]` for every `i < params.length` while guarding only
168
+ * `undefined`, so a caller that under-supplies one argument AND passes a
169
+ * trailing callback puts the CALLBACK itself into a parameter slot. The
170
+ * arity check at the top of the query method cannot catch that shape — it
171
+ * only fires when the LAST argument is not a function.
172
+ *
173
+ * Scope: `typeof` covers every value `JSON.stringify` renders as
174
+ * `undefined` EXCEPT an object whose own `toJSON()` returns undefined,
175
+ * which is left unguarded deliberately — detecting it would cost a full
176
+ * `JSON.stringify` per parameter on every query, and no realistic call site
177
+ * produces it.
178
+ *
179
+ * @param {Array|object} queryParams - Assembled parameter list: a positional array, or a named map.
180
+ * @param {string} entityName - Entity the query belongs to (message only).
181
+ * @param {string} name - Query method name (message only).
182
+ * @param {string} source - Path of the backing `.sql` file (message only).
183
+ * @param {Array} [params] - Declared placeholders, used for the arity hint.
184
+ * @returns {TypeError|null} A ready-to-surface error, or `null` when every parameter is serializable.
185
+ * @private
186
+ *
187
+ * @example
188
+ * var err = getUnserializableParamError(['a', undefined], 'invoice', 'getByRef', src, ['$1','$2']);
189
+ * if (err) { return cb(err); } // never reaches the SDK, so the process survives
190
+ */
191
+ var getUnserializableParamError = function(queryParams, entityName, name, source, params) {
192
+ if ( !queryParams || typeof(queryParams) != 'object' ) {
193
+ return null;
194
+ }
195
+
196
+ var isPositional = Array.isArray(queryParams)
197
+ , keys = isPositional ? null : Object.keys(queryParams)
198
+ , len = isPositional ? queryParams.length : keys.length
199
+ , declared = ( params && params.length ) ? params.length : 0
200
+ ;
201
+
202
+ for (var i = 0; i < len; ++i) {
203
+ var key = isPositional ? i : keys[i]
204
+ , type = typeof(queryParams[key])
205
+ ;
206
+
207
+ if ( type != 'undefined' && type != 'function' && type != 'symbol' ) {
208
+ continue;
209
+ }
210
+
211
+ var label = isPositional ? ('$' + (i + 1)) : ('$' + key);
212
+ var hint = ( type == 'function' )
213
+ ? 'A callback landed in a parameter slot: the query declares ' + declared
214
+ + ' parameter(s), so every one of them must be passed BEFORE the callback.'
215
+ : 'Pass `null` for an intentionally empty parameter — `null` serializes correctly.';
216
+
217
+ var _err = new TypeError('[N1QL][ ' + entityName + '#' + name + '() ] parameter ' + label
218
+ + ' is a `' + type + '`, which the Couchbase SDK cannot serialize: dispatching it would '
219
+ + 'abort the process instead of raising an error. ' + hint
220
+ + ' Please refer to [ ' + source + ' ]');
221
+ _err.code = 'GINA_COUCHBASE_UNSERIALIZABLE_PARAM';
222
+ return _err;
223
+ }
224
+
225
+ return null;
226
+ };
227
+
130
228
  /**
131
229
  * Runs EXPLAIN on a N1QL statement asynchronously and caches the
132
230
  * extracted indexes. Patches `queryEntry.indexes` in-place once
@@ -772,6 +870,22 @@ function Couchbase(conn, infos) {
772
870
  if ( query.indexOf('$scope') > -1 ) {
773
871
  query = query.replace(/\$scope/g, "'" + (infos.scope || process.env.NODE_SCOPE) + "'");
774
872
  }
873
+ // #B243 — refuse a parameter the SDK cannot serialize BEFORE dispatch.
874
+ // This is the single site where `queryOptions.parameters` is assigned,
875
+ // so both assembly branches above (and any future one) are covered by
876
+ // this one gate. It has to run here: once the value reaches the SDK the
877
+ // failure is an uncatchable `abort()`, so there is no downstream
878
+ // recovery point. Surfacing matches the missing-context precedent at
879
+ // the top of this method — callback when the caller passed one, throw
880
+ // otherwise — which turns a bundle-killing crash into an ordinary 500.
881
+ var _unserializableErr = getUnserializableParamError(queryParams, entityName, name, source, params);
882
+ if (_unserializableErr) {
883
+ if (_mainCallback) {
884
+ return _mainCallback(_unserializableErr);
885
+ }
886
+ throw _unserializableErr;
887
+ }
888
+
775
889
  queryOptions.parameters = queryParams;
776
890
 
777
891
  // JUNE 2021 patch
@@ -9,10 +9,21 @@ var console = lib.logger;
9
9
  var version = 3; // by default
10
10
  // old - GINA_FRAMEWORK_DIR + '/package.json'
11
11
  var dependenciesPath = getPath('project') + '/package.json';// jshint ignore:line
12
- var dependencies = JSON.parse(fs.readFileSync(dependenciesPath)).dependencies;// jshint ignore:line
12
+ // #B203 — `|| {}`: a project package.json without a `dependencies` key used to
13
+ // TypeError on the `.couchbase` read below.
14
+ var dependencies = JSON.parse(fs.readFileSync(dependenciesPath)).dependencies || {};// jshint ignore:line
13
15
  if ( dependencies.couchbase ) {
14
- version = JSON.parse(fs.readFileSync(dependenciesPath)).dependencies.couchbase;// jshint ignore:line
15
- version = version.replace(/\^/, '').split(/\./)[0];
16
+ // #B203 — the SDK major is the pin's FIRST integer: the former caret-only
17
+ // strip mangled range pins (`~4.5.0` became `~4`, `>=4.5` became `>=4`),
18
+ // which slipped past the #CN8 v2 floor (parseInt of the mangled token is
19
+ // NaN) and died at the existsSync gate below with a misdirecting
20
+ // "supported majors" error.
21
+ var pinnedMajor = String(dependencies.couchbase).match(/\d+/);
22
+ if ( !pinnedMajor ) {
23
+ throw new Error('[ CONNECTOR ][ couchbase ] could not derive the SDK major from the project package.json couchbase dependency pin: "'
24
+ + dependencies.couchbase + '". Use a numeric range or exact version (e.g. ^4.6.1) — supported couchbase SDK majors are 3 and 4.');
25
+ }
26
+ version = pinnedMajor[0];
16
27
  }
17
28
  // #CN8 — fail fast on SDK v2 (or older). The migration is a driver bump, not a config edit:
18
29
  // upgrade the `couchbase` dependency in your project package.json to ^3 or ^4.
@@ -8,10 +8,21 @@ var console = lib.logger;
8
8
  // Default to v3 when the project does not pin a couchbase version.
9
9
  var version = 3; // by default
10
10
  var dependenciesPath = getPath('project') + '/package.json';// jshint ignore:line
11
- var dependencies = JSON.parse(fs.readFileSync(dependenciesPath)).dependencies;// jshint ignore:line
11
+ // #B203 — `|| {}`: a project package.json without a `dependencies` key used to
12
+ // TypeError on the `.couchbase` read below.
13
+ var dependencies = JSON.parse(fs.readFileSync(dependenciesPath)).dependencies || {};// jshint ignore:line
12
14
  if ( dependencies.couchbase ) {
13
- version = JSON.parse(fs.readFileSync(dependenciesPath)).dependencies.couchbase;// jshint ignore:line
14
- version = version.replace(/\^/, '').split(/\./)[0];
15
+ // #B203 — the SDK major is the pin's FIRST integer: the former caret-only
16
+ // strip mangled range pins (`~4.5.0` became `~4`, `>=4.5` became `>=4`),
17
+ // which slipped past the #CN8 v2 floor (parseInt of the mangled token is
18
+ // NaN) and died at the existsSync gate below with a misdirecting
19
+ // "supported majors" error.
20
+ var pinnedMajor = String(dependencies.couchbase).match(/\d+/);
21
+ if ( !pinnedMajor ) {
22
+ throw new Error('[ CONNECTOR ][ couchbase ] session-store could not derive the SDK major from the project package.json couchbase dependency pin: "'
23
+ + dependencies.couchbase + '". Use a numeric range or exact version (e.g. ^4.6.1) — supported couchbase SDK majors are 3 and 4.');
24
+ }
25
+ version = pinnedMajor[0];
15
26
  }
16
27
  // #CN8 — fail fast on SDK v2 (or older). The migration is a driver bump, not a config edit:
17
28
  // upgrade the `couchbase` dependency in your project package.json to ^3 or ^4.
@@ -71,7 +71,7 @@ module.exports = function(session, bundle){
71
71
  * @constructor
72
72
  * @param {object} options
73
73
  * @param {object} options.db - Open Couchbase bucket (required).
74
- * @param {number} [options.ttl=null] - Expiry in seconds. Unset, the cookie's maxAge applies, then one day.
74
+ * @param {number} [options.ttl=null] - Expiry in seconds. Unset, the cookie's maxAge applies, then one day. Must be > 0 when set — non-positive refuses (#B207).
75
75
  * @param {string} [options.prefix='sess:'] - Document key prefix.
76
76
  * @param {number} [options.connectionTimeout=10000] - Connect-time timeout in ms.
77
77
  * @param {number} [options.operationTimeout=10000] - Per-operation timeout in ms.
@@ -99,6 +99,15 @@ module.exports = function(session, bundle){
99
99
  this.client.connectionTimeout = options.connectionTimeout || 10000;
100
100
  this.client.operationTimeout = options.operationTimeout || 10000;
101
101
 
102
+ // #B207 — parity with the redis/sqlite/mongodb/scylladb stores: a
103
+ // non-positive ttl is refused at construction. couchbase collapsed 0
104
+ // at the constructor and still upserted a ZERO expiry — a document
105
+ // that never expires — when the cookie's decaying maxAge resolved to
106
+ // <= 0 at set()/touch().
107
+ if (options.ttl != null && !(options.ttl > 0)) {
108
+ throw new Error('['+ bundle +'][SessionStore v3] `ttl` must be a positive number of seconds or unset — got '
109
+ + JSON.stringify(options.ttl) + ' (store options). `ttl: 0` is not supported (it previously behaved as unset).');
110
+ }
102
111
  this.ttl = options.ttl || null;
103
112
  }
104
113
 
@@ -190,6 +199,15 @@ module.exports = function(session, bundle){
190
199
  : oneDay)
191
200
  ;
192
201
 
202
+ // #B207 — a resolved ttl <= 0 (decaying cookie.maxAge at/past
203
+ // expiry) must never reach the SDK: a zero expiry stores the
204
+ // document WITHOUT expiration, and a negative one is SDK-version-
205
+ // dependent. No-op — the existing record keeps its original
206
+ // expiry (mirrors the #B166 guard the sibling stores carry).
207
+ if (ttl <= 0) {
208
+ return fn(null);
209
+ }
210
+
193
211
  if (ttl > 0) {
194
212
  sess.lastModified = new Date().toISOString();
195
213
  }
@@ -241,7 +259,9 @@ module.exports = function(session, bundle){
241
259
  * Also re-stamps `sess.lastModified` (ISO 8601, UTC) whenever `ttl > 0`.
242
260
  * The stamp is unconditional by design: the `upsert` extends the document's
243
261
  * expiry on every call, and the client-side session countdown derives its
244
- * origin from that stamp, so it must track every extension (#B165).
262
+ * origin from that stamp, so it must track every extension (#B165). A
263
+ * resolved ttl <= 0 is a no-op — never extend with a non-positive
264
+ * expiry (#B207).
245
265
  *
246
266
  * @param {String} sid
247
267
  * @param {Session} sess
@@ -259,6 +279,13 @@ module.exports = function(session, bundle){
259
279
  : oneDay)
260
280
  ;
261
281
 
282
+ // #B207 — same guard as set(): never extend with a non-positive
283
+ // expiry (zero = the document never expires; negative is SDK-version-
284
+ // dependent). The #B166 sibling-store guards are identical.
285
+ if (ttl <= 0) {
286
+ return fn(null);
287
+ }
288
+
262
289
  // #B165 — an idle-check used to gate this stamp. It compared an elapsed
263
290
  // value in MILLISECONDS against `ttl` in SECONDS, so it fired ~1000x too
264
291
  // eagerly (86.4s idle on the 86400s default). Correcting only the units
@@ -74,7 +74,7 @@ module.exports = function(session, bundle){
74
74
  * @constructor
75
75
  * @param {object} options
76
76
  * @param {object} options.db - Open Couchbase bucket (required).
77
- * @param {number} [options.ttl=null] - Expiry in seconds. Unset, the cookie's maxAge applies, then one day.
77
+ * @param {number} [options.ttl=null] - Expiry in seconds. Unset, the cookie's maxAge applies, then one day. Must be > 0 when set — non-positive refuses (#B207).
78
78
  * @param {string} [options.prefix='sess:'] - Document key prefix.
79
79
  * @param {number} [options.connectionTimeout=10000] - Connect-time timeout in ms.
80
80
  * @param {number} [options.operationTimeout=10000] - Per-operation timeout in ms.
@@ -102,6 +102,15 @@ module.exports = function(session, bundle){
102
102
  this.client.connectionTimeout = options.connectionTimeout || 10000;
103
103
  this.client.operationTimeout = options.operationTimeout || 10000;
104
104
 
105
+ // #B207 — parity with the redis/sqlite/mongodb/scylladb stores: a
106
+ // non-positive ttl is refused at construction. couchbase collapsed 0
107
+ // at the constructor and still upserted a ZERO expiry — a document
108
+ // that never expires — when the cookie's decaying maxAge resolved to
109
+ // <= 0 at set()/touch().
110
+ if (options.ttl != null && !(options.ttl > 0)) {
111
+ throw new Error('['+ bundle +'][SessionStore v4] `ttl` must be a positive number of seconds or unset — got '
112
+ + JSON.stringify(options.ttl) + ' (store options). `ttl: 0` is not supported (it previously behaved as unset).');
113
+ }
105
114
  this.ttl = options.ttl || null;
106
115
  }
107
116
 
@@ -242,6 +251,15 @@ module.exports = function(session, bundle){
242
251
  : oneDay)
243
252
  ;
244
253
 
254
+ // #B207 — a resolved ttl <= 0 (decaying cookie.maxAge at/past
255
+ // expiry) must never reach the SDK: a zero expiry stores the
256
+ // document WITHOUT expiration, and a negative one is SDK-version-
257
+ // dependent. No-op — the existing record keeps its original
258
+ // expiry (mirrors the #B166 guard the sibling stores carry).
259
+ if (ttl <= 0) {
260
+ return fn(null);
261
+ }
262
+
245
263
  if (ttl > 0) {
246
264
  // #B165 — was `.format('isoDateTime')`, a zone-less local-time
247
265
  // string ("yyyy-mm-dd'T'HH:MM:ss", helpers/dateFormat.js). The
@@ -316,7 +334,9 @@ module.exports = function(session, bundle){
316
334
  * Also re-stamps `sess.lastModified` (ISO 8601, UTC) whenever `ttl > 0`.
317
335
  * The stamp is unconditional by design: the `upsert` extends the document's
318
336
  * expiry on every call, and the client-side session countdown derives its
319
- * origin from that stamp, so it must track every extension (#B165).
337
+ * origin from that stamp, so it must track every extension (#B165). A
338
+ * resolved ttl <= 0 is a no-op — never extend with a non-positive
339
+ * expiry (#B207).
320
340
  *
321
341
  * @param {String} sid
322
342
  * @param {Session} sess
@@ -334,6 +354,13 @@ module.exports = function(session, bundle){
334
354
  : oneDay)
335
355
  ;
336
356
 
357
+ // #B207 — same guard as set(): never extend with a non-positive
358
+ // expiry (zero = the document never expires; negative is SDK-version-
359
+ // dependent). The #B166 sibling-store guards are identical.
360
+ if (ttl <= 0) {
361
+ return fn(null);
362
+ }
363
+
337
364
  // #B165 — an idle-check used to gate this stamp. It compared an elapsed
338
365
  // value in MILLISECONDS against `ttl` in SECONDS, so it fired ~1000x too
339
366
  // eagerly (86.4s idle on the 86400s default). Correcting only the units
@@ -46,8 +46,9 @@ var noop = function() {};
46
46
  * intent (return active sessions only) is the same.
47
47
  *
48
48
  * @param {object} session - The `express-session` module (must have `.Store` on it).
49
- * The caller sets `session.name` to the connectors.json key
50
- * before calling `new SessionStore(session)`.
49
+ * `session.name` is express-session's read-only function name —
50
+ * the literal `'session'` — so the bundle's connectors.json must
51
+ * declare its store entry under the key `"session"` (#B206).
51
52
  * @param {string} bundle - Bundle name — used to look up `getConfig()[bundle][env]`.
52
53
  * @returns {function} - MongodbStore constructor.
53
54
  */
@@ -138,6 +139,7 @@ module.exports = function(session, bundle) {
138
139
  * @param {string} [options.collection] - Sessions collection (default 'sessions').
139
140
  * @param {number} [options.ttl] - Default TTL seconds (default: connectors.json ttl;
140
141
  * unset → cookie maxAge drives expiry, else 86400).
142
+ * Must be > 0 when set — non-positive refuses (#B207).
141
143
  * @throws {Error} when `database` is missing.
142
144
  */
143
145
  function MongodbStore(options) {
@@ -145,6 +147,19 @@ module.exports = function(session, bundle) {
145
147
  Store.call(this, options);
146
148
 
147
149
  this.collection = (options.collection != null) ? options.collection : (connConf.collection || 'sessions');
150
+ // #B207 — a non-positive ttl is refused at construction: `ttl: 0` used
151
+ // to collapse to the maxAge fallback through double truthiness (options
152
+ // preserve + `this.ttl ||` at every use site), silently meaning "unset",
153
+ // while a RESOLVED ttl <= 0 reached backend-specific semantics. A ttl
154
+ // is a positive number of seconds, or unset.
155
+ if (options.ttl != null && !(options.ttl > 0)) {
156
+ throw new Error('[' + bundle + '][MongodbStore] `ttl` must be a positive number of seconds or unset — got '
157
+ + JSON.stringify(options.ttl) + ' (store options). `ttl: 0` is not supported (it previously behaved as unset).');
158
+ }
159
+ if (connConf.ttl != null && !(connConf.ttl > 0)) {
160
+ throw new Error('[' + bundle + '][MongodbStore] `ttl` must be a positive number of seconds or unset — got '
161
+ + JSON.stringify(connConf.ttl) + ' (connectors.json session entry). `ttl: 0` is not supported (it previously behaved as unset).');
162
+ }
148
163
  // #B163 — was `connConf.ttl || oneDay`: the implicit one-day default made the
149
164
  // cookie-maxAge fallback in set()/touch() unreachable; unset now stays null (couchbase parity).
150
165
  this.ttl = (options.ttl != null) ? options.ttl : (connConf.ttl || null);
@@ -269,6 +284,13 @@ module.exports = function(session, bundle) {
269
284
  var maxAge = sess.cookie && sess.cookie.maxAge;
270
285
  var ttl = this.ttl || ('number' === typeof maxAge ? maxAge / 1000 | 0 : oneDay);
271
286
 
287
+ // #B207 — a resolved ttl <= 0 means the session is already at/past its
288
+ // expiry: writing an immediately-expired document is pointless. No-op
289
+ // for parity with the sibling stores (mirrors the #B166 touch() guard).
290
+ if (ttl <= 0) {
291
+ return fn(null);
292
+ }
293
+
272
294
  if (ttl > 0) {
273
295
  sess.lastModified = new Date().toISOString();
274
296
  }
@@ -37,8 +37,10 @@ var noop = function() {};
37
37
  * Supports standalone Redis, Redis Cluster, and TLS (ElastiCache, Cloud Memorystore, Upstash).
38
38
  *
39
39
  * @param {object} session - The `express-session` module (must have `.Store` on it).
40
- * The caller sets `session.name` to the connectors.json key
41
- * before calling `new SessionStore(session)`.
40
+ * `session.name` is express-session's read-only function
41
+ * name — the literal `'session'` — so the bundle's
42
+ * connectors.json must declare its store entry under the
43
+ * key `"session"` (#B206).
42
44
  * @param {string} bundle - Bundle name — used to look up `getConfig()[bundle][env]`.
43
45
  * @returns {function} - RedisStore constructor.
44
46
  */
@@ -54,7 +56,7 @@ module.exports = function(session, bundle) {
54
56
  // `getConfig()` and `getContext()` are framework globals injected by gna.js.
55
57
  var env = getContext().env;
56
58
  var conf = getConfig()[bundle][env];
57
- var connName = session.name; // the key in connectors.json (e.g. "myRedis")
59
+ var connName = session.name; // express-session's read-only function name — always the literal 'session' (#B206)
58
60
  var connConf = (conf && conf.content && conf.content.connectors && conf.content.connectors[connName]) || {};
59
61
 
60
62
  /**
@@ -73,6 +75,8 @@ module.exports = function(session, bundle) {
73
75
  * @param {string} [options.prefix] - Session key prefix (default: connectors.json → 'sess:').
74
76
  * @param {number} [options.ttl] - Session TTL in seconds (default: connectors.json ttl;
75
77
  * unset → cookie maxAge drives expiry, else 86400).
78
+ * Must be > 0 when set — non-positive refuses (#B207).
79
+ * @throws {Error} When `ttl` is configured non-positive on either channel (#B207).
76
80
  */
77
81
  function RedisStore(options) {
78
82
  var self = this;
@@ -80,6 +84,20 @@ module.exports = function(session, bundle) {
80
84
  Store.call(this, options);
81
85
 
82
86
  this.prefix = (options.prefix != null) ? options.prefix : (connConf.prefix || 'sess:');
87
+
88
+ // #B207 — a non-positive ttl is refused at construction: `ttl: 0` used
89
+ // to collapse to the maxAge fallback through double truthiness (options
90
+ // preserve + `this.ttl ||` at every use site), silently meaning "unset",
91
+ // while a RESOLVED ttl <= 0 reached backend-specific semantics. A ttl
92
+ // is a positive number of seconds, or unset.
93
+ if (options.ttl != null && !(options.ttl > 0)) {
94
+ throw new Error('[' + bundle + '][RedisStore] `ttl` must be a positive number of seconds or unset — got '
95
+ + JSON.stringify(options.ttl) + ' (store options). `ttl: 0` is not supported (it previously behaved as unset).');
96
+ }
97
+ if (connConf.ttl != null && !(connConf.ttl > 0)) {
98
+ throw new Error('[' + bundle + '][RedisStore] `ttl` must be a positive number of seconds or unset — got '
99
+ + JSON.stringify(connConf.ttl) + ' (connectors.json session entry). `ttl: 0` is not supported (it previously behaved as unset).');
100
+ }
83
101
  // #B163 — was `connConf.ttl || oneDay`: the implicit one-day default made the
84
102
  // cookie-maxAge fallback in set()/touch() unreachable; unset now stays null (couchbase parity).
85
103
  this.ttl = (options.ttl != null) ? options.ttl : (connConf.ttl || null);
@@ -166,7 +184,8 @@ module.exports = function(session, bundle) {
166
184
 
167
185
  /**
168
186
  * Commit the given `sess` object associated with `sid`.
169
- * Uses SETEX when TTL > 0, SET otherwise.
187
+ * Always SETEX — a resolved ttl <= 0 is a no-op, never an expiry-less
188
+ * SET (#B207).
170
189
  *
171
190
  * @param {string} sid - Session ID.
172
191
  * @param {object} sess - Session data.
@@ -178,6 +197,15 @@ module.exports = function(session, bundle) {
178
197
  var maxAge = sess.cookie && sess.cookie.maxAge;
179
198
  var ttl = this.ttl || ('number' === typeof maxAge ? maxAge / 1000 | 0 : oneDay);
180
199
 
200
+ // #B207 — a resolved ttl <= 0 means the session is already at/past its
201
+ // expiry (cookie.maxAge is a decaying remainder): the former plain-SET
202
+ // fallback wrote the key with NO expiry, making it immortal. No-op
203
+ // instead — the existing record dies on its original schedule. Mirrors
204
+ // the #B166 touch() guard.
205
+ if (ttl <= 0) {
206
+ return fn(null);
207
+ }
208
+
181
209
  if (ttl > 0) {
182
210
  sess.lastModified = new Date().toISOString();
183
211
  }
@@ -191,11 +219,7 @@ module.exports = function(session, bundle) {
191
219
 
192
220
  console.debug('[RedisStore] SETEX "' + key + '" ttl:' + ttl);
193
221
 
194
- if (ttl > 0) {
195
- this.client.setex(key, ~~ttl, data, fn);
196
- } else {
197
- this.client.set(key, data, fn);
198
- }
222
+ this.client.setex(key, ~~ttl, data, fn);
199
223
  };
200
224
 
201
225
  /**
@@ -48,8 +48,9 @@ var noop = function() {};
48
48
  * waiting for TTL to expire.
49
49
  *
50
50
  * @param {object} session - The `express-session` module (must have `.Store` on it).
51
- * The caller sets `session.name` to the connectors.json key
52
- * before calling `new SessionStore(session)`.
51
+ * `session.name` is express-session's read-only function name —
52
+ * the literal `'session'` — so the bundle's connectors.json must
53
+ * declare its store entry under the key `"session"` (#B206).
53
54
  * @param {string} bundle - Bundle name — used to look up `getConfig()[bundle][env]`.
54
55
  * @returns {function} - ScylladbStore constructor.
55
56
  */
@@ -134,12 +135,26 @@ module.exports = function(session, bundle) {
134
135
  * @param {string} [options.table] - Sessions table name (default: connectors.json → 'sessions').
135
136
  * @param {number} [options.ttl] - Default TTL seconds (default: connectors.json ttl;
136
137
  * unset → cookie maxAge drives expiry, else 86400).
138
+ * Must be > 0 when set — non-positive refuses (#B207).
137
139
  */
138
140
  function ScylladbStore(options) {
139
141
  options = options || {};
140
142
  Store.call(this, options);
141
143
 
142
144
  this.table = (options.table != null) ? options.table : (connConf.table || 'sessions');
145
+ // #B207 — a non-positive ttl is refused at construction: `ttl: 0` used
146
+ // to collapse to the maxAge fallback through double truthiness (options
147
+ // preserve + `this.ttl ||` at every use site), silently meaning "unset",
148
+ // while a RESOLVED ttl <= 0 reached backend-specific semantics. A ttl
149
+ // is a positive number of seconds, or unset.
150
+ if (options.ttl != null && !(options.ttl > 0)) {
151
+ throw new Error('[' + bundle + '][ScylladbStore] `ttl` must be a positive number of seconds or unset — got '
152
+ + JSON.stringify(options.ttl) + ' (store options). `ttl: 0` is not supported (it previously behaved as unset).');
153
+ }
154
+ if (connConf.ttl != null && !(connConf.ttl > 0)) {
155
+ throw new Error('[' + bundle + '][ScylladbStore] `ttl` must be a positive number of seconds or unset — got '
156
+ + JSON.stringify(connConf.ttl) + ' (connectors.json session entry). `ttl: 0` is not supported (it previously behaved as unset).');
157
+ }
143
158
  // #B163 — was `connConf.ttl || oneDay`: the implicit one-day default made the
144
159
  // cookie-maxAge fallback in set()/touch() unreachable; unset now stays null (couchbase parity).
145
160
  this.ttl = (options.ttl != null) ? options.ttl : (connConf.ttl || null);
@@ -219,6 +234,14 @@ module.exports = function(session, bundle) {
219
234
  var maxAge = sess.cookie && sess.cookie.maxAge;
220
235
  var ttl = this.ttl || ('number' === typeof maxAge ? maxAge / 1000 | 0 : oneDay);
221
236
 
237
+ // #B207 — a resolved ttl <= 0 must never reach CQL: `USING TTL 0`
238
+ // stores the row WITHOUT expiry (immortal), and a negative TTL is a
239
+ // server error. No-op — the existing record dies on its original
240
+ // schedule (mirrors the #B166 touch() guard).
241
+ if (ttl <= 0) {
242
+ return fn(null);
243
+ }
244
+
222
245
  if (ttl > 0) {
223
246
  sess.lastModified = new Date().toISOString();
224
247
  }
@@ -42,8 +42,10 @@ var noop = function() {};
42
42
  * For multi-pod horizontal scaling use the Redis connector instead.
43
43
  *
44
44
  * @param {object} session - The `express-session` module (must have `.Store` on it).
45
- * The caller sets `session.name` to the connectors.json key
46
- * before calling `new SessionStore(session)`.
45
+ * `session.name` is express-session's read-only function
46
+ * name — the literal `'session'` — so the bundle's
47
+ * connectors.json must declare its store entry under the
48
+ * key `"session"` (#B206).
47
49
  * @param {string} bundle - Bundle name — used to look up `getConfig()[bundle][env]`.
48
50
  * @returns {function} - SqliteStore constructor.
49
51
  */
@@ -73,6 +75,7 @@ module.exports = function(session, bundle) {
73
75
  * @param {string} [options.prefix] - Session key prefix (default: `'sess:'`).
74
76
  * @param {number} [options.ttl] - Session TTL in seconds (default: connectors.json ttl;
75
77
  * unset → cookie maxAge drives expiry, else 86400).
78
+ * Must be > 0 when set — non-positive refuses (#B207).
76
79
  * @param {number} [options.cleanupInterval] - Expired-session purge interval in seconds.
77
80
  * Set to 0 to disable. (default: 900).
78
81
  */
@@ -82,6 +85,19 @@ module.exports = function(session, bundle) {
82
85
  Store.call(this, options);
83
86
 
84
87
  this.prefix = (options.prefix != null) ? options.prefix : (connConf.prefix || 'sess:');
88
+ // #B207 — a non-positive ttl is refused at construction: `ttl: 0` used
89
+ // to collapse to the maxAge fallback through double truthiness (options
90
+ // preserve + `this.ttl ||` at every use site), silently meaning "unset",
91
+ // while a RESOLVED ttl <= 0 reached backend-specific semantics. A ttl
92
+ // is a positive number of seconds, or unset.
93
+ if (options.ttl != null && !(options.ttl > 0)) {
94
+ throw new Error('[' + bundle + '][SqliteStore] `ttl` must be a positive number of seconds or unset — got '
95
+ + JSON.stringify(options.ttl) + ' (store options). `ttl: 0` is not supported (it previously behaved as unset).');
96
+ }
97
+ if (connConf.ttl != null && !(connConf.ttl > 0)) {
98
+ throw new Error('[' + bundle + '][SqliteStore] `ttl` must be a positive number of seconds or unset — got '
99
+ + JSON.stringify(connConf.ttl) + ' (connectors.json session entry). `ttl: 0` is not supported (it previously behaved as unset).');
100
+ }
85
101
  // #B163 — was `connConf.ttl || oneDay`: the implicit one-day default made the
86
102
  // cookie-maxAge fallback in set()/touch() unreachable; unset now stays null (couchbase parity).
87
103
  this.ttl = (options.ttl != null) ? options.ttl : (connConf.ttl || null);
@@ -201,6 +217,14 @@ module.exports = function(session, bundle) {
201
217
  var key = this.prefix + sid;
202
218
  var maxAge = sess.cookie && sess.cookie.maxAge;
203
219
  var ttl = this.ttl || ('number' === typeof maxAge ? maxAge / 1000 | 0 : oneDay);
220
+
221
+ // #B207 — a resolved ttl <= 0 means the session is already at/past its
222
+ // expiry: writing an immediately-dead row is pointless. No-op for
223
+ // parity with the sibling stores (mirrors the #B166 touch() guard).
224
+ if (ttl <= 0) {
225
+ return fn(null);
226
+ }
227
+
204
228
  var expires = Math.floor(Date.now() / 1000) + ~~ttl;
205
229
 
206
230
  if (ttl > 0) {