gina 0.4.5-alpha.1 → 0.4.5

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 (461) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +5 -3
  3. package/ROADMAP.md +1 -1
  4. package/framework/v0.4.5/VERSION +1 -0
  5. package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -2
  6. package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/index.js +83 -11
  7. package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/index.js +76 -0
  8. package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/lib/connector.js +6 -0
  9. package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/server.js +59 -0
  10. package/framework/v0.4.5/lib/logger/README.md +44 -0
  11. package/framework/v0.4.5/lib/logger/src/containers/default/index.js +97 -0
  12. package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/main.js +44 -1
  13. package/framework/{v0.4.5-alpha.1 → v0.4.5}/package.json +1 -1
  14. package/gna.js +4 -4
  15. package/llms.txt +8 -0
  16. package/package.json +2 -2
  17. package/framework/v0.4.5-alpha.1/VERSION +0 -1
  18. package/framework/v0.4.5-alpha.1/lib/logger/README.md +0 -7
  19. package/framework/v0.4.5-alpha.1/lib/logger/src/containers/default/index.js +0 -75
  20. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/AUTHORS +0 -0
  21. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/LICENSE +0 -0
  22. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/html/nolayout.html +0 -0
  23. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/html/static.html +0 -0
  24. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/android-chrome-192x192.png +0 -0
  25. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/android-chrome-512x512.png +0 -0
  26. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/apple-touch-icon.png +0 -0
  27. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/favicon-16x16.png +0 -0
  28. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/favicon-32x32.png +0 -0
  29. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/img/favicon.ico +0 -0
  30. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/README.md +0 -0
  31. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  32. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  33. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  34. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  35. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  36. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  37. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  38. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  39. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  40. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  41. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  42. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  43. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  44. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
  45. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  46. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  47. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  48. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  49. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  50. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  51. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/config.js +0 -0
  52. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/ai/index.js +0 -0
  53. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/ai/lib/connector.js +0 -0
  54. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/connector.js +0 -0
  55. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  56. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  57. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/n1ql.js +0 -0
  58. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/session-store.js +0 -0
  59. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  60. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  61. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  62. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mongodb/lib/session-store.js +0 -0
  63. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mysql/index.js +0 -0
  64. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/mysql/lib/connector.js +0 -0
  65. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/postgresql/index.js +0 -0
  66. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/postgresql/lib/connector.js +0 -0
  67. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/redis/index.js +0 -0
  68. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/redis/lib/session-store.js +0 -0
  69. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/scylladb/index.js +0 -0
  70. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/scylladb/lib/connector.js +0 -0
  71. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/scylladb/lib/session-store.js +0 -0
  72. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sql-parser.js +0 -0
  73. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sqlite/index.js +0 -0
  74. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sqlite/lib/connector.js +0 -0
  75. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/connectors/sqlite/lib/session-store.js +0 -0
  76. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/content.encoding +0 -0
  77. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.framework.js +0 -0
  78. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.js +0 -0
  79. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-json.js +0 -0
  80. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-nunjucks.js +0 -0
  81. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-stream.js +0 -0
  82. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-swig.js +0 -0
  83. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/controller.render-v1.js +0 -0
  84. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/index.js +0 -0
  85. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/controller/inspector-window-emit.js +0 -0
  86. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/LICENSE +0 -0
  87. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/README.md +0 -0
  88. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  89. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  90. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  91. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  92. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/busboy-1.6.0/package.json +0 -0
  93. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  94. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  95. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/deps/streamsearch-1.1.0/package.json +0 -0
  96. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/index.js +0 -0
  97. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/lib/class.js +0 -0
  98. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/lib/factory.js +0 -0
  99. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/dev/lib/tools.js +0 -0
  100. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/gna.js +0 -0
  101. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/README.md +0 -0
  102. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/currency.json +0 -0
  103. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/language/en.json +0 -0
  104. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/language/fr.json +0 -0
  105. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/region/en.json +0 -0
  106. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/dist/region/fr.json +0 -0
  107. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/locales/index.js +0 -0
  108. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/mime.types +0 -0
  109. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/entity.js +0 -0
  110. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/index.js +0 -0
  111. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/template/entityFactory.js +0 -0
  112. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/model/template/index.js +0 -0
  113. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/README.md +0 -0
  114. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/index.js +0 -0
  115. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/csrf/README.md +0 -0
  116. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/csrf/package.json +0 -0
  117. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/csrf/src/main.js +0 -0
  118. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/README.md +0 -0
  119. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coep/README.md +0 -0
  120. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coep/package.json +0 -0
  121. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  122. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coop/README.md +0 -0
  123. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coop/package.json +0 -0
  124. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  125. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/corp/README.md +0 -0
  126. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/corp/package.json +0 -0
  127. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  128. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/csp/README.md +0 -0
  129. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/csp/package.json +0 -0
  130. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  131. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  132. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  133. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  134. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  135. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  136. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  137. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  138. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  139. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  140. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/package.json +0 -0
  141. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  142. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  143. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  144. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/src/main.js +0 -0
  145. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  146. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  147. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  148. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  149. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  150. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  151. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  152. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  153. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  154. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  155. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  156. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  157. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  158. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  159. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  160. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  161. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  162. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  163. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/session/README.md +0 -0
  164. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/session/package.json +0 -0
  165. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/session/src/main.js +0 -0
  166. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/README.md +0 -0
  167. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/build.json +0 -0
  168. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/package.json +0 -0
  169. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/storage/src/main.js +0 -0
  170. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/README.md +0 -0
  171. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/build.json +0 -0
  172. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/package.json +0 -0
  173. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/src/form-validator.js +0 -0
  174. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/plugins/lib/validator/src/main.js +0 -0
  175. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/router.js +0 -0
  176. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/server.express.js +0 -0
  177. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/server.isaac.js +0 -0
  178. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/status.codes +0 -0
  179. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/_gitignore +0 -0
  180. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/app.json +0 -0
  181. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  182. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/routing.json +0 -0
  183. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/settings.json +0 -0
  184. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  185. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/templates.json +0 -0
  186. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  187. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  188. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  189. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  190. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/index.js +0 -0
  191. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle/locales/en.json +0 -0
  192. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  193. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  194. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  195. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  196. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  197. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  198. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  199. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/readme.md +0 -0
  200. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_public/sw.js +0 -0
  201. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  202. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  203. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  204. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  205. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  206. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/command/gina.bat.tpl +0 -0
  207. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/command/gina.tpl +0 -0
  208. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/env.json +0 -0
  209. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/manifest.json +0 -0
  210. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/package.json +0 -0
  211. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/settings.json +0 -0
  212. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/statics.json +0 -0
  213. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/conf/templates.json +0 -0
  214. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/client/json/401.json +0 -0
  215. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/client/json/403.json +0 -0
  216. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/client/json/404.json +0 -0
  217. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/server/html/50x.html +0 -0
  218. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/server/json/500.json +0 -0
  219. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/error/server/json/503.json +0 -0
  220. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/core/template/extensions/logger/config.json +0 -0
  221. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/console.js +0 -0
  222. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/context.js +0 -0
  223. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/LICENSE +0 -0
  224. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/README.md +0 -0
  225. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/package.json +0 -0
  226. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/data/src/main.js +0 -0
  227. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/dateFormat.js +0 -0
  228. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/index.js +0 -0
  229. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/LICENSE +0 -0
  230. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/README.md +0 -0
  231. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/package.json +0 -0
  232. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/json/src/main.js +0 -0
  233. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/path.js +0 -0
  234. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/README.md +0 -0
  235. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/package.json +0 -0
  236. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/src/api-error.js +0 -0
  237. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/plugins/src/main.js +0 -0
  238. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/prototypes.js +0 -0
  239. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/task.js +0 -0
  240. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/helpers/text.js +0 -0
  241. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/README.md +0 -0
  242. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/build.json +0 -0
  243. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/package.json +0 -0
  244. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/src/dep/jszip.min.js +0 -0
  245. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/archiver/src/main.js +0 -0
  246. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/async/package.json +0 -0
  247. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/async/src/main.js +0 -0
  248. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/README.md +0 -0
  249. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/build.json +0 -0
  250. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/package.json +0 -0
  251. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cache/src/main.js +0 -0
  252. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/aliases.json +0 -0
  253. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/add.js +0 -0
  254. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/arguments.json +0 -0
  255. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/build.js +0 -0
  256. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/copy.js +0 -0
  257. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/cp.js +0 -0
  258. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/help.js +0 -0
  259. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/help.txt +0 -0
  260. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  261. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/list.js +0 -0
  262. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/mcp-start.js +0 -0
  263. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/mcp.js +0 -0
  264. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/oas.js +0 -0
  265. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/openapi.js +0 -0
  266. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/remove.js +0 -0
  267. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/rename.js +0 -0
  268. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/restart.js +0 -0
  269. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/rm.js +0 -0
  270. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/start.js +0 -0
  271. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/status.js +0 -0
  272. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/bundle/stop.js +0 -0
  273. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/cache/stats.js +0 -0
  274. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/add.js +0 -0
  275. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/arguments.json +0 -0
  276. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/help.js +0 -0
  277. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/help.txt +0 -0
  278. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/list.js +0 -0
  279. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/migrate.js +0 -0
  280. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/remove.js +0 -0
  281. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/connector/rm.js +0 -0
  282. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/add.js +0 -0
  283. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/get.js +0 -0
  284. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/help.js +0 -0
  285. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/help.txt +0 -0
  286. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/link-dev.js +0 -0
  287. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/list.js +0 -0
  288. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/remove.js +0 -0
  289. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/rm.js +0 -0
  290. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/set.js +0 -0
  291. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/unset.js +0 -0
  292. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/env/use.js +0 -0
  293. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/arguments.json +0 -0
  294. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/build.js +0 -0
  295. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/dot.js +0 -0
  296. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/get.js +0 -0
  297. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/help.js +0 -0
  298. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/help.txt +0 -0
  299. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/init.js +0 -0
  300. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/link-node-modules.js +0 -0
  301. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/link.js +0 -0
  302. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/msg.json +0 -0
  303. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/open.js +0 -0
  304. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/restart.js +0 -0
  305. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/set.js +0 -0
  306. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/start.js +0 -0
  307. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/status.js +0 -0
  308. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/stop.js +0 -0
  309. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/tail.js +0 -0
  310. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/update.js +0 -0
  311. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/framework/version.js +0 -0
  312. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/gina-dev.1.md +0 -0
  313. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/gina-framework.1.md +0 -0
  314. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/gina.1.md +0 -0
  315. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/helper.js +0 -0
  316. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/add.js +0 -0
  317. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/arguments.json +0 -0
  318. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/export.js +0 -0
  319. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/help.js +0 -0
  320. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/help.txt +0 -0
  321. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/import.js +0 -0
  322. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/i18n/scan.js +0 -0
  323. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/index.js +0 -0
  324. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/inspector/help.js +0 -0
  325. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/inspector/help.txt +0 -0
  326. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/inspector/open.js +0 -0
  327. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/arguments.json +0 -0
  328. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/help.js +0 -0
  329. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/help.txt +0 -0
  330. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/kill.js +0 -0
  331. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/minion/list.js +0 -0
  332. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/msg.json +0 -0
  333. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/help.js +0 -0
  334. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/help.txt +0 -0
  335. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/inc/scan.js +0 -0
  336. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/list.js +0 -0
  337. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/reset.js +0 -0
  338. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/port/set.js +0 -0
  339. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/add.js +0 -0
  340. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/arguments.json +0 -0
  341. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/build.js +0 -0
  342. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/help.js +0 -0
  343. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/help.txt +0 -0
  344. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/import.js +0 -0
  345. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/list.js +0 -0
  346. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/move.js +0 -0
  347. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/remove.js +0 -0
  348. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/rename.js +0 -0
  349. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/restart.js +0 -0
  350. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/rm.js +0 -0
  351. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/start.js +0 -0
  352. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/status.js +0 -0
  353. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/project/stop.js +0 -0
  354. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/arguments.json +0 -0
  355. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/help.js +0 -0
  356. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/help.txt +0 -0
  357. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/list.js +0 -0
  358. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/remove.js +0 -0
  359. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/protocol/set.js +0 -0
  360. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/add.js +0 -0
  361. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/help.js +0 -0
  362. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/help.txt +0 -0
  363. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/link-local.js +0 -0
  364. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/link-production.js +0 -0
  365. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/list.js +0 -0
  366. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/remove.js +0 -0
  367. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/rm.js +0 -0
  368. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/scope/use.js +0 -0
  369. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/arguments.json +0 -0
  370. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/check.js +0 -0
  371. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/help.js +0 -0
  372. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/help.txt +0 -0
  373. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/secrets/scan.js +0 -0
  374. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/help.js +0 -0
  375. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/help.txt +0 -0
  376. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/list.js +0 -0
  377. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/service/start.js +0 -0
  378. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd/view/add.js +0 -0
  379. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd-status-format/package.json +0 -0
  380. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cmd-status-format/src/main.js +0 -0
  381. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/README.md +0 -0
  382. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/build.json +0 -0
  383. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/package.json +0 -0
  384. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/collection/src/main.js +0 -0
  385. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/config.js +0 -0
  386. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/connector-registry/package.json +0 -0
  387. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/connector-registry/src/main.js +0 -0
  388. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cron/README.md +0 -0
  389. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cron/package.json +0 -0
  390. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/cron/src/main.js +0 -0
  391. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/LICENSE +0 -0
  392. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/README.md +0 -0
  393. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/package.json +0 -0
  394. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/domain/src/main.js +0 -0
  395. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/generator/index.js +0 -0
  396. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/i18n/package.json +0 -0
  397. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/i18n/src/main.js +0 -0
  398. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/index.js +0 -0
  399. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/LICENSE +0 -0
  400. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/README.md +0 -0
  401. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/package.json +0 -0
  402. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inherits/src/main.js +0 -0
  403. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inspector-redact/package.json +0 -0
  404. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/inspector-redact/src/main.js +0 -0
  405. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/instrument/package.json +0 -0
  406. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/instrument/src/main.js +0 -0
  407. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/job/package.json +0 -0
  408. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/job/src/main.js +0 -0
  409. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/package.json +0 -0
  410. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/file/index.js +0 -0
  411. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  412. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  413. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/mq/index.js +0 -0
  414. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/mq/listener.js +0 -0
  415. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/containers/mq/speaker.js +0 -0
  416. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/logger/src/helper.js +0 -0
  417. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/math/index.js +0 -0
  418. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-dispatch/package.json +0 -0
  419. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-dispatch/src/main.js +0 -0
  420. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-http/package.json +0 -0
  421. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-http/src/main.js +0 -0
  422. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-server/package.json +0 -0
  423. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/mcp-server/src/main.js +0 -0
  424. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/merge/README.md +0 -0
  425. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/merge/package.json +0 -0
  426. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/merge/src/main.js +0 -0
  427. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/metrics/package.json +0 -0
  428. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/metrics/src/main.js +0 -0
  429. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/model.js +0 -0
  430. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-filters/README.md +0 -0
  431. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-filters/package.json +0 -0
  432. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-filters/src/main.js +0 -0
  433. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-resolver/package.json +0 -0
  434. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/nunjucks-resolver/src/main.js +0 -0
  435. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/proc.js +0 -0
  436. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/README.md +0 -0
  437. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/build.json +0 -0
  438. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/package.json +0 -0
  439. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/src/main.js +0 -0
  440. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing/src/radix.js +0 -0
  441. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing-introspect/package.json +0 -0
  442. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/routing-introspect/src/main.js +0 -0
  443. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/secrets/package.json +0 -0
  444. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/secrets/src/backends/env.js +0 -0
  445. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/secrets/src/main.js +0 -0
  446. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/session-store.js +0 -0
  447. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/shell.js +0 -0
  448. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/state.js +0 -0
  449. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-filters/README.md +0 -0
  450. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-filters/package.json +0 -0
  451. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-filters/src/main.js +0 -0
  452. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-resolver/package.json +0 -0
  453. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/swig-resolver/src/main.js +0 -0
  454. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/url/README.md +0 -0
  455. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/url/index.js +0 -0
  456. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/url/routing.json +0 -0
  457. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/uuid/package.json +0 -0
  458. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/uuid/src/main.js +0 -0
  459. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/validator.js +0 -0
  460. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/watcher/package.json +0 -0
  461. /package/framework/{v0.4.5-alpha.1 → v0.4.5}/lib/watcher/src/main.js +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
6
6
  and is generated by [Changie](https://github.com/miniscruff/changie).
7
7
 
8
8
 
9
+ ## 0.4.5 - 2026-06-06
10
+
11
+ _Additive release — opt-in structured (JSON) logging with per-request `requestId` / `durationMs` correlation, plus public SDK-handle accessors (`getCluster()` on Couchbase, `getClient()` on MongoDB) for driver-level features such as multi-document transactions. No breaking changes, no settings reset._
12
+
13
+ ### Added
14
+ * Opt-in structured (JSON) log output. Set `GINA_LOG_FORMAT=json` to emit one machine-parseable JSON object per log line (`{ts, level, bundle, message}`, with `group`/`msg` kept as back-compat aliases) for log collectors such as Loki, Datadog, Fluentd or CloudWatch. The default stays the coloured, human-readable format, so interactive `docker logs` output is unchanged. The existing `GINA_LOG_STDOUT` container flag continues to enable JSON output.
15
+ * Added a public `getCluster()` accessor on Couchbase entities that returns the underlying SDK Cluster handle, so applications can use SDK-level features the entity layer does not wrap — notably multi-document transactions via `cluster.transactions().run(...)` — without reaching into private connection internals. Transaction support depends on the Couchbase driver your project installs (SDK 3.2+ / 4.x).
16
+ * Added a public `getClient()` accessor on MongoDB entities that returns the underlying driver `MongoClient`, so applications can reach driver-level features the entity layer does not wrap — notably multi-document transactions via `client.startSession()` / `session.withTransaction(...)` — without reaching into private connection internals. Multi-document transactions additionally require a replica-set or sharded deployment and depend on the `mongodb` driver your project installs.
17
+ * Opt-in per-request `requestId` and `durationMs` fields in structured (JSON) logs. When `GINA_LOG_FORMAT=json` is active, every log line emitted during a request is tagged with a request id (an inbound `X-Request-Id` is honoured when well-formed, otherwise one is generated) and the elapsed milliseconds since the request began, so lines from a single request can be correlated in a collector such as Loki, Datadog, Fluentd or CloudWatch. Default text logging is unchanged and pays no overhead.
18
+
9
19
  ## 0.4.4 - 2026-06-05
10
20
 
11
21
  _Additive release — `templates.json` gains comma-separated section keys (share one stylesheet/script block across several routes at once) and an optional `_common.config` block for page-level defaults. No breaking changes, no settings reset._
package/README.md CHANGED
@@ -39,10 +39,12 @@ gina bundle:start api @myproject
39
39
  open https://localhost:3100
40
40
  ```
41
41
 
42
- ## What's in 0.4.4
42
+ ## What's in 0.4.5
43
43
 
44
- - **`templates.json` multi-section keys.** A section key may now be comma-separated — e.g. `"products, productDetail"` to share a stylesheet or `<script>` block across several routes at once. The block is replicated under each named section and deep-merged into any section you also declare on its own, so a section's own keys win on collision. Single-section keys behave exactly as before.
45
- - **`templates.json` `_common.config` block.** An optional `_common.config` block holds page-level defaults (such as `routeNameAsFilenameEnabled` or `javascriptsDeferEnabled`). It is flattened back into `_common` at load time, so existing bundles are unaffected and any direct `_common` key still overrides the config block.
44
+ - **Opt-in structured (JSON) logging.** Set `GINA_LOG_FORMAT=json` to emit one machine-parseable JSON object per log line (`{ts, level, bundle, message}`) for collectors such as Loki, Datadog, Fluentd or CloudWatch. The default stays the coloured, human-readable format, so interactive `docker logs` output is unchanged unless you opt in.
45
+ - **Per-request `requestId` / `durationMs` in JSON logs.** When JSON logging is on, every log line emitted during a request carries a request id (an inbound `X-Request-Id` is honoured when well-formed, otherwise one is generated) and the elapsed milliseconds since the request began, so a single request's lines can be correlated in your collector. Default text logging is unchanged and pays no overhead.
46
+ - **Public SDK Cluster accessor on Couchbase entities.** `getCluster()` returns the underlying SDK `Cluster` handle, so you can use SDK-level features the entity layer does not wrap — notably multi-document transactions via `cluster.transactions().run(...)` — without reaching into private connection internals.
47
+ - **Public MongoClient accessor on MongoDB entities.** `getClient()` returns the underlying driver `MongoClient`, so you can reach driver-level features the entity layer does not wrap — notably multi-document transactions via `client.startSession()` / `session.withTransaction(...)` (which additionally require a replica-set or sharded deployment).
46
48
 
47
49
  See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
48
50
 
package/ROADMAP.md CHANGED
@@ -119,7 +119,7 @@ Stub commands confirmed in source — handler files exist but are empty or comme
119
119
  | --- | --- | --- | --- |
120
120
  | 📋 | **ESM compatibility layer** — Dual CJS/ESM entry points via `"exports"` in `package.json`. Framework internals stay CJS; public API gets ESM re-exports. | `0.5.0` | Q1 2027 |
121
121
  | 🚧 | **Pluggable template engine** — **Partially shipped in `0.3.7`**: opt-in `render.engine = "nunjucks"` dispatch per bundle. The project installs `nunjucks` itself (no framework dep); Gina loads it via `lib/nunjucks-resolver` and routes through `controller.render-nunjucks.js`. Swig remains the default, runs unchanged. Inspector dev payload, HTTP/2 `stream.respond()` direct path, and error-page template routing all shipped in `0.3.7-alpha.2`. **Closing the parity gap on the `0.3.7` ASAP track** (see Nunjucks Parity below): filter registry port, `setResources` / `<gina>` layout placeholders, static HTML cache parity, Early Hints 103 auto-send. **Remaining `0.5.0` scope**: within-Inspector sub-items (`statusbar.html` include + flow/queries pipelines); per-template-extension dispatch so a single bundle can mix engines (`.swig` / `.njk`); optional auto-detect on `.njk` presence. Breaking syntax differences (`{% parent %}` → `{{ super() }}`, filter renames, `autoescape` default, `date` format strings, no `{% spaceless %}`) are nunjucks's own — Gina doesn't paper over them. | `0.5.0` | Q1 2027 |
122
- | 📋 | **Structured logging** — JSON log output (`{ level, message, bundle, requestId, durationMs }`). Additive — existing consumers are unaffected. Enables log aggregation (Loki, Datadog, CloudWatch). | `0.5.0` | Q1 2027 |
122
+ | 🚧 | **Structured logging** — **Opt-in JSON output shipped**: set `GINA_LOG_FORMAT=json` for one machine-parseable object per log line (`{ ts, level, bundle, message }`); the coloured, human-readable format stays the default, so `docker logs` is unchanged. Additive — existing consumers are unaffected. Enables log aggregation (Loki, Datadog, CloudWatch). Per-request fields (`requestId`, `durationMs`) pending request-context research. | `0.5.0` | Q1 2027 |
123
123
  | 📋 | **Research `AsyncLocalStorage` for request context** — Evaluate `node:async_hooks` `AsyncLocalStorage` as a replacement for the `local` closure pattern, giving true async isolation across `setTimeout`, Promises, and `async/await` chains without any closure threading. Output: decision doc + proof-of-concept branch. | `0.5.0` | Q1 2027 |
124
124
 
125
125
  ### Nunjucks Parity (`0.3.7` ASAP track)
@@ -0,0 +1 @@
1
+ 0.4.5
@@ -3640,5 +3640,3 @@ details[open] > summary.bm-summary::before {
3640
3640
  text-align: left;
3641
3641
  }
3642
3642
  }
3643
-
3644
- /*# sourceMappingURL=inspector.css.map */
@@ -93,6 +93,40 @@ function Couchbase(conn, infos) {
93
93
  */
94
94
  var _explainCache = new Map();
95
95
 
96
+ /**
97
+ * Resolve the underlying Couchbase SDK Cluster handle from a connection
98
+ * object, tolerating both shapes the connector produces:
99
+ * - entity query path: the cluster sits directly at `conn._cluster`
100
+ * - bulk-insert / scope-collection path: `conn` is scope-shaped and the
101
+ * cluster is nested at `conn._scope._bucket._cluster`
102
+ *
103
+ * Single source of truth for cluster resolution — `explainForIndexes`,
104
+ * `bulkInsert` and the public `getCluster()` accessor all consume it, so the
105
+ * dual-shape lookup lives in exactly one place.
106
+ *
107
+ * @param {object} conn - A Couchbase connection object (bucket- or scope-shaped).
108
+ * @returns {object} The SDK Cluster (guaranteed to expose a `query()` method).
109
+ * @throws {Error} `GINA_COUCHBASE_CLUSTER_UNRESOLVED` when neither shape yields a usable cluster.
110
+ * @private
111
+ */
112
+ var resolveCluster = function(conn) {
113
+ var cluster = (conn && conn._cluster)
114
+ ? conn._cluster
115
+ : (conn && conn._scope && conn._scope._bucket && conn._scope._bucket._cluster)
116
+ ? conn._scope._bucket._cluster
117
+ : null;
118
+
119
+ if (!cluster || typeof(cluster.query) !== 'function') {
120
+ var _err = new Error('[ CONNECTOR ][ couchbase ] Unable to resolve the SDK Cluster from the connection — '
121
+ + 'neither `conn._cluster` nor `conn._scope._bucket._cluster` exposes a query() method. '
122
+ + 'The connection shape may have changed across an SDK or framework upgrade.');
123
+ _err.code = 'GINA_COUCHBASE_CLUSTER_UNRESOLVED';
124
+ throw _err;
125
+ }
126
+
127
+ return cluster;
128
+ };
129
+
96
130
  /**
97
131
  * Runs EXPLAIN on a N1QL statement asynchronously and caches the
98
132
  * extracted indexes. Patches `queryEntry.indexes` in-place once
@@ -106,16 +140,13 @@ function Couchbase(conn, infos) {
106
140
  * @private
107
141
  */
108
142
  var explainForIndexes = function(conn, statement, queryEntry, queryOptions) {
109
- // Resolve cluster from whichever conn shape we received:
110
- // - entity query path: conn._cluster exists directly
111
- // - bulk insert path: conn is a scope object, cluster is at conn._scope._bucket._cluster
112
- var cluster = (conn._cluster)
113
- ? conn._cluster
114
- : (conn._scope && conn._scope._bucket && conn._scope._bucket._cluster)
115
- ? conn._scope._bucket._cluster
116
- : null;
117
-
118
- if (!cluster || typeof(cluster.query) !== 'function') {
143
+ // #QI is fire-and-forget instrumentation resolve the cluster via the
144
+ // shared helper but keep this path non-fatal (warn + skip) so a
145
+ // resolution failure never breaks the actual query.
146
+ var cluster;
147
+ try {
148
+ cluster = resolveCluster(conn);
149
+ } catch (_clusterErr) {
119
150
  console.warn('[explainForIndexes] Cannot resolve cluster from conn — skipping EXPLAIN for: ' + statement.substring(0, 80));
120
151
  return;
121
152
  }
@@ -210,6 +241,10 @@ function Couchbase(conn, infos) {
210
241
 
211
242
  // extra CRUD methods
212
243
  Entity.prototype.bulkInsert = bulkInsert;
244
+ // public SDK Cluster accessor — supported entry point for
245
+ // SDK-level features (e.g. transactions) the entity layer
246
+ // does not wrap; see resolveCluster()/getCluster().
247
+ Entity.prototype.getCluster = getCluster;
213
248
 
214
249
 
215
250
  entities[className] = Entity
@@ -441,6 +476,9 @@ function Couchbase(conn, infos) {
441
476
  entities[entityName].prototype._collection = entityName;
442
477
  entities[entityName].prototype._scope = infos.scope || process.env.NODE_SCOPE;
443
478
  entities[entityName].prototype._filename = _( __dirname + '/lib/n1ql.js', true );
479
+ // public SDK Cluster accessor — parity with model entities so a
480
+ // consumer never hits an asymmetric `undefined` (see getCluster()).
481
+ entities[entityName].prototype.getCluster = getCluster;
444
482
  }
445
483
 
446
484
 
@@ -1208,7 +1246,9 @@ function Couchbase(conn, infos) {
1208
1246
  var self = this;
1209
1247
 
1210
1248
  var err = false;
1211
- conn._scope._bucket._cluster.query(query, queryOptions)
1249
+ // cluster resolved via the shared dual-shape helper (was a bare
1250
+ // conn._scope._bucket._cluster deref).
1251
+ resolveCluster(conn).query(query, queryOptions)
1212
1252
  .catch( function onError(err) {
1213
1253
  try {
1214
1254
  // #QI — finalize bulkInsert query entry on error
@@ -1321,6 +1361,38 @@ function Couchbase(conn, infos) {
1321
1361
  }
1322
1362
  }
1323
1363
 
1364
+ /**
1365
+ * getCluster
1366
+ *
1367
+ * Returns the underlying Couchbase SDK Cluster handle backing this entity's
1368
+ * connection, resolved across the connection shapes the connector produces
1369
+ * (see `resolveCluster`). This is the supported, non-underscore way to reach
1370
+ * SDK-level features the entity layer does not wrap — most notably
1371
+ * multi-document ACID transactions via `cluster.transactions().run(...)`.
1372
+ *
1373
+ * Note: gina does not bundle or pin the `couchbase` driver — it is resolved
1374
+ * from your project's `node_modules`. Transaction support (`.transactions()`)
1375
+ * therefore depends on the Couchbase SDK version your project installs
1376
+ * (3.2+ / 4.x). gina guarantees only that this returns the resolved Cluster
1377
+ * handle; it makes no promise about which SDK-level capabilities that handle
1378
+ * exposes.
1379
+ *
1380
+ * @returns {object} The Couchbase SDK Cluster.
1381
+ * @throws {Error} `GINA_COUCHBASE_CLUSTER_UNRESOLVED` when the cluster cannot be resolved.
1382
+ *
1383
+ * @example
1384
+ * // Inside a controller action holding an entity instance:
1385
+ * var cluster = myEntity.getCluster();
1386
+ * await cluster.transactions().run(async function (ctx) {
1387
+ * var doc = await ctx.get(collection, 'doc-id');
1388
+ * await ctx.replace(doc, Object.assign({}, doc.content, { balance: 0 }));
1389
+ * });
1390
+ */
1391
+ var getCluster = function() {
1392
+ return resolveCluster(this.getConnection());
1393
+ };
1394
+
1395
+
1324
1396
  return init(conn, infos)
1325
1397
  }
1326
1398
 
@@ -88,6 +88,36 @@ function Mongodb(conn, infos) {
88
88
  ObjectId = null;
89
89
  }
90
90
 
91
+ /**
92
+ * Resolve the underlying MongoDB driver `MongoClient` from a connection
93
+ * object. The entity layer is handed the `Db` instance (what
94
+ * `getConnection()` returns); the connector decorates that Db with a
95
+ * `_client` back-reference to the owning `MongoClient` one level up (see
96
+ * `MongodbConnector.onReady`), because session and multi-document
97
+ * transaction APIs live on the `MongoClient`, not the `Db`.
98
+ *
99
+ * Single source of truth for client resolution, so the lookup — and its
100
+ * coded failure mode — live in exactly one place.
101
+ *
102
+ * @param {object} conn - A MongoDB connection object (the `Db` from getConnection()).
103
+ * @returns {object} The MongoDB driver MongoClient (guaranteed to expose a `startSession()` method).
104
+ * @throws {Error} `GINA_MONGODB_CLIENT_UNRESOLVED` when the client cannot be resolved.
105
+ * @private
106
+ */
107
+ var resolveClient = function(conn) {
108
+ var client = (conn && conn._client) ? conn._client : null;
109
+
110
+ if (!client || typeof(client.startSession) !== 'function') {
111
+ var _err = new Error('[ CONNECTOR ][ mongodb ] Unable to resolve the MongoClient from the connection — '
112
+ + '`conn._client` does not expose a startSession() method. '
113
+ + 'The connection shape may have changed across a driver or framework upgrade.');
114
+ _err.code = 'GINA_MONGODB_CLIENT_UNRESOLVED';
115
+ throw _err;
116
+ }
117
+
118
+ return client;
119
+ };
120
+
91
121
  var init = function(conn, infos) {
92
122
  var EntitySuperClass = null;
93
123
  var entitiesPath = getPath('bundle') + '/models/' + infos.database + '/entities';
@@ -131,6 +161,10 @@ function Mongodb(conn, infos) {
131
161
  Entity.prototype._collection = entityName;
132
162
  Entity.prototype._scope = infos.scope || process.env.NODE_SCOPE;
133
163
  Entity.prototype._filename = _(entitiesPath + '/' + files[f], true);
164
+ // public MongoClient accessor — supported entry point for driver-level
165
+ // features (sessions, multi-document transactions, change streams) the
166
+ // entity layer does not wrap; see resolveClient()/getClient().
167
+ Entity.prototype.getClient = getClient;
134
168
 
135
169
  entities[className] = Entity;
136
170
  }
@@ -458,6 +492,48 @@ function Mongodb(conn, infos) {
458
492
  };
459
493
 
460
494
 
495
+ /**
496
+ * getClient
497
+ *
498
+ * Returns the underlying MongoDB driver `MongoClient` backing this entity's
499
+ * connection. The entity layer is handed the `Db` (what `getConnection()`
500
+ * returns); the `MongoClient` lives one level up and is where session and
501
+ * multi-document transaction APIs are exposed — so this is the supported,
502
+ * non-underscore way to reach driver-level features the entity layer does
503
+ * not wrap, chiefly ACID transactions via
504
+ * `client.startSession()` → `session.withTransaction(...)`, plus change
505
+ * streams and `bulkWrite`.
506
+ *
507
+ * Note: gina does not bundle or pin the `mongodb` driver — it is resolved
508
+ * from your project's `node_modules`. Session/transaction support therefore
509
+ * depends on the driver your project installs, and multi-document
510
+ * transactions additionally require a replica-set or sharded deployment
511
+ * (not a standalone mongod). gina guarantees only that this returns the
512
+ * resolved client handle; it makes no promise about which driver-level
513
+ * capabilities that handle exposes.
514
+ *
515
+ * @returns {object} The MongoDB driver MongoClient.
516
+ * @throws {Error} `GINA_MONGODB_CLIENT_UNRESOLVED` when the client cannot be resolved.
517
+ *
518
+ * @example
519
+ * // Inside a controller action holding an entity instance:
520
+ * var client = myEntity.getClient();
521
+ * var session = client.startSession();
522
+ * try {
523
+ * await session.withTransaction(async function () {
524
+ * var db = client.db();
525
+ * await db.collection('accounts').updateOne({ _id: from }, { $inc: { balance: -100 } }, { session: session });
526
+ * await db.collection('accounts').updateOne({ _id: to }, { $inc: { balance: 100 } }, { session: session });
527
+ * });
528
+ * } finally {
529
+ * await session.endSession();
530
+ * }
531
+ */
532
+ var getClient = function() {
533
+ return resolveClient(this.getConnection());
534
+ };
535
+
536
+
461
537
  return init(conn, infos);
462
538
  }
463
539
 
@@ -136,6 +136,11 @@ function MongodbConnector(conf) {
136
136
  * Register a one-time ready callback. Async — calls `client.connect()`
137
137
  * which establishes the TCP connection and verifies authentication.
138
138
  *
139
+ * The yielded `Db` is decorated with `_name` (db name) and `_client` (a
140
+ * back-reference to the owning `MongoClient`), so entities — which are
141
+ * handed the `Db` — can reach client-level APIs (sessions, transactions)
142
+ * through the public `getClient()` accessor.
143
+ *
139
144
  * @param {function} fn - `fn(err, conn)` where `conn` is the mongodb Db instance.
140
145
  */
141
146
  this.onReady = function(fn) {
@@ -144,6 +149,7 @@ function MongodbConnector(conf) {
144
149
  _client.connect().then(function() {
145
150
  _db = _client.db(_dbName);
146
151
  _db._name = _dbName;
152
+ _db._client = _client; // back-reference to the MongoClient (one level up from the Db) so entities can reach sessions/transactions via getClient()
147
153
  console.debug('[MongodbConnector] connected to: ' + _dbName);
148
154
  fn(null, _db);
149
155
  }).catch(function(err) {
@@ -44,6 +44,31 @@ const crypto = require('crypto');
44
44
  var https = require('https');
45
45
  // ssl-checker dependency removed in 0.3.1 — replaced by inline verifyCertificate().
46
46
 
47
+ // #M12b — per-request log context (requestId / durationMs in JSON logs).
48
+ // Active ONLY when JSON logging is on: the text formatter ('[%d] [%s][%a] %m')
49
+ // renders no id field, so running the AsyncLocalStorage in text mode would be pure
50
+ // overhead with no reader. Mirrors lib/logger's opt.format precedence
51
+ // (GINA_LOG_FORMAT > GINA_LOG_STDOUT), resolved once — the format is fixed for the
52
+ // process lifetime.
53
+ var _reqCtxLogging = (function() {
54
+ if ( /^json$/i.test(process.env.GINA_LOG_FORMAT) ) { return true; }
55
+ if ( /^text$/i.test(process.env.GINA_LOG_FORMAT) ) { return false; }
56
+ return /^true$/i.test(process.env.GINA_LOG_STDOUT);
57
+ })();
58
+
59
+ // #M12b — resolve the request id: honour a sanitised inbound `X-Request-Id` (so logs
60
+ // correlate across an upstream proxy / sibling services), else generate a UUID. The
61
+ // inbound value is client-supplied and untrusted — cap length and restrict the
62
+ // charset to neutralise log-forging / injection; on any violation fall back to a
63
+ // fresh UUID.
64
+ var _resolveRequestId = function(request) {
65
+ var _inbound = request && request.headers && request.headers['x-request-id'];
66
+ if ( _inbound && /^[\w.\-]{1,128}$/.test(_inbound) ) {
67
+ return _inbound;
68
+ }
69
+ return crypto.randomUUID();
70
+ };
71
+
47
72
 
48
73
  // Lightweight debug logger — gated on LOG_LEVEL so zero cost in production.
49
74
  // Format mirrors lib/logger template: [date] [debug ][gina:server] message
@@ -2640,6 +2665,16 @@ function Server(options) {
2640
2665
  // catch all (request urls)
2641
2666
  self.instance.all('*', function onInstance(request, response, next) {
2642
2667
 
2668
+ // #M12b — stamp request-entry time + id so the logger can attribute every
2669
+ // line emitted during this request to it (requestId / durationMs in JSON
2670
+ // logs). Active only in JSON mode; the per-request .run() happens at handle()
2671
+ // (the request.on('end') boundary between here and handle() loses async
2672
+ // context, so the store must be established where the dispatch runs).
2673
+ if ( _reqCtxLogging ) {
2674
+ request._ginaReqStartMs = Date.now();
2675
+ request._ginaReqId = _resolveRequestId(request);
2676
+ }
2677
+
2643
2678
  // #FI — dev-mode request timeline for Inspector Flow tab
2644
2679
  // Only initialized when the Inspector has been opened (process.gina._inspectorActive)
2645
2680
  // #INS10 — or during a prod instrumentation window (process.gina._inspectorWindowUntil).
@@ -4221,7 +4256,31 @@ function Server(options) {
4221
4256
  return request
4222
4257
  }
4223
4258
 
4259
+ // #M12b — wrap the async dispatch in the per-request log context so requestId /
4260
+ // durationMs propagate through the WHOLE await chain (router, controller, render,
4261
+ // connectors). Established here — not at onInstance — because the request.on('end')
4262
+ // boundary between them loses the async context, whereas handle()'s awaits preserve
4263
+ // it. The store carries {requestId, startMs} stamped at onInstance entry. Gated on
4264
+ // JSON logging; in text mode handle === the dispatch with zero ALS overhead.
4224
4265
  var handle = async function(req, res, next, bundle, pathname, config) {
4266
+ if ( _reqCtxLogging ) {
4267
+ if ( !process.gina ) { process.gina = {}; }
4268
+ if ( !process.gina._reqALS ) {
4269
+ var { AsyncLocalStorage } = require('async_hooks');
4270
+ process.gina._reqALS = new AsyncLocalStorage();
4271
+ }
4272
+ var _reqStore = {
4273
+ requestId : req._ginaReqId || _resolveRequestId(req),
4274
+ startMs : (typeof req._ginaReqStartMs === 'number') ? req._ginaReqStartMs : Date.now()
4275
+ };
4276
+ return process.gina._reqALS.run(_reqStore, function() {
4277
+ return _handleDispatch(req, res, next, bundle, pathname, config);
4278
+ });
4279
+ }
4280
+ return _handleDispatch(req, res, next, bundle, pathname, config);
4281
+ };
4282
+
4283
+ var _handleDispatch = async function(req, res, next, bundle, pathname, config) {
4225
4284
 
4226
4285
  // #FI — request setup time (header parsing, CORS, Inspector endpoint checks)
4227
4286
  if (req._devTimeline) {
@@ -0,0 +1,44 @@
1
+ # Logger
2
+
3
+ Gina's multi-stream, multi-group structured logger (RFC 5424 severity levels). Bundle
4
+ code binds it to `console` (`var console = require('gina').lib.logger`) and calls
5
+ `console.info(...)`, `console.err(...)`, etc.; the logger filters by level and fans
6
+ each line out to its transport "containers" — `default` → `process.stdout`,
7
+ `mq` → port 8125 (`gina tail`), and an opt-in `file` container.
8
+
9
+ ## Output modes
10
+
11
+ The `default` container has two render modes, resolved once at logger init. Select the
12
+ mode with an environment variable on the bundle process (precedence
13
+ `GINA_LOG_FORMAT` → `GINA_LOG_STDOUT` → `text`):
14
+
15
+ - **text** (default) — a coloured, human-readable line (`[%d] [%s][%a] %m`), ideal for
16
+ a terminal or `docker logs`.
17
+ - **json** — one machine-parseable JSON object per line, for log aggregation:
18
+
19
+ ```json
20
+ {"ts":"…","level":"info","bundle":"frontend@myproject","message":"…","group":"frontend@myproject","msg":"…"}
21
+ ```
22
+
23
+ `bundle`/`message` are canonical; `group`/`msg` are back-compat aliases.
24
+
25
+ Two env vars select JSON:
26
+
27
+ - `GINA_LOG_FORMAT=json` — emit JSON instead of the coloured text, in any environment.
28
+ - `GINA_LOG_STDOUT=true` — container preset: implies JSON **and** skips the MQ
29
+ transport (no MQ listener runs inside a container).
30
+
31
+ Both the level methods (`console.info`, `console.debug`, …) and plain `console.log`
32
+ honour the mode, so the stream stays uniformly parseable.
33
+
34
+ Full reference: the [Logging guide](https://gina.io/docs/guides/logging) and the
35
+ [Logger API reference](https://gina.io/docs/api/logger).
36
+
37
+ ## Tests
38
+
39
+ From the repository root:
40
+
41
+ ```bash
42
+ node --test test/lib/logger-render.test.js
43
+ node --test test/integration/logger-log-integrity.test.js
44
+ ```
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+ // Imports
3
+
4
+ function DefaultContainer(opt, loggers) {
5
+ var self = {
6
+ // flow or container name/id
7
+ name: 'default'
8
+ };
9
+ var loggerHelper = require(__dirname +'/../../helper.js')(opt, loggers);
10
+ var format = loggerHelper.format;
11
+
12
+ function init() {
13
+
14
+ // process.on('gina#bundle-started', function onBundleStarted(mqPort, hostV4, group) {
15
+ // onPayload(true);
16
+ // });
17
+ // process.on('gina#container-writting', function onBundleStarted(mqPort, hostV4, group) {
18
+ // console.debug('[MQDefault] resuming ...');
19
+ // if (group) {
20
+ // console.info('[MQTail] Group `'+group+'` connected `'+ hostV4 +'` on port `'+ mqPort +'` :)');
21
+ // }
22
+ // onPayload(true);
23
+ // });
24
+
25
+ onPayload();
26
+ // ----------------------------Debug---------------------------------------
27
+ var level = 'debug';
28
+ // Init debugging - Logs not in hierarchy will just be ignored
29
+ if (opt.hierarchies[opt.hierarchy].indexOf( opt.levels[level].code) > -1) {
30
+ process.emit('logger#'+self.name, JSON.stringify({
31
+ group : opt.name,
32
+ level : level,
33
+ // Raw content !
34
+ content : '`'+ self.name +'` logger container loaded !'
35
+ }));
36
+ }
37
+ level = null;
38
+ // ------------------------------------------------------------------------
39
+ }
40
+
41
+ function onPayload() {
42
+
43
+ // #M12 — structured (JSON) logging. The render format is resolved once at logger
44
+ // init (main.js -> opt.format) and cloned into this container's `opt`. We read
45
+ // opt.format here; if it is absent (a logger init path that predates #M12) we fall
46
+ // back to the #K8s3 GINA_LOG_STDOUT env flag, so behaviour is unchanged either way.
47
+ // JSON mode -> one machine-parseable object per line (kubectl logs / Fluentd /
48
+ // Datadog / Loki).
49
+ // text mode -> the coloured, human-readable format() output (the default).
50
+ var isJsonMode = (opt && opt.format)
51
+ ? (opt.format === 'json')
52
+ : /^true$/i.test(process.env.GINA_LOG_STDOUT);
53
+
54
+ process.on('logger#'+self.name, function onPayload(payload) {
55
+
56
+ try {
57
+ var payloadObj = JSON.parse(payload);
58
+
59
+ if (isJsonMode) {
60
+ // #M12 — `bundle` and `message` are the canonical keys; `group` and `msg`
61
+ // are retained as back-compat aliases for pre-#M12 JSON consumers (the
62
+ // shipped #K8s3 shape was {ts, level, group, msg}). Additive, non-breaking.
63
+ var _jsonLine = {
64
+ ts : new Date().toISOString(),
65
+ level : payloadObj.level,
66
+ bundle : payloadObj.group,
67
+ message: payloadObj.content,
68
+ group : payloadObj.group,
69
+ msg : payloadObj.content
70
+ };
71
+ // #M12b — stamp the per-request id + elapsed-ms when a request context
72
+ // is active (process.gina._reqALS, created by server.js in JSON mode).
73
+ // Absent for CLI / boot / off-request logs — the fields are then omitted.
74
+ if (process.gina && process.gina._reqALS) {
75
+ var _reqStore = process.gina._reqALS.getStore();
76
+ if (_reqStore) {
77
+ _jsonLine.requestId = _reqStore.requestId;
78
+ _jsonLine.durationMs = Date.now() - _reqStore.startMs;
79
+ }
80
+ }
81
+ process.stdout.write(JSON.stringify(_jsonLine) + '\n');
82
+ } else {
83
+ process.stdout.write( format(payloadObj.group, payloadObj.level, payloadObj.content, payloadObj.skipFormating) );
84
+ }
85
+ } catch (e) {
86
+ process.stdout.write( format('', '', payload, true) );
87
+ }
88
+
89
+ payloadObj = null;
90
+ });
91
+ }
92
+
93
+
94
+
95
+ init();
96
+ }
97
+ module.exports = DefaultContainer;
@@ -364,6 +364,24 @@ function Logger() {
364
364
  if (mqIdx > -1) opt.flows.splice(mqIdx, 1);
365
365
  }
366
366
 
367
+ // #M12 — structured (JSON) logging opt-in. The active render format is resolved
368
+ // ONCE here, before loadContainers() clones `opt` into each container, so a
369
+ // container reads `opt.format` instead of re-testing the environment. Precedence:
370
+ // 1. GINA_LOG_FORMAT = json|text (explicit; works outside container mode)
371
+ // 2. GINA_LOG_STDOUT truthy => json (back-compat alias for the #K8s3 flag)
372
+ // 3. default 'text' — the coloured, human-readable output (unchanged).
373
+ // Keeping the default at 'text' means interactive consumers (docker / OrbStack
374
+ // `docker logs`, a dev terminal) see exactly the same output as before.
375
+ if ( /^json$/i.test(process.env.GINA_LOG_FORMAT) ) {
376
+ opt.format = 'json';
377
+ } else if ( /^text$/i.test(process.env.GINA_LOG_FORMAT) ) {
378
+ opt.format = 'text';
379
+ } else if ( /^true$/i.test(process.env.GINA_LOG_STDOUT) ) {
380
+ opt.format = 'json';
381
+ } else {
382
+ opt.format = 'text';
383
+ }
384
+
367
385
  // if ( new _(optionsPath).existsSync() ) {
368
386
  // if (userOptions.flows.indexOf('mq') < 0) {
369
387
  // userOptions.flows.splice(0, 0, 'mq')
@@ -811,7 +829,32 @@ function Logger() {
811
829
  // }
812
830
  // }
813
831
 
814
- process.stdout.write(content + '\n');
832
+ // #M12 — honour the structured (JSON) render mode for the raw console.log
833
+ // path, which writes straight to stdout and bypasses the container dispatch.
834
+ // Without this, JSON mode would emit a mix of JSON lines (levelled output) and
835
+ // plain lines (console.log), breaking a log collector. Text mode is unchanged.
836
+ if ( opt.format === 'json' ) {
837
+ var _jsonLine = {
838
+ ts : new Date().toISOString(),
839
+ level : 'info',
840
+ bundle : opt.name,
841
+ message: content,
842
+ group : opt.name,
843
+ msg : content
844
+ };
845
+ // #M12b — stamp the per-request id + elapsed-ms when a request context is
846
+ // active (process.gina._reqALS). Absent for CLI / boot / off-request logs.
847
+ if (process.gina && process.gina._reqALS) {
848
+ var _reqStore = process.gina._reqALS.getStore();
849
+ if (_reqStore) {
850
+ _jsonLine.requestId = _reqStore.requestId;
851
+ _jsonLine.durationMs = Date.now() - _reqStore.startMs;
852
+ }
853
+ }
854
+ process.stdout.write(JSON.stringify(_jsonLine) + '\n');
855
+ } else {
856
+ process.stdout.write(content + '\n');
857
+ }
815
858
  }
816
859
 
817
860
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gina-framework",
3
- "version": "0.4.5-alpha.1",
3
+ "version": "0.4.5-alpha.2",
4
4
  "dependencies": {
5
5
  "@rhinostone/swig": "^2.6.0",
6
6
  "intl-messageformat": "^11.2.4",
package/gna.js CHANGED
@@ -15,14 +15,14 @@
15
15
  'use strict';
16
16
 
17
17
  // Framework core — the main gna module (lifecycle hooks, lib, etc.)
18
- var _gna = require('./framework/v0.4.5-alpha.1/core/gna');
18
+ var _gna = require('./framework/v0.4.5/core/gna');
19
19
 
20
20
  // SuperController and EntitySuper — loaded from their source modules
21
- var SuperController = require('./framework/v0.4.5-alpha.1/core/controller');
22
- var EntitySuper = require('./framework/v0.4.5-alpha.1/core/model/entity');
21
+ var SuperController = require('./framework/v0.4.5/core/controller');
22
+ var EntitySuper = require('./framework/v0.4.5/core/model/entity');
23
23
 
24
24
  // uuid — from the lib registry
25
- var uuid = require('./framework/v0.4.5-alpha.1/lib/uuid');
25
+ var uuid = require('./framework/v0.4.5/lib/uuid');
26
26
 
27
27
  module.exports = {
28
28