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
@@ -0,0 +1,454 @@
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/redis/job-store
12
+ *
13
+ * Redis-backed `JobStore` for the async-job primitive (`lib/job`) — the third
14
+ * connector store of the #AI6 family (SQLite, then MongoDB, shipped first).
15
+ * Backed by the `ioredis` driver, resolved at construction time — the
16
+ * framework keeps zero hard dependency on it.
17
+ *
18
+ * Like the MongoDB store, this is a multi-pod backend: the record lives on a
19
+ * redis every pod reaches, so a job created on pod A is pollable from pod B
20
+ * via `/_gina/jobs/:id` and records survive any single bundle restart. The
21
+ * deferred *function* still runs only in the process that created the job —
22
+ * the store shares the record, never the closure (see `lib/job`).
23
+ *
24
+ * Data layout — redis has no secondary queries, so the two query shapes the
25
+ * seam needs (list-by-state, sweep-by-expiry) are materialised as explicit
26
+ * index structures, maintained atomically with the record on every write
27
+ * (one MULTI per `set`/`remove`/`sweep` — indexes can never drift from the
28
+ * records):
29
+ *
30
+ * <prefix><id> record — the full JSON string (records
31
+ * legitimately gain keys post-create:
32
+ * `webhookDeliveredAt`, `webhookFailed`, ...)
33
+ * <prefix>idx:state:<state> SET of ids per lifecycle state
34
+ * <prefix>idx:expires sorted set: score = `expiresAt` (epoch ms),
35
+ * member = id — TERMINAL records with a numeric
36
+ * `expiresAt` only, so membership+score is exactly
37
+ * the memory store's sweep predicate
38
+ *
39
+ * Job ids are base-62 (no colon), so the colon-suffixed `idx:` keys can never
40
+ * collide with a record key under the same prefix.
41
+ *
42
+ * Deliberate divergences from the redis SESSION store (same connector,
43
+ * different contract):
44
+ * - NO per-key TTL. Redis-side auto-eviction would purge records OUTSIDE
45
+ * the seam's `sweep` (breaking memory-store parity — expiry acts only at
46
+ * sweep time), so keys are written without any TTL and `connConf.ttl`
47
+ * (a session-store knob) is deliberately ignored; retention is governed
48
+ * by `app.json`'s `jobs.ttl` through the seam.
49
+ * - `get` / `list` do NOT filter on expiry: a terminal record past its
50
+ * `expiresAt` stays readable until `sweep` purges it (memory parity).
51
+ * - Default key prefix is `'jobs:'` (`'{jobs}:'` in cluster mode), not the
52
+ * session store's `'sess:'` — a shared entry keeps the two namespaces
53
+ * apart unless the operator explicitly unifies them via `prefix`.
54
+ *
55
+ * Cluster mode: the index design needs MULTI / SUNION / MGET across several
56
+ * keys, which Redis Cluster only allows when all keys hash to one slot. The
57
+ * prefix must therefore carry a `{hash-tag}` in cluster mode — the default is
58
+ * `'{jobs}:'`, and a custom untagged prefix fails fast at construction
59
+ * (instead of CROSSSLOT errors at runtime). Job data is small; single-slot
60
+ * placement is fine.
61
+ *
62
+ * Config keys follow the redis connector's OWN conventions (the session
63
+ * store's connection surface): `host` / `port` / `db` / `password` / `tls` /
64
+ * `cluster`, plus `prefix` (job-store default `'jobs:'`). Canonical entry:
65
+ * `{ "jobsRedis": { "connector": "redis", "host": "127.0.0.1", "port": 6379 } }`.
66
+ *
67
+ * Constructed by the `lib/job-store` dispatcher at boot; not meant to be
68
+ * instantiated from application code.
69
+ */
70
+
71
+ /**
72
+ * Job lifecycle states — imported so the sweep predicate can never drift from
73
+ * the memory store's (`lib/job` is a plain-required module-singleton; there is
74
+ * no load-time cycle because `lib/job` never requires this file — the
75
+ * `lib/job-store` dispatcher requires it lazily at boot).
76
+ *
77
+ * @inner
78
+ * @type {{PENDING:string, RUNNING:string, COMPLETED:string, FAILED:string}}
79
+ */
80
+ var STATES = require('../../../../lib/job/src/main').STATES;
81
+
82
+ /**
83
+ * The four state values, for the blind per-state index fan-out — derived from
84
+ * `STATES` so a future state cannot silently be missed.
85
+ *
86
+ * @inner
87
+ * @type {Array<string>}
88
+ */
89
+ var STATE_VALUES = Object.keys(STATES).map(function(k) { return STATES[k]; });
90
+
91
+ /**
92
+ * No-op callback used when a caller omits one.
93
+ * @inner
94
+ * @returns {void}
95
+ */
96
+ function noop() {}
97
+
98
+ /**
99
+ * Build a Redis-backed job store implementing the `lib/job` `JobStore` seam
100
+ * (`set / get / remove / list / sweep`, all Node-callback-shaped). ioredis
101
+ * callbacks fire asynchronously — `lib/job`'s create-race hardening (drain
102
+ * scheduled inside the `set` callback) is what makes an async store safe as a
103
+ * drop-in.
104
+ *
105
+ * Driver resolution — a strict superset of both existing precedents: a bare
106
+ * `require('ioredis')` first (byte-parity with the redis session store, so the
107
+ * two stores resolve identically wherever the session store works), then the
108
+ * project's `node_modules` (the mongodb job-store precedent — covers the
109
+ * global-install topology where a bare require cannot see a project-local
110
+ * install), then an actionable error. No runtime version floor (session-store
111
+ * parity; the CLI connector registry's `>=5.0.0` governs install hints).
112
+ *
113
+ * All timestamps are epoch MILLISECONDS — the seam's unit (`sweep(now)`
114
+ * receives `Date.now()`; the session store's seconds-based TTL convention does
115
+ * NOT apply).
116
+ *
117
+ * @param {object} connConf - Resolved `connectors.json` entry for this store.
118
+ * @param {string} [connConf.host] - Redis host (default 127.0.0.1; standalone mode).
119
+ * @param {number} [connConf.port] - Redis port (default 6379; standalone mode).
120
+ * @param {number} [connConf.db] - Redis DB index (default 0; standalone mode).
121
+ * @param {string} [connConf.password] - AUTH password (standalone and cluster).
122
+ * @param {boolean} [connConf.tls] - Enable TLS (managed providers).
123
+ * @param {Array<{host:string,port:number}>} [connConf.cluster] - Cluster nodes; presence
124
+ * switches to cluster mode (session-store shape).
125
+ * @param {string} [connConf.prefix] - Key prefix (default `'jobs:'`; `'{jobs}:'` in
126
+ * cluster mode — a custom cluster prefix MUST
127
+ * carry a `{hash-tag}`).
128
+ * @param {string} bundle - Bundle name — used in log lines.
129
+ * @param {object} [injected] - Test-only dependency injection (the entity-layer
130
+ * `injected` precedent): `{ driver }` replaces the
131
+ * resolved ioredis module. The dispatcher always
132
+ * calls with two arguments.
133
+ * @returns {object} - A `JobStore` instance, plus a `close()` convenience
134
+ * (not part of the seam; releases the client).
135
+ * @throws {Error} - When ioredis is not installed, or a custom
136
+ * cluster-mode prefix carries no hash tag.
137
+ *
138
+ * @example
139
+ * // connectors.json: { "jobsRedis": { "connector": "redis",
140
+ * // "host": "127.0.0.1", "port": 6379 } }
141
+ * // app.json: { "jobs": { "store": "jobsRedis" } }
142
+ * // (wired automatically at boot by gna.js via lib/job-store)
143
+ */
144
+ module.exports = function RedisJobStore(connConf, bundle, injected) {
145
+ connConf = connConf || {};
146
+
147
+ // Resolve the ioredis driver: bare require first (session-store parity),
148
+ // then the project's node_modules (mongodb job-store precedent). The
149
+ // injected branch is test-only; the fallback branch is the only place the
150
+ // injected `_` / `getPath` globals are read, so tests stay standalone.
151
+ var Redis;
152
+ if (injected && injected.driver) {
153
+ Redis = injected.driver;
154
+ } else {
155
+ try {
156
+ Redis = require('ioredis');
157
+ } catch (bareErr) {
158
+ try {
159
+ var driverPath = _(getPath('project') + '/node_modules/ioredis', true);
160
+ Redis = require(driverPath);
161
+ } catch (projectErr) {
162
+ throw new Error(
163
+ '[RedisJobStore] ioredis is not installed. '
164
+ + 'Run `npm install ioredis` in your project.\n'
165
+ + bareErr.message
166
+ );
167
+ }
168
+ }
169
+ }
170
+
171
+ var isCluster = Array.isArray(connConf.cluster) && connConf.cluster.length > 0;
172
+
173
+ var prefix = (typeof connConf.prefix === 'string' && connConf.prefix.length > 0)
174
+ ? connConf.prefix
175
+ : (isCluster ? '{jobs}:' : 'jobs:');
176
+
177
+ if (isCluster && !/\{.+\}/.test(prefix)) {
178
+ throw new Error(
179
+ '[RedisJobStore] cluster mode requires a hash-tagged `prefix` (e.g. "{jobs}:") '
180
+ + 'so every job key hashes to one slot — the store\'s MULTI/SUNION/MGET '
181
+ + 'operations fail with CROSSSLOT across slots. Got: "' + prefix + '"'
182
+ );
183
+ }
184
+
185
+ // Client construction mirrors the redis session store (standalone,
186
+ // cluster, TLS).
187
+ var client;
188
+ if (isCluster) {
189
+ var clusterRedisOpts = {};
190
+ if (connConf.password) clusterRedisOpts.password = connConf.password;
191
+ if (connConf.tls) clusterRedisOpts.tls = {};
192
+ client = new Redis.Cluster(connConf.cluster, { redisOptions: clusterRedisOpts });
193
+ } else {
194
+ var clientConf = {
195
+ host : connConf.host || '127.0.0.1',
196
+ port : +(connConf.port || 6379),
197
+ db : +(connConf.db || 0)
198
+ };
199
+ if (connConf.password) clientConf.password = connConf.password;
200
+ if (connConf.tls) clientConf.tls = {};
201
+ client = new Redis(clientConf);
202
+ }
203
+
204
+ // An 'error' event with no listener would crash the process (EventEmitter
205
+ // semantics). Log it; each seam operation surfaces its own driver error
206
+ // through its callback (ioredis queues commands while reconnecting).
207
+ client.on('error', function(err) {
208
+ console.error('[RedisJobStore] ' + ((err && err.message) || err) + ' (bundle: ' + bundle + ')');
209
+ });
210
+
211
+ /**
212
+ * Record key for a job id.
213
+ * @inner
214
+ * @param {string} id
215
+ * @returns {string}
216
+ */
217
+ function recKey(id) { return prefix + id; }
218
+
219
+ /**
220
+ * Per-state index SET key.
221
+ * @inner
222
+ * @param {string} state
223
+ * @returns {string}
224
+ */
225
+ function stateKey(state) { return prefix + 'idx:state:' + state; }
226
+
227
+ /**
228
+ * Expiry index (sorted set) key — terminal records with a numeric
229
+ * `expiresAt` only.
230
+ * @inner
231
+ * @type {string}
232
+ */
233
+ var expiresKey = prefix + 'idx:expires';
234
+
235
+ /**
236
+ * Whether a state is terminal (sweepable once expired).
237
+ * @inner
238
+ * @param {string} state
239
+ * @returns {boolean}
240
+ */
241
+ function isTerminal(state) {
242
+ return state === STATES.COMPLETED || state === STATES.FAILED;
243
+ }
244
+
245
+ /**
246
+ * Extract the first error out of a MULTI exec outcome — the exec-level
247
+ * error, or the first per-command error from the `[err, result]` pairs.
248
+ *
249
+ * @inner
250
+ * @param {?Error} err - exec-level error.
251
+ * @param {?Array} results - Array of `[err, result]` pairs.
252
+ * @returns {?Error}
253
+ */
254
+ function firstExecError(err, results) {
255
+ if (err) return err;
256
+ if (!results) return null;
257
+ for (var i = 0; i < results.length; i++) {
258
+ if (results[i] && results[i][0]) return results[i][0];
259
+ }
260
+ return null;
261
+ }
262
+
263
+ return {
264
+
265
+ /**
266
+ * Upsert `record` under `id` and maintain the two index structures in
267
+ * the same atomic MULTI: the record JSON, a blind SREM from every
268
+ * other state SET + SADD into the current one, and the expiry index
269
+ * entry (added only for a terminal state with a numeric `expiresAt`,
270
+ * removed otherwise) — so index membership always reflects the last
271
+ * write.
272
+ *
273
+ * @param {string} id
274
+ * @param {JobRecord} record
275
+ * @param {function} [fn] - `fn(err, record)`.
276
+ * @returns {void}
277
+ */
278
+ set: function(id, record, fn) {
279
+ if (typeof fn !== 'function') fn = noop;
280
+ var json;
281
+ try {
282
+ json = JSON.stringify(record);
283
+ } catch (err) {
284
+ return fn(err);
285
+ }
286
+ var state = String(record.state || '');
287
+ var multi = client.multi();
288
+ multi.set(recKey(id), json);
289
+ for (var i = 0; i < STATE_VALUES.length; i++) {
290
+ if (STATE_VALUES[i] !== state) {
291
+ multi.srem(stateKey(STATE_VALUES[i]), id);
292
+ }
293
+ }
294
+ multi.sadd(stateKey(state), id);
295
+ if (isTerminal(state) && typeof record.expiresAt === 'number') {
296
+ multi.zadd(expiresKey, record.expiresAt, id);
297
+ } else {
298
+ multi.zrem(expiresKey, id);
299
+ }
300
+ multi.exec(function(execErr, results) {
301
+ var err = firstExecError(execErr, results);
302
+ if (err) return fn(err);
303
+ fn(null, record);
304
+ });
305
+ },
306
+
307
+ /**
308
+ * Fetch a record by `id`. A plain key read — NO expiry filter: a
309
+ * terminal record past its `expiresAt` stays readable until `sweep`
310
+ * purges it (memory-store parity).
311
+ *
312
+ * @param {string} id
313
+ * @param {function} fn - `fn(err, record|null)`.
314
+ * @returns {void}
315
+ */
316
+ get: function(id, fn) {
317
+ if (typeof fn !== 'function') fn = noop;
318
+ client.get(recKey(id), function(err, data) {
319
+ if (err) return fn(err);
320
+ if (!data) return fn(null, null);
321
+ var rec;
322
+ try {
323
+ rec = JSON.parse(data);
324
+ } catch (parseErr) {
325
+ return fn(new Error('[RedisJobStore] could not parse job record `' + id + '`: ' + parseErr.message));
326
+ }
327
+ fn(null, rec);
328
+ });
329
+ },
330
+
331
+ /**
332
+ * Delete a record by `id`, cleaning its index entries in the same
333
+ * MULTI. `existed` is derived from the DEL count.
334
+ *
335
+ * @param {string} id
336
+ * @param {function} [fn] - `fn(err, existed)`.
337
+ * @returns {void}
338
+ */
339
+ remove: function(id, fn) {
340
+ if (typeof fn !== 'function') fn = noop;
341
+ var multi = client.multi();
342
+ multi.del(recKey(id));
343
+ for (var i = 0; i < STATE_VALUES.length; i++) {
344
+ multi.srem(stateKey(STATE_VALUES[i]), id);
345
+ }
346
+ multi.zrem(expiresKey, id);
347
+ multi.exec(function(execErr, results) {
348
+ var err = firstExecError(execErr, results);
349
+ if (err) return fn(err);
350
+ fn(null, !!(results && results[0] && results[0][1] > 0));
351
+ });
352
+ },
353
+
354
+ /**
355
+ * List records, optionally filtered by `{ state }` — SMEMBERS on the
356
+ * matching state SET (or SUNION across all four for an unfiltered
357
+ * list), then one MGET for the records. No expiry filter (memory
358
+ * parity). An id whose record key is gone by MGET time was
359
+ * removed/swept between the two reads — equivalent to listing a
360
+ * moment later, so it is skipped; a record that fails to PARSE fails
361
+ * the whole list loudly (silent skipping would hide corruption).
362
+ *
363
+ * @param {?Object} filter - e.g. `{ state: 'failed' }`; `null` for all.
364
+ * @param {function} fn - `fn(err, records)`.
365
+ * @returns {void}
366
+ */
367
+ list: function(filter, fn) {
368
+ if (typeof fn !== 'function') fn = noop;
369
+ var onIds = function(err, ids) {
370
+ if (err) return fn(err);
371
+ if (!ids || ids.length === 0) return fn(null, []);
372
+ var keys = [];
373
+ for (var i = 0; i < ids.length; i++) {
374
+ keys.push(recKey(ids[i]));
375
+ }
376
+ client.mget(keys, function(mgetErr, values) {
377
+ if (mgetErr) return fn(mgetErr);
378
+ var out = [];
379
+ try {
380
+ for (var j = 0; j < values.length; j++) {
381
+ if (values[j] === null || typeof values[j] === 'undefined') continue;
382
+ out.push(JSON.parse(values[j]));
383
+ }
384
+ } catch (parseErr) {
385
+ return fn(new Error('[RedisJobStore] could not parse a job record while listing: ' + parseErr.message));
386
+ }
387
+ fn(null, out);
388
+ });
389
+ };
390
+ if (filter && filter.state) {
391
+ client.smembers(stateKey(String(filter.state)), onIds);
392
+ } else {
393
+ var setKeys = [];
394
+ for (var i = 0; i < STATE_VALUES.length; i++) {
395
+ setKeys.push(stateKey(STATE_VALUES[i]));
396
+ }
397
+ client.sunion(setKeys, onIds);
398
+ }
399
+ },
400
+
401
+ /**
402
+ * Purge terminal (`completed` / `failed`) records whose `expiresAt`
403
+ * has elapsed — the exact memory-store predicate. Only terminal
404
+ * records with a numeric `expiresAt` ever enter the expiry index (see
405
+ * `set`), so a range read up to `now` yields exactly the sweepable
406
+ * ids — O(expired), not O(all): pending/running and null-`expiresAt`
407
+ * records are excluded by construction (the SQLite store's
408
+ * `IS NOT NULL` analog). Deletion + index cleanup happen in one MULTI;
409
+ * the removed count is the number of DELs that hit.
410
+ *
411
+ * @param {number} now - Epoch ms (passed in by `lib/job`).
412
+ * @param {function} fn - `fn(err, removedCount)`.
413
+ * @returns {void}
414
+ */
415
+ sweep: function(now, fn) {
416
+ if (typeof fn !== 'function') fn = noop;
417
+ client.zrangebyscore(expiresKey, '-inf', now, function(err, ids) {
418
+ if (err) return fn(err);
419
+ if (!ids || ids.length === 0) return fn(null, 0);
420
+ var multi = client.multi();
421
+ for (var i = 0; i < ids.length; i++) {
422
+ multi.del(recKey(ids[i]));
423
+ multi.srem(stateKey(STATES.COMPLETED), ids[i]);
424
+ multi.srem(stateKey(STATES.FAILED), ids[i]);
425
+ multi.zrem(expiresKey, ids[i]);
426
+ }
427
+ multi.exec(function(execErr, results) {
428
+ var execFirstErr = firstExecError(execErr, results);
429
+ if (execFirstErr) return fn(execFirstErr);
430
+ var removed = 0;
431
+ // Each swept id contributed 4 commands; every 4th result
432
+ // (offset 0) is its DEL count.
433
+ for (var j = 0; j < results.length; j += 4) {
434
+ if (results[j] && results[j][1] > 0) removed++;
435
+ }
436
+ fn(null, removed);
437
+ });
438
+ });
439
+ },
440
+
441
+ /**
442
+ * Release the underlying client. NOT part of the `JobStore` seam —
443
+ * `lib/job` never calls it; provided for tests and explicit teardown.
444
+ *
445
+ * @returns {void}
446
+ */
447
+ close: function() {
448
+ try {
449
+ var p = client.quit();
450
+ if (p && typeof p.catch === 'function') p.catch(noop);
451
+ } catch (e) { /* already closed */ }
452
+ }
453
+ };
454
+ };