gina 0.6.12 → 0.6.13

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 (591) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +24 -17
  3. package/ROADMAP.md +3 -2
  4. package/framework/v0.6.13/VERSION +1 -0
  5. package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/js/gina.js +8 -0
  6. package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +165 -165
  7. package/framework/v0.6.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  8. package/framework/v0.6.13/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  9. package/framework/{v0.6.12 → v0.6.13}/core/config.js +26 -0
  10. package/framework/v0.6.13/core/connectors/redis/index.js +62 -0
  11. package/framework/v0.6.13/core/connectors/redis/lib/kv-store.js +394 -0
  12. package/framework/v0.6.13/core/connectors/sqlite/lib/kv-store.js +316 -0
  13. package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.js +202 -0
  14. package/framework/{v0.6.12 → v0.6.13}/core/gna.js +85 -0
  15. package/framework/{v0.6.12 → v0.6.13}/core/model/entity.js +13 -5
  16. package/framework/{v0.6.12 → v0.6.13}/core/router.js +147 -56
  17. package/framework/{v0.6.12 → v0.6.13}/core/server.js +61 -0
  18. package/framework/{v0.6.12 → v0.6.13}/lib/cmd/service/help.txt +8 -2
  19. package/framework/{v0.6.12 → v0.6.13}/lib/cmd/service/start.js +1 -1
  20. package/framework/{v0.6.12 → v0.6.13}/lib/index.js +18 -0
  21. package/framework/v0.6.13/lib/kv/package.json +7 -0
  22. package/framework/v0.6.13/lib/kv/src/main.js +862 -0
  23. package/framework/v0.6.13/lib/kv-store.js +112 -0
  24. package/framework/v0.6.13/lib/rate-limit/package.json +6 -0
  25. package/framework/v0.6.13/lib/rate-limit/src/main.js +399 -0
  26. package/framework/{v0.6.12 → v0.6.13}/lib/routing/src/main.js +8 -0
  27. package/framework/{v0.6.12 → v0.6.13}/package.json +1 -1
  28. package/gna.js +4 -4
  29. package/llms.txt +13 -3
  30. package/package.json +3 -3
  31. package/schema/routing.json +30 -0
  32. package/schema/settings.json +101 -0
  33. package/types/index.d.ts +9 -0
  34. package/framework/v0.6.12/VERSION +0 -1
  35. package/framework/v0.6.12/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  36. package/framework/v0.6.12/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  37. package/framework/v0.6.12/core/connectors/redis/index.js +0 -36
  38. /package/framework/{v0.6.12 → v0.6.13}/AUTHORS +0 -0
  39. /package/framework/{v0.6.12 → v0.6.13}/LICENSE +0 -0
  40. /package/framework/{v0.6.12 → v0.6.13}/core/asset/html/nolayout.html +0 -0
  41. /package/framework/{v0.6.12 → v0.6.13}/core/asset/html/static.html +0 -0
  42. /package/framework/{v0.6.12 → v0.6.13}/core/asset/img/android-chrome-192x192.png +0 -0
  43. /package/framework/{v0.6.12 → v0.6.13}/core/asset/img/android-chrome-512x512.png +0 -0
  44. /package/framework/{v0.6.12 → v0.6.13}/core/asset/img/apple-touch-icon.png +0 -0
  45. /package/framework/{v0.6.12 → v0.6.13}/core/asset/img/favicon-16x16.png +0 -0
  46. /package/framework/{v0.6.12 → v0.6.13}/core/asset/img/favicon-32x32.png +0 -0
  47. /package/framework/{v0.6.12 → v0.6.13}/core/asset/img/favicon.ico +0 -0
  48. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/README.md +0 -0
  49. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  50. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  51. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  52. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  53. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  54. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  55. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  56. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  57. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  58. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  59. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  60. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  61. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  62. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  63. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  64. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  65. /package/framework/{v0.6.12 → v0.6.13}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  66. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/ai/index.js +0 -0
  67. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/ai/lib/connector.js +0 -0
  68. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/index.js +0 -0
  69. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/connector.js +0 -0
  70. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  71. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  72. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/n1ql.js +0 -0
  73. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/session-store.js +0 -0
  74. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  75. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  76. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/couchbase/lib/storage-store.js +0 -0
  77. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/duckdb/index.js +0 -0
  78. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/duckdb/lib/connector.js +0 -0
  79. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/mongodb/index.js +0 -0
  80. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/mongodb/lib/connector.js +0 -0
  81. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/mongodb/lib/job-store.js +0 -0
  82. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  83. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/mongodb/lib/session-store.js +0 -0
  84. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/mysql/index.js +0 -0
  85. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/mysql/lib/connector.js +0 -0
  86. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/param-redact.js +0 -0
  87. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/postgresql/index.js +0 -0
  88. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/postgresql/lib/connector.js +0 -0
  89. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/redis/lib/connector.js +0 -0
  90. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/redis/lib/job-store.js +0 -0
  91. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/redis/lib/render-cache-store.js +0 -0
  92. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/redis/lib/session-store.js +0 -0
  93. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/scylladb/index.js +0 -0
  94. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/scylladb/lib/connector.js +0 -0
  95. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/scylladb/lib/session-store.js +0 -0
  96. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/sql-parser.js +0 -0
  97. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/sqlite/index.js +0 -0
  98. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/sqlite/lib/connector.js +0 -0
  99. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/sqlite/lib/job-store.js +0 -0
  100. /package/framework/{v0.6.12 → v0.6.13}/core/connectors/sqlite/lib/session-store.js +0 -0
  101. /package/framework/{v0.6.12 → v0.6.13}/core/content.encoding +0 -0
  102. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.framework.js +0 -0
  103. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.render-json.js +0 -0
  104. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.render-nunjucks-async.js +0 -0
  105. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.render-nunjucks.js +0 -0
  106. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.render-stream.js +0 -0
  107. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.render-swig-async.js +0 -0
  108. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.render-swig.js +0 -0
  109. /package/framework/{v0.6.12 → v0.6.13}/core/controller/controller.render-v1.js +0 -0
  110. /package/framework/{v0.6.12 → v0.6.13}/core/controller/index.js +0 -0
  111. /package/framework/{v0.6.12 → v0.6.13}/core/controller/inspector-window-emit.js +0 -0
  112. /package/framework/{v0.6.12 → v0.6.13}/core/controller/release-banner.js +0 -0
  113. /package/framework/{v0.6.12 → v0.6.13}/core/dev/index.js +0 -0
  114. /package/framework/{v0.6.12 → v0.6.13}/core/dev/lib/class.js +0 -0
  115. /package/framework/{v0.6.12 → v0.6.13}/core/dev/lib/factory.js +0 -0
  116. /package/framework/{v0.6.12 → v0.6.13}/core/dev/lib/tools.js +0 -0
  117. /package/framework/{v0.6.12 → v0.6.13}/core/locales/README.md +0 -0
  118. /package/framework/{v0.6.12 → v0.6.13}/core/locales/currency.json +0 -0
  119. /package/framework/{v0.6.12 → v0.6.13}/core/locales/dist/language/en.json +0 -0
  120. /package/framework/{v0.6.12 → v0.6.13}/core/locales/dist/language/fr.json +0 -0
  121. /package/framework/{v0.6.12 → v0.6.13}/core/locales/dist/region/en.json +0 -0
  122. /package/framework/{v0.6.12 → v0.6.13}/core/locales/dist/region/fr.json +0 -0
  123. /package/framework/{v0.6.12 → v0.6.13}/core/locales/index.js +0 -0
  124. /package/framework/{v0.6.12 → v0.6.13}/core/mime.types +0 -0
  125. /package/framework/{v0.6.12 → v0.6.13}/core/model/index.js +0 -0
  126. /package/framework/{v0.6.12 → v0.6.13}/core/model/template/entityFactory.js +0 -0
  127. /package/framework/{v0.6.12 → v0.6.13}/core/model/template/index.js +0 -0
  128. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/README.md +0 -0
  129. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/index.js +0 -0
  130. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/csrf/README.md +0 -0
  131. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/csrf/package.json +0 -0
  132. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/csrf/src/main.js +0 -0
  133. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/README.md +0 -0
  134. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/coep/README.md +0 -0
  135. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/coep/package.json +0 -0
  136. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  137. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/coop/README.md +0 -0
  138. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/coop/package.json +0 -0
  139. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  140. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/corp/README.md +0 -0
  141. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/corp/package.json +0 -0
  142. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  143. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/csp/README.md +0 -0
  144. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/csp/package.json +0 -0
  145. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  146. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  147. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  148. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  149. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  150. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  151. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  152. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  153. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  154. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  155. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/package.json +0 -0
  156. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  157. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  158. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  159. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/src/main.js +0 -0
  160. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  161. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  162. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  163. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  164. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  165. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  166. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  167. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  168. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  169. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  170. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  171. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  172. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  173. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  174. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  175. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  176. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  177. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  178. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/session/README.md +0 -0
  179. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/session/package.json +0 -0
  180. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/session/src/main.js +0 -0
  181. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/storage/README.md +0 -0
  182. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/storage/build.json +0 -0
  183. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/storage/package.json +0 -0
  184. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/storage/src/main.js +0 -0
  185. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/validator/README.md +0 -0
  186. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/validator/build.json +0 -0
  187. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/validator/package.json +0 -0
  188. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/validator/src/form-validator.js +0 -0
  189. /package/framework/{v0.6.12 → v0.6.13}/core/plugins/lib/validator/src/main.js +0 -0
  190. /package/framework/{v0.6.12 → v0.6.13}/core/server.express.js +0 -0
  191. /package/framework/{v0.6.12 → v0.6.13}/core/server.isaac.js +0 -0
  192. /package/framework/{v0.6.12 → v0.6.13}/core/status.codes +0 -0
  193. /package/framework/{v0.6.12 → v0.6.13}/core/template/_gitignore +0 -0
  194. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/config/app.json +0 -0
  195. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  196. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/config/routing.json +0 -0
  197. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/config/settings.json +0 -0
  198. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  199. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/config/templates.json +0 -0
  200. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  201. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  202. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  203. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  204. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/index.js +0 -0
  205. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle/locales/en.json +0 -0
  206. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  207. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  208. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  209. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  210. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  211. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  212. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  213. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  214. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/readme.md +0 -0
  215. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_public/sw.js +0 -0
  216. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  217. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  218. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  219. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  220. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  221. /package/framework/{v0.6.12 → v0.6.13}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  222. /package/framework/{v0.6.12 → v0.6.13}/core/template/command/gina.bat.tpl +0 -0
  223. /package/framework/{v0.6.12 → v0.6.13}/core/template/command/gina.tpl +0 -0
  224. /package/framework/{v0.6.12 → v0.6.13}/core/template/conf/env.json +0 -0
  225. /package/framework/{v0.6.12 → v0.6.13}/core/template/conf/manifest.json +0 -0
  226. /package/framework/{v0.6.12 → v0.6.13}/core/template/conf/package.json +0 -0
  227. /package/framework/{v0.6.12 → v0.6.13}/core/template/conf/settings.json +0 -0
  228. /package/framework/{v0.6.12 → v0.6.13}/core/template/conf/statics.json +0 -0
  229. /package/framework/{v0.6.12 → v0.6.13}/core/template/conf/templates.json +0 -0
  230. /package/framework/{v0.6.12 → v0.6.13}/core/template/error/client/json/401.json +0 -0
  231. /package/framework/{v0.6.12 → v0.6.13}/core/template/error/client/json/403.json +0 -0
  232. /package/framework/{v0.6.12 → v0.6.13}/core/template/error/client/json/404.json +0 -0
  233. /package/framework/{v0.6.12 → v0.6.13}/core/template/error/server/html/50x.html +0 -0
  234. /package/framework/{v0.6.12 → v0.6.13}/core/template/error/server/json/500.json +0 -0
  235. /package/framework/{v0.6.12 → v0.6.13}/core/template/error/server/json/503.json +0 -0
  236. /package/framework/{v0.6.12 → v0.6.13}/core/template/extensions/logger/config.json +0 -0
  237. /package/framework/{v0.6.12 → v0.6.13}/helpers/console.js +0 -0
  238. /package/framework/{v0.6.12 → v0.6.13}/helpers/context.js +0 -0
  239. /package/framework/{v0.6.12 → v0.6.13}/helpers/data/LICENSE +0 -0
  240. /package/framework/{v0.6.12 → v0.6.13}/helpers/data/README.md +0 -0
  241. /package/framework/{v0.6.12 → v0.6.13}/helpers/data/package.json +0 -0
  242. /package/framework/{v0.6.12 → v0.6.13}/helpers/data/src/main.js +0 -0
  243. /package/framework/{v0.6.12 → v0.6.13}/helpers/dateFormat.js +0 -0
  244. /package/framework/{v0.6.12 → v0.6.13}/helpers/index.js +0 -0
  245. /package/framework/{v0.6.12 → v0.6.13}/helpers/json/LICENSE +0 -0
  246. /package/framework/{v0.6.12 → v0.6.13}/helpers/json/README.md +0 -0
  247. /package/framework/{v0.6.12 → v0.6.13}/helpers/json/package.json +0 -0
  248. /package/framework/{v0.6.12 → v0.6.13}/helpers/json/src/main.js +0 -0
  249. /package/framework/{v0.6.12 → v0.6.13}/helpers/path.js +0 -0
  250. /package/framework/{v0.6.12 → v0.6.13}/helpers/plugins/README.md +0 -0
  251. /package/framework/{v0.6.12 → v0.6.13}/helpers/plugins/package.json +0 -0
  252. /package/framework/{v0.6.12 → v0.6.13}/helpers/plugins/src/api-error.js +0 -0
  253. /package/framework/{v0.6.12 → v0.6.13}/helpers/plugins/src/main.js +0 -0
  254. /package/framework/{v0.6.12 → v0.6.13}/helpers/prototypes.js +0 -0
  255. /package/framework/{v0.6.12 → v0.6.13}/helpers/task.js +0 -0
  256. /package/framework/{v0.6.12 → v0.6.13}/helpers/text.js +0 -0
  257. /package/framework/{v0.6.12 → v0.6.13}/lib/admin/package.json +0 -0
  258. /package/framework/{v0.6.12 → v0.6.13}/lib/admin/src/main.js +0 -0
  259. /package/framework/{v0.6.12 → v0.6.13}/lib/archiver/README.md +0 -0
  260. /package/framework/{v0.6.12 → v0.6.13}/lib/archiver/build.json +0 -0
  261. /package/framework/{v0.6.12 → v0.6.13}/lib/archiver/package.json +0 -0
  262. /package/framework/{v0.6.12 → v0.6.13}/lib/archiver/src/dep/jszip.min.js +0 -0
  263. /package/framework/{v0.6.12 → v0.6.13}/lib/archiver/src/main.js +0 -0
  264. /package/framework/{v0.6.12 → v0.6.13}/lib/async/package.json +0 -0
  265. /package/framework/{v0.6.12 → v0.6.13}/lib/async/src/main.js +0 -0
  266. /package/framework/{v0.6.12 → v0.6.13}/lib/audit/package.json +0 -0
  267. /package/framework/{v0.6.12 → v0.6.13}/lib/audit/src/main.js +0 -0
  268. /package/framework/{v0.6.12 → v0.6.13}/lib/audit-store.js +0 -0
  269. /package/framework/{v0.6.12 → v0.6.13}/lib/authn/package.json +0 -0
  270. /package/framework/{v0.6.12 → v0.6.13}/lib/authn/src/lockout.js +0 -0
  271. /package/framework/{v0.6.12 → v0.6.13}/lib/authn/src/main.js +0 -0
  272. /package/framework/{v0.6.12 → v0.6.13}/lib/authn/src/totp.js +0 -0
  273. /package/framework/{v0.6.12 → v0.6.13}/lib/authz-gate/package.json +0 -0
  274. /package/framework/{v0.6.12 → v0.6.13}/lib/authz-gate/src/main.js +0 -0
  275. /package/framework/{v0.6.12 → v0.6.13}/lib/cache/README.md +0 -0
  276. /package/framework/{v0.6.12 → v0.6.13}/lib/cache/build.json +0 -0
  277. /package/framework/{v0.6.12 → v0.6.13}/lib/cache/package.json +0 -0
  278. /package/framework/{v0.6.12 → v0.6.13}/lib/cache/src/main.js +0 -0
  279. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/aliases.json +0 -0
  280. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/audit/arguments.json +0 -0
  281. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/audit/help.txt +0 -0
  282. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/audit/verify.js +0 -0
  283. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/add.js +0 -0
  284. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/arguments.json +0 -0
  285. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/build.js +0 -0
  286. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/copy.js +0 -0
  287. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/cp.js +0 -0
  288. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/help.js +0 -0
  289. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/help.txt +0 -0
  290. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  291. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/list.js +0 -0
  292. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/man.js +0 -0
  293. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/mcp-start.js +0 -0
  294. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/mcp.js +0 -0
  295. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/oas.js +0 -0
  296. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/openapi.js +0 -0
  297. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/remove.js +0 -0
  298. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/rename.js +0 -0
  299. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/restart.js +0 -0
  300. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/rm.js +0 -0
  301. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/start.js +0 -0
  302. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/status.js +0 -0
  303. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/stop.js +0 -0
  304. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/bundle/types.js +0 -0
  305. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/cache/arguments.json +0 -0
  306. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/cache/clear.js +0 -0
  307. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/cache/help.txt +0 -0
  308. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/cache/stats.js +0 -0
  309. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/add.js +0 -0
  310. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/arguments.json +0 -0
  311. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/help.js +0 -0
  312. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/help.txt +0 -0
  313. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/infer.js +0 -0
  314. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/list.js +0 -0
  315. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/migrate.js +0 -0
  316. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/models.js +0 -0
  317. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/remove.js +0 -0
  318. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/rm.js +0 -0
  319. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/connector/test.js +0 -0
  320. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/container/arguments.json +0 -0
  321. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/container/help.js +0 -0
  322. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/container/help.txt +0 -0
  323. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/container/man.js +0 -0
  324. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/container/ps.js +0 -0
  325. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/container/stop.js +0 -0
  326. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/add.js +0 -0
  327. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/arguments.json +0 -0
  328. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/help.txt +0 -0
  329. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/inc/args.js +0 -0
  330. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/inc/namespace.js +0 -0
  331. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  332. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/inc/reference-scan.js +0 -0
  333. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/inc/scaffold.js +0 -0
  334. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/remove.js +0 -0
  335. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/rename.js +0 -0
  336. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/controller/rm.js +0 -0
  337. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/add.js +0 -0
  338. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/get.js +0 -0
  339. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/help.js +0 -0
  340. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/help.txt +0 -0
  341. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/link-dev.js +0 -0
  342. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/list.js +0 -0
  343. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/remove.js +0 -0
  344. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/rm.js +0 -0
  345. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/set.js +0 -0
  346. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/unset.js +0 -0
  347. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/env/use.js +0 -0
  348. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/add.js +0 -0
  349. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/arguments.json +0 -0
  350. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/build.js +0 -0
  351. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/dot.js +0 -0
  352. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/get.js +0 -0
  353. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/help.js +0 -0
  354. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/help.txt +0 -0
  355. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/init.js +0 -0
  356. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/link-node-modules.js +0 -0
  357. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/link.js +0 -0
  358. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/list.js +0 -0
  359. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/man.js +0 -0
  360. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/msg.json +0 -0
  361. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/open.js +0 -0
  362. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/remove.js +0 -0
  363. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/reset.js +0 -0
  364. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/restart.js +0 -0
  365. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/set.js +0 -0
  366. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/start.js +0 -0
  367. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/status.js +0 -0
  368. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/stop.js +0 -0
  369. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/tail.js +0 -0
  370. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/update.js +0 -0
  371. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/framework/version.js +0 -0
  372. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/gina-dev.1.md +0 -0
  373. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/gina-framework.1.md +0 -0
  374. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/gina.1.md +0 -0
  375. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/helper.js +0 -0
  376. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/i18n/add.js +0 -0
  377. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/i18n/arguments.json +0 -0
  378. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/i18n/export.js +0 -0
  379. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/i18n/help.js +0 -0
  380. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/i18n/help.txt +0 -0
  381. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/i18n/import.js +0 -0
  382. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/i18n/scan.js +0 -0
  383. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/_host.js +0 -0
  384. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/arguments.json +0 -0
  385. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/build.js +0 -0
  386. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/help.js +0 -0
  387. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/help.txt +0 -0
  388. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/list.js +0 -0
  389. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/man.js +0 -0
  390. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/rm.js +0 -0
  391. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/image/run.js +0 -0
  392. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/index.js +0 -0
  393. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/inspector/help.js +0 -0
  394. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/inspector/help.txt +0 -0
  395. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/inspector/open.js +0 -0
  396. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/man-render.js +0 -0
  397. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/minion/arguments.json +0 -0
  398. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/minion/help.js +0 -0
  399. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/minion/help.txt +0 -0
  400. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/minion/kill.js +0 -0
  401. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/minion/list.js +0 -0
  402. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/msg.json +0 -0
  403. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/port/help.js +0 -0
  404. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/port/help.txt +0 -0
  405. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/port/inc/scan.js +0 -0
  406. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/port/list.js +0 -0
  407. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/port/reset.js +0 -0
  408. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/port/set.js +0 -0
  409. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/add.js +0 -0
  410. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/arguments.json +0 -0
  411. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/backup.js +0 -0
  412. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/build.js +0 -0
  413. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/help.js +0 -0
  414. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/help.txt +0 -0
  415. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/import.js +0 -0
  416. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/list.js +0 -0
  417. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/man.js +0 -0
  418. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/move.js +0 -0
  419. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/remove.js +0 -0
  420. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/rename.js +0 -0
  421. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/restart.js +0 -0
  422. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/restore.js +0 -0
  423. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/rm.js +0 -0
  424. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/start.js +0 -0
  425. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/status.js +0 -0
  426. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/project/stop.js +0 -0
  427. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/protocol/arguments.json +0 -0
  428. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/protocol/help.js +0 -0
  429. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/protocol/help.txt +0 -0
  430. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/protocol/list.js +0 -0
  431. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/protocol/remove.js +0 -0
  432. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/protocol/set.js +0 -0
  433. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/add.js +0 -0
  434. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/help.js +0 -0
  435. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/help.txt +0 -0
  436. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/link-local.js +0 -0
  437. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/link-production.js +0 -0
  438. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/list.js +0 -0
  439. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/remove.js +0 -0
  440. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/rm.js +0 -0
  441. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/scope/use.js +0 -0
  442. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/secrets/arguments.json +0 -0
  443. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/secrets/check.js +0 -0
  444. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/secrets/help.js +0 -0
  445. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/secrets/help.txt +0 -0
  446. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/secrets/scan.js +0 -0
  447. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/service/help.js +0 -0
  448. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/service/list.js +0 -0
  449. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/service/man.js +0 -0
  450. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/storage/arguments.json +0 -0
  451. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/storage/gc.js +0 -0
  452. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/storage/help.txt +0 -0
  453. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/storage/stats.js +0 -0
  454. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/storage/verify.js +0 -0
  455. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd/view/add.js +0 -0
  456. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd-status-format/package.json +0 -0
  457. /package/framework/{v0.6.12 → v0.6.13}/lib/cmd-status-format/src/main.js +0 -0
  458. /package/framework/{v0.6.12 → v0.6.13}/lib/collection/README.md +0 -0
  459. /package/framework/{v0.6.12 → v0.6.13}/lib/collection/build.json +0 -0
  460. /package/framework/{v0.6.12 → v0.6.13}/lib/collection/package.json +0 -0
  461. /package/framework/{v0.6.12 → v0.6.13}/lib/collection/src/main.js +0 -0
  462. /package/framework/{v0.6.12 → v0.6.13}/lib/config.js +0 -0
  463. /package/framework/{v0.6.12 → v0.6.13}/lib/connector-config/package.json +0 -0
  464. /package/framework/{v0.6.12 → v0.6.13}/lib/connector-config/src/main.js +0 -0
  465. /package/framework/{v0.6.12 → v0.6.13}/lib/connector-error/package.json +0 -0
  466. /package/framework/{v0.6.12 → v0.6.13}/lib/connector-error/src/main.js +0 -0
  467. /package/framework/{v0.6.12 → v0.6.13}/lib/connector-registry/package.json +0 -0
  468. /package/framework/{v0.6.12 → v0.6.13}/lib/connector-registry/src/main.js +0 -0
  469. /package/framework/{v0.6.12 → v0.6.13}/lib/cron/README.md +0 -0
  470. /package/framework/{v0.6.12 → v0.6.13}/lib/cron/package.json +0 -0
  471. /package/framework/{v0.6.12 → v0.6.13}/lib/cron/src/main.js +0 -0
  472. /package/framework/{v0.6.12 → v0.6.13}/lib/domain/LICENSE +0 -0
  473. /package/framework/{v0.6.12 → v0.6.13}/lib/domain/README.md +0 -0
  474. /package/framework/{v0.6.12 → v0.6.13}/lib/domain/package.json +0 -0
  475. /package/framework/{v0.6.12 → v0.6.13}/lib/domain/src/main.js +0 -0
  476. /package/framework/{v0.6.12 → v0.6.13}/lib/dto/package.json +0 -0
  477. /package/framework/{v0.6.12 → v0.6.13}/lib/dto/src/main.js +0 -0
  478. /package/framework/{v0.6.12 → v0.6.13}/lib/dto-pipe/package.json +0 -0
  479. /package/framework/{v0.6.12 → v0.6.13}/lib/dto-pipe/src/main.js +0 -0
  480. /package/framework/{v0.6.12 → v0.6.13}/lib/dto-types/package.json +0 -0
  481. /package/framework/{v0.6.12 → v0.6.13}/lib/dto-types/src/main.js +0 -0
  482. /package/framework/{v0.6.12 → v0.6.13}/lib/generator/index.js +0 -0
  483. /package/framework/{v0.6.12 → v0.6.13}/lib/i18n/package.json +0 -0
  484. /package/framework/{v0.6.12 → v0.6.13}/lib/i18n/src/main.js +0 -0
  485. /package/framework/{v0.6.12 → v0.6.13}/lib/image-build/package.json +0 -0
  486. /package/framework/{v0.6.12 → v0.6.13}/lib/image-build/src/main.js +0 -0
  487. /package/framework/{v0.6.12 → v0.6.13}/lib/inherits/LICENSE +0 -0
  488. /package/framework/{v0.6.12 → v0.6.13}/lib/inherits/README.md +0 -0
  489. /package/framework/{v0.6.12 → v0.6.13}/lib/inherits/package.json +0 -0
  490. /package/framework/{v0.6.12 → v0.6.13}/lib/inherits/src/main.js +0 -0
  491. /package/framework/{v0.6.12 → v0.6.13}/lib/inspector-events/package.json +0 -0
  492. /package/framework/{v0.6.12 → v0.6.13}/lib/inspector-events/src/main.js +0 -0
  493. /package/framework/{v0.6.12 → v0.6.13}/lib/inspector-redact/package.json +0 -0
  494. /package/framework/{v0.6.12 → v0.6.13}/lib/inspector-redact/src/main.js +0 -0
  495. /package/framework/{v0.6.12 → v0.6.13}/lib/instrument/package.json +0 -0
  496. /package/framework/{v0.6.12 → v0.6.13}/lib/instrument/src/main.js +0 -0
  497. /package/framework/{v0.6.12 → v0.6.13}/lib/job/package.json +0 -0
  498. /package/framework/{v0.6.12 → v0.6.13}/lib/job/src/main.js +0 -0
  499. /package/framework/{v0.6.12 → v0.6.13}/lib/job-store.js +0 -0
  500. /package/framework/{v0.6.12 → v0.6.13}/lib/json-config-header/package.json +0 -0
  501. /package/framework/{v0.6.12 → v0.6.13}/lib/json-config-header/src/main.js +0 -0
  502. /package/framework/{v0.6.12 → v0.6.13}/lib/loading-state/package.json +0 -0
  503. /package/framework/{v0.6.12 → v0.6.13}/lib/loading-state/src/main.js +0 -0
  504. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/README.md +0 -0
  505. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/package.json +0 -0
  506. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/containers/default/index.js +0 -0
  507. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/containers/file/index.js +0 -0
  508. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  509. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  510. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/containers/mq/index.js +0 -0
  511. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/containers/mq/listener.js +0 -0
  512. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/containers/mq/speaker.js +0 -0
  513. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/helper.js +0 -0
  514. /package/framework/{v0.6.12 → v0.6.13}/lib/logger/src/main.js +0 -0
  515. /package/framework/{v0.6.12 → v0.6.13}/lib/maintenance/package.json +0 -0
  516. /package/framework/{v0.6.12 → v0.6.13}/lib/maintenance/src/main.js +0 -0
  517. /package/framework/{v0.6.12 → v0.6.13}/lib/math/index.js +0 -0
  518. /package/framework/{v0.6.12 → v0.6.13}/lib/mcp-dispatch/package.json +0 -0
  519. /package/framework/{v0.6.12 → v0.6.13}/lib/mcp-dispatch/src/main.js +0 -0
  520. /package/framework/{v0.6.12 → v0.6.13}/lib/mcp-http/package.json +0 -0
  521. /package/framework/{v0.6.12 → v0.6.13}/lib/mcp-http/src/main.js +0 -0
  522. /package/framework/{v0.6.12 → v0.6.13}/lib/mcp-server/package.json +0 -0
  523. /package/framework/{v0.6.12 → v0.6.13}/lib/mcp-server/src/main.js +0 -0
  524. /package/framework/{v0.6.12 → v0.6.13}/lib/merge/README.md +0 -0
  525. /package/framework/{v0.6.12 → v0.6.13}/lib/merge/package.json +0 -0
  526. /package/framework/{v0.6.12 → v0.6.13}/lib/merge/src/main.js +0 -0
  527. /package/framework/{v0.6.12 → v0.6.13}/lib/metrics/package.json +0 -0
  528. /package/framework/{v0.6.12 → v0.6.13}/lib/metrics/src/main.js +0 -0
  529. /package/framework/{v0.6.12 → v0.6.13}/lib/model.js +0 -0
  530. /package/framework/{v0.6.12 → v0.6.13}/lib/net-locality/package.json +0 -0
  531. /package/framework/{v0.6.12 → v0.6.13}/lib/net-locality/src/main.js +0 -0
  532. /package/framework/{v0.6.12 → v0.6.13}/lib/nunjucks-filters/README.md +0 -0
  533. /package/framework/{v0.6.12 → v0.6.13}/lib/nunjucks-filters/package.json +0 -0
  534. /package/framework/{v0.6.12 → v0.6.13}/lib/nunjucks-filters/src/main.js +0 -0
  535. /package/framework/{v0.6.12 → v0.6.13}/lib/nunjucks-resolver/package.json +0 -0
  536. /package/framework/{v0.6.12 → v0.6.13}/lib/nunjucks-resolver/src/main.js +0 -0
  537. /package/framework/{v0.6.12 → v0.6.13}/lib/proc.js +0 -0
  538. /package/framework/{v0.6.12 → v0.6.13}/lib/push/package.json +0 -0
  539. /package/framework/{v0.6.12 → v0.6.13}/lib/push/src/main.js +0 -0
  540. /package/framework/{v0.6.12 → v0.6.13}/lib/release-watch/package.json +0 -0
  541. /package/framework/{v0.6.12 → v0.6.13}/lib/release-watch/src/main.js +0 -0
  542. /package/framework/{v0.6.12 → v0.6.13}/lib/render-cache/package.json +0 -0
  543. /package/framework/{v0.6.12 → v0.6.13}/lib/render-cache/src/main.js +0 -0
  544. /package/framework/{v0.6.12 → v0.6.13}/lib/render-cache-store.js +0 -0
  545. /package/framework/{v0.6.12 → v0.6.13}/lib/routing/README.md +0 -0
  546. /package/framework/{v0.6.12 → v0.6.13}/lib/routing/build.json +0 -0
  547. /package/framework/{v0.6.12 → v0.6.13}/lib/routing/package.json +0 -0
  548. /package/framework/{v0.6.12 → v0.6.13}/lib/routing/src/radix.js +0 -0
  549. /package/framework/{v0.6.12 → v0.6.13}/lib/routing-introspect/package.json +0 -0
  550. /package/framework/{v0.6.12 → v0.6.13}/lib/routing-introspect/src/main.js +0 -0
  551. /package/framework/{v0.6.12 → v0.6.13}/lib/secrets/package.json +0 -0
  552. /package/framework/{v0.6.12 → v0.6.13}/lib/secrets/src/backends/env.js +0 -0
  553. /package/framework/{v0.6.12 → v0.6.13}/lib/secrets/src/backends/file.js +0 -0
  554. /package/framework/{v0.6.12 → v0.6.13}/lib/secrets/src/env-file.js +0 -0
  555. /package/framework/{v0.6.12 → v0.6.13}/lib/secrets/src/main.js +0 -0
  556. /package/framework/{v0.6.12 → v0.6.13}/lib/session-store.js +0 -0
  557. /package/framework/{v0.6.12 → v0.6.13}/lib/shell.js +0 -0
  558. /package/framework/{v0.6.12 → v0.6.13}/lib/sqlite-driver.js +0 -0
  559. /package/framework/{v0.6.12 → v0.6.13}/lib/state.js +0 -0
  560. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/package.json +0 -0
  561. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/src/local-cas.js +0 -0
  562. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/src/local-stream.js +0 -0
  563. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/src/local.js +0 -0
  564. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/src/main.js +0 -0
  565. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/src/meta-store.js +0 -0
  566. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/src/s3.js +0 -0
  567. /package/framework/{v0.6.12 → v0.6.13}/lib/storage/src/util.js +0 -0
  568. /package/framework/{v0.6.12 → v0.6.13}/lib/storage-store.js +0 -0
  569. /package/framework/{v0.6.12 → v0.6.13}/lib/swig-filters/README.md +0 -0
  570. /package/framework/{v0.6.12 → v0.6.13}/lib/swig-filters/package.json +0 -0
  571. /package/framework/{v0.6.12 → v0.6.13}/lib/swig-filters/src/main.js +0 -0
  572. /package/framework/{v0.6.12 → v0.6.13}/lib/swig-resolver/package.json +0 -0
  573. /package/framework/{v0.6.12 → v0.6.13}/lib/swig-resolver/src/main.js +0 -0
  574. /package/framework/{v0.6.12 → v0.6.13}/lib/template-loaders/package.json +0 -0
  575. /package/framework/{v0.6.12 → v0.6.13}/lib/template-loaders/src/loaders/http.js +0 -0
  576. /package/framework/{v0.6.12 → v0.6.13}/lib/template-loaders/src/loaders/memory.js +0 -0
  577. /package/framework/{v0.6.12 → v0.6.13}/lib/template-loaders/src/main.js +0 -0
  578. /package/framework/{v0.6.12 → v0.6.13}/lib/url/README.md +0 -0
  579. /package/framework/{v0.6.12 → v0.6.13}/lib/url/index.js +0 -0
  580. /package/framework/{v0.6.12 → v0.6.13}/lib/url/routing.json +0 -0
  581. /package/framework/{v0.6.12 → v0.6.13}/lib/uuid/package.json +0 -0
  582. /package/framework/{v0.6.12 → v0.6.13}/lib/uuid/src/main.js +0 -0
  583. /package/framework/{v0.6.12 → v0.6.13}/lib/validator.js +0 -0
  584. /package/framework/{v0.6.12 → v0.6.13}/lib/watcher/package.json +0 -0
  585. /package/framework/{v0.6.12 → v0.6.13}/lib/watcher/src/main.js +0 -0
  586. /package/framework/{v0.6.12 → v0.6.13}/lib/ws-framing/package.json +0 -0
  587. /package/framework/{v0.6.12 → v0.6.13}/lib/ws-framing/src/main.js +0 -0
  588. /package/framework/{v0.6.12 → v0.6.13}/lib/ws-query/package.json +0 -0
  589. /package/framework/{v0.6.12 → v0.6.13}/lib/ws-query/src/main.js +0 -0
  590. /package/framework/{v0.6.12 → v0.6.13}/lib/ws-session/package.json +0 -0
  591. /package/framework/{v0.6.12 → v0.6.13}/lib/ws-session/src/main.js +0 -0
@@ -3086,6 +3086,32 @@ function Config(opt, contextResetNeeded) {
3086
3086
  conf[bundle][env].server.cache = merge(conf[bundle][env].server.cache, conf[bundle][env].content.settings.cache);
3087
3087
  }
3088
3088
 
3089
+ // #MS5 — fold settings.json's `server.query` block (circuit-breaker policy)
3090
+ // into `server.query`, with the same fill semantics as the #B114 cache fold
3091
+ // above: env.json's `server.query` keys WIN, settings.json fills what
3092
+ // env.json lacks. Without this fold the documented settings surface would
3093
+ // be inert — `server.*` is otherwise env.json-derived (see the sibling
3094
+ // per-key copies above).
3095
+ if ( conf[bundle][env].content.settings && conf[bundle][env].content.settings.server && conf[bundle][env].content.settings.server.query ) {
3096
+ if ( typeof(conf[bundle][env].server.query) == 'undefined' ) {
3097
+ conf[bundle][env].server.query = {};
3098
+ }
3099
+ conf[bundle][env].server.query = merge(conf[bundle][env].server.query, conf[bundle][env].content.settings.server.query);
3100
+ }
3101
+
3102
+ // #MS6 — fold settings.json's `server.rateLimit` block (identified-caller
3103
+ // quota policy) into `server.rateLimit`, with the same fill semantics as
3104
+ // the #MS5 query fold above: env.json's `server.rateLimit` keys WIN,
3105
+ // settings.json fills what env.json lacks. Without this fold the
3106
+ // documented settings surface would be inert — `server.*` is otherwise
3107
+ // env.json-derived.
3108
+ if ( conf[bundle][env].content.settings && conf[bundle][env].content.settings.server && conf[bundle][env].content.settings.server.rateLimit ) {
3109
+ if ( typeof(conf[bundle][env].server.rateLimit) == 'undefined' ) {
3110
+ conf[bundle][env].server.rateLimit = {};
3111
+ }
3112
+ conf[bundle][env].server.rateLimit = merge(conf[bundle][env].server.rateLimit, conf[bundle][env].content.settings.server.rateLimit);
3113
+ }
3114
+
3089
3115
  conf[bundle][env].hostname = scheme + '://' + conf[bundle][env].host + ':' + conf[bundle][env].server.port;
3090
3116
 
3091
3117
  // if ( /^true$/i.test( getContext('isProxyHost') ) ) {
@@ -0,0 +1,62 @@
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 — a STORE BACKEND only: no entity/ORM wiring.
12
+ *
13
+ * Redis is deliberately not a general data path here. It backs four named
14
+ * subsystems, each of which owns its own client:
15
+ * - a session store backend via `lib.SessionStore`
16
+ * (see: core/connectors/redis/lib/session-store.js),
17
+ * - an async-job store backend via `app.json`'s `jobs.store`
18
+ * (see: core/connectors/redis/lib/job-store.js),
19
+ * - the shared L2 tier of the render/output cache, behind
20
+ * `lib/render-cache`'s `redis` strategy — the tier that lets several
21
+ * replicas serve the same rendered page without each re-rendering it
22
+ * (see: core/connectors/redis/lib/render-cache-store.js), or
23
+ * - a KV namespace backend for the general-purpose key-value primitive
24
+ * (#KV1), one client per namespace — the newest of the four
25
+ * (see: core/connectors/redis/lib/kv-store.js).
26
+ *
27
+ * To configure:
28
+ * 1. Add a `redis` entry to `config/connectors.json` in your bundle.
29
+ * 2. Install ioredis in your project: `npm install ioredis`
30
+ * 3. Wire the store: session store in `bundle/index.js`; job store via
31
+ * `app.json` `{ "jobs": { "store": "<entry name>" } }`; render-cache L2
32
+ * via `settings.json` `{ "server": { "cache": { "type": "redis",
33
+ * "store": "<entry name>" } } }`; a KV namespace via `settings.json`
34
+ * `{ "kv": { "namespaces": { "<name>": { "store": "<entry name>" } } } }`.
35
+ *
36
+ * The boot-time model scan is satisfied by the no-op `lib/connector.js`
37
+ * (no connection is opened at boot — each store owns its client).
38
+ * No entity/ORM wiring is currently planned — the store-backend split is
39
+ * the design, not a stopgap. A general-purpose KV facade exists since #KV1
40
+ * (`lib/kv`, `settings.json > kv`, reached as `gina.kv('<namespace>')`) with
41
+ * per-NAMESPACE failure policy, precisely because the right client policy
42
+ * (timeouts, offline queueing, fail-open vs fail-closed) differs per use —
43
+ * the stores above demonstrate exactly that divergence, which is why the KV
44
+ * facade puts `failMode` on the NAMESPACE and leaves the ioredis connection
45
+ * policy to the `connectors.json` entry. NON-KV redis use (data structures,
46
+ * pub/sub, third-party queue libraries) stays app-owned by design: those are
47
+ * outside the KV contract, and an app needing them mints its own client.
48
+ *
49
+ * Because there is no entity path, redis operations do NOT appear in the
50
+ * Inspector's query log: its dev-mode capture hangs off the entity query
51
+ * path, which this connector deliberately does not implement. A render-cache
52
+ * L2 hit is observable per response via the RFC 9211 `Cache-Status` header,
53
+ * not in the Inspector.
54
+ *
55
+ * @class Redis
56
+ * @constructor
57
+ */
58
+ var Redis = function Redis() {
59
+ // no entity wiring — a store backend only (sessions, jobs, render-cache L2)
60
+ };
61
+
62
+ module.exports = Redis;
@@ -0,0 +1,394 @@
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/kv-store
12
+ * @description Redis backend for the general-purpose KV primitive (#KV1,
13
+ * slice 1) — the first connector to implement `lib/kv`'s `KvStoreContract`.
14
+ * Backed by the `ioredis` driver, resolved at construction time (byte-parity
15
+ * with the redis session/job/render-cache stores).
16
+ *
17
+ * Reached by declaring the backend in `config/connectors.json` and pointing
18
+ * `settings.json`'s `kv.namespaces.<name>.store` at that entry; `gna.js`
19
+ * builds it at boot through `lib/kv-store`. Never construct it directly.
20
+ *
21
+ * **Every value crossing this seam is an opaque STRING** — `lib/kv` owns JSON
22
+ * serialization, so this module never parses a payload. One consequence is
23
+ * load-bearing and deliberate: the facade stores an integer as its JSON form
24
+ * (`5` → `"5"`), which is exactly what redis `INCRBY` operates on, so counters
25
+ * work natively; a string value is stored QUOTED (`"text"` → `"\"text\""`),
26
+ * so `INCRBY` refuses it — the same refusal the in-memory backend makes, by a
27
+ * different mechanism.
28
+ *
29
+ * **Three verbs need Lua**, because redis has no single command with the
30
+ * contract's semantics (`client.eval`; there was no EVAL precedent in the
31
+ * framework before this store):
32
+ * - `consume` — atomic read-AND-delete. `GETDEL` (redis >= 6.2) is used when
33
+ * available and the Lua script is the pre-6.2 fallback, NOT a `GET`+`DEL`
34
+ * pair: a pair lets two concurrent readers both succeed, which is the one
35
+ * thing the op exists to prevent. The capability is probed ONCE, lazily,
36
+ * on the first `consume()` and remembered.
37
+ * - `incrby` — the contract applies a TTL on CREATE only. Redis `INCRBY`
38
+ * creates without one and `n === by` is a racy proxy for "was created"
39
+ * (an expiry between commands defeats it), so existence is checked and the
40
+ * `PEXPIRE` applied inside one script.
41
+ * - `compareDel` — delete-iff-equal. A `GET` then `DEL` is the classic unsafe
42
+ * lock release: the value can change between the two.
43
+ *
44
+ * **Cluster prefixes are NOT hash-tagged by default — a deliberate divergence
45
+ * from the redis job store**, which fails fast without a tag. Every KV op here
46
+ * is SINGLE-key, so keys may spread across slots freely; tagging a namespace
47
+ * would pin it to one node and forfeit exactly the spread a cluster is for.
48
+ * The only multi-key verb, `clear()`, therefore scans each master node rather
49
+ * than assuming one slot. A tagged prefix is still accepted (it just localises
50
+ * the namespace).
51
+ *
52
+ * **Connection policy is the operator's, per connectors entry** — this store
53
+ * passes `commandTimeout`, `maxRetriesPerRequest` and `enableOfflineQueue`
54
+ * through and otherwise keeps ioredis's defaults, rather than imposing the
55
+ * render-cache's fail-fast tuning on every namespace. A namespace running
56
+ * `failMode: "open"` (cache-like) wants the fail-fast trio set so a degrade is
57
+ * immediate; a `failMode: "closed"` namespace (tokens, counters) usually wants
58
+ * the default offline queue, so a reconnect blip waits rather than rejecting.
59
+ *
60
+ * @example
61
+ * // connectors.json: { "kvRedis": { "connector": "redis",
62
+ * // "host": "127.0.0.1", "port": 6379 } }
63
+ * // settings.json: { "kv": { "namespaces": { "tokens": { "store": "kvRedis" } } } }
64
+ * // (wired automatically at boot by gna.js via lib/kv-store)
65
+ */
66
+
67
+ /**
68
+ * Atomic read-and-delete, for servers without `GETDEL` (redis < 6.2).
69
+ * @constant
70
+ * @inner
71
+ * @type {string}
72
+ */
73
+ var LUA_CONSUME = "local v = redis.call('GET', KEYS[1]) "
74
+ + "if v then redis.call('DEL', KEYS[1]) end "
75
+ + "return v";
76
+
77
+ /**
78
+ * Increment, applying the TTL only when the counter did not previously exist.
79
+ * ARGV[1] = delta, ARGV[2] = TTL in ms or '' for none.
80
+ * @constant
81
+ * @inner
82
+ * @type {string}
83
+ */
84
+ var LUA_INCR_TTL = "local existed = redis.call('EXISTS', KEYS[1]) "
85
+ + "local n = redis.call('INCRBY', KEYS[1], ARGV[1]) "
86
+ + "if existed == 0 and ARGV[2] ~= '' then redis.call('PEXPIRE', KEYS[1], ARGV[2]) end "
87
+ + "return n";
88
+
89
+ /**
90
+ * Delete iff the stored value strictly equals ARGV[1].
91
+ * @constant
92
+ * @inner
93
+ * @type {string}
94
+ */
95
+ var LUA_COMPARE_DEL = "if redis.call('GET', KEYS[1]) == ARGV[1] then "
96
+ + "return redis.call('DEL', KEYS[1]) else return 0 end";
97
+
98
+ /**
99
+ * Keys deleted per round while draining a `clear()` scan.
100
+ * @constant
101
+ * @inner
102
+ * @type {number}
103
+ */
104
+ var CLEAR_BATCH = 256;
105
+
106
+ /**
107
+ * Build the redis KV backend for one namespace.
108
+ *
109
+ * @class RedisKvStore
110
+ * @constructor
111
+ *
112
+ * @param {object} connConf - Resolved `connectors.json` entry.
113
+ * @param {string} [connConf.host='127.0.0.1'] - Host (standalone mode).
114
+ * @param {number} [connConf.port=6379] - Port (standalone mode).
115
+ * @param {number} [connConf.db=0] - DB index (standalone mode).
116
+ * @param {string} [connConf.password] - `AUTH` password.
117
+ * @param {boolean} [connConf.tls] - Enable TLS with default options.
118
+ * @param {Array} [connConf.cluster] - `{host, port}` nodes; presence selects cluster mode.
119
+ * @param {string} [connConf.prefix] - Key prefix. Default `kv:<namespace>:`; two
120
+ * namespaces sharing one entry never collide.
121
+ * @param {number} [connConf.commandTimeout] - Per-command reply deadline in ms (ioredis default when unset).
122
+ * @param {number} [connConf.maxRetriesPerRequest] - Per-command retry cap (ioredis default when unset).
123
+ * @param {boolean} [connConf.enableOfflineQueue] - Queue commands while reconnecting (ioredis default `true`).
124
+ * @param {string} bundle - Bundle name, for error attribution.
125
+ * @param {string} namespaceName - KV namespace this store backs (prefix default).
126
+ * @param {object} [injected] - Test seam. `injected.driver` replaces `ioredis`.
127
+ * @returns {object} - A `KvStoreContract` instance (see `lib/kv`).
128
+ * @throws {Error} - When ioredis is not installed.
129
+ */
130
+ module.exports = function RedisKvStore(connConf, bundle, namespaceName, injected) {
131
+ connConf = connConf || {};
132
+
133
+ // Resolve the ioredis driver: bare require first (session/job/render-cache
134
+ // store parity), then the project's node_modules. The injected branch is
135
+ // test-only; the fallback branch is the only place the injected `_` /
136
+ // `getPath` globals are read, so tests stay standalone.
137
+ var Redis;
138
+ if (injected && injected.driver) {
139
+ Redis = injected.driver;
140
+ } else {
141
+ try {
142
+ Redis = require('ioredis');
143
+ } catch (bareErr) {
144
+ try {
145
+ var driverPath = _(getPath('project') + '/node_modules/ioredis', true);
146
+ Redis = require(driverPath);
147
+ } catch (projectErr) {
148
+ throw new Error(
149
+ '[RedisKvStore] ioredis is not installed. '
150
+ + 'Run `npm install ioredis` in your project.\n'
151
+ + bareErr.message
152
+ );
153
+ }
154
+ }
155
+ }
156
+
157
+ var isCluster = Array.isArray(connConf.cluster) && connConf.cluster.length > 0;
158
+
159
+ // Namespace-scoped by default, so two namespaces may share one entry.
160
+ // NOT hash-tagged in cluster mode (see the module header): every op below
161
+ // is single-key, and tagging would pin the namespace to one slot.
162
+ var prefix = (typeof connConf.prefix === 'string' && connConf.prefix.length > 0)
163
+ ? connConf.prefix
164
+ : 'kv:' + namespaceName + ':';
165
+
166
+ /**
167
+ * Optional connection-policy pass-throughs. Absent keys keep ioredis's
168
+ * own defaults — this store imposes none, because the right policy is
169
+ * per-namespace (see the module header).
170
+ * @inner
171
+ * @param {object} target - Options object to populate.
172
+ * @returns {object} The same object.
173
+ */
174
+ var applyPolicy = function (target) {
175
+ if (typeof connConf.commandTimeout === 'number' && connConf.commandTimeout > 0) {
176
+ target.commandTimeout = connConf.commandTimeout;
177
+ }
178
+ if (typeof connConf.maxRetriesPerRequest === 'number') {
179
+ target.maxRetriesPerRequest = connConf.maxRetriesPerRequest;
180
+ }
181
+ return target;
182
+ };
183
+
184
+ var client;
185
+ if (isCluster) {
186
+ var clusterRedisOpts = applyPolicy({});
187
+ if (connConf.password) clusterRedisOpts.password = connConf.password;
188
+ if (connConf.tls) clusterRedisOpts.tls = {};
189
+ var clusterOpts = { redisOptions: clusterRedisOpts };
190
+ // enableOfflineQueue is a TOP-LEVEL ClusterOptions gate — ioredis
191
+ // Omits it from redisOptions, so a per-node value is ignored (the
192
+ // render-cache store learnt this the hard way).
193
+ if (connConf.enableOfflineQueue === false) { clusterOpts.enableOfflineQueue = false; }
194
+ client = new Redis.Cluster(connConf.cluster, clusterOpts);
195
+ } else {
196
+ var clientConf = applyPolicy({
197
+ host : connConf.host || '127.0.0.1',
198
+ port : +(connConf.port || 6379),
199
+ db : +(connConf.db || 0)
200
+ });
201
+ if (connConf.password) clientConf.password = connConf.password;
202
+ if (connConf.tls) clientConf.tls = {};
203
+ if (connConf.enableOfflineQueue === false) { clientConf.enableOfflineQueue = false; }
204
+ client = new Redis(clientConf);
205
+ }
206
+
207
+ // An 'error' event with no listener would crash the process (EventEmitter
208
+ // semantics). Log it; each op surfaces its own driver error through its
209
+ // rejected promise, which lib/kv routes through the namespace failMode.
210
+ client.on('error', function (err) {
211
+ console.error('[RedisKvStore] ' + ((err && err.message) || err)
212
+ + ' (bundle: ' + bundle + ', namespace: ' + namespaceName + ')');
213
+ });
214
+
215
+ /**
216
+ * Prefixed key for a caller key.
217
+ * @inner
218
+ * @param {string} key - Caller key.
219
+ * @returns {string} The physical redis key.
220
+ */
221
+ var k = function (key) { return prefix + key; };
222
+
223
+ /**
224
+ * `GETDEL` support, probed once on first use. `null` until probed.
225
+ * @inner
226
+ * @type {?boolean}
227
+ */
228
+ var hasGetDel = null;
229
+
230
+ /**
231
+ * Whether a driver error means "this server does not know that command".
232
+ * @inner
233
+ * @param {Error} err - Driver error.
234
+ * @returns {boolean} `true` when the command is unknown/unsupported.
235
+ */
236
+ var isUnknownCommand = function (err) {
237
+ var msg = (err && err.message) || '';
238
+ return /unknown command/i.test(msg) || /wrong number of arguments/i.test(msg);
239
+ };
240
+
241
+ /**
242
+ * Normalise redis's non-integer INCRBY refusal to the facade's wording, so
243
+ * the message a caller sees does not depend on which backend answered.
244
+ * @inner
245
+ * @param {Error} err - Driver error.
246
+ * @param {string} key - Caller key, for the message.
247
+ * @returns {Error} The error to reject with.
248
+ */
249
+ var normaliseIncrErr = function (err, key) {
250
+ var msg = (err && err.message) || '';
251
+ if (/not an integer|out of range/i.test(msg)) {
252
+ return new Error('[kv] value at key `' + key + '` is not an integer — incr/decr need an integer value');
253
+ }
254
+ return err;
255
+ };
256
+
257
+ /**
258
+ * Every master node backing this store — the scan surface for `clear()`.
259
+ * One entry in standalone mode; each master in cluster mode.
260
+ * @inner
261
+ * @returns {Array<object>} Node clients.
262
+ */
263
+ var scanNodes = function () {
264
+ if (isCluster && typeof client.nodes === 'function') {
265
+ return client.nodes('master');
266
+ }
267
+ return [client];
268
+ };
269
+
270
+ return {
271
+ get: function (key) {
272
+ return client.get(k(key));
273
+ },
274
+
275
+ set: function (key, s, ttlMs) {
276
+ if (ttlMs) {
277
+ return client.set(k(key), s, 'PX', ttlMs).then(function () { return undefined; });
278
+ }
279
+ return client.set(k(key), s).then(function () { return undefined; });
280
+ },
281
+
282
+ del: function (key) {
283
+ return client.del(k(key)).then(function (n) { return +n > 0; });
284
+ },
285
+
286
+ has: function (key) {
287
+ return client.exists(k(key)).then(function (n) { return +n > 0; });
288
+ },
289
+
290
+ pttl: function (key) {
291
+ // redis: -2 = no such key, -1 = no expiry. The contract wants
292
+ // null for a miss and keeps -1 for "no expiry".
293
+ return client.pttl(k(key)).then(function (ms) {
294
+ var n = +ms;
295
+ if (n === -2) { return null; }
296
+ return n;
297
+ });
298
+ },
299
+
300
+ pexpire: function (key, ttlMs) {
301
+ return client.pexpire(k(key), ttlMs).then(function (n) { return +n === 1; });
302
+ },
303
+
304
+ setnx: function (key, s, ttlMs) {
305
+ var args = ttlMs ? [k(key), s, 'PX', ttlMs, 'NX'] : [k(key), s, 'NX'];
306
+ // SET ... NX resolves null when the key already existed.
307
+ return client.set.apply(client, args).then(function (res) { return res !== null; });
308
+ },
309
+
310
+ consume: function (key) {
311
+ var physical = k(key);
312
+ var viaLua = function () {
313
+ return client.eval(LUA_CONSUME, 1, physical).then(function (v) {
314
+ return (typeof v === 'undefined' || v === null) ? null : v;
315
+ });
316
+ };
317
+ if (hasGetDel === false) { return viaLua(); }
318
+ if (typeof client.getdel !== 'function') {
319
+ hasGetDel = false;
320
+ return viaLua();
321
+ }
322
+ return client.getdel(physical).then(function (v) {
323
+ hasGetDel = true;
324
+ return (typeof v === 'undefined' || v === null) ? null : v;
325
+ }).catch(function (err) {
326
+ if (isUnknownCommand(err)) {
327
+ // redis < 6.2 — remember, and never probe again.
328
+ hasGetDel = false;
329
+ return viaLua();
330
+ }
331
+ throw err;
332
+ });
333
+ },
334
+
335
+ incrby: function (key, by, ttlMs) {
336
+ return client.eval(LUA_INCR_TTL, 1, k(key), String(by), ttlMs ? String(ttlMs) : '')
337
+ .then(function (n) { return +n; })
338
+ .catch(function (err) { throw normaliseIncrErr(err, key); });
339
+ },
340
+
341
+ compareDel: function (key, s) {
342
+ return client.eval(LUA_COMPARE_DEL, 1, k(key), s).then(function (n) { return +n > 0; });
343
+ },
344
+
345
+ clear: function () {
346
+ var nodes = scanNodes();
347
+ var pattern = prefix + '*';
348
+ var removed = 0;
349
+
350
+ /**
351
+ * Drain one node's keyspace for the namespace prefix.
352
+ * @inner
353
+ * @param {object} node - Node client.
354
+ * @returns {Promise<void>}
355
+ */
356
+ var drainNode = function (node) {
357
+ /**
358
+ * @inner
359
+ * @param {string} cursor - SCAN cursor.
360
+ * @returns {Promise<void>}
361
+ */
362
+ var step = function (cursor) {
363
+ return node.scan(cursor, 'MATCH', pattern, 'COUNT', CLEAR_BATCH).then(function (res) {
364
+ var next = res[0];
365
+ var keys = res[1] || [];
366
+ // Deleted one key at a time: in cluster mode an
367
+ // untagged namespace spans slots, and a multi-key DEL
368
+ // across slots is a CROSSSLOT error. clear() is an
369
+ // administrative op, not a hot path.
370
+ var chain = keys.reduce(function (p, physical) {
371
+ return p.then(function () {
372
+ return client.del(physical).then(function (n) { removed += +n; });
373
+ });
374
+ }, Promise.resolve());
375
+ return chain.then(function () {
376
+ return (String(next) === '0') ? undefined : step(next);
377
+ });
378
+ });
379
+ };
380
+ return step('0');
381
+ };
382
+
383
+ return nodes.reduce(function (p, node) {
384
+ return p.then(function () { return drainNode(node); });
385
+ }, Promise.resolve()).then(function () { return removed; });
386
+ },
387
+
388
+ close: function () {
389
+ try {
390
+ if (typeof client.quit === 'function') { client.quit(); }
391
+ } catch (quitErr) { /* already closing */ }
392
+ }
393
+ };
394
+ };