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
@@ -0,0 +1,112 @@
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
+ var fs = require('fs');
9
+ var helpers = require('./../helpers');
10
+ var console = require('./logger');
11
+ /**
12
+ * @module lib/kv-store
13
+ * @description Thin factory that loads the connector-specific KV namespace
14
+ * store from `<connectorsPath>/<connector>/lib/kv-store.js` and returns a
15
+ * ready backend for `lib/kv` — the `lib/job-store` / `lib/audit-store` /
16
+ * `lib/render-cache-store` / `lib/storage-store` sibling for the KV
17
+ * primitive (#KV1).
18
+ *
19
+ * The returned object must implement the `KvStoreContract` typedef declared
20
+ * in `lib/kv` (promise-returning, opaque STRING values — the facade owns JSON
21
+ * serialization) including the atomicity each verb owes: `setnx` is
22
+ * set-if-absent, `consume` is read-AND-delete in one operation, `compareDel`
23
+ * deletes only on strict equality with the stored string, and `incrby` is an
24
+ * atomic integer add that must reject on a non-integer stored value.
25
+ * Per-namespace key-prefixing is the implementation's duty — the namespace
26
+ * name is passed so two namespaces may share one connectors.json entry
27
+ * without colliding.
28
+ *
29
+ * Do not call this directly — declare the backend in `config/connectors.json`,
30
+ * point `settings.json`'s `kv.namespaces.<name>.store` at that entry name, and
31
+ * let `gna.js` wire it at boot (before the first request; namespace
32
+ * installation is once-only).
33
+ *
34
+ * NOTE: two connectors ship an implementation —
35
+ * `redis` (`core/connectors/redis/lib/kv-store.js`, shared across HOSTS) and
36
+ * `sqlite` (`core/connectors/sqlite/lib/kv-store.js`, zero-dependency and
37
+ * durable, shared across PROCESSES on one host). The rest remain demand-gated
38
+ * (the `lib/audit-store` shipping order), and naming one of them as a
39
+ * namespace's `store` refuses the boot with a clear message. The in-memory
40
+ * backend (no `store` key) stays the zero-config path, and is
41
+ * single-process: two bundles — or two replicas — needing one shared
42
+ * namespace want a connector-backed store, which is exactly this seam.
43
+ */
44
+ /**
45
+ * Resolve `connName` against the bundle's `connectors.json` and build the
46
+ * connector-specific KV namespace store.
47
+ *
48
+ * @class KvStore
49
+ * @constructor
50
+ *
51
+ * @param {string} connName - `connectors.json` entry name (referenced by
52
+ * `settings.json`'s `kv.namespaces.<name>.store`).
53
+ * The entry's `.connector` field selects the
54
+ * implementation (a connector without a
55
+ * `lib/kv-store.js` is rejected).
56
+ * @param {string} namespaceName - KV namespace this store will back. Passed
57
+ * through to the implementation, which uses it
58
+ * to PREFIX its keys.
59
+ * @returns {object} - A `KvStoreContract` instance (see `lib/kv`).
60
+ * @throws {Error} - When the entry is missing, has no `connector`
61
+ * field, or the connector has no kv-store
62
+ * implementation. `gna.js` treats a throw as
63
+ * fatal — an explicitly configured store must
64
+ * build, never degrade silently to the
65
+ * in-memory backend, which would put the data
66
+ * somewhere the operator did not ask for.
67
+ *
68
+ * @example
69
+ * // settings.json: { "kv": { "namespaces": { "tokens": { "store": "kvRedis" } } } }
70
+ * // connectors.json: { "kvRedis": { "connector": "redis", "host": "127.0.0.1",
71
+ * // "port": 6379 } }
72
+ * var store = new KvStore('kvRedis', 'tokens'); // done by gna.js at boot
73
+ */
74
+ function KvStore(connName, namespaceName) {
75
+
76
+ if (typeof connName !== 'string' || connName.length === 0) {
77
+ throw new Error('[KvStore] a connectors.json entry name is required (got: ' + JSON.stringify(connName) + ')');
78
+ }
79
+
80
+ var ctx = getContext()
81
+ , bundle = ctx.bundle
82
+ , env = ctx.env
83
+ , conf = getConfig()[bundle][env]
84
+ // Same resolution as lib/session-store / lib/job-store / lib/audit-store /
85
+ // lib/storage-store (#B10 fix): conf.connectorsPath is never populated by
86
+ // config.js — use GINA_FRAMEWORK_DIR directly.
87
+ , connectorsPath = GINA_FRAMEWORK_DIR + '/core/connectors'
88
+ , connConf = null
89
+ , connector = null
90
+ ;
91
+ try {
92
+ connConf = conf.content.connectors[connName];
93
+ connector = connConf.connector;
94
+ } catch (err) {
95
+ throw new Error('[KvStore] could not resolve `' + connName + '`: check your bundle configuration @config/connectors.json\n' + err.stack);
96
+ }
97
+ if (!connector) {
98
+ throw new Error('[KvStore] connectors.json entry `' + connName + '` has no `connector` field');
99
+ }
100
+
101
+ var filename = _(connectorsPath + '/' + connector + '/lib/kv-store.js', true);
102
+
103
+ if ( !fs.existsSync(filename) ) {
104
+ throw new Error('[KvStore] connector `' + connector + '` has no kv-store implementation (`' + filename + '` is missing)');
105
+ }
106
+
107
+ var store = require(filename)(connConf, bundle, namespaceName);
108
+ console.debug('[kv-store] loaded connector=' + connector + ' bundle=' + bundle + ' namespace=' + namespaceName + ' (entry: ' + connName + ')');
109
+ return store;
110
+ };
111
+
112
+ module.exports = KvStore;
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "gina-rate-limit",
3
+ "version": "1.0.0",
4
+ "description": "Identified-caller quota enforcement at the router band (#MS6) — fixed-window counters over the kv primitive, 429 + RateLimit header fields",
5
+ "main": "src/main"
6
+ }
@@ -0,0 +1,399 @@
1
+ /**
2
+ * #MS6 — identified-caller quota enforcement at the router band.
3
+ *
4
+ * QUOTA semantics, deliberately NOT flood control: the gate runs AFTER
5
+ * `authzGate.authorizeRequest` (the call that resolves the principal — it is
6
+ * the only writer of `req.machineCaller`, and session identity is its own
7
+ * predicate) and BEFORE the DTO pipe (a throttled caller must not receive a
8
+ * 422 field map — the same disclosure ordering that puts authz's 401 before
9
+ * the 422). Anonymous flood control stays where it already lives: the edge
10
+ * proxy in front of the bundle, and the #H9 HTTP/2 rapid-reset guard. A
11
+ * request with NO resolvable principal is therefore SKIPPED, never bucketed:
12
+ * keying unidentified callers by IP is dishonest behind a proxy (every
13
+ * `socket.remoteAddress` is the proxy's — one bucket for the whole internet,
14
+ * see lib/maintenance's `evaluateBypass` rationale), and the proxied
15
+ * classification itself has a defeat on record, so an IP fallback would hand
16
+ * an attacker an ESCAPE from limiting by spoofing the classification.
17
+ *
18
+ * Counters are fixed windows over the #KV1 primitive: `incr(key, 1, {ttl})`
19
+ * — the TTL applies on CREATE only (every backend enforces this server-side:
20
+ * redis via an EXISTS-guarded Lua script, sqlite inside BEGIN IMMEDIATE, the
21
+ * in-memory map by keeping the existing expiry), so the first hit of a window
22
+ * opens it and the expiry closes it with no read-modify-write race. Choosing
23
+ * the namespace's BACKEND is choosing the quota's SCOPE: an in-memory
24
+ * namespace counts PER PROCESS (each replica grants the full quota again);
25
+ * replica-shared quotas need a redis- or sqlite-backed namespace. The boot
26
+ * resolver warns about exactly this.
27
+ *
28
+ * Failure policy is the NAMESPACE's `failMode`, not a second knob here:
29
+ * - `open` → a backend error degrades `incr` to `null` inside the facade
30
+ * (which warns) and the gate ALLOWS without headers. The
31
+ * explicit `count === null` check is load-bearing: `null <= N`
32
+ * is `true` by coercion, so an unguarded compare would allow
33
+ * WITH wrong header arithmetic instead of honestly declining
34
+ * to report.
35
+ * - `closed` → the rejection reaches the gate's own handler, which answers
36
+ * **503** + `Retry-After` (the caller is NOT over quota; the
37
+ * service cannot account — the #MS5 open-circuit shape), never
38
+ * a hang: this handler IS the promise's ownership.
39
+ * Give the limiter its OWN namespace so its `failMode` is unambiguously the
40
+ * limiter's outage policy. For a redis-backed namespace, set
41
+ * `enableOfflineQueue: false` + a `commandTimeout` on the connectors entry
42
+ * (the render-cache L2 fail-fast trio) — with ioredis defaults an outage
43
+ * QUEUES every gated request instead of erroring, so neither mode ever fires
44
+ * and requests hang until reconnect. The resolver warns when the trio is
45
+ * missing.
46
+ *
47
+ * Response surface (draft-ietf-httpapi-ratelimit-headers-11, structured
48
+ * fields): `RateLimit-Policy: "<policy>";q=<limit>;w=<windowSec>` and
49
+ * `RateLimit: "<policy>";r=<remaining>` on ALLOWED limited requests;
50
+ * a denial adds `;t=<secondsToReset>` and `Retry-After` (RFC 9110 — the
51
+ * field a client MUST prefer when both are present). `t` is deliberately
52
+ * omitted on the allow path: reporting it honestly would cost a second kv
53
+ * round-trip per allowed request, and the parameter is OPTIONAL in the
54
+ * draft; the deny path pays that one extra `ttl()` read instead, where it
55
+ * prices in the reset the caller actually needs.
56
+ *
57
+ * Per-route `rateLimit` (routing.json, TOP-LEVEL on the route — the #CSRF2
58
+ * trap): `false` exempts the route; `{ limit, window }` REPLACES the default
59
+ * policy for that route — its requests count in their OWN bucket
60
+ * (`<principal>:<rule>`), not against the global one. Partial objects
61
+ * inherit the missing key from the default (the route-`cache` inheritance
62
+ * shape). Shapes are linted at BOOT by the resolver (the DTO boot-registrar
63
+ * doctrine: a typo surfaces at deploy, not at first request).
64
+ *
65
+ * @module gina/lib/rate-limit
66
+ */
67
+
68
+ var crypto = require('crypto');
69
+ // #COMPLY2 — audit auto-events for quota denials, the authz-gate import shape
70
+ // (one-way: lib/audit never requires this module; emitAuthzDenied is contained
71
+ // and can never affect the denial itself).
72
+ var audit = require('../../audit/src/main');
73
+
74
+ /**
75
+ * Serialize a Structured Field String (RFC 8941 §3.3.3): DQUOTE-wrapped with
76
+ * `\` and `"` backslash-escaped. Policy identifiers are expected to be ASCII
77
+ * (routing rule names are); non-ASCII would be outside the sf-string grammar
78
+ * and is not validated here.
79
+ *
80
+ * @param {string} s - Raw string.
81
+ * @returns {string} The serialized sf-string, quotes included.
82
+ */
83
+ function sfString(s) {
84
+ return '"' + String(s).replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"';
85
+ }
86
+
87
+ /**
88
+ * Build a `RateLimit-Policy` member (draft-11): `"<name>";q=<quota>;w=<windowSec>`.
89
+ *
90
+ * @param {string} name - Policy identifier (sf-string-serialized).
91
+ * @param {number} quota - Quota units per window (`q`, REQUIRED by the draft).
92
+ * @param {number} windowSec - Window length in seconds (`w`).
93
+ * @returns {string} The header field value.
94
+ */
95
+ function buildPolicyItem(name, quota, windowSec) {
96
+ return sfString(name) + ';q=' + quota + ';w=' + windowSec;
97
+ }
98
+
99
+ /**
100
+ * Build a `RateLimit` member (draft-11): `"<name>";r=<remaining>[;t=<sec>]`.
101
+ * `t` (seconds until the window resets) is included on denials only — see the
102
+ * module header for why the allow path omits it.
103
+ *
104
+ * @param {string} name - Policy identifier (must match a `RateLimit-Policy` member).
105
+ * @param {number} remaining - Remaining quota (`r`, REQUIRED by the draft; never negative).
106
+ * @param {number} [resetSec] - Seconds until the window resets (`t`).
107
+ * @returns {string} The header field value.
108
+ */
109
+ function buildRateLimitItem(name, remaining, resetSec) {
110
+ var item = sfString(name) + ';r=' + remaining;
111
+ if ( typeof(resetSec) != 'undefined' ) {
112
+ item += ';t=' + resetSec;
113
+ }
114
+ return item;
115
+ }
116
+
117
+ /**
118
+ * Derive the quota key for this request's principal, or `null` when no
119
+ * principal is resolvable (the request is then SKIPPED, never bucketed).
120
+ *
121
+ * Precedence mirrors `authorizeRequest` exactly — the SESSION user when
122
+ * authenticated (session wins; the machine identity is never consulted for a
123
+ * signed-in caller), else the #MS3 machine caller:
124
+ * - session: `'u:' + String(session.user[conf.keyField])`. The field is
125
+ * operator-NAMED (`server.rateLimit.keyField`) because `session.user` is
126
+ * app-owned shape — a guessed default chain would mis-key silently. A
127
+ * user record where the named field is absent/empty is UNIDENTIFIED.
128
+ * - machine: `'m:' + machineCaller.name` (shape framework-forced by the
129
+ * authz gate: `{ name, roles, machine: true }`).
130
+ * Values longer than 180 chars are sha256-hexed so the final key (class
131
+ * prefix + optional `:<rule>` suffix) always fits the kv 512-char key cap.
132
+ *
133
+ * @param {object} req - The request (post-`authorizeRequest`).
134
+ * @param {object} conf - The resolved conf (`keyField`).
135
+ * @returns {?string} `'<class>:<value>'`, or `null` (skip).
136
+ */
137
+ function deriveKey(req, conf) {
138
+ var cls = null, raw = null;
139
+ if ( req && req.session && typeof(req.session) == 'object' && req.session.user ) {
140
+ var u = req.session.user;
141
+ var v = ( u && typeof(u) == 'object' ) ? u[conf.keyField] : undefined;
142
+ if ( typeof(v) != 'undefined' && v !== null && String(v) !== '' ) {
143
+ cls = 'u';
144
+ raw = String(v);
145
+ }
146
+ } else if ( req && req.machineCaller && req.machineCaller.machine === true && req.machineCaller.name ) {
147
+ cls = 'm';
148
+ raw = String(req.machineCaller.name);
149
+ }
150
+ if ( !cls ) {
151
+ return null;
152
+ }
153
+ if ( raw.length > 180 ) {
154
+ raw = crypto.createHash('sha256').update(raw).digest('hex');
155
+ }
156
+ return cls + ':' + raw;
157
+ }
158
+
159
+ /**
160
+ * Best-effort response-header write — the deny status itself is the contract
161
+ * (the authz `WWW-Authenticate` mould: guarded on `headersSent` + `setHeader`
162
+ * presence, try/caught so a bare test stub can never turn a verdict into a
163
+ * throw).
164
+ *
165
+ * @inner
166
+ * @param {object} res - The response.
167
+ * @param {object} headers - Field-name → field-value map.
168
+ * @returns {undefined}
169
+ */
170
+ function _setHeaders(res, headers) {
171
+ try {
172
+ if ( res && !res.headersSent && typeof(res.setHeader) == 'function' ) {
173
+ for (var h in headers) {
174
+ res.setHeader(h, headers[h]);
175
+ }
176
+ }
177
+ } catch (err) {
178
+ // best-effort — the status itself is the contract
179
+ }
180
+ }
181
+
182
+ /**
183
+ * Resolve `server.rateLimit` once at engine start (the #MS5 resolver shape,
184
+ * stamped on the engine instance so the policy survives dev-mode hot reloads
185
+ * and dies on restart).
186
+ *
187
+ * Doctrine, verbatim from the #MS5 resolver: structurally invalid values on
188
+ * an ENABLED block are a boot refusal (throw), NOT a warn-and-disable —
189
+ * silently running without the protection the operator asked for is the
190
+ * fail-open shape the storage/kv boot bands refuse. Dormant (`{enabled:false}`)
191
+ * unless `enabled` is strictly `true`.
192
+ *
193
+ * Warn-tier findings (never refusals — enforcement works when the backend is
194
+ * up; these govern outage latency and quota scope, the #CE1 discriminator):
195
+ * a memory-backed namespace (per-process quotas), a redis-backed namespace
196
+ * missing the fail-fast trio, unrecognized keys.
197
+ *
198
+ * @param {object} serverConf - The bundle's runtime `server` block (post-fold).
199
+ * @param {object} deps - Injected dependencies.
200
+ * @param {object} deps.kv - The kv facade (`lib.kv`) — namespace existence check.
201
+ * @param {object} [deps.kvSettings] - `settings.kv` (backend-honesty warns).
202
+ * @param {object} [deps.connectors] - `connectors.json` content (redis-tuning warn).
203
+ * @param {object} [deps.routing] - The bundle's routing table (per-route override lint).
204
+ * @param {function(string)} [deps.warn] - Warn sink (default `console.warn`).
205
+ * @returns {object} `{enabled:false}` or `{enabled:true, namespace, keyField, limit, windowMs, ns}`.
206
+ * @throws {Error} On any structurally invalid value in an enabled block, an
207
+ * undeclared namespace, or a malformed per-route override.
208
+ */
209
+ function resolveConf(serverConf, deps) {
210
+ var block = serverConf && serverConf.rateLimit;
211
+ if ( !block || block.enabled !== true ) {
212
+ return { enabled: false };
213
+ }
214
+ deps = deps || {};
215
+ var _warn = ( typeof(deps.warn) == 'function' ) ? deps.warn : function(m){ console.warn('[rate-limit] ' + m); };
216
+
217
+ if ( typeof(block.namespace) != 'string' || block.namespace === '' ) {
218
+ throw new Error('[SERVER][#MS6] `server.rateLimit.namespace` must name a declared kv namespace — got `' + block.namespace + '`');
219
+ }
220
+ if ( typeof(block.keyField) != 'string' || block.keyField === '' ) {
221
+ throw new Error('[SERVER][#MS6] `server.rateLimit.keyField` is required — name the `session.user` property that identifies a caller (machine callers key on their registered name automatically)');
222
+ }
223
+ var limit = block.limit;
224
+ if ( typeof(limit) != 'number' || limit !== ~~limit || limit < 1 ) {
225
+ throw new Error('[SERVER][#MS6] `server.rateLimit.limit` must be an integer >= 1 — got `' + limit + '`');
226
+ }
227
+ var windowMs = parseTimeout(block.window);
228
+ if ( typeof(windowMs) != 'number' || windowMs < 1 ) {
229
+ throw new Error('[SERVER][#MS6] `server.rateLimit.window` must be a positive duration (e.g. "1m", "30s", 60000) — got `' + block.window + '`');
230
+ }
231
+ var KNOWN = { enabled: 1, namespace: 1, keyField: 1, limit: 1, window: 1 };
232
+ for (var k in block) {
233
+ if ( !KNOWN[k] ) {
234
+ // the kv-namespace precedent: a silently-dropped key is a policy
235
+ // the operator believes is set
236
+ _warn('`server.rateLimit.' + k + '` is not a recognized key — it was ignored');
237
+ }
238
+ }
239
+
240
+ if ( !deps.kv || typeof(deps.kv.get) != 'function' ) {
241
+ throw new Error('[SERVER][#MS6] rate limiting needs the kv primitive — no kv facade reached the resolver');
242
+ }
243
+ var ns;
244
+ try {
245
+ ns = deps.kv.get(block.namespace);
246
+ } catch (kvErr) {
247
+ // the kv `default`-naming-undeclared precedent: refuse, never degrade
248
+ // silently to a backend the operator did not ask for
249
+ throw new Error('[SERVER][#MS6] `server.rateLimit.namespace` = `' + block.namespace + '` is not usable: ' + (kvErr.message || kvErr));
250
+ }
251
+
252
+ var nsConf = deps.kvSettings && deps.kvSettings.namespaces && deps.kvSettings.namespaces[block.namespace];
253
+ var storeName = nsConf && nsConf.store;
254
+ if ( !storeName ) {
255
+ _warn('namespace `' + block.namespace + '` is MEMORY-backed: quotas count PER PROCESS — every replica grants the full quota again. Replica-shared quotas need a redis- or sqlite-backed namespace');
256
+ } else {
257
+ var connEntry = deps.connectors && deps.connectors[storeName];
258
+ if ( connEntry && connEntry.connector === 'redis'
259
+ && ( connEntry.enableOfflineQueue !== false || typeof(connEntry.commandTimeout) == 'undefined' ) ) {
260
+ _warn('redis-backed namespace `' + block.namespace + '`: set `enableOfflineQueue: false` and a `commandTimeout` on connectors.json entry `' + storeName + '` — with ioredis defaults an outage QUEUES every gated request (neither failMode ever fires) instead of degrading. The render-cache L2 ships this exact fail-fast trio');
261
+ }
262
+ }
263
+
264
+ if ( deps.routing && typeof(deps.routing) == 'object' ) {
265
+ for (var rule in deps.routing) {
266
+ var rl = deps.routing[rule] && deps.routing[rule].rateLimit;
267
+ if ( typeof(rl) == 'undefined' || rl === false ) { continue; }
268
+ if ( !rl || typeof(rl) != 'object' || Array.isArray(rl) ) {
269
+ throw new Error('[SERVER][#MS6] route `' + rule + '`: `rateLimit` must be `false` (exempt) or an object — got `' + JSON.stringify(rl) + '`');
270
+ }
271
+ if ( typeof(rl.limit) != 'undefined' && ( typeof(rl.limit) != 'number' || rl.limit !== ~~rl.limit || rl.limit < 1 ) ) {
272
+ throw new Error('[SERVER][#MS6] route `' + rule + '`: `rateLimit.limit` must be an integer >= 1 — got `' + rl.limit + '`');
273
+ }
274
+ if ( typeof(rl.window) != 'undefined' ) {
275
+ var _w = parseTimeout(rl.window);
276
+ if ( typeof(_w) != 'number' || _w < 1 ) {
277
+ throw new Error('[SERVER][#MS6] route `' + rule + '`: `rateLimit.window` must be a positive duration — got `' + rl.window + '`');
278
+ }
279
+ }
280
+ for (var rk in rl) {
281
+ if ( rk !== 'limit' && rk !== 'window' ) {
282
+ _warn('route `' + rule + '`: `rateLimit.' + rk + '` is not a recognized key — it was ignored');
283
+ }
284
+ }
285
+ }
286
+ }
287
+
288
+ return { enabled: true, namespace: block.namespace, keyField: block.keyField, limit: limit, windowMs: windowMs, ns: ns };
289
+ }
290
+
291
+ /**
292
+ * Gate one request. Called by `core/router.js` at BOTH dispatch sites, after
293
+ * `authorizeRequest` returned true and only when the resolved conf is armed.
294
+ *
295
+ * Returns `null` — synchronously, NO promise minted — when the gate does not
296
+ * apply: the route is exempt (`rateLimit: false`) or no principal resolved.
297
+ * The router then continues on today's exact synchronous band.
298
+ *
299
+ * Otherwise returns a promise settling `true` (proceed — the router runs the
300
+ * DTO pipe → hooks → action continuation) or `false` (this gate has ANSWERED
301
+ * the request: 429 over quota, or 503 when a fail-closed namespace erred).
302
+ * Every terminal is owned inside this function — an unowned rejection in the
303
+ * dispatch spine is a hung request with no visible log line (the daemon
304
+ * spawner filters child stderr), which is the exact shape being designed
305
+ * against.
306
+ *
307
+ * @param {object} request - The request (post-`authorizeRequest`).
308
+ * @param {object} response - The response.
309
+ * @param {object} controller - The per-request controller (its `throwError` writes the denial).
310
+ * @param {object} conf - The instance-stamped resolved conf (`resolveConf` output, enabled).
311
+ * @returns {?Promise<boolean>} `null` (inapplicable — continue sync), or the verdict promise.
312
+ */
313
+ function gate(request, response, controller, conf) {
314
+ var routeRl = ( request && request.routing ) ? request.routing.rateLimit : undefined;
315
+ if ( routeRl === false ) {
316
+ return null; // exempt route — sync fall-through
317
+ }
318
+ var key = deriveKey(request, conf);
319
+ if ( key === null ) {
320
+ return null; // unidentified caller — the edge proxy + #H9 own that class
321
+ }
322
+
323
+ var limit = conf.limit;
324
+ var windowMs = conf.windowMs;
325
+ var policyName = 'default';
326
+ if ( routeRl && typeof(routeRl) == 'object' ) {
327
+ // REPLACE semantics: an overridden route's requests count ONLY in its
328
+ // own bucket. Partial objects inherit the missing key (the route-cache
329
+ // inheritance shape). Shapes were linted at boot, so parse cannot fail
330
+ // here — the fallback is belt.
331
+ if ( typeof(routeRl.limit) != 'undefined' ) { limit = routeRl.limit; }
332
+ if ( typeof(routeRl.window) != 'undefined' ) { windowMs = parseTimeout(routeRl.window) || windowMs; }
333
+ policyName = ( request.routing && request.routing.rule ) ? String(request.routing.rule) : 'route';
334
+ key += ':' + policyName;
335
+ }
336
+ var windowSec = Math.max(1, Math.round(windowMs / 1000));
337
+ var policyItem = buildPolicyItem(policyName, limit, windowSec);
338
+
339
+ return conf.ns.incr(key, 1, { ttl: windowMs }).then(function onCount(count) {
340
+ if ( count === null ) {
341
+ // failMode:'open' degraded — there is no reading. `null <= limit`
342
+ // is TRUE by coercion, so an unguarded compare would allow WITH
343
+ // wrong header arithmetic; this allows WITHOUT headers and lets
344
+ // the facade's own per-operation degrade warn stand.
345
+ return true;
346
+ }
347
+ if ( count <= limit ) {
348
+ _setHeaders(response, {
349
+ 'RateLimit' : buildRateLimitItem(policyName, limit - count),
350
+ 'RateLimit-Policy' : policyItem
351
+ });
352
+ return true;
353
+ }
354
+ // Deny. One extra kv read on the THROTTLED path only, for the honest
355
+ // reset time; under either failMode a failed ttl() degrades to the
356
+ // full window rather than blocking the verdict.
357
+ return conf.ns.ttl(key).then(
358
+ function (ms) { return ms; },
359
+ function () { return null; }
360
+ ).then(function onTtl(ms) {
361
+ var tSec = ( typeof(ms) == 'number' && ms > 0 ) ? Math.ceil(ms / 1000) : windowSec;
362
+ _setHeaders(response, {
363
+ 'Retry-After' : String(tSec),
364
+ 'RateLimit' : buildRateLimitItem(policyName, 0, tSec),
365
+ 'RateLimit-Policy' : policyItem
366
+ });
367
+ audit.emitAuthzDenied(request, '429'); // #COMPLY2 auto-event — contained, never affects the denial
368
+ controller.throwError({
369
+ status : 429,
370
+ error : 'Too many requests'
371
+ });
372
+ return false;
373
+ });
374
+ }, function onStoreError(err) {
375
+ // failMode:'closed' — the namespace rejected. The caller is NOT over
376
+ // quota and must not be told it is: 503 + Retry-After (the #MS5
377
+ // open-circuit shape). This handler IS the promise's ownership — the
378
+ // alternative is a silent hang.
379
+ _setHeaders(response, { 'Retry-After': String(windowSec) });
380
+ try {
381
+ console.warn('[rate-limit] namespace `' + conf.namespace + '` unavailable (failMode=closed): ' + (err && err.message || err));
382
+ } catch (e) {}
383
+ audit.emitAuthzDenied(request, '503-rate-limit'); // #COMPLY2 auto-event — contained
384
+ controller.throwError({
385
+ status : 503,
386
+ error : 'Service temporarily unavailable'
387
+ });
388
+ return false;
389
+ });
390
+ }
391
+
392
+ module.exports = {
393
+ resolveConf : resolveConf,
394
+ gate : gate,
395
+ deriveKey : deriveKey,
396
+ sfString : sfString,
397
+ buildPolicyItem : buildPolicyItem,
398
+ buildRateLimitItem : buildRateLimitItem
399
+ };
@@ -237,6 +237,14 @@ function Routing() {
237
237
  if ( typeof(routeObject.negotiate) != 'undefined' ) {
238
238
  params.negotiate = routeObject.negotiate;
239
239
  }
240
+ // #MS6 — propagate the per-route rate-limit override/exempt to
241
+ // req.routing.rateLimit (top-level, NOT req.routing.param.* — the
242
+ // #CSRF2 trap). typeof-guarded so `false` (exempt) survives the copy;
243
+ // assigned only when declared, so a routing.json that never mentions
244
+ // `rateLimit` produces a byte-identical params object.
245
+ if ( typeof(routeObject.rateLimit) != 'undefined' ) {
246
+ params.rateLimit = routeObject.rateLimit;
247
+ }
240
248
 
241
249
  // isRoute
242
250
  return self.compareUrls(params, routeObject.url, req);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gina-framework",
3
- "version": "0.6.12",
3
+ "version": "0.6.13",
4
4
  "dependencies": {
5
5
  "@rhinostone/busboy": "^1.6.1",
6
6
  "@rhinostone/swig": "^2.7.2",
package/gna.js CHANGED
@@ -15,14 +15,14 @@
15
15
  'use strict';
16
16
 
17
17
  // Framework core — the main gna module (lifecycle hooks, lib, etc.)
18
- var _gna = require('./framework/v0.6.12/core/gna');
18
+ var _gna = require('./framework/v0.6.13/core/gna');
19
19
 
20
20
  // SuperController and EntitySuper — loaded from their source modules
21
- var SuperController = require('./framework/v0.6.12/core/controller');
22
- var EntitySuper = require('./framework/v0.6.12/core/model/entity');
21
+ var SuperController = require('./framework/v0.6.13/core/controller');
22
+ var EntitySuper = require('./framework/v0.6.13/core/model/entity');
23
23
 
24
24
  // uuid — from the lib registry
25
- var uuid = require('./framework/v0.6.12/lib/uuid');
25
+ var uuid = require('./framework/v0.6.13/lib/uuid');
26
26
 
27
27
  module.exports = {
28
28