gina 0.6.17 → 0.6.18

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 +5 -0
  2. package/README.md +14 -14
  3. package/ROADMAP.md +2 -1
  4. package/framework/v0.6.18/VERSION +1 -0
  5. package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/js/gina.js +21 -0
  6. package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +266 -266
  7. package/framework/v0.6.18/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  8. package/framework/v0.6.18/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  9. package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.js +64 -42
  10. package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/validator/src/form-validator.js +21 -0
  11. package/framework/{v0.6.17 → v0.6.18}/package.json +1 -1
  12. package/gna.js +4 -4
  13. package/llms.txt +2 -0
  14. package/package.json +3 -3
  15. package/script/perf/profile-baseline.js +32 -2
  16. package/framework/v0.6.17/VERSION +0 -1
  17. package/framework/v0.6.17/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  18. package/framework/v0.6.17/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  19. /package/framework/{v0.6.17 → v0.6.18}/AUTHORS +0 -0
  20. /package/framework/{v0.6.17 → v0.6.18}/LICENSE +0 -0
  21. /package/framework/{v0.6.17 → v0.6.18}/core/asset/html/nolayout.html +0 -0
  22. /package/framework/{v0.6.17 → v0.6.18}/core/asset/html/static.html +0 -0
  23. /package/framework/{v0.6.17 → v0.6.18}/core/asset/img/android-chrome-192x192.png +0 -0
  24. /package/framework/{v0.6.17 → v0.6.18}/core/asset/img/android-chrome-512x512.png +0 -0
  25. /package/framework/{v0.6.17 → v0.6.18}/core/asset/img/apple-touch-icon.png +0 -0
  26. /package/framework/{v0.6.17 → v0.6.18}/core/asset/img/favicon-16x16.png +0 -0
  27. /package/framework/{v0.6.17 → v0.6.18}/core/asset/img/favicon-32x32.png +0 -0
  28. /package/framework/{v0.6.17 → v0.6.18}/core/asset/img/favicon.ico +0 -0
  29. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/README.md +0 -0
  30. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  31. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  32. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  33. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  34. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  35. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  36. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  37. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  38. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  39. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  40. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  41. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  42. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  43. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  44. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  45. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  46. /package/framework/{v0.6.17 → v0.6.18}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  47. /package/framework/{v0.6.17 → v0.6.18}/core/config.js +0 -0
  48. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/ai/index.js +0 -0
  49. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/ai/lib/connector.js +0 -0
  50. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/index.js +0 -0
  51. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/connector.js +0 -0
  52. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  53. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  54. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/n1ql.js +0 -0
  55. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/session-store.js +0 -0
  56. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  57. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  58. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/couchbase/lib/storage-store.js +0 -0
  59. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/duckdb/index.js +0 -0
  60. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/duckdb/lib/connector.js +0 -0
  61. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/mongodb/index.js +0 -0
  62. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/mongodb/lib/connector.js +0 -0
  63. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/mongodb/lib/job-store.js +0 -0
  64. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  65. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/mongodb/lib/session-store.js +0 -0
  66. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/mysql/index.js +0 -0
  67. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/mysql/lib/connector.js +0 -0
  68. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/param-redact.js +0 -0
  69. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/postgresql/index.js +0 -0
  70. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/postgresql/lib/connector.js +0 -0
  71. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/redis/index.js +0 -0
  72. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/redis/lib/connector.js +0 -0
  73. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/redis/lib/job-store.js +0 -0
  74. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/redis/lib/kv-store.js +0 -0
  75. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/redis/lib/render-cache-store.js +0 -0
  76. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/redis/lib/session-store.js +0 -0
  77. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/scylladb/index.js +0 -0
  78. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/scylladb/lib/connector.js +0 -0
  79. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/scylladb/lib/session-store.js +0 -0
  80. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/sql-parser.js +0 -0
  81. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/sqlite/index.js +0 -0
  82. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/sqlite/lib/connector.js +0 -0
  83. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/sqlite/lib/job-store.js +0 -0
  84. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/sqlite/lib/kv-store.js +0 -0
  85. /package/framework/{v0.6.17 → v0.6.18}/core/connectors/sqlite/lib/session-store.js +0 -0
  86. /package/framework/{v0.6.17 → v0.6.18}/core/content.encoding +0 -0
  87. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.framework.js +0 -0
  88. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.render-json.js +0 -0
  89. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.render-nunjucks-async.js +0 -0
  90. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.render-nunjucks.js +0 -0
  91. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.render-stream.js +0 -0
  92. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.render-swig-async.js +0 -0
  93. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.render-swig.js +0 -0
  94. /package/framework/{v0.6.17 → v0.6.18}/core/controller/controller.render-v1.js +0 -0
  95. /package/framework/{v0.6.17 → v0.6.18}/core/controller/index.js +0 -0
  96. /package/framework/{v0.6.17 → v0.6.18}/core/controller/inspector-window-emit.js +0 -0
  97. /package/framework/{v0.6.17 → v0.6.18}/core/controller/release-banner.js +0 -0
  98. /package/framework/{v0.6.17 → v0.6.18}/core/dev/index.js +0 -0
  99. /package/framework/{v0.6.17 → v0.6.18}/core/dev/lib/class.js +0 -0
  100. /package/framework/{v0.6.17 → v0.6.18}/core/dev/lib/factory.js +0 -0
  101. /package/framework/{v0.6.17 → v0.6.18}/core/dev/lib/tools.js +0 -0
  102. /package/framework/{v0.6.17 → v0.6.18}/core/gna.js +0 -0
  103. /package/framework/{v0.6.17 → v0.6.18}/core/locales/README.md +0 -0
  104. /package/framework/{v0.6.17 → v0.6.18}/core/locales/currency.json +0 -0
  105. /package/framework/{v0.6.17 → v0.6.18}/core/locales/dist/language/en.json +0 -0
  106. /package/framework/{v0.6.17 → v0.6.18}/core/locales/dist/language/fr.json +0 -0
  107. /package/framework/{v0.6.17 → v0.6.18}/core/locales/dist/region/en.json +0 -0
  108. /package/framework/{v0.6.17 → v0.6.18}/core/locales/dist/region/fr.json +0 -0
  109. /package/framework/{v0.6.17 → v0.6.18}/core/locales/index.js +0 -0
  110. /package/framework/{v0.6.17 → v0.6.18}/core/mime.types +0 -0
  111. /package/framework/{v0.6.17 → v0.6.18}/core/model/entity.js +0 -0
  112. /package/framework/{v0.6.17 → v0.6.18}/core/model/index.js +0 -0
  113. /package/framework/{v0.6.17 → v0.6.18}/core/model/template/entityFactory.js +0 -0
  114. /package/framework/{v0.6.17 → v0.6.18}/core/model/template/index.js +0 -0
  115. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/README.md +0 -0
  116. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/index.js +0 -0
  117. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/csrf/README.md +0 -0
  118. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/csrf/package.json +0 -0
  119. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/csrf/src/main.js +0 -0
  120. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/README.md +0 -0
  121. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/coep/README.md +0 -0
  122. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/coep/package.json +0 -0
  123. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  124. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/coop/README.md +0 -0
  125. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/coop/package.json +0 -0
  126. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  127. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/corp/README.md +0 -0
  128. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/corp/package.json +0 -0
  129. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  130. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/csp/README.md +0 -0
  131. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/csp/package.json +0 -0
  132. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  133. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  134. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  135. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  136. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  137. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  138. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  139. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  140. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  141. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  142. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/package.json +0 -0
  143. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  144. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  145. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  146. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/src/main.js +0 -0
  147. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  148. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  149. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  150. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  151. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  152. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  153. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  154. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  155. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  156. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  157. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  158. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  159. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  160. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  161. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  162. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  163. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  164. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  165. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/session/README.md +0 -0
  166. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/session/package.json +0 -0
  167. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/session/src/main.js +0 -0
  168. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/storage/README.md +0 -0
  169. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/storage/build.json +0 -0
  170. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/storage/package.json +0 -0
  171. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/storage/src/main.js +0 -0
  172. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/validator/README.md +0 -0
  173. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/validator/build.json +0 -0
  174. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/validator/package.json +0 -0
  175. /package/framework/{v0.6.17 → v0.6.18}/core/plugins/lib/validator/src/main.js +0 -0
  176. /package/framework/{v0.6.17 → v0.6.18}/core/router.js +0 -0
  177. /package/framework/{v0.6.17 → v0.6.18}/core/server.express.js +0 -0
  178. /package/framework/{v0.6.17 → v0.6.18}/core/server.isaac.js +0 -0
  179. /package/framework/{v0.6.17 → v0.6.18}/core/server.js +0 -0
  180. /package/framework/{v0.6.17 → v0.6.18}/core/status.codes +0 -0
  181. /package/framework/{v0.6.17 → v0.6.18}/core/template/_gitignore +0 -0
  182. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/config/app.json +0 -0
  183. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  184. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/config/routing.json +0 -0
  185. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/config/settings.json +0 -0
  186. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  187. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/config/templates.json +0 -0
  188. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  189. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  190. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  191. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  192. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/index.js +0 -0
  193. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle/locales/en.json +0 -0
  194. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  195. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  196. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  197. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  198. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  199. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  200. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  201. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  202. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/readme.md +0 -0
  203. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_public/sw.js +0 -0
  204. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  205. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  206. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  207. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  208. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  209. /package/framework/{v0.6.17 → v0.6.18}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  210. /package/framework/{v0.6.17 → v0.6.18}/core/template/command/gina.bat.tpl +0 -0
  211. /package/framework/{v0.6.17 → v0.6.18}/core/template/command/gina.tpl +0 -0
  212. /package/framework/{v0.6.17 → v0.6.18}/core/template/conf/env.json +0 -0
  213. /package/framework/{v0.6.17 → v0.6.18}/core/template/conf/manifest.json +0 -0
  214. /package/framework/{v0.6.17 → v0.6.18}/core/template/conf/package.json +0 -0
  215. /package/framework/{v0.6.17 → v0.6.18}/core/template/conf/settings.json +0 -0
  216. /package/framework/{v0.6.17 → v0.6.18}/core/template/conf/statics.json +0 -0
  217. /package/framework/{v0.6.17 → v0.6.18}/core/template/conf/templates.json +0 -0
  218. /package/framework/{v0.6.17 → v0.6.18}/core/template/error/client/json/401.json +0 -0
  219. /package/framework/{v0.6.17 → v0.6.18}/core/template/error/client/json/403.json +0 -0
  220. /package/framework/{v0.6.17 → v0.6.18}/core/template/error/client/json/404.json +0 -0
  221. /package/framework/{v0.6.17 → v0.6.18}/core/template/error/server/html/50x.html +0 -0
  222. /package/framework/{v0.6.17 → v0.6.18}/core/template/error/server/json/500.json +0 -0
  223. /package/framework/{v0.6.17 → v0.6.18}/core/template/error/server/json/503.json +0 -0
  224. /package/framework/{v0.6.17 → v0.6.18}/core/template/extensions/logger/config.json +0 -0
  225. /package/framework/{v0.6.17 → v0.6.18}/helpers/console.js +0 -0
  226. /package/framework/{v0.6.17 → v0.6.18}/helpers/context.js +0 -0
  227. /package/framework/{v0.6.17 → v0.6.18}/helpers/data/LICENSE +0 -0
  228. /package/framework/{v0.6.17 → v0.6.18}/helpers/data/README.md +0 -0
  229. /package/framework/{v0.6.17 → v0.6.18}/helpers/data/package.json +0 -0
  230. /package/framework/{v0.6.17 → v0.6.18}/helpers/data/src/main.js +0 -0
  231. /package/framework/{v0.6.17 → v0.6.18}/helpers/dateFormat.js +0 -0
  232. /package/framework/{v0.6.17 → v0.6.18}/helpers/index.js +0 -0
  233. /package/framework/{v0.6.17 → v0.6.18}/helpers/json/LICENSE +0 -0
  234. /package/framework/{v0.6.17 → v0.6.18}/helpers/json/README.md +0 -0
  235. /package/framework/{v0.6.17 → v0.6.18}/helpers/json/package.json +0 -0
  236. /package/framework/{v0.6.17 → v0.6.18}/helpers/json/src/main.js +0 -0
  237. /package/framework/{v0.6.17 → v0.6.18}/helpers/path.js +0 -0
  238. /package/framework/{v0.6.17 → v0.6.18}/helpers/plugins/README.md +0 -0
  239. /package/framework/{v0.6.17 → v0.6.18}/helpers/plugins/package.json +0 -0
  240. /package/framework/{v0.6.17 → v0.6.18}/helpers/plugins/src/api-error.js +0 -0
  241. /package/framework/{v0.6.17 → v0.6.18}/helpers/plugins/src/main.js +0 -0
  242. /package/framework/{v0.6.17 → v0.6.18}/helpers/prototypes.js +0 -0
  243. /package/framework/{v0.6.17 → v0.6.18}/helpers/task.js +0 -0
  244. /package/framework/{v0.6.17 → v0.6.18}/helpers/text.js +0 -0
  245. /package/framework/{v0.6.17 → v0.6.18}/lib/admin/package.json +0 -0
  246. /package/framework/{v0.6.17 → v0.6.18}/lib/admin/src/main.js +0 -0
  247. /package/framework/{v0.6.17 → v0.6.18}/lib/archiver/README.md +0 -0
  248. /package/framework/{v0.6.17 → v0.6.18}/lib/archiver/build.json +0 -0
  249. /package/framework/{v0.6.17 → v0.6.18}/lib/archiver/package.json +0 -0
  250. /package/framework/{v0.6.17 → v0.6.18}/lib/archiver/src/dep/jszip.min.js +0 -0
  251. /package/framework/{v0.6.17 → v0.6.18}/lib/archiver/src/main.js +0 -0
  252. /package/framework/{v0.6.17 → v0.6.18}/lib/async/package.json +0 -0
  253. /package/framework/{v0.6.17 → v0.6.18}/lib/async/src/main.js +0 -0
  254. /package/framework/{v0.6.17 → v0.6.18}/lib/audit/package.json +0 -0
  255. /package/framework/{v0.6.17 → v0.6.18}/lib/audit/src/main.js +0 -0
  256. /package/framework/{v0.6.17 → v0.6.18}/lib/audit-store.js +0 -0
  257. /package/framework/{v0.6.17 → v0.6.18}/lib/authn/package.json +0 -0
  258. /package/framework/{v0.6.17 → v0.6.18}/lib/authn/src/lockout.js +0 -0
  259. /package/framework/{v0.6.17 → v0.6.18}/lib/authn/src/main.js +0 -0
  260. /package/framework/{v0.6.17 → v0.6.18}/lib/authn/src/totp.js +0 -0
  261. /package/framework/{v0.6.17 → v0.6.18}/lib/authz-gate/package.json +0 -0
  262. /package/framework/{v0.6.17 → v0.6.18}/lib/authz-gate/src/main.js +0 -0
  263. /package/framework/{v0.6.17 → v0.6.18}/lib/cache/README.md +0 -0
  264. /package/framework/{v0.6.17 → v0.6.18}/lib/cache/build.json +0 -0
  265. /package/framework/{v0.6.17 → v0.6.18}/lib/cache/package.json +0 -0
  266. /package/framework/{v0.6.17 → v0.6.18}/lib/cache/src/main.js +0 -0
  267. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/aliases.json +0 -0
  268. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/audit/arguments.json +0 -0
  269. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/audit/help.txt +0 -0
  270. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/audit/verify.js +0 -0
  271. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/add.js +0 -0
  272. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/arguments.json +0 -0
  273. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/build.js +0 -0
  274. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/copy.js +0 -0
  275. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/cp.js +0 -0
  276. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/help.js +0 -0
  277. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/help.txt +0 -0
  278. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  279. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/list.js +0 -0
  280. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/man.js +0 -0
  281. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/mcp-start.js +0 -0
  282. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/mcp.js +0 -0
  283. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/oas.js +0 -0
  284. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/openapi.js +0 -0
  285. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/remove.js +0 -0
  286. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/rename.js +0 -0
  287. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/restart.js +0 -0
  288. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/rm.js +0 -0
  289. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/start.js +0 -0
  290. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/status.js +0 -0
  291. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/stop.js +0 -0
  292. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/bundle/types.js +0 -0
  293. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/cache/arguments.json +0 -0
  294. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/cache/clear.js +0 -0
  295. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/cache/help.txt +0 -0
  296. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/cache/stats.js +0 -0
  297. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/add.js +0 -0
  298. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/arguments.json +0 -0
  299. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/help.js +0 -0
  300. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/help.txt +0 -0
  301. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/infer.js +0 -0
  302. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/list.js +0 -0
  303. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/migrate.js +0 -0
  304. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/models.js +0 -0
  305. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/remove.js +0 -0
  306. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/rm.js +0 -0
  307. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/connector/test.js +0 -0
  308. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/container/arguments.json +0 -0
  309. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/container/help.js +0 -0
  310. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/container/help.txt +0 -0
  311. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/container/man.js +0 -0
  312. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/container/ps.js +0 -0
  313. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/container/stop.js +0 -0
  314. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/add.js +0 -0
  315. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/arguments.json +0 -0
  316. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/help.txt +0 -0
  317. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/inc/args.js +0 -0
  318. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/inc/namespace.js +0 -0
  319. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  320. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/inc/reference-scan.js +0 -0
  321. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/inc/scaffold.js +0 -0
  322. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/remove.js +0 -0
  323. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/rename.js +0 -0
  324. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/controller/rm.js +0 -0
  325. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/add.js +0 -0
  326. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/get.js +0 -0
  327. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/help.js +0 -0
  328. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/help.txt +0 -0
  329. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/link-dev.js +0 -0
  330. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/list.js +0 -0
  331. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/remove.js +0 -0
  332. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/rm.js +0 -0
  333. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/set.js +0 -0
  334. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/unset.js +0 -0
  335. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/env/use.js +0 -0
  336. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/add.js +0 -0
  337. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/arguments.json +0 -0
  338. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/build.js +0 -0
  339. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/dot.js +0 -0
  340. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/get.js +0 -0
  341. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/help.js +0 -0
  342. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/help.txt +0 -0
  343. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/init.js +0 -0
  344. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/link-node-modules.js +0 -0
  345. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/link.js +0 -0
  346. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/list.js +0 -0
  347. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/man.js +0 -0
  348. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/msg.json +0 -0
  349. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/open.js +0 -0
  350. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/remove.js +0 -0
  351. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/reset.js +0 -0
  352. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/restart.js +0 -0
  353. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/set.js +0 -0
  354. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/start.js +0 -0
  355. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/status.js +0 -0
  356. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/stop.js +0 -0
  357. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/tail.js +0 -0
  358. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/update.js +0 -0
  359. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/framework/version.js +0 -0
  360. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/gina-dev.1.md +0 -0
  361. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/gina-framework.1.md +0 -0
  362. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/gina.1.md +0 -0
  363. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/helper.js +0 -0
  364. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/i18n/add.js +0 -0
  365. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/i18n/arguments.json +0 -0
  366. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/i18n/export.js +0 -0
  367. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/i18n/help.js +0 -0
  368. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/i18n/help.txt +0 -0
  369. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/i18n/import.js +0 -0
  370. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/i18n/scan.js +0 -0
  371. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/_host.js +0 -0
  372. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/arguments.json +0 -0
  373. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/build.js +0 -0
  374. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/help.js +0 -0
  375. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/help.txt +0 -0
  376. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/list.js +0 -0
  377. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/man.js +0 -0
  378. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/rm.js +0 -0
  379. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/image/run.js +0 -0
  380. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/index.js +0 -0
  381. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/inspector/help.js +0 -0
  382. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/inspector/help.txt +0 -0
  383. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/inspector/open.js +0 -0
  384. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/man-render.js +0 -0
  385. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/minion/arguments.json +0 -0
  386. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/minion/help.js +0 -0
  387. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/minion/help.txt +0 -0
  388. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/minion/kill.js +0 -0
  389. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/minion/list.js +0 -0
  390. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/msg.json +0 -0
  391. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/port/help.js +0 -0
  392. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/port/help.txt +0 -0
  393. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/port/inc/scan.js +0 -0
  394. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/port/list.js +0 -0
  395. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/port/reset.js +0 -0
  396. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/port/set.js +0 -0
  397. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/add.js +0 -0
  398. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/arguments.json +0 -0
  399. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/backup.js +0 -0
  400. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/build.js +0 -0
  401. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/help.js +0 -0
  402. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/help.txt +0 -0
  403. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/import.js +0 -0
  404. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/list.js +0 -0
  405. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/man.js +0 -0
  406. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/move.js +0 -0
  407. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/remove.js +0 -0
  408. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/rename.js +0 -0
  409. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/restart.js +0 -0
  410. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/restore.js +0 -0
  411. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/rm.js +0 -0
  412. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/start.js +0 -0
  413. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/status.js +0 -0
  414. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/project/stop.js +0 -0
  415. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/protocol/arguments.json +0 -0
  416. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/protocol/help.js +0 -0
  417. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/protocol/help.txt +0 -0
  418. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/protocol/list.js +0 -0
  419. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/protocol/remove.js +0 -0
  420. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/protocol/set.js +0 -0
  421. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/add.js +0 -0
  422. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/help.js +0 -0
  423. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/help.txt +0 -0
  424. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/link-local.js +0 -0
  425. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/link-production.js +0 -0
  426. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/list.js +0 -0
  427. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/remove.js +0 -0
  428. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/rm.js +0 -0
  429. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/scope/use.js +0 -0
  430. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/secrets/arguments.json +0 -0
  431. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/secrets/check.js +0 -0
  432. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/secrets/help.js +0 -0
  433. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/secrets/help.txt +0 -0
  434. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/secrets/scan.js +0 -0
  435. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/service/help.js +0 -0
  436. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/service/help.txt +0 -0
  437. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/service/list.js +0 -0
  438. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/service/man.js +0 -0
  439. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/service/start.js +0 -0
  440. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/storage/arguments.json +0 -0
  441. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/storage/gc.js +0 -0
  442. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/storage/help.txt +0 -0
  443. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/storage/stats.js +0 -0
  444. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/storage/verify.js +0 -0
  445. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd/view/add.js +0 -0
  446. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd-status-format/package.json +0 -0
  447. /package/framework/{v0.6.17 → v0.6.18}/lib/cmd-status-format/src/main.js +0 -0
  448. /package/framework/{v0.6.17 → v0.6.18}/lib/collection/README.md +0 -0
  449. /package/framework/{v0.6.17 → v0.6.18}/lib/collection/build.json +0 -0
  450. /package/framework/{v0.6.17 → v0.6.18}/lib/collection/package.json +0 -0
  451. /package/framework/{v0.6.17 → v0.6.18}/lib/collection/src/main.js +0 -0
  452. /package/framework/{v0.6.17 → v0.6.18}/lib/config.js +0 -0
  453. /package/framework/{v0.6.17 → v0.6.18}/lib/connector-config/package.json +0 -0
  454. /package/framework/{v0.6.17 → v0.6.18}/lib/connector-config/src/main.js +0 -0
  455. /package/framework/{v0.6.17 → v0.6.18}/lib/connector-error/package.json +0 -0
  456. /package/framework/{v0.6.17 → v0.6.18}/lib/connector-error/src/main.js +0 -0
  457. /package/framework/{v0.6.17 → v0.6.18}/lib/connector-registry/package.json +0 -0
  458. /package/framework/{v0.6.17 → v0.6.18}/lib/connector-registry/src/main.js +0 -0
  459. /package/framework/{v0.6.17 → v0.6.18}/lib/cron/README.md +0 -0
  460. /package/framework/{v0.6.17 → v0.6.18}/lib/cron/package.json +0 -0
  461. /package/framework/{v0.6.17 → v0.6.18}/lib/cron/src/main.js +0 -0
  462. /package/framework/{v0.6.17 → v0.6.18}/lib/domain/LICENSE +0 -0
  463. /package/framework/{v0.6.17 → v0.6.18}/lib/domain/README.md +0 -0
  464. /package/framework/{v0.6.17 → v0.6.18}/lib/domain/package.json +0 -0
  465. /package/framework/{v0.6.17 → v0.6.18}/lib/domain/src/main.js +0 -0
  466. /package/framework/{v0.6.17 → v0.6.18}/lib/dto/package.json +0 -0
  467. /package/framework/{v0.6.17 → v0.6.18}/lib/dto/src/main.js +0 -0
  468. /package/framework/{v0.6.17 → v0.6.18}/lib/dto-pipe/package.json +0 -0
  469. /package/framework/{v0.6.17 → v0.6.18}/lib/dto-pipe/src/main.js +0 -0
  470. /package/framework/{v0.6.17 → v0.6.18}/lib/dto-types/package.json +0 -0
  471. /package/framework/{v0.6.17 → v0.6.18}/lib/dto-types/src/main.js +0 -0
  472. /package/framework/{v0.6.17 → v0.6.18}/lib/generator/index.js +0 -0
  473. /package/framework/{v0.6.17 → v0.6.18}/lib/i18n/package.json +0 -0
  474. /package/framework/{v0.6.17 → v0.6.18}/lib/i18n/src/main.js +0 -0
  475. /package/framework/{v0.6.17 → v0.6.18}/lib/image-build/package.json +0 -0
  476. /package/framework/{v0.6.17 → v0.6.18}/lib/image-build/src/main.js +0 -0
  477. /package/framework/{v0.6.17 → v0.6.18}/lib/index.js +0 -0
  478. /package/framework/{v0.6.17 → v0.6.18}/lib/inherits/LICENSE +0 -0
  479. /package/framework/{v0.6.17 → v0.6.18}/lib/inherits/README.md +0 -0
  480. /package/framework/{v0.6.17 → v0.6.18}/lib/inherits/package.json +0 -0
  481. /package/framework/{v0.6.17 → v0.6.18}/lib/inherits/src/main.js +0 -0
  482. /package/framework/{v0.6.17 → v0.6.18}/lib/inspector-events/package.json +0 -0
  483. /package/framework/{v0.6.17 → v0.6.18}/lib/inspector-events/src/main.js +0 -0
  484. /package/framework/{v0.6.17 → v0.6.18}/lib/inspector-redact/package.json +0 -0
  485. /package/framework/{v0.6.17 → v0.6.18}/lib/inspector-redact/src/main.js +0 -0
  486. /package/framework/{v0.6.17 → v0.6.18}/lib/instrument/package.json +0 -0
  487. /package/framework/{v0.6.17 → v0.6.18}/lib/instrument/src/main.js +0 -0
  488. /package/framework/{v0.6.17 → v0.6.18}/lib/job/package.json +0 -0
  489. /package/framework/{v0.6.17 → v0.6.18}/lib/job/src/main.js +0 -0
  490. /package/framework/{v0.6.17 → v0.6.18}/lib/job-store.js +0 -0
  491. /package/framework/{v0.6.17 → v0.6.18}/lib/json-config-header/package.json +0 -0
  492. /package/framework/{v0.6.17 → v0.6.18}/lib/json-config-header/src/main.js +0 -0
  493. /package/framework/{v0.6.17 → v0.6.18}/lib/kv/package.json +0 -0
  494. /package/framework/{v0.6.17 → v0.6.18}/lib/kv/src/main.js +0 -0
  495. /package/framework/{v0.6.17 → v0.6.18}/lib/kv-store.js +0 -0
  496. /package/framework/{v0.6.17 → v0.6.18}/lib/loading-state/package.json +0 -0
  497. /package/framework/{v0.6.17 → v0.6.18}/lib/loading-state/src/main.js +0 -0
  498. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/README.md +0 -0
  499. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/package.json +0 -0
  500. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/containers/default/index.js +0 -0
  501. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/containers/file/index.js +0 -0
  502. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  503. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  504. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/containers/mq/index.js +0 -0
  505. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/containers/mq/listener.js +0 -0
  506. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/containers/mq/speaker.js +0 -0
  507. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/helper.js +0 -0
  508. /package/framework/{v0.6.17 → v0.6.18}/lib/logger/src/main.js +0 -0
  509. /package/framework/{v0.6.17 → v0.6.18}/lib/maintenance/package.json +0 -0
  510. /package/framework/{v0.6.17 → v0.6.18}/lib/maintenance/src/main.js +0 -0
  511. /package/framework/{v0.6.17 → v0.6.18}/lib/math/index.js +0 -0
  512. /package/framework/{v0.6.17 → v0.6.18}/lib/mcp-dispatch/package.json +0 -0
  513. /package/framework/{v0.6.17 → v0.6.18}/lib/mcp-dispatch/src/main.js +0 -0
  514. /package/framework/{v0.6.17 → v0.6.18}/lib/mcp-http/package.json +0 -0
  515. /package/framework/{v0.6.17 → v0.6.18}/lib/mcp-http/src/main.js +0 -0
  516. /package/framework/{v0.6.17 → v0.6.18}/lib/mcp-server/package.json +0 -0
  517. /package/framework/{v0.6.17 → v0.6.18}/lib/mcp-server/src/main.js +0 -0
  518. /package/framework/{v0.6.17 → v0.6.18}/lib/merge/README.md +0 -0
  519. /package/framework/{v0.6.17 → v0.6.18}/lib/merge/package.json +0 -0
  520. /package/framework/{v0.6.17 → v0.6.18}/lib/merge/src/main.js +0 -0
  521. /package/framework/{v0.6.17 → v0.6.18}/lib/metrics/package.json +0 -0
  522. /package/framework/{v0.6.17 → v0.6.18}/lib/metrics/src/main.js +0 -0
  523. /package/framework/{v0.6.17 → v0.6.18}/lib/model.js +0 -0
  524. /package/framework/{v0.6.17 → v0.6.18}/lib/net-locality/package.json +0 -0
  525. /package/framework/{v0.6.17 → v0.6.18}/lib/net-locality/src/main.js +0 -0
  526. /package/framework/{v0.6.17 → v0.6.18}/lib/nunjucks-filters/README.md +0 -0
  527. /package/framework/{v0.6.17 → v0.6.18}/lib/nunjucks-filters/package.json +0 -0
  528. /package/framework/{v0.6.17 → v0.6.18}/lib/nunjucks-filters/src/main.js +0 -0
  529. /package/framework/{v0.6.17 → v0.6.18}/lib/nunjucks-resolver/package.json +0 -0
  530. /package/framework/{v0.6.17 → v0.6.18}/lib/nunjucks-resolver/src/main.js +0 -0
  531. /package/framework/{v0.6.17 → v0.6.18}/lib/proc.js +0 -0
  532. /package/framework/{v0.6.17 → v0.6.18}/lib/push/package.json +0 -0
  533. /package/framework/{v0.6.17 → v0.6.18}/lib/push/src/main.js +0 -0
  534. /package/framework/{v0.6.17 → v0.6.18}/lib/rate-limit/package.json +0 -0
  535. /package/framework/{v0.6.17 → v0.6.18}/lib/rate-limit/src/main.js +0 -0
  536. /package/framework/{v0.6.17 → v0.6.18}/lib/release-watch/package.json +0 -0
  537. /package/framework/{v0.6.17 → v0.6.18}/lib/release-watch/src/main.js +0 -0
  538. /package/framework/{v0.6.17 → v0.6.18}/lib/render-cache/package.json +0 -0
  539. /package/framework/{v0.6.17 → v0.6.18}/lib/render-cache/src/main.js +0 -0
  540. /package/framework/{v0.6.17 → v0.6.18}/lib/render-cache-store.js +0 -0
  541. /package/framework/{v0.6.17 → v0.6.18}/lib/routing/README.md +0 -0
  542. /package/framework/{v0.6.17 → v0.6.18}/lib/routing/build.json +0 -0
  543. /package/framework/{v0.6.17 → v0.6.18}/lib/routing/package.json +0 -0
  544. /package/framework/{v0.6.17 → v0.6.18}/lib/routing/src/main.js +0 -0
  545. /package/framework/{v0.6.17 → v0.6.18}/lib/routing/src/radix.js +0 -0
  546. /package/framework/{v0.6.17 → v0.6.18}/lib/routing-introspect/package.json +0 -0
  547. /package/framework/{v0.6.17 → v0.6.18}/lib/routing-introspect/src/main.js +0 -0
  548. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/package.json +0 -0
  549. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/src/backends/env.js +0 -0
  550. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/src/backends/exec.js +0 -0
  551. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/src/backends/file.js +0 -0
  552. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/src/declaration.js +0 -0
  553. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/src/env-file.js +0 -0
  554. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/src/main.js +0 -0
  555. /package/framework/{v0.6.17 → v0.6.18}/lib/secrets/src/sources.js +0 -0
  556. /package/framework/{v0.6.17 → v0.6.18}/lib/session-store.js +0 -0
  557. /package/framework/{v0.6.17 → v0.6.18}/lib/shell.js +0 -0
  558. /package/framework/{v0.6.17 → v0.6.18}/lib/sqlite-driver.js +0 -0
  559. /package/framework/{v0.6.17 → v0.6.18}/lib/state.js +0 -0
  560. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/package.json +0 -0
  561. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/src/local-cas.js +0 -0
  562. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/src/local-stream.js +0 -0
  563. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/src/local.js +0 -0
  564. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/src/main.js +0 -0
  565. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/src/meta-store.js +0 -0
  566. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/src/s3.js +0 -0
  567. /package/framework/{v0.6.17 → v0.6.18}/lib/storage/src/util.js +0 -0
  568. /package/framework/{v0.6.17 → v0.6.18}/lib/storage-store.js +0 -0
  569. /package/framework/{v0.6.17 → v0.6.18}/lib/swig-filters/README.md +0 -0
  570. /package/framework/{v0.6.17 → v0.6.18}/lib/swig-filters/package.json +0 -0
  571. /package/framework/{v0.6.17 → v0.6.18}/lib/swig-filters/src/main.js +0 -0
  572. /package/framework/{v0.6.17 → v0.6.18}/lib/swig-resolver/package.json +0 -0
  573. /package/framework/{v0.6.17 → v0.6.18}/lib/swig-resolver/src/main.js +0 -0
  574. /package/framework/{v0.6.17 → v0.6.18}/lib/template-loaders/package.json +0 -0
  575. /package/framework/{v0.6.17 → v0.6.18}/lib/template-loaders/src/loaders/http.js +0 -0
  576. /package/framework/{v0.6.17 → v0.6.18}/lib/template-loaders/src/loaders/memory.js +0 -0
  577. /package/framework/{v0.6.17 → v0.6.18}/lib/template-loaders/src/main.js +0 -0
  578. /package/framework/{v0.6.17 → v0.6.18}/lib/url/README.md +0 -0
  579. /package/framework/{v0.6.17 → v0.6.18}/lib/url/index.js +0 -0
  580. /package/framework/{v0.6.17 → v0.6.18}/lib/url/routing.json +0 -0
  581. /package/framework/{v0.6.17 → v0.6.18}/lib/uuid/package.json +0 -0
  582. /package/framework/{v0.6.17 → v0.6.18}/lib/uuid/src/main.js +0 -0
  583. /package/framework/{v0.6.17 → v0.6.18}/lib/validator.js +0 -0
  584. /package/framework/{v0.6.17 → v0.6.18}/lib/watcher/package.json +0 -0
  585. /package/framework/{v0.6.17 → v0.6.18}/lib/watcher/src/main.js +0 -0
  586. /package/framework/{v0.6.17 → v0.6.18}/lib/ws-framing/package.json +0 -0
  587. /package/framework/{v0.6.17 → v0.6.18}/lib/ws-framing/src/main.js +0 -0
  588. /package/framework/{v0.6.17 → v0.6.18}/lib/ws-query/package.json +0 -0
  589. /package/framework/{v0.6.17 → v0.6.18}/lib/ws-query/src/main.js +0 -0
  590. /package/framework/{v0.6.17 → v0.6.18}/lib/ws-session/package.json +0 -0
  591. /package/framework/{v0.6.17 → v0.6.18}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,11 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
6
6
  and is generated by [Changie](https://github.com/miniscruff/changie).
7
7
 
8
8
 
9
+ ## 0.6.18 - 2026-08-27
10
+ ### Fixed
11
+ * A field validated by a `query` (live-check) rule no longer gets the wrong verdict when its value contains a `+` — the common case being an email plus-address such as `alias+tag@example.com`. The live-check body is JSON, but the request was labelled `application/x-www-form-urlencoded`, so the server correctly url-decoded it before parsing and turned every `+` into a space; the mangled body was still valid JSON, so nothing errored and the endpoint answered 200 with an answer computed from a corrupted value. Because a `query` rule also gates the submit trigger, an affected visitor could not submit the form at all — a hard lockout on sign-in and password-recovery forms rather than a warning. The request now sends `application/json` when the body is JSON, matching what the form-submit and file-removal paths already did. An explicit per-rule `headers` override still wins, so a rule that already declares its own `Content-Type` is unchanged. Note that live-check bodies are no longer URL-decoded at all, so `%XX` sequences reach your action verbatim; field values are sent raw, so this only affects a bundle that relied on the decode.
12
+ * The controller no longer walks and rewrites the shared forms catalog on every request. The dotted-path data setter behind every render (`page.view.*`, `page.environment.*`, `page.forms`, …) used to build the path as a JSON string, parse it, and deep-merge the result into the render data — and that merge recursed into every object value it grafted, re-merging each array inside it with itself and writing the copies back into the caller's object. For a bundle with a real forms catalog that was 0.4–1.5 ms of CPU per request AND a silent mutation of the per-process catalog (its arrays were swapped for equal copies on every render). A first write is now stored by reference without being walked, missing intermediates are created directly, and only a genuine collision goes through the merge — so the value semantics are unchanged (first write wins, an object written onto an object leaf still deep-fills), the catalog is never touched, and the 59 primitive writes of a render cost about a fifth of what they did (66.6 → 14.8 µs). One deliberate difference: writing an array onto an existing array leaf now merges the two once instead of twice (the old path produced duplicate elements); no framework route writes an array-bearing path twice. Server-side only — pickup is a bundle restart, no rebuild.
13
+
9
14
  ## 0.6.17 - 2026-08-26
10
15
  ### Fixed
11
16
  * #B422 — a route whose URL structurally matches but whose `requirements` REJECT the request no longer drops the connection once the route cache is warm. The route cache is keyed `method:pathname` and (on the isaac engine) the query string is stripped before dispatch, so every query variant of one pathname shares one cache entry; the warm path re-evaluated `requirements` on each hit but discarded the verdict, force-matching the rejected request and dispatching it with no routing description — an unhandled promise rejection at the dispatch target deref, the connection dropped with no HTTP response at all. The warm path now honors the verdict: a rejecting (or throwing) requirement evaluation is treated as a cache miss and falls through to the routing scan, which answers correctly — 404 when nothing matches, the sibling rule when one does, or a 500 naming the rule when a `validator::` requirement throws (previously also a dropped connection). The cache entry is kept — variants the requirements accept stay warm. Defence in depth: the router now answers a named 500 instead of throwing when dispatched without a resolved `param.control`. Server-side only — pickup is a bundle restart, no re-bake.
package/README.md CHANGED
@@ -62,30 +62,30 @@ open https://localhost:3100
62
62
 
63
63
  > **npm 12+** blocks install scripts by default, and gina's post-install bootstraps `~/.gina` and the framework dependencies. Install with `npm install -g gina@latest --allow-scripts=gina`, or allow it once for all global installs with `npm config set allow-scripts=gina --location=user`. (Not needed on npm ≤ 11.)
64
64
 
65
- ## What's in 0.6.17
65
+ ## What's in 0.6.18
66
66
 
67
67
  > **Restart your bundles AND rebuild them.** This release changes the browser
68
- > bundle: `gina.min.js` differs from `0.6.16` (`gina.min.css` and
68
+ > bundle: `gina.min.js` differs from `0.6.17` (`gina.min.css` and
69
69
  > `gina.onload.min.js` are unchanged). A restart alone updates the server half
70
70
  > only — each bundle bakes its own copy of the client assets, so the validator
71
71
  > fix below would not reach a browser at all.
72
72
 
73
- > **No settings reset.** `0.6.17` is a patch — the `shortVersion` stays `0.6`, so
73
+ > **No settings reset.** `0.6.18` is a patch — the `shortVersion` stays `0.6`, so
74
74
  > your `~/.gina/0.6/settings.json` is untouched. (`0.6.0` was the reset.)
75
75
 
76
- **A dropped-connection routing defect, and three validator rules that could not
77
- run on the server.** The headline is an availability fix: once a route cache was
78
- warm, a request rejected by a route's `requirements` was dispatched anyway and the
79
- connection was dropped with no HTTP response at allno status, no body. Alongside
80
- it, three documented validator rules threw on every server-side call, and a
81
- redirect-route log flood that could account for most of a bundle's warning volume
82
- is gone. **No action is required for any of the three** each is a strict
83
- improvement over behaviour that previously failed; details in the
76
+ **A form-validation lockout, and a per-request cost paid by every render.** The
77
+ headline is a correctness fix with an availability consequence: a field validated
78
+ by a `query` (live-check) rule got the wrong verdict whenever its value contained
79
+ a `+` an email plus-address being the common case and because a `query` rule
80
+ also gates the submit trigger, an affected visitor could not submit the form at
81
+ all. Alongside it, the dotted-path data setter behind every render no longer
82
+ deep-merges its way through the render tree, which also ends a silent mutation of
83
+ the per-process forms catalog. **One behaviour change needs your attention** if a
84
+ bundle relied on live-check bodies being URL-decoded — details in the
84
85
  [migration guide](https://gina.io/docs/migration).
85
86
 
86
- - **Fixed — a rejected route no longer drops the connection once the cache is warm (#B422).** The route cache is keyed `method:pathname`, and on the isaac engine the query string is stripped before dispatch, so every query variant of one pathname shares a single cache entry. The warm path re-evaluated the route's `requirements` on each hit and then discarded the verdict, force-matching a request the requirements had just rejected and dispatching it with no routing description an unhandled promise rejection at the dispatch target deref, and the connection closed with no HTTP response at all. The warm path now honours the verdict: a rejecting or throwing requirement evaluation is treated as a cache miss and falls through to the routing scan, which answers correctly — `404` when nothing matches, the sibling rule when one does, or a `500` naming the rule when a `validator::` requirement throws (previously also a dropped connection). The cache entry is kept, so variants the requirements accept stay warm. Defence in depth: the router now answers a named `500` instead of throwing when dispatched without a resolved `param.control`.
87
- - **Fixed — the `toFloat`, `set` and `format` validator rules are context-safe (#B398).** All three are documented rules that threw on every server-side call. `toFloat` opened by reading the live DOM element unguarded, so server-side rule sets could not coerce a float at all; it now reads the live value only when one is reachable and otherwise uses the submitted value which on the server *is* the raw value so it works in both contexts (a missing comma in the same statement, which leaked `isFloatingWithCommas` as an implicit global into every page, is fixed with it). `set` assigns the field value in both contexts and reflects it onto the DOM element only in the browser, where an element exists. `format` which already worked in both contexts when chained after `isDate`, as its documentation shows now reports a non-`Date` value as a named rule-authoring error pointing at the missing `isDate`, instead of the opaque `val.format is not a function`. The guide's [middleware page](https://gina.io/docs/guides/middleware) also gained a section on reading configuration efficiently.
88
- - **Fixed — a redirect route no longer floods the log with `source[host] is undefined` warnings (#B423).** Redirect rules are deliberately excluded from the per-rule host/hostname defaulting, so those keys are absent on them — but the per-request routing copy assigned them unconditionally, creating properties holding `undefined` on the cached routing clone. Because that clone lives for the process lifetime, every later no-arg `getConfig()` emitted one `host` and one `hostname` warning per redirect rule, indefinitely; measured by a consumer at roughly three quarters of that log line's total volume, drowning the genuine warnings it exists to surface. The copy is now existence-guarded: an absent key stays absent, and rules that do carry a host or hostname are copied exactly as before. This removes log noise rather than a functional defect — the clone had been substituting `null`, which every reader already treated the same as absent. Reached only from template and view routes, so API-only bundles were never affected.
87
+ - **Fixed — a `query` rule no longer mis-validates a value containing `+` (#B425).** The live-check body is JSON, but the request was labelled `application/x-www-form-urlencoded`, so the server correctly url-decoded it before parsing and turned every `+` into a space. The mangled body was still valid JSON, so nothing errored the endpoint answered `200` with a verdict computed from a corrupted value. Because a `query` rule also gates the submit trigger, the common case of an email plus-address such as `alias+tag@example.com` was a hard lockout on sign-in and password-recovery forms rather than a warning. The request now sends `application/json` when the body is JSON, matching what the form-submit and file-removal paths already did. An explicit per-rule `headers` override still wins, so a rule that already declares its own `Content-Type` is unchanged. **Action required only if you relied on the decode:** live-check bodies are no longer URL-decoded at all, so `%XX` sequences reach your action verbatim, and field values are sent raw.
88
+ - **Fixed — the render data setter no longer walks and rewrites the shared forms catalog on every request (#P39).** The dotted-path setter behind every render (`page.view.*`, `page.environment.*`, `page.forms`, …) used to build the path as a JSON string, parse it, and deep-merge the result into the render data and that merge recursed into every object value it grafted, re-merging each array inside it with itself and writing the copies back into the caller's object. For a bundle with a real forms catalog that was roughly 0.4 to 1.5 ms of CPU per request *and* a silent mutation of the per-process catalog, whose arrays were swapped for equal copies on every render. A first write is now stored by reference without being walked, missing intermediates are created directly, and only a genuine collision goes through the merge — so the value semantics are unchanged (first write wins; an object written onto an object leaf still deep-fills), the catalog is never touched, and the 59 primitive writes of a render cost about a fifth of what they did (66.6 14.8 µs). One deliberate difference: writing an array onto an existing array leaf now merges the two once instead of twice, where the old path produced duplicate elements; no framework route writes an array-bearing path twice.
89
89
 
90
90
  ## Documentation
91
91
 
package/ROADMAP.md CHANGED
@@ -69,6 +69,7 @@ This roadmap covers planned features, architectural improvements, new connectors
69
69
  | **Q4 2026** | `0.6.15` ✅ | **Fixed**: client-side handler release now awaits the routing table — the table arrives only by async fetch (the page deliberately whispers an empty stub rather than inlining it) yet `gina.ready` handlers and the auto-boot validator released at `DOMContentLoaded`, so anything calling `getRoute()`/`toUrl()` during handler or form-bind initialisation ran against an empty table; loopback wins that race by single-digit milliseconds, which is why development and the local suites never see it, while a real deployment loses it by 150ms or more on every load, deterministically — a validator form rule naming a route then threw inside the init listener, the event dispatch swallowed the throw, and the instance's `ready` never fired, silently. All three release paths now gate on the dependency settling (the ready-list scheduler, the validator auto-boot poll, and the late-registration path that previously bypassed the scheduler entirely and fired immediately), settled deliberately meaning loaded **or** failed so a broken endpoint still releases handlers rather than hanging the page, with a parse-time 5-second fallback force-settling in degenerate shapes where no fetch is ever issued (ACTION REQUIRED only in the sense of timing: on deployed tiers handlers now fire 150ms–1.3s later than before, when routing is actually available). Alongside it, client `getRoute()` no longer crashes with a context-free TypeError when a bundle's routing table is absent — the client `getRouting()` returns null by design, and the bare dereference of that null sat one line above the very diagnostic built for the degraded-table case, so the case it existed for was exactly the one it could never report — and a failed routing fetch now leaves console evidence instead of booting the framework permanently degraded in silence. The couchbase connector no longer hangs a request when a `@return {number}` COUNT query does not match its alias parser: the branch dereferenced an unguarded regex match, so `SELECT COUNT(DISTINCT a.b) AS n` and an unaliased `SELECT COUNT(*)` both threw inside the connector's own result callback — no 5xx was ever produced, a promisified caller never settled, and the request hung until the client or proxy timed out, a stall then retried behind an HTTP/2 inter-bundle client; it was dev-invisible too, since the dev path strips only the first comment block, so a commented-out parsable COUNT elsewhere in the file kept the regex satisfied locally while production threw on the identical file. The branch now derives the count from the first projected column with no regex at all, guarded against empty result sets, empty rows and null payloads, exactly as mysql, postgresql, scylladb and sqlite already did (ACTION REQUIRED if a multi-column projection puts its COUNT anywhere but first: the returned value is now the first column rather than the aliased one, consistent with every other connector). The same connector now trims and lowercases the types it reads from `@return` and `@param`, and bounds both captures to the first brace pair — the extracted types feed exact-match comparisons whose arms are all lowercase, so `{Number}` or `{ number }` matched nothing and was silently skipped, handing back the raw row array instead of the declared shape and leaving the parameter uncast, while a second brace pair on the same line bled into the greedy capture (ACTION REQUIRED: annotations that previously fell through silently now reach their branch, so a query declaring `@return {Number}` begins returning the declared shape; `@options` deliberately keeps its greedy capture, holding a nestable object literal rather than a single type token). Two client plugins stop leaking behaviour onto pages that never asked for it: the public link API throws a named error identifying the url and the likely cause instead of a bare TypeError, and detects the miss before the supersede step so a mistyped url no longer aborts a legitimate request still in flight; and the popin stylesheet's `::backdrop` rule is scoped to gina's own popin dialogs rather than every `<dialog>` on the page (ACTION REQUIRED if a page relied on the unscoped rule to style its own dialogs, or supplies a popin dialog element from its own markup — that element needs the `gina-popin-container` class to keep gina's backdrop). **Changed**: a changelog fragment whose filename names a tracker id must now cite that id in its body, since only the body renders into `CHANGELOG.md` and the published tarball — an id carried by filename and commit message alone ships an unnumbered entry and anyone triaging by id gets a false zero (roughly 60 of 937 historical fragments shipped that way); recognised id families are an explicit allowlist rather than a generic pattern, because the generic form false-positives on real filenames and a false positive would block a commit. Pickup: restart **and** rebuild your bundles (the browser bundle changed — both `gina.min.js` and `gina.min.css` differ from `0.6.14`). |
70
70
  | **Q4 2026** | `0.6.16` ✅ | **Security**: concurrent uploads of the same filename no longer corrupt one another — the multipart parser wrote every incoming file to `<upload dir>/<the filename the client sent>` with nothing in the path distinguishing one part or one request from another, so two uploads sharing a filename opened two write streams on a single path and interleaved their bytes into one hybrid matching neither upload, while the framework reported success to both callers; measured on a live bundle before the fix, twelve concurrent uploads of one filename left ONE corrupted file where twelve intact ones were sent, and a single request carrying two same-named parts produced one file mixing both. The parse runs before routing and before any middleware, so reaching it needed neither authentication nor a valid route — a POST to an unknown url answers 404 to the client and still writes the file to disk — and no application configuration could avoid it; uploads now stage under a server-generated random name, 32 hex characters plus a `.part` suffix, as multer and formidable have always done, which also keeps client-controlled bytes off the filesystem and cannot overflow the operating system filename limit (ACTION REQUIRED only where your own code derives a display name or a public URL from the basename of `req.files[].path`: read `req.files[].originalFilename` instead, which is unchanged and is still the name `self.store()` publishes the file under). **Fixed**: the documented fluent `store(target).onComplete(cb)` form works again — `store()` was accidentally declared `async`, so the deliberate `{ onComplete }` facade came back wrapped in a Promise carrying no `onComplete`, leaving the upload guide's first worked example dead code on every stable from `0.6.0` through `0.6.15`; the body contains no `await` and nothing anywhere awaits the call, so dropping the keyword changed no behaviour, the facade returns synchronously as documented, the three-argument callback form is byte-unchanged, and the TypeScript declaration now describes the fluent return shape instead of `Promise<void>`. The page whisper no longer exports the forms mocks group — the RFC5987-encoded `page.environment.forms` export shipped the entire bundle forms catalog into every page in every environment, mocks included, while the routing exports one line above it were deliberately stubbed to `{}` for page weight; mocks are now excluded in every environment rather than outside development only, deliberately, since an env-divergent `gina.forms` shape is the works-in-dev-fails-in-prod class, and rules, custom validators and every server-side surface keep the complete catalog (ACTION REQUIRED only for client code that read `gina.forms.mocks`, which the framework's own client bundle never consumed). And the link API names its error when the anchor has left the DOM: there is no deregistration path, so a registration outlives its element and a page that re-renders its anchors after binding dereferenced the null lookup and threw a bare TypeError — it now throws a named error identifying the link id, the url and the cause, detected beside the unregistered-url guard before the supersede step so it no longer aborts a request already in flight nor invalidates that request's response handling. Pickup: restart **and** rebuild your bundles (the browser bundle changed — `gina.min.js` differs from `0.6.15`; `gina.min.css` and `gina.onload.min.js` are unchanged). |
71
71
  | **Q4 2026** | `0.6.17` ✅ | **Fixed**: a route whose URL structurally matches but whose `requirements` reject the request no longer drops the connection once the route cache is warm — the cache is keyed on method and pathname with the query string stripped before dispatch, so every query variant of one pathname shares a single entry, and the warm path re-evaluated the requirements on each hit and then discarded the verdict, force-matching a request that had just been rejected and dispatching it with no routing description, which closed the connection with no HTTP response at all — no status and no body; the warm path now honours the verdict, treating a rejecting or throwing evaluation as a cache miss that falls through to the routing scan and answers correctly (404 when nothing matches, the sibling rule when one does, or a 500 naming the rule when a `validator::` requirement throws, which was previously also a dropped connection), while the cache entry is kept so the variants the requirements accept stay warm. **Fixed**: the `toFloat`, `set` and `format` validator rules are context-safe — all three are documented rules that threw on every server-side call, with `toFloat` opening by reading the live DOM element unguarded so server-side rule sets could not coerce a float at all (it now reads the live value only when one is reachable and otherwise uses the submitted value, which on the server is the raw value, and a missing comma in the same statement that leaked `isFloatingWithCommas` as an implicit global into every page is fixed with it), `set` now assigning the field value in both contexts while reflecting it onto the DOM element only in the browser where an element exists, and `format` — which already worked in both contexts when chained after `isDate`, as its documentation shows — now reporting a non-`Date` value as a named rule-authoring error pointing at the missing `isDate` instead of the opaque `val.format is not a function`. **Fixed**: a bundle declaring a redirect route no longer floods its log with `source[host] is undefined` warnings — redirect rules are deliberately excluded from the per-rule host and hostname defaulting so those keys are absent on them, but the per-request routing copy assigned them unconditionally, creating properties holding `undefined` on a clone kept for the lifetime of the process, so every later no-arg `getConfig()` emitted one `host` and one `hostname` warning per redirect rule indefinitely, measured by a consumer at roughly three quarters of that log line's total volume and drowning the genuine warnings it exists to surface; the copy is now existence-guarded, so an absent key stays absent and rules that do carry a host are copied exactly as before, which removes log noise rather than a functional defect, and only template and view routes reach it so API-only bundles were never affected. Pickup: restart **and** rebuild your bundles (the browser bundle changed — `gina.min.js` differs from `0.6.16`; `gina.min.css` and `gina.onload.min.js` are unchanged). |
72
+ | **Q4 2026** | `0.6.18` ✅ | **Fixed**: a field validated by a `query` (live-check) rule no longer gets the wrong verdict when its value contains a `+` — the live-check body is JSON but the request was labelled `application/x-www-form-urlencoded`, so the server url-decoded it before parsing and turned every `+` into a space; the mangled body was still valid JSON, so the endpoint answered 200 with a verdict computed from a corrupted value, and because a `query` rule also gates the submit trigger the common case of an email plus-address was a hard lockout on sign-in and password-recovery forms rather than a warning. Live-check bodies are no longer URL-decoded at all, so `%XX` sequences reach your action verbatim. **Fixed**: the dotted-path render data setter no longer walks and rewrites the shared forms catalog on every request — a first write is now stored by reference instead of being deep-merged through the render tree, ending both a per-request CPU cost and a silent mutation of the per-process catalog. Restart **and** rebuild your bundles (the browser bundle changed — `gina.min.js` differs from `0.6.17`; `gina.min.css` and `gina.onload.min.js` are unchanged). |
72
73
  | **Q1 2027** | `0.6.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · Beemaster admin + visual translation editor |
73
74
  | **2027** | `0.7.0` | Performance — remaining measure-gated candidates: multipart & WebSocket fast paths, render/log cleanups, SIMD scanner (the render-path deep-clone & id-mint reduction shipped early in `0.6.2` with a measured 4.4× render-throughput gain; the profiling baseline itself also shipped in `0.6.2`) |
74
75
  | **2027** | `0.8.0` | Financial-messaging foundations — XML request/response handling · pluggable message-schema validation · IBAN/BIC validation rules · money & ISO 4217 minor-unit utilities · idempotency keys · sequence primitive · OAuth2 client-credentials egress |
@@ -406,7 +407,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
406
407
  | ✅ | **Application-level rapid reset rate limiter** (CVE-2023-44487) — per-session stream creation counter | `0.3.13` | 2026-05-14 | The Isaac HTTP/2 session handler counts new streams in a rolling 1s window per session; over `maxStreamsPerSecond` (default 200) it sends a GOAWAY and closes the session. More targeted than `maxSessionRejectedStreams` (which counts refused streams, not created ones). Configurable via `settings.json` `http2Options.maxStreamsPerSecond`; `/_gina/info` exposes a `rapidResetBlocked` counter. |
407
408
  | ✅ | **Trailer support** — `stream.sendTrailers()` + `waitForTrailers: true` | `0.4.0` | 2026-05-22 | Opt-in HTTP/2 response trailers via `self.sendTrailers(fields)`. The render pipeline sets `waitForTrailers` and emits the trailing headers after the body (in the `wantTrailers` event), across all render delegates. Activated only when a controller calls `self.sendTrailers(fields)`; HTTP/1.1 and the no-trailers path are unchanged. For gRPC-style streaming (`grpc-status`) and content-integrity (`Digest`) use cases. |
408
409
  | ✅ | **Alt-Svc header** — advertise HTTP/3 availability | `0.4.2` | 2026-06-02 | Set `Alt-Svc: h3=":443"; ma=86400` response header to advertise HTTP/3 (QUIC) availability via a QUIC-capable reverse proxy (nginx, Caddy, Cloudflare). Gina does not need to implement QUIC — just announce it. Opt-in via `settings.server.json`. Native HTTP/3 is out of scope: Node.js has no stable QUIC API, and the standard deployment topology (Gina → proxy → client) already delivers HTTP/3 at the edge. |
409
- | 📋 | **RFC 9218 Extensible Priorities** — read `Priority: u=N, i` request header | `0.6.x` | Q1 2027 | Use the RFC 9218 priority header to order response writes for multiplexed API clients. Low value for typical HTML page loads; high value for parallel API requests with declared urgency. |
410
+ | 📋 | **RFC 9218 Extensible Priorities** — read, expose and propagate the `Priority: u=N, i` header | `0.6.x` | Q1 2027 | Read the client's declared urgency, expose it on the request, propagate it on outbound HTTP/2 calls, and use it where gina schedules its own work (async jobs, load shedding). Browsers do send it over HTTP/2 — Chrome spans the full urgency range and distinguishes documents, stylesheets, scripts, images and `fetch()` — while HTTP/1.1 sends nothing. Ordering the response writes themselves is **not** included: Node exposes no `PRIORITY_UPDATE` frame and no send-scheduler hook, so that half waits on the runtime. |
410
411
  | ✅ | **WebSocket over HTTP/2** (RFC 8441 extended CONNECT) — opt-in via `http2Options.enableConnectProtocol` (default off; https and cleartext h2c HTTP/2 bundles). From `onInitialize`, `app.onWebSocket(path, handler)` registers per-path WebSocket handlers; accepted streams arrive as full sessions backed by a built-in dependency-free RFC 6455 codec (auto-pong, timed close handshake, UTF-8 + close-code validation, payload/fragment DoS caps, backpressure passthrough, graceful shutdown drain). Unknown paths are refused with 404, plain CONNECT keeps its 405, and default-off deployments are byte-identical. **Extended in `0.5.5`:** endpoints are declarable in `routing.json` (`method: "ws"` + `param.wsHandler` → `channels/<name>.js`, `:param` paths, per-route `param.wsOptions`), and handlers can call other bundles over HTTP with `session.query()`. | `0.4.7` | 2026-06-11 |
411
412
 
412
413
  ---
@@ -0,0 +1 @@
1
+ 0.6.18
@@ -3446,11 +3446,32 @@ function FormValidatorUtil(data, $fields, xhrOptions, fieldsSet, culture) {
3446
3446
  // TODO - support regexp for validIf
3447
3447
  var validIf = ( typeof(options.validIf) == 'undefined' ) ? true : options.validIf;
3448
3448
 
3449
+ // #FORMCT (query path) — capture the rule's OWN Content-Type BEFORE the merge
3450
+ // below: after it, a rule-declared value and the `xhrOptions` default are
3451
+ // indistinguishable (both are just `queryOptions.headers['Content-Type']`), and the
3452
+ // resolution at `enctype` must tell them apart so an explicit per-rule override keeps
3453
+ // winning. `merge` is variadic and earlier sources win, so `options` already beats
3454
+ // `xhrOptions` — this only preserves the PROVENANCE the merge erases.
3455
+ var ruleContentType = ( options && options.headers ) ? options.headers['Content-Type'] : null;
3456
+
3449
3457
  queryOptions = merge(queryOptions, options, xhrOptions);
3450
3458
  delete queryOptions.data;
3451
3459
  delete queryOptions.validIf;
3452
3460
 
3461
+ // #FORMCT (query path) — the live-check body is JSON (`JSON.stringify` above).
3462
+ // Honor an EXPLICIT rule-declared Content-Type; otherwise send application/json — NOT
3463
+ // the urlencoded default inherited from `xhrOptions` — or the server url-decodes the
3464
+ // JSON body ('+' -> space, decodeURIComponent) before JSON.parse and corrupts values
3465
+ // such as email "+aliases", which parses cleanly and answers 200 with a wrong verdict.
3466
+ // Mirrors the non-binary send path's resolution in the plugin's main.js.
3453
3467
  var enctype = queryOptions.headers['Content-Type'];
3468
+ if (
3469
+ ( !ruleContentType || ruleContentType == '' )
3470
+ && typeof(queryData) == 'string'
3471
+ && /^[\[{]/.test(queryData.trim())
3472
+ ) {
3473
+ enctype = 'application/json; charset=UTF-8';
3474
+ }
3454
3475
  var result = null
3455
3476
  , $target = this.target
3456
3477
  //, id = $target.getAttribute('id')