gina 0.5.6 → 0.5.7

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 (499) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +9 -6
  3. package/ROADMAP.md +1 -0
  4. package/framework/v0.5.7/VERSION +1 -0
  5. package/framework/v0.5.7/core/connectors/mongodb/lib/job-store.js +334 -0
  6. package/framework/v0.5.7/core/connectors/redis/index.js +36 -0
  7. package/framework/v0.5.7/core/connectors/redis/lib/connector.js +66 -0
  8. package/framework/v0.5.7/core/connectors/redis/lib/job-store.js +454 -0
  9. package/framework/v0.5.7/core/connectors/sqlite/lib/job-store.js +263 -0
  10. package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-json.js +41 -31
  11. package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-stream.js +10 -5
  12. package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-swig.js +37 -31
  13. package/framework/{v0.5.6 → v0.5.7}/core/gna.js +22 -2
  14. package/framework/{v0.5.6 → v0.5.7}/core/server.js +68 -0
  15. package/framework/{v0.5.6 → v0.5.7}/lib/index.js +4 -0
  16. package/framework/{v0.5.6 → v0.5.7}/lib/job/src/main.js +147 -29
  17. package/framework/v0.5.7/lib/job-store.js +84 -0
  18. package/framework/{v0.5.6 → v0.5.7}/package.json +1 -1
  19. package/gna.js +4 -4
  20. package/llms.txt +7 -4
  21. package/package.json +4 -4
  22. package/script/check_no_local_leak.js +22 -2
  23. package/script/smoke_in_container.js +8 -2
  24. package/script/smoke_test_tarball.js +8 -1
  25. package/framework/v0.5.6/VERSION +0 -1
  26. package/framework/v0.5.6/core/connectors/redis/index.js +0 -30
  27. /package/framework/{v0.5.6 → v0.5.7}/AUTHORS +0 -0
  28. /package/framework/{v0.5.6 → v0.5.7}/LICENSE +0 -0
  29. /package/framework/{v0.5.6 → v0.5.7}/core/asset/html/nolayout.html +0 -0
  30. /package/framework/{v0.5.6 → v0.5.7}/core/asset/html/static.html +0 -0
  31. /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/android-chrome-192x192.png +0 -0
  32. /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/android-chrome-512x512.png +0 -0
  33. /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/apple-touch-icon.png +0 -0
  34. /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/favicon-16x16.png +0 -0
  35. /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/favicon-32x32.png +0 -0
  36. /package/framework/{v0.5.6 → v0.5.7}/core/asset/img/favicon.ico +0 -0
  37. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/README.md +0 -0
  38. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  39. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  40. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  41. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  42. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  43. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  44. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  45. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  46. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  47. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  48. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  49. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  50. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  51. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  52. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
  53. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  54. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  55. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  56. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  57. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  58. /package/framework/{v0.5.6 → v0.5.7}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  59. /package/framework/{v0.5.6 → v0.5.7}/core/config.js +0 -0
  60. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/ai/index.js +0 -0
  61. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/ai/lib/connector.js +0 -0
  62. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/index.js +0 -0
  63. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/connector.js +0 -0
  64. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  65. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  66. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/n1ql.js +0 -0
  67. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/session-store.js +0 -0
  68. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  69. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  70. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/index.js +0 -0
  71. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/lib/connector.js +0 -0
  72. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  73. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mongodb/lib/session-store.js +0 -0
  74. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mysql/index.js +0 -0
  75. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/mysql/lib/connector.js +0 -0
  76. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/postgresql/index.js +0 -0
  77. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/postgresql/lib/connector.js +0 -0
  78. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/redis/lib/session-store.js +0 -0
  79. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/scylladb/index.js +0 -0
  80. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/scylladb/lib/connector.js +0 -0
  81. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/scylladb/lib/session-store.js +0 -0
  82. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sql-parser.js +0 -0
  83. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sqlite/index.js +0 -0
  84. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sqlite/lib/connector.js +0 -0
  85. /package/framework/{v0.5.6 → v0.5.7}/core/connectors/sqlite/lib/session-store.js +0 -0
  86. /package/framework/{v0.5.6 → v0.5.7}/core/content.encoding +0 -0
  87. /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.framework.js +0 -0
  88. /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.js +0 -0
  89. /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-nunjucks-async.js +0 -0
  90. /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-nunjucks.js +0 -0
  91. /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-swig-async.js +0 -0
  92. /package/framework/{v0.5.6 → v0.5.7}/core/controller/controller.render-v1.js +0 -0
  93. /package/framework/{v0.5.6 → v0.5.7}/core/controller/index.js +0 -0
  94. /package/framework/{v0.5.6 → v0.5.7}/core/controller/inspector-window-emit.js +0 -0
  95. /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/LICENSE +0 -0
  96. /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/README.md +0 -0
  97. /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  98. /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  99. /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  100. /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  101. /package/framework/{v0.5.6 → v0.5.7}/core/deps/busboy-1.6.0/package.json +0 -0
  102. /package/framework/{v0.5.6 → v0.5.7}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  103. /package/framework/{v0.5.6 → v0.5.7}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  104. /package/framework/{v0.5.6 → v0.5.7}/core/deps/streamsearch-1.1.0/package.json +0 -0
  105. /package/framework/{v0.5.6 → v0.5.7}/core/dev/index.js +0 -0
  106. /package/framework/{v0.5.6 → v0.5.7}/core/dev/lib/class.js +0 -0
  107. /package/framework/{v0.5.6 → v0.5.7}/core/dev/lib/factory.js +0 -0
  108. /package/framework/{v0.5.6 → v0.5.7}/core/dev/lib/tools.js +0 -0
  109. /package/framework/{v0.5.6 → v0.5.7}/core/locales/README.md +0 -0
  110. /package/framework/{v0.5.6 → v0.5.7}/core/locales/currency.json +0 -0
  111. /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/language/en.json +0 -0
  112. /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/language/fr.json +0 -0
  113. /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/region/en.json +0 -0
  114. /package/framework/{v0.5.6 → v0.5.7}/core/locales/dist/region/fr.json +0 -0
  115. /package/framework/{v0.5.6 → v0.5.7}/core/locales/index.js +0 -0
  116. /package/framework/{v0.5.6 → v0.5.7}/core/mime.types +0 -0
  117. /package/framework/{v0.5.6 → v0.5.7}/core/model/entity.js +0 -0
  118. /package/framework/{v0.5.6 → v0.5.7}/core/model/index.js +0 -0
  119. /package/framework/{v0.5.6 → v0.5.7}/core/model/template/entityFactory.js +0 -0
  120. /package/framework/{v0.5.6 → v0.5.7}/core/model/template/index.js +0 -0
  121. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/README.md +0 -0
  122. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/index.js +0 -0
  123. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/csrf/README.md +0 -0
  124. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/csrf/package.json +0 -0
  125. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/csrf/src/main.js +0 -0
  126. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/README.md +0 -0
  127. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coep/README.md +0 -0
  128. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coep/package.json +0 -0
  129. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  130. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coop/README.md +0 -0
  131. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coop/package.json +0 -0
  132. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  133. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/corp/README.md +0 -0
  134. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/corp/package.json +0 -0
  135. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  136. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/csp/README.md +0 -0
  137. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/csp/package.json +0 -0
  138. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  139. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  140. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  141. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  142. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  143. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  144. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  145. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  146. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  147. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  148. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/package.json +0 -0
  149. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  150. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  151. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  152. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/src/main.js +0 -0
  153. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  154. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  155. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  156. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  157. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  158. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  159. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  160. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  161. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  162. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  163. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  164. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  165. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  166. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  167. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  168. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  169. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  170. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  171. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/session/README.md +0 -0
  172. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/session/package.json +0 -0
  173. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/session/src/main.js +0 -0
  174. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/README.md +0 -0
  175. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/build.json +0 -0
  176. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/package.json +0 -0
  177. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/storage/src/main.js +0 -0
  178. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/README.md +0 -0
  179. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/build.json +0 -0
  180. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/package.json +0 -0
  181. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/src/form-validator.js +0 -0
  182. /package/framework/{v0.5.6 → v0.5.7}/core/plugins/lib/validator/src/main.js +0 -0
  183. /package/framework/{v0.5.6 → v0.5.7}/core/router.js +0 -0
  184. /package/framework/{v0.5.6 → v0.5.7}/core/server.express.js +0 -0
  185. /package/framework/{v0.5.6 → v0.5.7}/core/server.isaac.js +0 -0
  186. /package/framework/{v0.5.6 → v0.5.7}/core/status.codes +0 -0
  187. /package/framework/{v0.5.6 → v0.5.7}/core/template/_gitignore +0 -0
  188. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/app.json +0 -0
  189. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  190. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/routing.json +0 -0
  191. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/settings.json +0 -0
  192. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  193. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/templates.json +0 -0
  194. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  195. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  196. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  197. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  198. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/index.js +0 -0
  199. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle/locales/en.json +0 -0
  200. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  201. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  202. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  203. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  204. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  205. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  206. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  207. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/readme.md +0 -0
  208. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_public/sw.js +0 -0
  209. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  210. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  211. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  212. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  213. /package/framework/{v0.5.6 → v0.5.7}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  214. /package/framework/{v0.5.6 → v0.5.7}/core/template/command/gina.bat.tpl +0 -0
  215. /package/framework/{v0.5.6 → v0.5.7}/core/template/command/gina.tpl +0 -0
  216. /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/env.json +0 -0
  217. /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/manifest.json +0 -0
  218. /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/package.json +0 -0
  219. /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/settings.json +0 -0
  220. /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/statics.json +0 -0
  221. /package/framework/{v0.5.6 → v0.5.7}/core/template/conf/templates.json +0 -0
  222. /package/framework/{v0.5.6 → v0.5.7}/core/template/error/client/json/401.json +0 -0
  223. /package/framework/{v0.5.6 → v0.5.7}/core/template/error/client/json/403.json +0 -0
  224. /package/framework/{v0.5.6 → v0.5.7}/core/template/error/client/json/404.json +0 -0
  225. /package/framework/{v0.5.6 → v0.5.7}/core/template/error/server/html/50x.html +0 -0
  226. /package/framework/{v0.5.6 → v0.5.7}/core/template/error/server/json/500.json +0 -0
  227. /package/framework/{v0.5.6 → v0.5.7}/core/template/error/server/json/503.json +0 -0
  228. /package/framework/{v0.5.6 → v0.5.7}/core/template/extensions/logger/config.json +0 -0
  229. /package/framework/{v0.5.6 → v0.5.7}/helpers/console.js +0 -0
  230. /package/framework/{v0.5.6 → v0.5.7}/helpers/context.js +0 -0
  231. /package/framework/{v0.5.6 → v0.5.7}/helpers/data/LICENSE +0 -0
  232. /package/framework/{v0.5.6 → v0.5.7}/helpers/data/README.md +0 -0
  233. /package/framework/{v0.5.6 → v0.5.7}/helpers/data/package.json +0 -0
  234. /package/framework/{v0.5.6 → v0.5.7}/helpers/data/src/main.js +0 -0
  235. /package/framework/{v0.5.6 → v0.5.7}/helpers/dateFormat.js +0 -0
  236. /package/framework/{v0.5.6 → v0.5.7}/helpers/index.js +0 -0
  237. /package/framework/{v0.5.6 → v0.5.7}/helpers/json/LICENSE +0 -0
  238. /package/framework/{v0.5.6 → v0.5.7}/helpers/json/README.md +0 -0
  239. /package/framework/{v0.5.6 → v0.5.7}/helpers/json/package.json +0 -0
  240. /package/framework/{v0.5.6 → v0.5.7}/helpers/json/src/main.js +0 -0
  241. /package/framework/{v0.5.6 → v0.5.7}/helpers/path.js +0 -0
  242. /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/README.md +0 -0
  243. /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/package.json +0 -0
  244. /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/src/api-error.js +0 -0
  245. /package/framework/{v0.5.6 → v0.5.7}/helpers/plugins/src/main.js +0 -0
  246. /package/framework/{v0.5.6 → v0.5.7}/helpers/prototypes.js +0 -0
  247. /package/framework/{v0.5.6 → v0.5.7}/helpers/task.js +0 -0
  248. /package/framework/{v0.5.6 → v0.5.7}/helpers/text.js +0 -0
  249. /package/framework/{v0.5.6 → v0.5.7}/lib/admin/package.json +0 -0
  250. /package/framework/{v0.5.6 → v0.5.7}/lib/admin/src/main.js +0 -0
  251. /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/README.md +0 -0
  252. /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/build.json +0 -0
  253. /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/package.json +0 -0
  254. /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/src/dep/jszip.min.js +0 -0
  255. /package/framework/{v0.5.6 → v0.5.7}/lib/archiver/src/main.js +0 -0
  256. /package/framework/{v0.5.6 → v0.5.7}/lib/async/package.json +0 -0
  257. /package/framework/{v0.5.6 → v0.5.7}/lib/async/src/main.js +0 -0
  258. /package/framework/{v0.5.6 → v0.5.7}/lib/cache/README.md +0 -0
  259. /package/framework/{v0.5.6 → v0.5.7}/lib/cache/build.json +0 -0
  260. /package/framework/{v0.5.6 → v0.5.7}/lib/cache/package.json +0 -0
  261. /package/framework/{v0.5.6 → v0.5.7}/lib/cache/src/main.js +0 -0
  262. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/aliases.json +0 -0
  263. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/add.js +0 -0
  264. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/arguments.json +0 -0
  265. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/build.js +0 -0
  266. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/copy.js +0 -0
  267. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/cp.js +0 -0
  268. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/help.js +0 -0
  269. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/help.txt +0 -0
  270. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  271. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/list.js +0 -0
  272. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/man.js +0 -0
  273. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/mcp-start.js +0 -0
  274. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/mcp.js +0 -0
  275. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/oas.js +0 -0
  276. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/openapi.js +0 -0
  277. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/remove.js +0 -0
  278. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/rename.js +0 -0
  279. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/restart.js +0 -0
  280. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/rm.js +0 -0
  281. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/start.js +0 -0
  282. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/status.js +0 -0
  283. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/bundle/stop.js +0 -0
  284. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/cache/stats.js +0 -0
  285. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/add.js +0 -0
  286. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/arguments.json +0 -0
  287. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/help.js +0 -0
  288. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/help.txt +0 -0
  289. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/infer.js +0 -0
  290. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/list.js +0 -0
  291. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/migrate.js +0 -0
  292. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/remove.js +0 -0
  293. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/rm.js +0 -0
  294. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/connector/test.js +0 -0
  295. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/add.js +0 -0
  296. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/get.js +0 -0
  297. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/help.js +0 -0
  298. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/help.txt +0 -0
  299. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/link-dev.js +0 -0
  300. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/list.js +0 -0
  301. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/remove.js +0 -0
  302. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/rm.js +0 -0
  303. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/set.js +0 -0
  304. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/unset.js +0 -0
  305. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/env/use.js +0 -0
  306. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/add.js +0 -0
  307. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/arguments.json +0 -0
  308. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/build.js +0 -0
  309. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/dot.js +0 -0
  310. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/get.js +0 -0
  311. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/help.js +0 -0
  312. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/help.txt +0 -0
  313. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/init.js +0 -0
  314. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/link-node-modules.js +0 -0
  315. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/link.js +0 -0
  316. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/list.js +0 -0
  317. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/man.js +0 -0
  318. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/msg.json +0 -0
  319. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/open.js +0 -0
  320. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/remove.js +0 -0
  321. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/reset.js +0 -0
  322. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/restart.js +0 -0
  323. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/set.js +0 -0
  324. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/start.js +0 -0
  325. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/status.js +0 -0
  326. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/stop.js +0 -0
  327. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/tail.js +0 -0
  328. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/update.js +0 -0
  329. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/framework/version.js +0 -0
  330. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/gina-dev.1.md +0 -0
  331. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/gina-framework.1.md +0 -0
  332. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/gina.1.md +0 -0
  333. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/helper.js +0 -0
  334. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/add.js +0 -0
  335. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/arguments.json +0 -0
  336. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/export.js +0 -0
  337. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/help.js +0 -0
  338. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/help.txt +0 -0
  339. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/import.js +0 -0
  340. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/i18n/scan.js +0 -0
  341. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/index.js +0 -0
  342. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/inspector/help.js +0 -0
  343. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/inspector/help.txt +0 -0
  344. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/inspector/open.js +0 -0
  345. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/man-render.js +0 -0
  346. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/arguments.json +0 -0
  347. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/help.js +0 -0
  348. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/help.txt +0 -0
  349. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/kill.js +0 -0
  350. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/minion/list.js +0 -0
  351. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/msg.json +0 -0
  352. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/help.js +0 -0
  353. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/help.txt +0 -0
  354. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/inc/scan.js +0 -0
  355. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/list.js +0 -0
  356. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/reset.js +0 -0
  357. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/port/set.js +0 -0
  358. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/add.js +0 -0
  359. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/arguments.json +0 -0
  360. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/backup.js +0 -0
  361. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/build.js +0 -0
  362. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/help.js +0 -0
  363. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/help.txt +0 -0
  364. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/import.js +0 -0
  365. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/list.js +0 -0
  366. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/man.js +0 -0
  367. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/move.js +0 -0
  368. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/remove.js +0 -0
  369. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/rename.js +0 -0
  370. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/restart.js +0 -0
  371. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/restore.js +0 -0
  372. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/rm.js +0 -0
  373. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/start.js +0 -0
  374. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/status.js +0 -0
  375. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/project/stop.js +0 -0
  376. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/arguments.json +0 -0
  377. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/help.js +0 -0
  378. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/help.txt +0 -0
  379. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/list.js +0 -0
  380. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/remove.js +0 -0
  381. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/protocol/set.js +0 -0
  382. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/add.js +0 -0
  383. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/help.js +0 -0
  384. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/help.txt +0 -0
  385. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/link-local.js +0 -0
  386. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/link-production.js +0 -0
  387. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/list.js +0 -0
  388. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/remove.js +0 -0
  389. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/rm.js +0 -0
  390. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/scope/use.js +0 -0
  391. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/arguments.json +0 -0
  392. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/check.js +0 -0
  393. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/help.js +0 -0
  394. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/help.txt +0 -0
  395. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/secrets/scan.js +0 -0
  396. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/help.js +0 -0
  397. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/help.txt +0 -0
  398. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/list.js +0 -0
  399. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/man.js +0 -0
  400. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/service/start.js +0 -0
  401. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd/view/add.js +0 -0
  402. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd-status-format/package.json +0 -0
  403. /package/framework/{v0.5.6 → v0.5.7}/lib/cmd-status-format/src/main.js +0 -0
  404. /package/framework/{v0.5.6 → v0.5.7}/lib/collection/README.md +0 -0
  405. /package/framework/{v0.5.6 → v0.5.7}/lib/collection/build.json +0 -0
  406. /package/framework/{v0.5.6 → v0.5.7}/lib/collection/package.json +0 -0
  407. /package/framework/{v0.5.6 → v0.5.7}/lib/collection/src/main.js +0 -0
  408. /package/framework/{v0.5.6 → v0.5.7}/lib/config.js +0 -0
  409. /package/framework/{v0.5.6 → v0.5.7}/lib/connector-config/package.json +0 -0
  410. /package/framework/{v0.5.6 → v0.5.7}/lib/connector-config/src/main.js +0 -0
  411. /package/framework/{v0.5.6 → v0.5.7}/lib/connector-registry/package.json +0 -0
  412. /package/framework/{v0.5.6 → v0.5.7}/lib/connector-registry/src/main.js +0 -0
  413. /package/framework/{v0.5.6 → v0.5.7}/lib/cron/README.md +0 -0
  414. /package/framework/{v0.5.6 → v0.5.7}/lib/cron/package.json +0 -0
  415. /package/framework/{v0.5.6 → v0.5.7}/lib/cron/src/main.js +0 -0
  416. /package/framework/{v0.5.6 → v0.5.7}/lib/domain/LICENSE +0 -0
  417. /package/framework/{v0.5.6 → v0.5.7}/lib/domain/README.md +0 -0
  418. /package/framework/{v0.5.6 → v0.5.7}/lib/domain/package.json +0 -0
  419. /package/framework/{v0.5.6 → v0.5.7}/lib/domain/src/main.js +0 -0
  420. /package/framework/{v0.5.6 → v0.5.7}/lib/generator/index.js +0 -0
  421. /package/framework/{v0.5.6 → v0.5.7}/lib/i18n/package.json +0 -0
  422. /package/framework/{v0.5.6 → v0.5.7}/lib/i18n/src/main.js +0 -0
  423. /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/LICENSE +0 -0
  424. /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/README.md +0 -0
  425. /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/package.json +0 -0
  426. /package/framework/{v0.5.6 → v0.5.7}/lib/inherits/src/main.js +0 -0
  427. /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-events/package.json +0 -0
  428. /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-events/src/main.js +0 -0
  429. /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-redact/package.json +0 -0
  430. /package/framework/{v0.5.6 → v0.5.7}/lib/inspector-redact/src/main.js +0 -0
  431. /package/framework/{v0.5.6 → v0.5.7}/lib/instrument/package.json +0 -0
  432. /package/framework/{v0.5.6 → v0.5.7}/lib/instrument/src/main.js +0 -0
  433. /package/framework/{v0.5.6 → v0.5.7}/lib/job/package.json +0 -0
  434. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/README.md +0 -0
  435. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/package.json +0 -0
  436. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/default/index.js +0 -0
  437. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/file/index.js +0 -0
  438. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  439. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  440. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/mq/index.js +0 -0
  441. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/mq/listener.js +0 -0
  442. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/containers/mq/speaker.js +0 -0
  443. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/helper.js +0 -0
  444. /package/framework/{v0.5.6 → v0.5.7}/lib/logger/src/main.js +0 -0
  445. /package/framework/{v0.5.6 → v0.5.7}/lib/math/index.js +0 -0
  446. /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-dispatch/package.json +0 -0
  447. /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-dispatch/src/main.js +0 -0
  448. /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-http/package.json +0 -0
  449. /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-http/src/main.js +0 -0
  450. /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-server/package.json +0 -0
  451. /package/framework/{v0.5.6 → v0.5.7}/lib/mcp-server/src/main.js +0 -0
  452. /package/framework/{v0.5.6 → v0.5.7}/lib/merge/README.md +0 -0
  453. /package/framework/{v0.5.6 → v0.5.7}/lib/merge/package.json +0 -0
  454. /package/framework/{v0.5.6 → v0.5.7}/lib/merge/src/main.js +0 -0
  455. /package/framework/{v0.5.6 → v0.5.7}/lib/metrics/package.json +0 -0
  456. /package/framework/{v0.5.6 → v0.5.7}/lib/metrics/src/main.js +0 -0
  457. /package/framework/{v0.5.6 → v0.5.7}/lib/model.js +0 -0
  458. /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-filters/README.md +0 -0
  459. /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-filters/package.json +0 -0
  460. /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-filters/src/main.js +0 -0
  461. /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-resolver/package.json +0 -0
  462. /package/framework/{v0.5.6 → v0.5.7}/lib/nunjucks-resolver/src/main.js +0 -0
  463. /package/framework/{v0.5.6 → v0.5.7}/lib/proc.js +0 -0
  464. /package/framework/{v0.5.6 → v0.5.7}/lib/routing/README.md +0 -0
  465. /package/framework/{v0.5.6 → v0.5.7}/lib/routing/build.json +0 -0
  466. /package/framework/{v0.5.6 → v0.5.7}/lib/routing/package.json +0 -0
  467. /package/framework/{v0.5.6 → v0.5.7}/lib/routing/src/main.js +0 -0
  468. /package/framework/{v0.5.6 → v0.5.7}/lib/routing/src/radix.js +0 -0
  469. /package/framework/{v0.5.6 → v0.5.7}/lib/routing-introspect/package.json +0 -0
  470. /package/framework/{v0.5.6 → v0.5.7}/lib/routing-introspect/src/main.js +0 -0
  471. /package/framework/{v0.5.6 → v0.5.7}/lib/secrets/package.json +0 -0
  472. /package/framework/{v0.5.6 → v0.5.7}/lib/secrets/src/backends/env.js +0 -0
  473. /package/framework/{v0.5.6 → v0.5.7}/lib/secrets/src/main.js +0 -0
  474. /package/framework/{v0.5.6 → v0.5.7}/lib/session-store.js +0 -0
  475. /package/framework/{v0.5.6 → v0.5.7}/lib/shell.js +0 -0
  476. /package/framework/{v0.5.6 → v0.5.7}/lib/state.js +0 -0
  477. /package/framework/{v0.5.6 → v0.5.7}/lib/swig-filters/README.md +0 -0
  478. /package/framework/{v0.5.6 → v0.5.7}/lib/swig-filters/package.json +0 -0
  479. /package/framework/{v0.5.6 → v0.5.7}/lib/swig-filters/src/main.js +0 -0
  480. /package/framework/{v0.5.6 → v0.5.7}/lib/swig-resolver/package.json +0 -0
  481. /package/framework/{v0.5.6 → v0.5.7}/lib/swig-resolver/src/main.js +0 -0
  482. /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/package.json +0 -0
  483. /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/src/loaders/http.js +0 -0
  484. /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/src/loaders/memory.js +0 -0
  485. /package/framework/{v0.5.6 → v0.5.7}/lib/template-loaders/src/main.js +0 -0
  486. /package/framework/{v0.5.6 → v0.5.7}/lib/url/README.md +0 -0
  487. /package/framework/{v0.5.6 → v0.5.7}/lib/url/index.js +0 -0
  488. /package/framework/{v0.5.6 → v0.5.7}/lib/url/routing.json +0 -0
  489. /package/framework/{v0.5.6 → v0.5.7}/lib/uuid/package.json +0 -0
  490. /package/framework/{v0.5.6 → v0.5.7}/lib/uuid/src/main.js +0 -0
  491. /package/framework/{v0.5.6 → v0.5.7}/lib/validator.js +0 -0
  492. /package/framework/{v0.5.6 → v0.5.7}/lib/watcher/package.json +0 -0
  493. /package/framework/{v0.5.6 → v0.5.7}/lib/watcher/src/main.js +0 -0
  494. /package/framework/{v0.5.6 → v0.5.7}/lib/ws-framing/package.json +0 -0
  495. /package/framework/{v0.5.6 → v0.5.7}/lib/ws-framing/src/main.js +0 -0
  496. /package/framework/{v0.5.6 → v0.5.7}/lib/ws-query/package.json +0 -0
  497. /package/framework/{v0.5.6 → v0.5.7}/lib/ws-query/src/main.js +0 -0
  498. /package/framework/{v0.5.6 → v0.5.7}/lib/ws-session/package.json +0 -0
  499. /package/framework/{v0.5.6 → v0.5.7}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,23 @@ 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.5.7 - 2026-07-03
10
+ ### Added
11
+ * Added a connector-backed job store to the async-job primitive: point `jobs.store` (app.json) at a `connectors.json` entry and job records persist in SQLite (`node:sqlite` built-in, zero new dependencies) — they survive bundle restarts and are readable cross-process, while the deferred function still runs in the creating process. A configured store that cannot be built fails the boot instead of silently degrading to the in-memory store, and the create/worker race on async stores was hardened away for future backends.
12
+ * Added a MongoDB backend for the connector-backed job store: point `jobs.store` (app.json) at a `connectors.json` entry with `"connector": "mongodb"` (same `uri`/`host`/`database` keys as the MongoDB session store; the driver is resolved from the consuming project `node_modules`) and job records live on a shared mongod — restart-durable and visible across processes and pods, while the deferred function still runs in the creating process. Expiry stays sweep-driven for parity with the other stores: no server-side TTL reaping.
13
+ * Added a Redis backend for the connector-backed job store: point `jobs.store` (app.json) at a `connectors.json` entry with `"connector": "redis"` (same `host`/`port`/`db`/`password`/`tls`/`cluster` keys as the Redis session store; driver `ioredis`, resolved like the session store with a project `node_modules` fallback) and job records live on a shared Redis — restart-durable and visible across processes and pods, while the deferred function still runs in the creating process. Records carry per-state and expiry indexes maintained atomically (MULTI) so list and sweep never scan the keyspace, and expiry stays sweep-driven for parity with the other stores: no per-key TTL. Redis Cluster is supported via a hash-tagged key prefix (default `{jobs}:`).
14
+ * Failed async jobs can now retry: pass `maxAttempts` to `self.startJob` / `lib.job.create` and a failed attempt is retried on the creating process with exponential backoff (`jobs.retryBackoffMs` in app.json, default 1000 ms, doubling per attempt). Between attempts the record returns to `pending` with the last error and a `nextRetryAt` timestamp visible, and it cannot be purged by the TTL sweep; `failed` and `completed` remain strictly terminal, and the completion webhook fires exactly once, after the final attempt. The default stays a single attempt — behavior is unchanged unless you opt in.
15
+ ### Changed
16
+ * npm 12 readiness for the install and release tooling: the prepack leak scan and the smoke harness accept the object-keyed `npm pack --json` output of npm 12 (npm <= 11 array output unchanged), the leak scan fails closed on unrecognized shapes instead of passing vacuously, the container smoke opts tarball install scripts back in under the npm 12 allow-scripts default, and the README documents installing with `--allow-scripts=gina` on npm 12+
17
+ ### Fixed
18
+ * A `connectors.json` entry with `"connector": "redis"` no longer aborts the bundle boot. The model layer loads a `lib/connector.js` for every declared connector and treated the Redis connector's missing one as fatal — so even the documented Redis session-store configuration could not boot with its entry declared. The Redis connector now ships a no-op boot connector that opens no connection and requires no driver.
19
+ * Fixed a production-mode HTTP 500 on every swig-rendered route carrying a cache setting in routing.json: the render cache writer referenced render()-scoped state from module scope (ReferenceError: self is not defined); the cache flag and error reporter are now threaded into writeCache as parameters
20
+ * Fixed a cross-request data bleed in the swig render delegate under production concurrency: per-request helpers (the template-data getter, resource injector and layout-cache path) were captured at module scope, so a render suspended at the template-read await could resume with a concurrent request's closures and merge that request's page data into its own response. All per-request dependencies are now function-scoped inside render().
21
+ * Fixed two cross-request defects in the streaming render delegate under production concurrency: a finishing stream released a concurrent request's req/res refs mid-stream instead of its own (leaving its own unreleased), and a stream error was reported through the concurrent request's controller. The per-request dependencies are now function-scoped.
22
+ * Fixed the JSON render delegate's cache writer reporting a cache-configuration error through a concurrent request's controller under production concurrency: the module-level writeCache resumed after its file-write await reading the module-scoped controller reference, which any renderJSON entering during the suspension had reassigned. Every render-scoped value is now threaded into writeCache as a parameter and the delegate's per-request dependencies are function-scoped.
23
+ ### Security
24
+ * Fixed a path-traversal vulnerability in the static-asset resolver: a request URL containing `../` — or its `%2F` / `%2e%2e` percent-encoded forms — could escape a `statics.json` mapping's target directory and read any sibling file under the shared root (configuration, credentials, or server-side source). Both static resolvers now canonicalise the resolved path and confine it to its mapping target (or `publicPath`), returning 404 on any escape; legitimate assets are served unchanged and no configuration change is required.
25
+
9
26
  ## 0.5.6 - 2026-07-01
10
27
  ### Added
11
28
  * Added a streaming variant to the AI connector: getModel('<name>').stream(messages, options) returns an EventEmitter emitting start/delta/done/error events for token-by-token inference, plus an .onComplete(cb) shim mirroring infer(). Works across Anthropic and every OpenAI-compatible provider; the buffered infer() is unchanged.
package/README.md CHANGED
@@ -40,13 +40,16 @@ gina bundle:start api @myproject
40
40
  open https://localhost:3100
41
41
  ```
42
42
 
43
- ## What's in 0.5.6
43
+ > **npm 12+** blocks install scripts by default, and gina's post-install bootstraps `~/.gina` and the framework dependencies. Install with `npm install -g gina@latest --allow-scripts=gina`, or allow it once for all global installs with `npm config set allow-scripts=gina --location=user`. (Not needed on npm ≤ 11.)
44
44
 
45
- - **AI-connector CLI suite.** `gina connector:infer <connector> @<project> --message="…"` runs a one-off inference against a configured AI connector **outside a running bundle** — resolves the merged connector config + `${secret:KEY}` credentials (never echoed), instantiates the connector directly, and prints the normalised result. `--stream` emits token frames as NDJSON, `--raw` adds the full provider response, `--format=json` for machine output. `gina connector:test [<connector>] @<project>` probes connectors for readiness (driver installed, `${secret:KEY}` resolvable), exits non-zero on any failure (CI-friendly); `--connect` adds a zero-generation-token live provider check.
46
- - **Streaming AI inference.** `getModel('<name>').stream(messages, options)` returns an EventEmitter emitting `start` / `delta` / `done` / `error` for token-by-token inference across Anthropic and every OpenAI-compatible provider (plus an `.onComplete(cb)` shim); the buffered `infer()` is unchanged.
47
- - **AI stream + application events in the Inspector.** A new dev-Inspector **"AI stream"** tab shows token streams per request; a new **"Events"** tab surfaces named application events emitted with `self.emitEvent(name, metadata)`, with opt-in bridges (`settings.inspector.events.topics`) that surface whitelisted entity events and database connector-lifecycle (`<connector>#ready`) events.
48
- - **`getModel()` exposes the AI inference API.** `getModel(name).infer(…)` and `getModel(name).stream(…)` now work as documented previously an AI connector returned only a bare connection wrapper.
49
- - **Robustness fixes.** Boot aborts with a clear message on a model-init failure instead of starting degraded (#B57); a corrupt `~/.gina/projects.json` registration is skipped with a warning instead of crashing every command (#B59); DELETE-route requirement regexes honour their flags and no longer crash on a group-close-before-flag pattern; multipart upload filenames with non-ASCII UTF-8 characters are decoded correctly; a native `<dialog>` popin closed by the user agent (Escape / dialog-method form) runs the same cleanup as the close button; the Couchbase connector substitutes a positional placeholder used as a dynamic field-path key at every occurrence; `gina project:import` is now additive across release targets; `gina stop` reports any bundles still running.
45
+ ## What's in 0.5.7
46
+
47
+ - **Durable async-job stores.** The async-job primitive (`self.startJob` / `lib.job`) can now persist job records in a real backend: point `jobs.store` (app.json) at a `connectors.json` entry and records survive bundle restarts and are readable cross-process **SQLite** (`node:sqlite` built-in, zero new dependencies), **MongoDB** (shared mongod durable and visible across processes and pods), or **Redis** (`ioredis`; per-state and expiry indexes maintained atomically so list and sweep never scan the keyspace; Redis Cluster supported via a hash-tagged key prefix). A configured store that cannot be built fails the boot instead of silently degrading to the in-memory store.
48
+ - **Failed-job retry (opt-in).** Pass `maxAttempts` to `self.startJob` / `lib.job.create` and a failed attempt is retried on the creating process with exponential backoff (`jobs.retryBackoffMs` in app.json, default 1000 ms, doubling per attempt). Between attempts the record returns to `pending` with the last error and a `nextRetryAt` timestamp visible; `failed` and `completed` remain strictly terminal, and the completion webhook fires exactly once. The default stays a single attempt — behavior is unchanged unless you opt in.
49
+ - **npm 12 readiness.** The install and release tooling accept npm 12's changed `npm pack --json` output shape, and installing under npm 12's script-blocking default is documented (`npm install -g gina@latest --allow-scripts=gina` not needed on npm 11).
50
+ - **Concurrency fixes in the render delegates.** A family of cross-request defects under production concurrency: the swig render cache writer crashed with an HTTP 500 on every cached route in production (#B60); a swig render suspended at its template-read await could resume with a concurrent request's closures and merge that request's page data into its own response (#B61); a finishing stream released a concurrent request's `req`/`res` refs instead of its own and reported stream errors through the wrong controller (#B62); the JSON delegate's cache writer reported cache-configuration errors through a concurrent request's controller (#B63). All per-request state in the delegates is now function-scoped.
51
+ - **Robustness fixes.** A `connectors.json` entry with `"connector": "redis"` no longer aborts the bundle boot — the Redis connector now ships a no-op boot connector, unblocking the documented Redis session-store configuration.
52
+ - **Security — static-asset path traversal fixed.** A request URL with `../` (or its `%2F` / `%2e%2e` percent-encoded forms) could escape a `statics.json` mapping's target directory and read any sibling file under the shared root (config, credentials, server-side source). Both static resolvers now confine the resolved path to its mapping target (or `publicPath`) and return 404 on any escape (#B64); legitimate assets are unaffected and no configuration change is required.
50
53
 
51
54
  See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
52
55
 
package/ROADMAP.md CHANGED
@@ -31,6 +31,7 @@ This roadmap covers planned features, architectural improvements, new connectors
31
31
  | **Q2 2026** | `0.5.4` ✅ | Node.js 26 support (engine `>= 22 <27`, CI matrix) · FormValidator fixes (`isFloat` accepts string floats · `isDate` non-ISO masks + rule chaining) · quieter live form validation (error message revealed on blur) · file-upload fixes (honour `tmpPath` / per-group `path` · enforce `maxFields` + `maxFieldsSize` unit suffix · **Security**: reject uploads to an unconfigured group, closing an `allowedExtensions` / `isMultipleAllowed` bypass) · two dev-mode heap fixes (hot-reload lib-eviction leak · HTTP/2 `self.query()` settled-stream retention) · tighter per-request config isolation (narrowed router clone · `getRouteByUrl` shared-config mutation) · dev Inspector reliability (per-tab channel under COOP · Swig render-race isolation · multi-bundle proxy log/index routing · SPA hardening) · Express-engine `/_gina/info` + `/_gina/cache/stats` parity · `bundle:add --ignore-ports` |
32
32
  | **Q2 2026** | `0.5.5` ✅ | WebSocket routes in `routing.json` (`method: "ws"` + `param.wsHandler` → `channels/<name>.js`, `:param` paths, per-route `param.wsOptions`) · cross-bundle `session.query()` from WebSocket channel handlers · framework version side-by-side CLI (`framework:add` / `framework:list` / `framework:remove` / `framework:update` / `framework:reset`) · `project:move` / `project:backup` / `project:restore` · inline CLI man pages (`framework:man` / `project:man` / `bundle:man` / `service:man`) · Bun promoted to a supported, CI-gated runtime · idempotent HTTP/2 client retries (safe-method gating + per-call `retryUnsafe` opt-in) · **Security**: WebSocket-DoS dependency hardening (`ws` override) · `tail` restart hardening |
33
33
  | **Q3 2026** | `0.5.6` ✅ | AI-connector CLI suite — `connector:infer` (one-off inference · `--stream` NDJSON · `--raw`) + `connector:test` (CI readiness probe · `--connect` zero-token live check) · AI connector `stream()` + Inspector "AI stream" tab · application events in the Inspector — `self.emitEvent()` + a new "Events" tab, opt-in entity-event & connector-lifecycle bridges · `getModel()` exposes the AI `infer`/`stream` API · fixes: model-init fail-fast · corrupt `projects.json` registration skipped cleanly · DELETE-route regex flags + off-by-one crash · UTF-8 multipart upload filenames · native `<dialog>` popin close cleanup · Couchbase dynamic field-path placeholder · `project:import` additive across release targets · `gina stop` bundles-still-running notice |
34
+ | **Q3 2026** | `0.5.7` ✅ | Durable async-job stores — `jobs.store` (app.json) → `connectors.json` entry: SQLite (`node:sqlite`, zero new dependencies) · MongoDB (shared mongod, multi-pod) · Redis (`ioredis`, atomic per-state + expiry indexes, Redis Cluster via hash-tagged prefix); restart-durable, cross-process, fail-fast on an unbuildable store · opt-in failed-job retry (`maxAttempts` + exponential backoff; completion webhook fires exactly once) · npm 12 readiness (install + release tooling, `--allow-scripts=gina` guidance) · render-delegate concurrency fixes (production cross-request data bleed / wrong-controller error routing / cached-route 500) · `"connector": "redis"` entry no longer aborts boot · **Security**: static-asset path-traversal fix — resolver paths canonicalised and confined to their `statics.json` mapping target (404 on any escape, `%2F` / `%2e%2e` forms included) |
34
35
  | **Q1 2027** | `0.5.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
35
36
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
36
37
 
@@ -0,0 +1 @@
1
+ 0.5.7
@@ -0,0 +1,334 @@
1
+ /*
2
+ * This file is part of the gina package.
3
+ * Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
4
+ *
5
+ * For the full copyright and license information, please view the LICENSE
6
+ * file that was distributed with this source code.
7
+ */
8
+ 'use strict';
9
+
10
+ /**
11
+ * @module gina/core/connectors/mongodb/job-store
12
+ *
13
+ * MongoDB-backed `JobStore` for the async-job primitive (`lib/job`) — the
14
+ * second connector store of the #AI6 family (SQLite shipped first). Backed by
15
+ * the consumer project's own `mongodb` driver, resolved from the project's
16
+ * `node_modules` exactly like the MongoDB session store — the framework keeps
17
+ * zero hard dependency on it.
18
+ *
19
+ * What it buys over the SQLite store: the record lives on a mongod every pod
20
+ * can reach, so this is the true multi-pod backend — a job created on pod A is
21
+ * pollable from pod B via `/_gina/jobs/:id`, and records survive any single
22
+ * bundle restart. The deferred *function* still runs only in the process that
23
+ * created the job — the store shares the record, never the closure (see
24
+ * `lib/job`).
25
+ *
26
+ * Deliberate divergences from the MongoDB SESSION store (same connector,
27
+ * different contract):
28
+ * - `get` / `list` do NOT filter on expiry. The memory store returns
29
+ * terminal records until `sweep` purges them, and behavioral parity with
30
+ * the memory store is the contract here — expiry acts only at sweep time.
31
+ * - NO server-side TTL index. Mongo's TTL monitor is a Date-indexed reaper
32
+ * that would purge records OUTSIDE the seam's sweep (breaking the parity
33
+ * above) — and the job record's `expiresAt` is an epoch-ms NUMBER, which
34
+ * the TTL monitor ignores anyway (it only reaps BSON Date fields), so a
35
+ * TTL index here would look configured while silently never firing. The
36
+ * two secondary indexes created at construction (`jobsState`,
37
+ * `jobsExpires`) are plain performance indexes with no reaping semantics.
38
+ * - The record is stored as a JSON STRING (the session store's `sess`
39
+ * precedent), not a nested document: caller-supplied `meta` may carry
40
+ * dotted or dollar-prefixed keys that BSON documents reject, and the
41
+ * JSON round-trip is exactly the fidelity the seam guarantees.
42
+ *
43
+ * Config keys follow the mongodb connector's OWN conventions (the §11 rule —
44
+ * mirrors the session store's URI assembly): `uri` preferred, else
45
+ * host/port/username/password/database/authSource/replicaSet + ssl. For
46
+ * mongodb, `database` is a NAME (the same field the model layer's entity scan
47
+ * reads), so the connectors.json entry is model-scan-compatible by
48
+ * construction — the sqlite `file`-as-path quirk does not apply here.
49
+ *
50
+ * Constructed by the `lib/job-store` dispatcher at boot; not meant to be
51
+ * instantiated from application code.
52
+ */
53
+
54
+ /**
55
+ * Job lifecycle states — imported so the sweep predicate can never drift from
56
+ * the memory store's (`lib/job` is a plain-required module-singleton; there is
57
+ * no load-time cycle because `lib/job` never requires this file — the
58
+ * `lib/job-store` dispatcher requires it lazily at boot).
59
+ *
60
+ * @inner
61
+ * @type {{PENDING:string, RUNNING:string, COMPLETED:string, FAILED:string}}
62
+ */
63
+ var STATES = require('../../../../lib/job/src/main').STATES;
64
+
65
+ /**
66
+ * No-op callback used when a caller omits one.
67
+ * @inner
68
+ * @returns {void}
69
+ */
70
+ function noop() {}
71
+
72
+ /**
73
+ * Build a MongoDB-backed job store implementing the `lib/job` `JobStore` seam
74
+ * (`set / get / remove / list / sweep`, all Node-callback-shaped). The driver
75
+ * is promise-based, so callbacks fire asynchronously — `lib/job`'s create-race
76
+ * hardening (drain scheduled inside the `set` callback) is what makes an async
77
+ * store safe as a drop-in.
78
+ *
79
+ * Each record is stored as `{ _id, state, expiresAt, updatedAt, record }`:
80
+ * thin indexed fields for the two query shapes (list-by-state,
81
+ * sweep-by-expiry) — mirroring the SQLite store's columns — with the full
82
+ * record riding as a JSON string because it legitimately gains keys after
83
+ * creation (`webhookDeliveredAt`, `webhookFailed`, ...). All timestamps are
84
+ * epoch MILLISECONDS — the seam's unit (`sweep(now)` receives `Date.now()`;
85
+ * the session store's Date-typed `expiresAt` convention does NOT apply).
86
+ *
87
+ * @param {object} connConf - Resolved `connectors.json` entry for this store.
88
+ * @param {string} [connConf.uri] - Full mongodb:// or mongodb+srv:// URI (preferred).
89
+ * @param {string} [connConf.host] - Single host (used when uri absent; default 127.0.0.1).
90
+ * @param {number} [connConf.port] - Single port (default 27017).
91
+ * @param {string} [connConf.username] - Auth username.
92
+ * @param {string} [connConf.password] - Auth password.
93
+ * @param {string} connConf.database - Database NAME (required — the mongodb connector's
94
+ * own convention; the model layer reads the same field).
95
+ * @param {string} [connConf.authSource] - Auth db (typically "admin").
96
+ * @param {string} [connConf.replicaSet] - Replica set name.
97
+ * @param {object|boolean} [connConf.ssl] - TLS configuration (true, or a driver options object).
98
+ * @param {string} [connConf.collection] - Jobs collection (default 'jobs').
99
+ * @param {string} bundle - Bundle name — used in log lines.
100
+ * @param {object} [injected] - Test-only dependency injection (the entity-layer
101
+ * `injected` precedent): `{ driver }` replaces the
102
+ * project-resolved mongodb module. The dispatcher
103
+ * always calls with two arguments.
104
+ * @returns {object} - A `JobStore` instance, plus a `close()` convenience
105
+ * (not part of the seam; releases the client).
106
+ * @throws {Error} - When the mongodb driver is not installed in the
107
+ * project, or `database` is missing.
108
+ *
109
+ * @example
110
+ * // connectors.json: { "jobsDb": { "connector": "mongodb", "host": "127.0.0.1",
111
+ * // "port": 27017, "database": "gina_jobs" } }
112
+ * // app.json: { "jobs": { "store": "jobsDb" } }
113
+ * // (wired automatically at boot by gna.js via lib/job-store)
114
+ */
115
+ module.exports = function MongodbJobStore(connConf, bundle, injected) {
116
+ connConf = connConf || {};
117
+
118
+ // Resolve the mongodb driver from the project's node_modules (session-store
119
+ // precedent) so the framework has zero hard dependency on it. The injected
120
+ // branch is test-only; the default branch is the only place the injected
121
+ // `_` / `getPath` globals are read, so tests stay standalone.
122
+ var mongodb;
123
+ if (injected && injected.driver) {
124
+ mongodb = injected.driver;
125
+ } else {
126
+ try {
127
+ var driverPath = _(getPath('project') + '/node_modules/mongodb', true);
128
+ mongodb = require(driverPath);
129
+ } catch (e) {
130
+ throw new Error(
131
+ '[MongodbJobStore] mongodb is not installed. '
132
+ + 'Run `npm install mongodb` in your project.\n'
133
+ + e.message
134
+ );
135
+ }
136
+ }
137
+
138
+ var dbName = connConf.database;
139
+ if (!dbName) {
140
+ throw new Error('[MongodbJobStore] missing required `database` field in the connectors.json entry');
141
+ }
142
+
143
+ // Compose the connection URI — mirrors the session store's resolveUri()
144
+ // (itself mirroring core/connectors/mongodb/lib/connector.js).
145
+ var uri = connConf.uri;
146
+ if (!uri) {
147
+ var host = connConf.host || '127.0.0.1';
148
+ var port = connConf.port || 27017;
149
+ var username = connConf.username;
150
+ var password = connConf.password;
151
+ var authSource = connConf.authSource;
152
+ var replicaSet = connConf.replicaSet;
153
+
154
+ var auth = '';
155
+ if (username) {
156
+ auth = encodeURIComponent(username);
157
+ if (password) auth += ':' + encodeURIComponent(password);
158
+ auth += '@';
159
+ }
160
+ uri = 'mongodb://' + auth + host + ':' + port + '/' + encodeURIComponent(dbName);
161
+ var qs = [];
162
+ if (authSource) qs.push('authSource=' + encodeURIComponent(authSource));
163
+ if (replicaSet) qs.push('replicaSet=' + encodeURIComponent(replicaSet));
164
+ if (qs.length) uri += '?' + qs.join('&');
165
+ }
166
+
167
+ var clientOptions = {};
168
+ var ssl = connConf.ssl;
169
+ if (ssl === true) {
170
+ clientOptions.tls = true;
171
+ } else if (ssl && typeof ssl === 'object') {
172
+ clientOptions.tls = true;
173
+ for (var k in ssl) {
174
+ if (Object.prototype.hasOwnProperty.call(ssl, k)) {
175
+ clientOptions[k] = ssl[k];
176
+ }
177
+ }
178
+ }
179
+
180
+ var collectionName = connConf.collection || 'jobs';
181
+ var client = new mongodb.MongoClient(uri, clientOptions);
182
+ var coll = client.db(dbName).collection(collectionName);
183
+
184
+ // Eager connect + plain secondary indexes, fire-and-forget: operations
185
+ // never wait on this (the driver queues them until connected, and index
186
+ // existence is a pure performance concern — no behavioral role). A failure
187
+ // is logged; each subsequent operation then surfaces its own driver error
188
+ // through the seam callbacks.
189
+ client.connect().then(function() {
190
+ return Promise.all([
191
+ coll.createIndex({ state: 1 }, { name: 'jobsState' }),
192
+ coll.createIndex({ expiresAt: 1 }, { name: 'jobsExpires' })
193
+ ]);
194
+ }).catch(function(err) {
195
+ console.error('[MongodbJobStore] connection/index setup failed (bundle: '
196
+ + bundle + '): ' + ((err && err.message) || err));
197
+ });
198
+
199
+ return {
200
+
201
+ /**
202
+ * Upsert `record` under `id`. The record is serialised whole into the
203
+ * `record` JSON-string field; `state` and `expiresAt` are additionally
204
+ * mirrored into their indexed fields. The driver result is never
205
+ * forwarded to the callback (a resolved UpdateResult in the err slot
206
+ * is the classic express-session-store bug) — `fn(null, record)`
207
+ * explicitly on success.
208
+ *
209
+ * @param {string} id
210
+ * @param {JobRecord} record
211
+ * @param {function} [fn] - `fn(err, record)`.
212
+ * @returns {void}
213
+ */
214
+ set: function(id, record, fn) {
215
+ if (typeof fn !== 'function') fn = noop;
216
+ var json;
217
+ try {
218
+ json = JSON.stringify(record);
219
+ } catch (err) {
220
+ return fn(err);
221
+ }
222
+ var doc = {
223
+ _id: id,
224
+ state: String(record.state || ''),
225
+ expiresAt: (typeof record.expiresAt === 'number') ? record.expiresAt : null,
226
+ updatedAt: (typeof record.updatedAt === 'number') ? record.updatedAt : Date.now(),
227
+ record: json
228
+ };
229
+ coll.replaceOne({ _id: id }, doc, { upsert: true })
230
+ .then(function() { fn(null, record); })
231
+ .catch(function(err) { fn(err); });
232
+ },
233
+
234
+ /**
235
+ * Fetch a record by `id`. No expiry filter — a terminal record past its
236
+ * `expiresAt` stays readable until `sweep` purges it (memory-store
237
+ * parity; the session store's lag-protection filter does NOT apply).
238
+ *
239
+ * @param {string} id
240
+ * @param {function} fn - `fn(err, record|null)`.
241
+ * @returns {void}
242
+ */
243
+ get: function(id, fn) {
244
+ if (typeof fn !== 'function') fn = noop;
245
+ coll.findOne({ _id: id }).then(function(doc) {
246
+ if (!doc) return fn(null, null);
247
+ var rec;
248
+ try {
249
+ rec = JSON.parse(doc.record);
250
+ } catch (parseErr) {
251
+ return fn(new Error('[MongodbJobStore] could not parse job record `' + id + '`: ' + parseErr.message));
252
+ }
253
+ fn(null, rec);
254
+ }).catch(function(err) {
255
+ fn(err);
256
+ });
257
+ },
258
+
259
+ /**
260
+ * Delete a record by `id`.
261
+ *
262
+ * @param {string} id
263
+ * @param {function} [fn] - `fn(err, existed)`.
264
+ * @returns {void}
265
+ */
266
+ remove: function(id, fn) {
267
+ if (typeof fn !== 'function') fn = noop;
268
+ coll.deleteOne({ _id: id })
269
+ .then(function(res) { fn(null, !!(res && res.deletedCount > 0)); })
270
+ .catch(function(err) { fn(err); });
271
+ },
272
+
273
+ /**
274
+ * List records, optionally filtered by `{ state }`. No expiry filter
275
+ * (memory-store parity). A record that fails to parse fails the whole
276
+ * list loudly — silent skipping would hide corruption.
277
+ *
278
+ * @param {?Object} filter - e.g. `{ state: 'failed' }`; `null` for all.
279
+ * @param {function} fn - `fn(err, records)`.
280
+ * @returns {void}
281
+ */
282
+ list: function(filter, fn) {
283
+ if (typeof fn !== 'function') fn = noop;
284
+ var query = (filter && filter.state) ? { state: String(filter.state) } : {};
285
+ coll.find(query).toArray().then(function(docs) {
286
+ var out = [];
287
+ try {
288
+ for (var i = 0; i < docs.length; i++) {
289
+ out.push(JSON.parse(docs[i].record));
290
+ }
291
+ } catch (parseErr) {
292
+ return fn(new Error('[MongodbJobStore] could not parse a job record while listing: ' + parseErr.message));
293
+ }
294
+ fn(null, out);
295
+ }).catch(function(err) {
296
+ fn(err);
297
+ });
298
+ },
299
+
300
+ /**
301
+ * Purge terminal (`completed` / `failed`) records whose `expiresAt` has
302
+ * elapsed — the exact memory-store predicate, expressed as one
303
+ * deleteMany. BSON type bracketing makes the `$lte` bound match numeric
304
+ * `expiresAt` values only, so null / absent `expiresAt` records are
305
+ * excluded server-side (the SQLite store's `IS NOT NULL` clause,
306
+ * for free).
307
+ *
308
+ * @param {number} now - Epoch ms (passed in by `lib/job`).
309
+ * @param {function} fn - `fn(err, removedCount)`.
310
+ * @returns {void}
311
+ */
312
+ sweep: function(now, fn) {
313
+ if (typeof fn !== 'function') fn = noop;
314
+ coll.deleteMany({
315
+ state: { $in: [STATES.COMPLETED, STATES.FAILED] },
316
+ expiresAt: { $lte: now }
317
+ }).then(function(res) { fn(null, (res && res.deletedCount) || 0); })
318
+ .catch(function(err) { fn(err); });
319
+ },
320
+
321
+ /**
322
+ * Release the underlying MongoClient. NOT part of the `JobStore` seam —
323
+ * `lib/job` never calls it; provided for tests and explicit teardown.
324
+ *
325
+ * @returns {void}
326
+ */
327
+ close: function() {
328
+ try {
329
+ var p = client.close();
330
+ if (p && typeof p.catch === 'function') p.catch(noop);
331
+ } catch (e) { /* already closed */ }
332
+ }
333
+ };
334
+ };
@@ -0,0 +1,36 @@
1
+ /*
2
+ * This file is part of the gina package.
3
+ * Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
4
+ *
5
+ * For the full copyright and license information, please view the LICENSE
6
+ * file that was distributed with this source code.
7
+ */
8
+ 'use strict';
9
+
10
+ /**
11
+ * Redis connector — v1: session store + job store (no entity/ORM wiring).
12
+ *
13
+ * Entity/ORM wiring is not implemented in v1. Use this connector as:
14
+ * - a session store backend via `lib.SessionStore`
15
+ * (see: core/connectors/redis/lib/session-store.js), or
16
+ * - an async-job store backend via `app.json`'s `jobs.store`
17
+ * (see: core/connectors/redis/lib/job-store.js).
18
+ *
19
+ * To configure:
20
+ * 1. Add a `redis` entry to `config/connectors.json` in your bundle.
21
+ * 2. Install ioredis in your project: `npm install ioredis`
22
+ * 3. Wire the store: session store in `bundle/index.js`, job store via
23
+ * `app.json` `{ "jobs": { "store": "<entry name>" } }`.
24
+ *
25
+ * The boot-time model scan is satisfied by the no-op `lib/connector.js`
26
+ * (no connection is opened at boot — each store owns its client).
27
+ * ORM / entity support is planned for a future release.
28
+ *
29
+ * @class Redis
30
+ * @constructor
31
+ */
32
+ var Redis = function Redis() {
33
+ // v1: no entity wiring — session store + job store only
34
+ };
35
+
36
+ module.exports = Redis;
@@ -0,0 +1,66 @@
1
+ /*
2
+ * This file is part of the gina package.
3
+ * Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
4
+ *
5
+ * For the full copyright and license information, please view the LICENSE
6
+ * file that was distributed with this source code.
7
+ */
8
+ 'use strict';
9
+
10
+ var EventEmitter = require('events').EventEmitter;
11
+ var util = require('util');
12
+
13
+ /**
14
+ * Redis connector — no-op boot-scan satisfier (v1: no entity/ORM wiring).
15
+ *
16
+ * The model layer (`lib/model.js` -> `core/model/index.js`) loads
17
+ * `core/connectors/<type>/lib/connector.js` for EVERY `connectors.json` entry
18
+ * at bundle boot and treats a missing file as fatal (`model#ready` fires with
19
+ * an Error and the boot exits). Before this file existed, ANY redis entry —
20
+ * including the documented session-store configuration and a job-store entry —
21
+ * aborted the boot at that scan.
22
+ *
23
+ * This connector therefore exists to let a redis entry pass the scan; it
24
+ * deliberately:
25
+ * - opens NO connection (the redis session store and job store each build
26
+ * and own their own client — nothing at boot needs one);
27
+ * - requires NO driver (the entry must boot even before the driver package
28
+ * is installed; the stores resolve the driver themselves at their own
29
+ * construction time, with an actionable error);
30
+ * - reports ready synchronously with a `null` connection (the sqlite
31
+ * connector's sync-`onReady` precedent — there is no handshake to wait on).
32
+ *
33
+ * Entity/ORM support remains unimplemented for redis: `getModel()` on a redis
34
+ * entry yields only the bare `{ _connection: null, getConnection }` shell the
35
+ * model layer builds — by design, until a redis ORM lands.
36
+ *
37
+ * @class RedisConnector
38
+ * @constructor
39
+ * @param {object} conf - Connector config from connectors.json (kept for
40
+ * API parity with real connectors; nothing is read).
41
+ */
42
+ function RedisConnector(conf) {
43
+ EventEmitter.call(this);
44
+
45
+ /**
46
+ * The connectors.json entry, exposed for introspection/debugging only.
47
+ * @type {object}
48
+ */
49
+ this.conf = conf || {};
50
+
51
+ /**
52
+ * Register a one-time ready callback.
53
+ * Fires synchronously (sqlite precedent) with a `null` connection —
54
+ * nothing is dialled at boot; the session/job stores own their clients.
55
+ *
56
+ * @param {function} fn - `fn(err, conn)`; always called as `fn(null, null)`.
57
+ * @returns {void}
58
+ */
59
+ this.onReady = function(fn) {
60
+ fn(null, null);
61
+ };
62
+ }
63
+
64
+ util.inherits(RedisConnector, EventEmitter);
65
+
66
+ module.exports = RedisConnector;