gina 0.6.31 → 0.6.32

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 (621) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +62 -25
  3. package/ROADMAP.md +3 -1
  4. package/framework/v0.6.32/VERSION +1 -0
  5. package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/js/gina.js +2389 -202
  6. package/framework/v0.6.32/core/asset/plugin/dist/vendor/gina/js/gina.min.js +716 -0
  7. package/framework/v0.6.32/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  8. package/framework/v0.6.32/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  9. package/framework/{v0.6.31 → v0.6.32}/core/config.js +45 -7
  10. package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/index.js +9 -3
  11. package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.js +164 -17
  12. package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-json.js +35 -1
  13. package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-nunjucks-async.js +20 -0
  14. package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-nunjucks.js +69 -6
  15. package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-swig-async.js +20 -0
  16. package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-swig.js +40 -0
  17. package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-xml.js +20 -0
  18. package/framework/{v0.6.31 → v0.6.32}/core/gna.js +50 -2
  19. package/framework/{v0.6.31 → v0.6.32}/core/model/entity.js +79 -28
  20. package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/validator/src/form-validator.js +32 -1
  21. package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/validator/src/main.js +1579 -55
  22. package/framework/{v0.6.31 → v0.6.32}/core/router.js +45 -1
  23. package/framework/{v0.6.31 → v0.6.32}/core/server.isaac.js +41 -5
  24. package/framework/{v0.6.31 → v0.6.32}/core/server.js +277 -464
  25. package/framework/{v0.6.31 → v0.6.32}/helpers/json/src/main.js +57 -4
  26. package/framework/v0.6.32/lib/duration/package.json +17 -0
  27. package/framework/v0.6.32/lib/duration/src/main.js +82 -0
  28. package/framework/{v0.6.31 → v0.6.32}/lib/index.js +18 -4
  29. package/framework/{v0.6.31 → v0.6.32}/lib/maintenance/src/main.js +387 -7
  30. package/framework/{v0.6.31 → v0.6.32}/lib/model.js +86 -1
  31. package/framework/v0.6.32/lib/session-lifetime/package.json +17 -0
  32. package/framework/v0.6.32/lib/session-lifetime/src/main.js +337 -0
  33. package/framework/{v0.6.31 → v0.6.32}/lib/storage/src/meta-store.js +45 -37
  34. package/framework/{v0.6.31 → v0.6.32}/lib/storage/src/util.js +8 -21
  35. package/framework/{v0.6.31 → v0.6.32}/package.json +1 -1
  36. package/gna.js +4 -4
  37. package/llms.txt +14 -14
  38. package/package.json +3 -3
  39. package/schema/security.json +35 -0
  40. package/schema/settings.json +13 -1
  41. package/script/smoke_ws_h2.js +353 -0
  42. package/test-results/validator-upload-popin-con-a5268-n-change-fires-RED-pre-fix--chromium/error-context.md +172 -0
  43. package/test-results/validator-upload-popin-con-cf673--the-page-form-RED-pre-fix--chromium/error-context.md +212 -0
  44. package/types/gna.d.ts +3 -2
  45. package/types/index.d.ts +32 -0
  46. package/framework/v0.6.31/VERSION +0 -1
  47. package/framework/v0.6.31/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -673
  48. package/framework/v0.6.31/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  49. package/framework/v0.6.31/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  50. package/test-results/validator-upload-preview-f-c70b4-t-in-the-DOM-or-on-the-wire-chromium/error-context.md +0 -187
  51. /package/framework/{v0.6.31 → v0.6.32}/AUTHORS +0 -0
  52. /package/framework/{v0.6.31 → v0.6.32}/LICENSE +0 -0
  53. /package/framework/{v0.6.31 → v0.6.32}/core/asset/html/nolayout.html +0 -0
  54. /package/framework/{v0.6.31 → v0.6.32}/core/asset/html/static.html +0 -0
  55. /package/framework/{v0.6.31 → v0.6.32}/core/asset/img/android-chrome-192x192.png +0 -0
  56. /package/framework/{v0.6.31 → v0.6.32}/core/asset/img/android-chrome-512x512.png +0 -0
  57. /package/framework/{v0.6.31 → v0.6.32}/core/asset/img/apple-touch-icon.png +0 -0
  58. /package/framework/{v0.6.31 → v0.6.32}/core/asset/img/favicon-16x16.png +0 -0
  59. /package/framework/{v0.6.31 → v0.6.32}/core/asset/img/favicon-32x32.png +0 -0
  60. /package/framework/{v0.6.31 → v0.6.32}/core/asset/img/favicon.ico +0 -0
  61. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/README.md +0 -0
  62. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  63. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  64. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  65. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  66. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  67. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  68. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  69. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  70. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  71. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  72. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  73. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  74. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  75. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  76. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  77. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  78. /package/framework/{v0.6.31 → v0.6.32}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  79. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/ai/index.js +0 -0
  80. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/ai/lib/connector.js +0 -0
  81. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/connector.js +0 -0
  82. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  83. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  84. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/n1ql.js +0 -0
  85. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/session-store.js +0 -0
  86. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  87. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  88. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/couchbase/lib/storage-store.js +0 -0
  89. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/duckdb/index.js +0 -0
  90. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/duckdb/lib/connector.js +0 -0
  91. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/mongodb/index.js +0 -0
  92. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/mongodb/lib/connector.js +0 -0
  93. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/mongodb/lib/job-store.js +0 -0
  94. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  95. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/mongodb/lib/session-store.js +0 -0
  96. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/mysql/index.js +0 -0
  97. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/mysql/lib/connector.js +0 -0
  98. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/param-redact.js +0 -0
  99. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/postgresql/index.js +0 -0
  100. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/postgresql/lib/connector.js +0 -0
  101. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/redis/index.js +0 -0
  102. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/redis/lib/connector.js +0 -0
  103. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/redis/lib/job-store.js +0 -0
  104. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/redis/lib/kv-store.js +0 -0
  105. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/redis/lib/render-cache-store.js +0 -0
  106. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/redis/lib/session-store.js +0 -0
  107. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/scylladb/index.js +0 -0
  108. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/scylladb/lib/connector.js +0 -0
  109. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/scylladb/lib/session-store.js +0 -0
  110. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/settle-once.js +0 -0
  111. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/sql-parser.js +0 -0
  112. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/sqlite/index.js +0 -0
  113. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/sqlite/lib/connector.js +0 -0
  114. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/sqlite/lib/job-store.js +0 -0
  115. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/sqlite/lib/kv-store.js +0 -0
  116. /package/framework/{v0.6.31 → v0.6.32}/core/connectors/sqlite/lib/session-store.js +0 -0
  117. /package/framework/{v0.6.31 → v0.6.32}/core/content.encoding +0 -0
  118. /package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.framework.js +0 -0
  119. /package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-stream.js +0 -0
  120. /package/framework/{v0.6.31 → v0.6.32}/core/controller/controller.render-v1.js +0 -0
  121. /package/framework/{v0.6.31 → v0.6.32}/core/controller/index.js +0 -0
  122. /package/framework/{v0.6.31 → v0.6.32}/core/controller/inline-script.js +0 -0
  123. /package/framework/{v0.6.31 → v0.6.32}/core/controller/inspector-window-emit.js +0 -0
  124. /package/framework/{v0.6.31 → v0.6.32}/core/controller/release-banner.js +0 -0
  125. /package/framework/{v0.6.31 → v0.6.32}/core/dev/index.js +0 -0
  126. /package/framework/{v0.6.31 → v0.6.32}/core/dev/lib/class.js +0 -0
  127. /package/framework/{v0.6.31 → v0.6.32}/core/dev/lib/factory.js +0 -0
  128. /package/framework/{v0.6.31 → v0.6.32}/core/dev/lib/tools.js +0 -0
  129. /package/framework/{v0.6.31 → v0.6.32}/core/locales/README.md +0 -0
  130. /package/framework/{v0.6.31 → v0.6.32}/core/locales/currency.json +0 -0
  131. /package/framework/{v0.6.31 → v0.6.32}/core/locales/dist/language/en.json +0 -0
  132. /package/framework/{v0.6.31 → v0.6.32}/core/locales/dist/language/fr.json +0 -0
  133. /package/framework/{v0.6.31 → v0.6.32}/core/locales/dist/region/en.json +0 -0
  134. /package/framework/{v0.6.31 → v0.6.32}/core/locales/dist/region/fr.json +0 -0
  135. /package/framework/{v0.6.31 → v0.6.32}/core/locales/index.js +0 -0
  136. /package/framework/{v0.6.31 → v0.6.32}/core/mime.types +0 -0
  137. /package/framework/{v0.6.31 → v0.6.32}/core/model/index.js +0 -0
  138. /package/framework/{v0.6.31 → v0.6.32}/core/model/template/entityFactory.js +0 -0
  139. /package/framework/{v0.6.31 → v0.6.32}/core/model/template/index.js +0 -0
  140. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/README.md +0 -0
  141. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/index.js +0 -0
  142. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/csrf/README.md +0 -0
  143. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/csrf/package.json +0 -0
  144. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/csrf/src/main.js +0 -0
  145. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/README.md +0 -0
  146. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/coep/README.md +0 -0
  147. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/coep/package.json +0 -0
  148. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  149. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/coop/README.md +0 -0
  150. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/coop/package.json +0 -0
  151. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  152. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/corp/README.md +0 -0
  153. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/corp/package.json +0 -0
  154. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  155. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/csp/README.md +0 -0
  156. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/csp/package.json +0 -0
  157. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  158. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  159. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  160. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  161. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  162. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  163. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  164. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  165. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  166. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  167. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/package.json +0 -0
  168. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  169. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  170. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  171. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/src/main.js +0 -0
  172. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  173. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  174. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  175. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  176. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  177. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  178. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  179. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  180. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  181. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  182. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  183. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  184. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  185. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  186. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  187. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  188. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  189. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  190. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/session/README.md +0 -0
  191. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/session/package.json +0 -0
  192. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/session/src/main.js +0 -0
  193. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/storage/README.md +0 -0
  194. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/storage/build.json +0 -0
  195. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/storage/package.json +0 -0
  196. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/storage/src/main.js +0 -0
  197. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/validator/README.md +0 -0
  198. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/validator/build.json +0 -0
  199. /package/framework/{v0.6.31 → v0.6.32}/core/plugins/lib/validator/package.json +0 -0
  200. /package/framework/{v0.6.31 → v0.6.32}/core/server.express.js +0 -0
  201. /package/framework/{v0.6.31 → v0.6.32}/core/status.codes +0 -0
  202. /package/framework/{v0.6.31 → v0.6.32}/core/template/_gitignore +0 -0
  203. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/config/app.json +0 -0
  204. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  205. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/config/routing.json +0 -0
  206. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/config/settings.json +0 -0
  207. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  208. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/config/templates.json +0 -0
  209. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  210. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  211. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  212. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  213. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/index.js +0 -0
  214. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle/locales/en.json +0 -0
  215. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  216. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  217. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  218. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  219. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  220. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  221. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  222. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  223. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/readme.md +0 -0
  224. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_public/sw.js +0 -0
  225. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  226. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  227. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  228. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  229. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  230. /package/framework/{v0.6.31 → v0.6.32}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  231. /package/framework/{v0.6.31 → v0.6.32}/core/template/command/gina.bat.tpl +0 -0
  232. /package/framework/{v0.6.31 → v0.6.32}/core/template/command/gina.tpl +0 -0
  233. /package/framework/{v0.6.31 → v0.6.32}/core/template/conf/env.json +0 -0
  234. /package/framework/{v0.6.31 → v0.6.32}/core/template/conf/manifest.json +0 -0
  235. /package/framework/{v0.6.31 → v0.6.32}/core/template/conf/package.json +0 -0
  236. /package/framework/{v0.6.31 → v0.6.32}/core/template/conf/settings.json +0 -0
  237. /package/framework/{v0.6.31 → v0.6.32}/core/template/conf/statics.json +0 -0
  238. /package/framework/{v0.6.31 → v0.6.32}/core/template/conf/templates.json +0 -0
  239. /package/framework/{v0.6.31 → v0.6.32}/core/template/error/client/json/401.json +0 -0
  240. /package/framework/{v0.6.31 → v0.6.32}/core/template/error/client/json/403.json +0 -0
  241. /package/framework/{v0.6.31 → v0.6.32}/core/template/error/client/json/404.json +0 -0
  242. /package/framework/{v0.6.31 → v0.6.32}/core/template/error/server/html/50x.html +0 -0
  243. /package/framework/{v0.6.31 → v0.6.32}/core/template/error/server/json/500.json +0 -0
  244. /package/framework/{v0.6.31 → v0.6.32}/core/template/error/server/json/503.json +0 -0
  245. /package/framework/{v0.6.31 → v0.6.32}/core/template/extensions/logger/config.json +0 -0
  246. /package/framework/{v0.6.31 → v0.6.32}/helpers/console.js +0 -0
  247. /package/framework/{v0.6.31 → v0.6.32}/helpers/context.js +0 -0
  248. /package/framework/{v0.6.31 → v0.6.32}/helpers/data/LICENSE +0 -0
  249. /package/framework/{v0.6.31 → v0.6.32}/helpers/data/README.md +0 -0
  250. /package/framework/{v0.6.31 → v0.6.32}/helpers/data/package.json +0 -0
  251. /package/framework/{v0.6.31 → v0.6.32}/helpers/data/src/main.js +0 -0
  252. /package/framework/{v0.6.31 → v0.6.32}/helpers/dateFormat.js +0 -0
  253. /package/framework/{v0.6.31 → v0.6.32}/helpers/index.js +0 -0
  254. /package/framework/{v0.6.31 → v0.6.32}/helpers/json/LICENSE +0 -0
  255. /package/framework/{v0.6.31 → v0.6.32}/helpers/json/README.md +0 -0
  256. /package/framework/{v0.6.31 → v0.6.32}/helpers/json/package.json +0 -0
  257. /package/framework/{v0.6.31 → v0.6.32}/helpers/path.js +0 -0
  258. /package/framework/{v0.6.31 → v0.6.32}/helpers/plugins/README.md +0 -0
  259. /package/framework/{v0.6.31 → v0.6.32}/helpers/plugins/package.json +0 -0
  260. /package/framework/{v0.6.31 → v0.6.32}/helpers/plugins/src/api-error.js +0 -0
  261. /package/framework/{v0.6.31 → v0.6.32}/helpers/plugins/src/main.js +0 -0
  262. /package/framework/{v0.6.31 → v0.6.32}/helpers/prototypes.js +0 -0
  263. /package/framework/{v0.6.31 → v0.6.32}/helpers/task.js +0 -0
  264. /package/framework/{v0.6.31 → v0.6.32}/helpers/text.js +0 -0
  265. /package/framework/{v0.6.31 → v0.6.32}/lib/admin/package.json +0 -0
  266. /package/framework/{v0.6.31 → v0.6.32}/lib/admin/src/main.js +0 -0
  267. /package/framework/{v0.6.31 → v0.6.32}/lib/archiver/README.md +0 -0
  268. /package/framework/{v0.6.31 → v0.6.32}/lib/archiver/build.json +0 -0
  269. /package/framework/{v0.6.31 → v0.6.32}/lib/archiver/package.json +0 -0
  270. /package/framework/{v0.6.31 → v0.6.32}/lib/archiver/src/dep/jszip.min.js +0 -0
  271. /package/framework/{v0.6.31 → v0.6.32}/lib/archiver/src/main.js +0 -0
  272. /package/framework/{v0.6.31 → v0.6.32}/lib/async/package.json +0 -0
  273. /package/framework/{v0.6.31 → v0.6.32}/lib/async/src/main.js +0 -0
  274. /package/framework/{v0.6.31 → v0.6.32}/lib/audit/package.json +0 -0
  275. /package/framework/{v0.6.31 → v0.6.32}/lib/audit/src/main.js +0 -0
  276. /package/framework/{v0.6.31 → v0.6.32}/lib/audit-store.js +0 -0
  277. /package/framework/{v0.6.31 → v0.6.32}/lib/authn/package.json +0 -0
  278. /package/framework/{v0.6.31 → v0.6.32}/lib/authn/src/lockout.js +0 -0
  279. /package/framework/{v0.6.31 → v0.6.32}/lib/authn/src/main.js +0 -0
  280. /package/framework/{v0.6.31 → v0.6.32}/lib/authn/src/totp.js +0 -0
  281. /package/framework/{v0.6.31 → v0.6.32}/lib/authz-gate/package.json +0 -0
  282. /package/framework/{v0.6.31 → v0.6.32}/lib/authz-gate/src/main.js +0 -0
  283. /package/framework/{v0.6.31 → v0.6.32}/lib/cache/README.md +0 -0
  284. /package/framework/{v0.6.31 → v0.6.32}/lib/cache/build.json +0 -0
  285. /package/framework/{v0.6.31 → v0.6.32}/lib/cache/package.json +0 -0
  286. /package/framework/{v0.6.31 → v0.6.32}/lib/cache/src/main.js +0 -0
  287. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/aliases.json +0 -0
  288. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/audit/arguments.json +0 -0
  289. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/audit/help.txt +0 -0
  290. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/audit/verify.js +0 -0
  291. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/add.js +0 -0
  292. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/arguments.json +0 -0
  293. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/build.js +0 -0
  294. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/copy.js +0 -0
  295. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/cp.js +0 -0
  296. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/help.js +0 -0
  297. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/help.txt +0 -0
  298. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  299. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/list.js +0 -0
  300. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/man.js +0 -0
  301. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/mcp-start.js +0 -0
  302. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/mcp.js +0 -0
  303. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/oas.js +0 -0
  304. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/openapi.js +0 -0
  305. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/remove.js +0 -0
  306. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/rename.js +0 -0
  307. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/restart.js +0 -0
  308. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/rm.js +0 -0
  309. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/start.js +0 -0
  310. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/status.js +0 -0
  311. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/stop.js +0 -0
  312. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/bundle/types.js +0 -0
  313. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/cache/arguments.json +0 -0
  314. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/cache/clear.js +0 -0
  315. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/cache/help.txt +0 -0
  316. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/cache/stats.js +0 -0
  317. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/add.js +0 -0
  318. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/arguments.json +0 -0
  319. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/help.js +0 -0
  320. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/help.txt +0 -0
  321. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/infer.js +0 -0
  322. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/list.js +0 -0
  323. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/migrate.js +0 -0
  324. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/models.js +0 -0
  325. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/remove.js +0 -0
  326. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/rm.js +0 -0
  327. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/connector/test.js +0 -0
  328. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/container/arguments.json +0 -0
  329. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/container/help.js +0 -0
  330. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/container/help.txt +0 -0
  331. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/container/man.js +0 -0
  332. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/container/ps.js +0 -0
  333. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/container/stop.js +0 -0
  334. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/add.js +0 -0
  335. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/arguments.json +0 -0
  336. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/help.txt +0 -0
  337. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/inc/args.js +0 -0
  338. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/inc/namespace.js +0 -0
  339. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  340. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/inc/reference-scan.js +0 -0
  341. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/inc/scaffold.js +0 -0
  342. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/remove.js +0 -0
  343. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/rename.js +0 -0
  344. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/controller/rm.js +0 -0
  345. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/add.js +0 -0
  346. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/get.js +0 -0
  347. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/help.js +0 -0
  348. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/help.txt +0 -0
  349. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/link-dev.js +0 -0
  350. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/list.js +0 -0
  351. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/remove.js +0 -0
  352. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/rm.js +0 -0
  353. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/set.js +0 -0
  354. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/unset.js +0 -0
  355. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/env/use.js +0 -0
  356. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/add.js +0 -0
  357. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/arguments.json +0 -0
  358. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/build.js +0 -0
  359. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/dot.js +0 -0
  360. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/get.js +0 -0
  361. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/help.js +0 -0
  362. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/help.txt +0 -0
  363. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/init.js +0 -0
  364. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/link-node-modules.js +0 -0
  365. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/link.js +0 -0
  366. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/list.js +0 -0
  367. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/man.js +0 -0
  368. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/msg.json +0 -0
  369. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/open.js +0 -0
  370. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/remove.js +0 -0
  371. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/reset.js +0 -0
  372. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/restart.js +0 -0
  373. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/set.js +0 -0
  374. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/start.js +0 -0
  375. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/status.js +0 -0
  376. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/stop.js +0 -0
  377. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/tail.js +0 -0
  378. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/update.js +0 -0
  379. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/framework/version.js +0 -0
  380. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/gina-dev.1.md +0 -0
  381. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/gina-framework.1.md +0 -0
  382. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/gina.1.md +0 -0
  383. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/helper.js +0 -0
  384. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/i18n/add.js +0 -0
  385. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/i18n/arguments.json +0 -0
  386. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/i18n/export.js +0 -0
  387. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/i18n/help.js +0 -0
  388. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/i18n/help.txt +0 -0
  389. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/i18n/import.js +0 -0
  390. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/i18n/scan.js +0 -0
  391. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/_host.js +0 -0
  392. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/arguments.json +0 -0
  393. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/build.js +0 -0
  394. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/help.js +0 -0
  395. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/help.txt +0 -0
  396. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/list.js +0 -0
  397. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/man.js +0 -0
  398. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/rm.js +0 -0
  399. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/image/run.js +0 -0
  400. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/index.js +0 -0
  401. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/inspector/help.js +0 -0
  402. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/inspector/help.txt +0 -0
  403. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/inspector/open.js +0 -0
  404. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/man-render.js +0 -0
  405. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/minion/arguments.json +0 -0
  406. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/minion/help.js +0 -0
  407. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/minion/help.txt +0 -0
  408. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/minion/kill.js +0 -0
  409. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/minion/list.js +0 -0
  410. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/msg.json +0 -0
  411. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/port/help.js +0 -0
  412. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/port/help.txt +0 -0
  413. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/port/inc/scan.js +0 -0
  414. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/port/list.js +0 -0
  415. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/port/reset.js +0 -0
  416. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/port/set.js +0 -0
  417. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/add.js +0 -0
  418. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/arguments.json +0 -0
  419. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/backup.js +0 -0
  420. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/build.js +0 -0
  421. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/help.js +0 -0
  422. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/help.txt +0 -0
  423. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/import.js +0 -0
  424. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/list.js +0 -0
  425. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/man.js +0 -0
  426. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/move.js +0 -0
  427. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/remove.js +0 -0
  428. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/rename.js +0 -0
  429. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/restart.js +0 -0
  430. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/restore.js +0 -0
  431. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/rm.js +0 -0
  432. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/start.js +0 -0
  433. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/status.js +0 -0
  434. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/project/stop.js +0 -0
  435. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/protocol/arguments.json +0 -0
  436. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/protocol/help.js +0 -0
  437. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/protocol/help.txt +0 -0
  438. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/protocol/list.js +0 -0
  439. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/protocol/remove.js +0 -0
  440. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/protocol/set.js +0 -0
  441. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/add.js +0 -0
  442. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/help.js +0 -0
  443. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/help.txt +0 -0
  444. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/link-local.js +0 -0
  445. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/link-production.js +0 -0
  446. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/list.js +0 -0
  447. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/remove.js +0 -0
  448. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/rm.js +0 -0
  449. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/scope/use.js +0 -0
  450. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/secrets/arguments.json +0 -0
  451. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/secrets/check.js +0 -0
  452. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/secrets/help.js +0 -0
  453. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/secrets/help.txt +0 -0
  454. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/secrets/scan.js +0 -0
  455. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/service/help.js +0 -0
  456. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/service/help.txt +0 -0
  457. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/service/list.js +0 -0
  458. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/service/man.js +0 -0
  459. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/service/start.js +0 -0
  460. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/storage/arguments.json +0 -0
  461. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/storage/gc.js +0 -0
  462. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/storage/help.txt +0 -0
  463. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/storage/stats.js +0 -0
  464. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/storage/verify.js +0 -0
  465. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd/view/add.js +0 -0
  466. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd-status-format/package.json +0 -0
  467. /package/framework/{v0.6.31 → v0.6.32}/lib/cmd-status-format/src/main.js +0 -0
  468. /package/framework/{v0.6.31 → v0.6.32}/lib/collection/README.md +0 -0
  469. /package/framework/{v0.6.31 → v0.6.32}/lib/collection/build.json +0 -0
  470. /package/framework/{v0.6.31 → v0.6.32}/lib/collection/package.json +0 -0
  471. /package/framework/{v0.6.31 → v0.6.32}/lib/collection/src/main.js +0 -0
  472. /package/framework/{v0.6.31 → v0.6.32}/lib/conf-view/package.json +0 -0
  473. /package/framework/{v0.6.31 → v0.6.32}/lib/conf-view/src/main.js +0 -0
  474. /package/framework/{v0.6.31 → v0.6.32}/lib/config.js +0 -0
  475. /package/framework/{v0.6.31 → v0.6.32}/lib/connector-config/package.json +0 -0
  476. /package/framework/{v0.6.31 → v0.6.32}/lib/connector-config/src/main.js +0 -0
  477. /package/framework/{v0.6.31 → v0.6.32}/lib/connector-error/package.json +0 -0
  478. /package/framework/{v0.6.31 → v0.6.32}/lib/connector-error/src/main.js +0 -0
  479. /package/framework/{v0.6.31 → v0.6.32}/lib/connector-registry/package.json +0 -0
  480. /package/framework/{v0.6.31 → v0.6.32}/lib/connector-registry/src/main.js +0 -0
  481. /package/framework/{v0.6.31 → v0.6.32}/lib/cron/README.md +0 -0
  482. /package/framework/{v0.6.31 → v0.6.32}/lib/cron/package.json +0 -0
  483. /package/framework/{v0.6.31 → v0.6.32}/lib/cron/src/main.js +0 -0
  484. /package/framework/{v0.6.31 → v0.6.32}/lib/domain/LICENSE +0 -0
  485. /package/framework/{v0.6.31 → v0.6.32}/lib/domain/README.md +0 -0
  486. /package/framework/{v0.6.31 → v0.6.32}/lib/domain/package.json +0 -0
  487. /package/framework/{v0.6.31 → v0.6.32}/lib/domain/src/main.js +0 -0
  488. /package/framework/{v0.6.31 → v0.6.32}/lib/dto/package.json +0 -0
  489. /package/framework/{v0.6.31 → v0.6.32}/lib/dto/src/main.js +0 -0
  490. /package/framework/{v0.6.31 → v0.6.32}/lib/dto-pipe/package.json +0 -0
  491. /package/framework/{v0.6.31 → v0.6.32}/lib/dto-pipe/src/main.js +0 -0
  492. /package/framework/{v0.6.31 → v0.6.32}/lib/dto-types/package.json +0 -0
  493. /package/framework/{v0.6.31 → v0.6.32}/lib/dto-types/src/main.js +0 -0
  494. /package/framework/{v0.6.31 → v0.6.32}/lib/generator/index.js +0 -0
  495. /package/framework/{v0.6.31 → v0.6.32}/lib/i18n/package.json +0 -0
  496. /package/framework/{v0.6.31 → v0.6.32}/lib/i18n/src/main.js +0 -0
  497. /package/framework/{v0.6.31 → v0.6.32}/lib/idempotency/package.json +0 -0
  498. /package/framework/{v0.6.31 → v0.6.32}/lib/idempotency/src/main.js +0 -0
  499. /package/framework/{v0.6.31 → v0.6.32}/lib/image-build/package.json +0 -0
  500. /package/framework/{v0.6.31 → v0.6.32}/lib/image-build/src/main.js +0 -0
  501. /package/framework/{v0.6.31 → v0.6.32}/lib/inherits/LICENSE +0 -0
  502. /package/framework/{v0.6.31 → v0.6.32}/lib/inherits/README.md +0 -0
  503. /package/framework/{v0.6.31 → v0.6.32}/lib/inherits/package.json +0 -0
  504. /package/framework/{v0.6.31 → v0.6.32}/lib/inherits/src/main.js +0 -0
  505. /package/framework/{v0.6.31 → v0.6.32}/lib/inspector-events/package.json +0 -0
  506. /package/framework/{v0.6.31 → v0.6.32}/lib/inspector-events/src/main.js +0 -0
  507. /package/framework/{v0.6.31 → v0.6.32}/lib/inspector-redact/package.json +0 -0
  508. /package/framework/{v0.6.31 → v0.6.32}/lib/inspector-redact/src/main.js +0 -0
  509. /package/framework/{v0.6.31 → v0.6.32}/lib/instrument/package.json +0 -0
  510. /package/framework/{v0.6.31 → v0.6.32}/lib/instrument/src/main.js +0 -0
  511. /package/framework/{v0.6.31 → v0.6.32}/lib/job/package.json +0 -0
  512. /package/framework/{v0.6.31 → v0.6.32}/lib/job/src/main.js +0 -0
  513. /package/framework/{v0.6.31 → v0.6.32}/lib/job-store.js +0 -0
  514. /package/framework/{v0.6.31 → v0.6.32}/lib/json-config-header/package.json +0 -0
  515. /package/framework/{v0.6.31 → v0.6.32}/lib/json-config-header/src/main.js +0 -0
  516. /package/framework/{v0.6.31 → v0.6.32}/lib/kv/package.json +0 -0
  517. /package/framework/{v0.6.31 → v0.6.32}/lib/kv/src/main.js +0 -0
  518. /package/framework/{v0.6.31 → v0.6.32}/lib/kv-store.js +0 -0
  519. /package/framework/{v0.6.31 → v0.6.32}/lib/loading-state/package.json +0 -0
  520. /package/framework/{v0.6.31 → v0.6.32}/lib/loading-state/src/main.js +0 -0
  521. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/README.md +0 -0
  522. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/package.json +0 -0
  523. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/containers/default/index.js +0 -0
  524. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/containers/file/index.js +0 -0
  525. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/containers/mq/index.js +0 -0
  526. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/containers/mq/listener.js +0 -0
  527. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/containers/mq/speaker.js +0 -0
  528. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/helper.js +0 -0
  529. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/main.js +0 -0
  530. /package/framework/{v0.6.31 → v0.6.32}/lib/logger/src/redact.js +0 -0
  531. /package/framework/{v0.6.31 → v0.6.32}/lib/maintenance/package.json +0 -0
  532. /package/framework/{v0.6.31 → v0.6.32}/lib/math/index.js +0 -0
  533. /package/framework/{v0.6.31 → v0.6.32}/lib/mcp-dispatch/package.json +0 -0
  534. /package/framework/{v0.6.31 → v0.6.32}/lib/mcp-dispatch/src/main.js +0 -0
  535. /package/framework/{v0.6.31 → v0.6.32}/lib/mcp-http/package.json +0 -0
  536. /package/framework/{v0.6.31 → v0.6.32}/lib/mcp-http/src/main.js +0 -0
  537. /package/framework/{v0.6.31 → v0.6.32}/lib/mcp-server/package.json +0 -0
  538. /package/framework/{v0.6.31 → v0.6.32}/lib/mcp-server/src/main.js +0 -0
  539. /package/framework/{v0.6.31 → v0.6.32}/lib/merge/README.md +0 -0
  540. /package/framework/{v0.6.31 → v0.6.32}/lib/merge/package.json +0 -0
  541. /package/framework/{v0.6.31 → v0.6.32}/lib/merge/src/main.js +0 -0
  542. /package/framework/{v0.6.31 → v0.6.32}/lib/message-validator/package.json +0 -0
  543. /package/framework/{v0.6.31 → v0.6.32}/lib/message-validator/src/main.js +0 -0
  544. /package/framework/{v0.6.31 → v0.6.32}/lib/metrics/package.json +0 -0
  545. /package/framework/{v0.6.31 → v0.6.32}/lib/metrics/src/main.js +0 -0
  546. /package/framework/{v0.6.31 → v0.6.32}/lib/money/package.json +0 -0
  547. /package/framework/{v0.6.31 → v0.6.32}/lib/money/src/main.js +0 -0
  548. /package/framework/{v0.6.31 → v0.6.32}/lib/multipart/package.json +0 -0
  549. /package/framework/{v0.6.31 → v0.6.32}/lib/multipart/src/main.js +0 -0
  550. /package/framework/{v0.6.31 → v0.6.32}/lib/net-locality/package.json +0 -0
  551. /package/framework/{v0.6.31 → v0.6.32}/lib/net-locality/src/main.js +0 -0
  552. /package/framework/{v0.6.31 → v0.6.32}/lib/nunjucks-filters/README.md +0 -0
  553. /package/framework/{v0.6.31 → v0.6.32}/lib/nunjucks-filters/package.json +0 -0
  554. /package/framework/{v0.6.31 → v0.6.32}/lib/nunjucks-filters/src/main.js +0 -0
  555. /package/framework/{v0.6.31 → v0.6.32}/lib/nunjucks-resolver/package.json +0 -0
  556. /package/framework/{v0.6.31 → v0.6.32}/lib/nunjucks-resolver/src/main.js +0 -0
  557. /package/framework/{v0.6.31 → v0.6.32}/lib/priority/package.json +0 -0
  558. /package/framework/{v0.6.31 → v0.6.32}/lib/priority/src/main.js +0 -0
  559. /package/framework/{v0.6.31 → v0.6.32}/lib/proc.js +0 -0
  560. /package/framework/{v0.6.31 → v0.6.32}/lib/push/package.json +0 -0
  561. /package/framework/{v0.6.31 → v0.6.32}/lib/push/src/main.js +0 -0
  562. /package/framework/{v0.6.31 → v0.6.32}/lib/rate-limit/package.json +0 -0
  563. /package/framework/{v0.6.31 → v0.6.32}/lib/rate-limit/src/main.js +0 -0
  564. /package/framework/{v0.6.31 → v0.6.32}/lib/release-watch/package.json +0 -0
  565. /package/framework/{v0.6.31 → v0.6.32}/lib/release-watch/src/main.js +0 -0
  566. /package/framework/{v0.6.31 → v0.6.32}/lib/render-cache/package.json +0 -0
  567. /package/framework/{v0.6.31 → v0.6.32}/lib/render-cache/src/main.js +0 -0
  568. /package/framework/{v0.6.31 → v0.6.32}/lib/render-cache-store.js +0 -0
  569. /package/framework/{v0.6.31 → v0.6.32}/lib/routing/README.md +0 -0
  570. /package/framework/{v0.6.31 → v0.6.32}/lib/routing/build.json +0 -0
  571. /package/framework/{v0.6.31 → v0.6.32}/lib/routing/package.json +0 -0
  572. /package/framework/{v0.6.31 → v0.6.32}/lib/routing/src/main.js +0 -0
  573. /package/framework/{v0.6.31 → v0.6.32}/lib/routing/src/radix.js +0 -0
  574. /package/framework/{v0.6.31 → v0.6.32}/lib/routing-introspect/package.json +0 -0
  575. /package/framework/{v0.6.31 → v0.6.32}/lib/routing-introspect/src/main.js +0 -0
  576. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/package.json +0 -0
  577. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/src/backends/env.js +0 -0
  578. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/src/backends/exec.js +0 -0
  579. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/src/backends/file.js +0 -0
  580. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/src/declaration.js +0 -0
  581. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/src/env-file.js +0 -0
  582. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/src/main.js +0 -0
  583. /package/framework/{v0.6.31 → v0.6.32}/lib/secrets/src/sources.js +0 -0
  584. /package/framework/{v0.6.31 → v0.6.32}/lib/security-headers-emitter/package.json +0 -0
  585. /package/framework/{v0.6.31 → v0.6.32}/lib/security-headers-emitter/src/main.js +0 -0
  586. /package/framework/{v0.6.31 → v0.6.32}/lib/session-store.js +0 -0
  587. /package/framework/{v0.6.31 → v0.6.32}/lib/shell.js +0 -0
  588. /package/framework/{v0.6.31 → v0.6.32}/lib/sqlite-driver.js +0 -0
  589. /package/framework/{v0.6.31 → v0.6.32}/lib/sri/package.json +0 -0
  590. /package/framework/{v0.6.31 → v0.6.32}/lib/sri/src/main.js +0 -0
  591. /package/framework/{v0.6.31 → v0.6.32}/lib/state.js +0 -0
  592. /package/framework/{v0.6.31 → v0.6.32}/lib/storage/package.json +0 -0
  593. /package/framework/{v0.6.31 → v0.6.32}/lib/storage/src/local-cas.js +0 -0
  594. /package/framework/{v0.6.31 → v0.6.32}/lib/storage/src/local-stream.js +0 -0
  595. /package/framework/{v0.6.31 → v0.6.32}/lib/storage/src/local.js +0 -0
  596. /package/framework/{v0.6.31 → v0.6.32}/lib/storage/src/main.js +0 -0
  597. /package/framework/{v0.6.31 → v0.6.32}/lib/storage/src/s3.js +0 -0
  598. /package/framework/{v0.6.31 → v0.6.32}/lib/storage-store.js +0 -0
  599. /package/framework/{v0.6.31 → v0.6.32}/lib/swig-filters/README.md +0 -0
  600. /package/framework/{v0.6.31 → v0.6.32}/lib/swig-filters/package.json +0 -0
  601. /package/framework/{v0.6.31 → v0.6.32}/lib/swig-filters/src/main.js +0 -0
  602. /package/framework/{v0.6.31 → v0.6.32}/lib/swig-resolver/package.json +0 -0
  603. /package/framework/{v0.6.31 → v0.6.32}/lib/swig-resolver/src/main.js +0 -0
  604. /package/framework/{v0.6.31 → v0.6.32}/lib/template-loaders/package.json +0 -0
  605. /package/framework/{v0.6.31 → v0.6.32}/lib/template-loaders/src/loaders/http.js +0 -0
  606. /package/framework/{v0.6.31 → v0.6.32}/lib/template-loaders/src/loaders/memory.js +0 -0
  607. /package/framework/{v0.6.31 → v0.6.32}/lib/template-loaders/src/main.js +0 -0
  608. /package/framework/{v0.6.31 → v0.6.32}/lib/url/README.md +0 -0
  609. /package/framework/{v0.6.31 → v0.6.32}/lib/url/index.js +0 -0
  610. /package/framework/{v0.6.31 → v0.6.32}/lib/url/routing.json +0 -0
  611. /package/framework/{v0.6.31 → v0.6.32}/lib/uuid/package.json +0 -0
  612. /package/framework/{v0.6.31 → v0.6.32}/lib/uuid/src/main.js +0 -0
  613. /package/framework/{v0.6.31 → v0.6.32}/lib/validator.js +0 -0
  614. /package/framework/{v0.6.31 → v0.6.32}/lib/watcher/package.json +0 -0
  615. /package/framework/{v0.6.31 → v0.6.32}/lib/watcher/src/main.js +0 -0
  616. /package/framework/{v0.6.31 → v0.6.32}/lib/ws-framing/package.json +0 -0
  617. /package/framework/{v0.6.31 → v0.6.32}/lib/ws-framing/src/main.js +0 -0
  618. /package/framework/{v0.6.31 → v0.6.32}/lib/ws-query/package.json +0 -0
  619. /package/framework/{v0.6.31 → v0.6.32}/lib/ws-query/src/main.js +0 -0
  620. /package/framework/{v0.6.31 → v0.6.32}/lib/ws-session/package.json +0 -0
  621. /package/framework/{v0.6.31 → v0.6.32}/lib/ws-session/src/main.js +0 -0
@@ -25,6 +25,7 @@ var Collection = lib.Collection;
25
25
  var modelUtil = new lib.Model();
26
26
  var secrets = lib.secrets;
27
27
  var i18n = lib.i18n;
28
+ var sessionLifetime = lib.sessionLifetime;
28
29
 
29
30
 
30
31
  /**
@@ -1918,6 +1919,15 @@ function Config(opt, contextResetNeeded) {
1918
1919
  ;
1919
1920
  for (; c < cLen; ++c) {
1920
1921
  let jsonFile = null;
1922
+ // #D45-overlay — the `<name>.<env>.json` content, STASHED here and folded in
1923
+ // LAST (after the base file below) with lib/merge's `override` flag, so the
1924
+ // environment overlay WINS on every key both files declare. It used to be
1925
+ // merged in FIRST, target-wins, so the base file silently beat its own
1926
+ // overlay on conflicting keys (env-only keys were added, overrides were
1927
+ // dropped) since this loop's first cut in 2022 — while every reference page
1928
+ // promised the opposite. Arrays: an env array REPLACES the base array
1929
+ // (override semantics), it is not unioned into it.
1930
+ let envJsonFile = null;
1921
1931
 
1922
1932
  fName = configFiles[c];
1923
1933
  fNameWithNoExt = fName.replace(/.json/, '');
@@ -2005,13 +2015,9 @@ function Config(opt, contextResetNeeded) {
2005
2015
  if (!exists) {
2006
2016
  jsonFile = null;
2007
2017
  } else {
2008
- jsonFile = requireJSON(_(filename, true));
2009
-
2010
- if (Array.isArray(jsonFile) && !Array.isArray(fileContent) && !Object.keys(fileContent).length) {
2011
- fileContent = []
2012
- }
2013
- // Fixed priority to env version and/or extended.description if found
2014
- fileContent = merge(jsonFile, fileContent);
2018
+ jsonFile = requireJSON(_(filename, true));
2019
+ // #D45-overlay — not merged here any more (see the fold after the base file)
2020
+ envJsonFile = jsonFile;
2015
2021
  }
2016
2022
 
2017
2023
  } catch (_err) {
@@ -2068,6 +2074,14 @@ function Config(opt, contextResetNeeded) {
2068
2074
  // Fixed priority to env version and/or extended.description if found
2069
2075
  fileContent = merge(jsonFile, fileContent);
2070
2076
 
2077
+ // #D45-overlay — now the environment version, and it wins (override).
2078
+ if ( envJsonFile ) {
2079
+ if (Array.isArray(envJsonFile) && !Array.isArray(fileContent) && !Object.keys(fileContent).length) {
2080
+ fileContent = []
2081
+ }
2082
+ fileContent = merge(fileContent, envJsonFile, true);
2083
+ }
2084
+
2071
2085
 
2072
2086
  } catch (_err) {
2073
2087
 
@@ -3320,6 +3334,30 @@ function Config(opt, contextResetNeeded) {
3320
3334
  );
3321
3335
  }
3322
3336
 
3337
+ // Per-bundle login session cookie lifetimes — `security.json >
3338
+ // session.expires` / `session.remember`, derived once here and read by
3339
+ // core/router.js at req.login(). `null` when the bundle declares neither,
3340
+ // which is the case the router's band short-circuits on, so a bundle that
3341
+ // never opted in costs nothing per request.
3342
+ //
3343
+ // Warned, never fatal — same disposition as the i18n block above and for
3344
+ // the same reason: both keys were documented but uninterpreted before this
3345
+ // release, so a value already sitting in one was never a statement about
3346
+ // this contract. Refusing the boot would turn an upgrade into an outage
3347
+ // for a key that did nothing yesterday; an unusable value is reported and
3348
+ // the bundle keeps the cookie lifetime it already had.
3349
+ try {
3350
+ conf[bundle][env].sessionLifetime = sessionLifetime.fromConfig(
3351
+ conf[bundle][env].content.security, bundle, env
3352
+ );
3353
+ } catch (sessionLifetimeErr) {
3354
+ conf[bundle][env].sessionLifetime = null;
3355
+ console.warn(
3356
+ '[CONFIG][loadBundleConfig] login session lifetime skipped for `'
3357
+ + bundle +'/'+ env +'`: '+ sessionLifetimeErr.message
3358
+ );
3359
+ }
3360
+
3323
3361
  ++b;
3324
3362
  if (b < bundles.length) {
3325
3363
  loadBundleConfig(bundles, b, callback, reload, collectedRules)
@@ -628,11 +628,17 @@ function Couchbase(conn, infos) {
628
628
  // #B11 fix: recover the entity singleton when called via util.promisify
629
629
  // without .bind(). In strict mode `this` is undefined when a prototype
630
630
  // method is detached from its object. Fall back to the singleton stored
631
- // at EntitySuperClass[CapitalizedName].instance (set by entity.js:427).
631
+ // at the entity registry (set by entity.js setListeners).
632
+ // #B555 — the registry is keyed on (bundle, model, className), not on the
633
+ // bare class name: two connectors of one bundle can declare the same class
634
+ // name, and a bare key silently handed the second one the first's instance.
635
+ // This method is detached (`this` is undefined), so the pair comes from the
636
+ // connector's own `infos` rather than from the instance.
632
637
  // This makes `util.promisify(entity.method)` work transparently without
633
638
  // requiring callers to add .bind(entity) everywhere.
634
639
  var _capitalizedName = entityName.substring(0,1).toUpperCase() + entityName.substring(1);
635
- var self = this || (EntitySuperClass[_capitalizedName] && EntitySuperClass[_capitalizedName].instance) || null;
640
+ var _registryKey = EntitySuperClass.key(infos.bundle, infos.model, _capitalizedName);
641
+ var self = this || (EntitySuperClass[_registryKey] && EntitySuperClass[_registryKey].instance) || null;
636
642
  var key = null
637
643
  , index = null
638
644
  , i = null
@@ -641,7 +647,7 @@ function Couchbase(conn, infos) {
641
647
  , _mainCallback = null;
642
648
 
643
649
  if (!self) {
644
- var _ctxErr = new TypeError('[entity] ' + entityName + '#' + name + '() called without context: `this` is undefined and no singleton found at EntitySuperClass[' + _capitalizedName + '].instance');
650
+ var _ctxErr = new TypeError('[entity] ' + entityName + '#' + name + '() called without context: `this` is undefined and no singleton found at EntitySuperClass[' + _registryKey + '].instance');
645
651
  var _cbArg = (args.length > 0 && typeof args[args.length - 1] === 'function') ? args[args.length - 1] : null;
646
652
  if (_cbArg) { return _cbArg(_ctxErr); }
647
653
  throw _ctxErr;
@@ -48,6 +48,14 @@ const { Resolver } = require('node:dns').promises;
48
48
 
49
49
  var lib = require('./../../lib') || require.cache[require.resolve('./../../lib')];
50
50
 
51
+ // #B551 — relative require (not the bare `lib/inspector-redact` form the render
52
+ // delegates use) so this module resolves without depending on the gna.js NODE_PATH
53
+ // bootstrap, matching inspector-window-emit.js. Node caches by resolved path, so it
54
+ // is the same module instance either way.
55
+ var inspectorRedact = require('../../lib/inspector-redact');
56
+ // Compiled once: the pattern set is a module constant.
57
+ var _carryRedactPatterns = inspectorRedact.compile(inspectorRedact.DEFAULT_PATTERNS);
58
+
51
59
  /**
52
60
  * #A11Y3 — BCP-47 language tag for a framework-generated document.
53
61
  *
@@ -385,6 +393,39 @@ var _mintErrorRef = function(supplied) {
385
393
  return crypto.randomBytes(3).toString('hex').toUpperCase();
386
394
  };
387
395
 
396
+ /**
397
+ * #B554 — HTML-escape a value before it is concatenated into an error page.
398
+ *
399
+ * The inline fallback error pages are built by string concatenation, and the
400
+ * values they carry are caller-supplied: `redirect()` hands a request-supplied
401
+ * `?error=<value>` straight to `throwError`, so a crafted link reflected markup
402
+ * into the 500 page and executed it in the application's origin. Escaping at
403
+ * the emission point closes that permanently, wherever the value came from.
404
+ *
405
+ * Three byte-identical local copies exist — one each in
406
+ * `core/controller/controller.js`, `core/server.js` and
407
+ * `core/controller/controller.render-nunjucks.js` — the same deliberate
408
+ * duplication as `_mintErrorRef`: controller.js is evicted from require.cache
409
+ * per request in dev, so a shared home would churn, and the helper is six
410
+ * lines. `test/core/throwerror-html-escape-b554.test.js` pins the three copies
411
+ * identical.
412
+ *
413
+ * @private
414
+ * @param {*} value - the text to escape (null/undefined become '')
415
+ * @returns {string} the value with HTML-significant characters replaced
416
+ *
417
+ * @example
418
+ * _escapeHtml('a<b & "c"'); // 'a&lt;b &amp; &quot;c&quot;'
419
+ */
420
+ var _escapeHtml = function(value) {
421
+ return String(value == null ? '' : value)
422
+ .replace(/&/g, '&amp;')
423
+ .replace(/</g, '&lt;')
424
+ .replace(/>/g, '&gt;')
425
+ .replace(/"/g, '&quot;')
426
+ .replace(/'/g, '&#39;');
427
+ };
428
+
388
429
  /**
389
430
  * #CE1 — resolves the bundle's `server.transientErrors` block into its
390
431
  * effective values. Total: never throws, and tolerates any malformed shape
@@ -3537,11 +3578,35 @@ function SuperController(options) {
3537
3578
  // backing up oldParams
3538
3579
  var oldParams = local.req[originalMethod.toLowerCase()];
3539
3580
  var requestParams = req[req.method.toLowerCase()] || {};
3540
- if ( typeof(requestParams) != 'undefined' && typeof(requestParams.error) != 'undefined' ) {
3541
- var redirectError = requestParams.error;
3542
- self.throwError(requestParams.error);
3543
- return;
3544
- }
3581
+ // #B559 — a request parameter must never steer control flow. This spot
3582
+ // used to test the incoming params for a key named `error` and, when it
3583
+ // was present, call throwError() with that raw client value and return
3584
+ // instead of redirecting. `req[method]` is the CLIENT-populated
3585
+ // container (server.js assigns `request.get = request.query`, and
3586
+ // `request.post` from the parsed body), so ANY unauthenticated request
3587
+ // to ANY route whose action redirects could force a 500 just by adding
3588
+ // the key -- on both engines, with no route opt-in. An EMPTY value was
3589
+ // worse: the empty string is falsy, so the #B44 late-call guard in
3590
+ // throwError() mistook it for a call on an already-released response,
3591
+ // logged "ignoring late error:" with nothing after the colon, and
3592
+ // returned without writing anything -- leaving the request unanswered
3593
+ // for as long as the client held the socket. Nothing reaps that:
3594
+ // `server.timeout` defaults to 0, deliberately, so SSE and WebSockets
3595
+ // are not killed by a whole-request clock.
3596
+ //
3597
+ // Deleted rather than hardened, because the key was never a supported
3598
+ // convention: nothing in gina produces it, no test pinned it, and this
3599
+ // method's own JSDoc never mentions it. The published guide teaches the
3600
+ // OPPOSITE -- its canonical "carrying request data across the redirect"
3601
+ // example assigns that key on the request and then redirects, which
3602
+ // this gate turned into a 500. The line's own 2021 ancestor used this
3603
+ // same condition to DELETE the key so it would not ride the target URL;
3604
+ // the throw replaced the delete in 2022 inside an unrelated omnibus
3605
+ // commit, with no comment and no mention in its message.
3606
+ //
3607
+ // With it gone the key is an ordinary parameter: it rides the redirect
3608
+ // in `inheritedData` like every other one, which is what the guide
3609
+ // documents. Nothing downstream treats it specially.
3545
3610
 
3546
3611
  // #B353 — HEAD is a SAFE method: it is GET without a response body, so a
3547
3612
  // redirect must treat it exactly as it treats GET. This gate exists to stop
@@ -3582,9 +3647,46 @@ function SuperController(options) {
3582
3647
  if ( typeof(requestParams.session) != 'undefined' ) {
3583
3648
  delete requestParams.session;
3584
3649
  }
3650
+ // #B551 — credentials must not ride the redirect. `requestParams` is the
3651
+ // request's own parsed container (for a POST, `req.post` verbatim), and the
3652
+ // merge above does NOT clone — lib/merge's clone block is commented out —
3653
+ // so this is a LIVE reference to that container. Filtering it in place
3654
+ // would strip fields the application's own action may still be reading, so
3655
+ // build a filtered COPY and carry that instead.
3656
+ //
3657
+ // Measured before this guard existed: a login POST put
3658
+ // {"email":..,"password":"<plaintext>"} into the session store, where it
3659
+ // survived the consuming GET on the authenticated path and was copied on
3660
+ // into the halted-request stash on the failed one. A session-less bundle
3661
+ // put the same payload in the redirect URL instead, i.e. into access logs,
3662
+ // proxy logs, browser history and Referer.
3663
+ //
3664
+ // The key list is lib/inspector-redact's — the same maintained, tokenising
3665
+ // matcher the Inspector already uses to mask these very fields in its own
3666
+ // pane, so `apiKey`/`api_key` are covered while metadata keys such as
3667
+ // `passwordRules` are deliberately not. Dropped rather than masked: a
3668
+ // literal '[redacted]' arriving at the target reads like a real value.
3669
+ //
3670
+ // Logged at debug, NOT warn: a login POST always carries a password, so a
3671
+ // warn here would fire on the success path of the commonest flow in the
3672
+ // framework — the #B552 mistake, which this must not repeat.
3673
+ var _carriedParams = {};
3674
+ var _droppedCarry = [];
3675
+ var _carryKeys = Object.keys(requestParams);
3676
+ for (var _ck = 0; _ck < _carryKeys.length; _ck++) {
3677
+ if ( inspectorRedact.keyMatches(_carryKeys[_ck], _carryRedactPatterns) ) {
3678
+ _droppedCarry.push(_carryKeys[_ck]);
3679
+ continue;
3680
+ }
3681
+ _carriedParams[ _carryKeys[_ck] ] = requestParams[ _carryKeys[_ck] ];
3682
+ }
3683
+ if ( _droppedCarry.length > 0 ) {
3684
+ // Names only, never values — not carrying them is the whole point.
3685
+ console.debug('[ Controller ] redirect(): credential-class field(s) not carried across the redirect: '+ _droppedCarry.join(', '));
3686
+ }
3687
+ requestParams = _carriedParams;
3585
3688
  // #B546 — shadow-proof own-property count; see the note in setOptions().
3586
3689
  if ( typeof(requestParams) != 'undefined' && ownCount(requestParams) > 0 ) {
3587
- //if ( typeof(requestParams.error) != 'undefined' )
3588
3690
 
3589
3691
  // #B75 — a session-less bundle (no Session plugin mounted) must
3590
3692
  // not deref req.session.user here (an XHR redirect carrying
@@ -3638,6 +3740,15 @@ function SuperController(options) {
3638
3740
  }
3639
3741
 
3640
3742
  _applyNoStoreToRedirectJSON(); // #B75
3743
+ // #B550 — terminate through the compat response, as this method's
3744
+ // 303 exit already does (`res.writeHead` + `res.end` further down).
3745
+ // On HTTP/2 the JSON delegate would otherwise write straight to the
3746
+ // raw stream, calling neither, so a session rotated immediately
3747
+ // before the redirect never gets its new cookie to the client and
3748
+ // the client keeps presenting the old, already-replaced id. The
3749
+ // HTTP/1.1 path always took this branch, so this only makes the two
3750
+ // redirect exits agree.
3751
+ req._ginaForceCompatSend = true;
3641
3752
  self.renderJSON(redirectObj);
3642
3753
  return;
3643
3754
  }
@@ -3656,6 +3767,8 @@ function SuperController(options) {
3656
3767
  // Popin redirect
3657
3768
  if ( isPopinContext ) {
3658
3769
  _applyNoStoreToRedirectJSON(); // #B75
3770
+ // #B550 — same compat-path termination as the sibling XHR exit above.
3771
+ req._ginaForceCompatSend = true;
3659
3772
  return self.renderJSON({
3660
3773
  isXhrRedirect: true,
3661
3774
  popin: {
@@ -8501,10 +8614,30 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
8501
8614
  // `res.stack` / `res.message` / `res.fallback` in the errorObject build
8502
8615
  // (every bundle crashes there). So a released response would crash
8503
8616
  // (uncaughtException → SIGTERM) instead of being ignored. Bail up-front
8504
- // with the same no-op contract as the #B31 guard. The 1-arg shapes keep
8505
- // a truthy `res` (the Error/errorObj) here, so they are unaffected and
8506
- // still reach the #B31 guard after `res` is reassigned to `local.res` at
8507
- // the end of the errorObject build.
8617
+ // with the same no-op contract as the #B31 guard. A 1-arg shape reaches
8618
+ // here with a truthy `res` — either the caller's own Error/errorObj, or
8619
+ // the placeholder substituted just below when the payload was falsy
8620
+ // (#B560) — so 1-arg calls are unaffected and still reach the #B31 guard
8621
+ // after `res` is reassigned to `local.res` at the end of that build.
8622
+ // #B560 — a 1-arg call whose PAYLOAD is falsy is NOT a late call. For the
8623
+ // `throwError(err)` shape the `res` slot holds the caller's payload, not
8624
+ // the response, so '', null, undefined, 0 and false all reached the bail
8625
+ // below and were swallowed: the request was never answered, and the only
8626
+ // trace was a warning claiming the response had been released — it had
8627
+ // not — which then named no error at all, because its interpolation reads
8628
+ // `msg`/`code` and never `res`. Normalise such a payload to a minimal
8629
+ // errorObj so the build below has something to read and a 500 is actually
8630
+ // egressed.
8631
+ //
8632
+ // Deliberately NOT written as `arguments.length !== 1` on the bail itself:
8633
+ // the errorObject build dereferences `res.error` / `res.message` without
8634
+ // guarding, so letting a null payload reach it would turn a silent hang
8635
+ // into a TypeError crash. Genuine 2-arg/3-arg late calls — where `res` IS
8636
+ // an already-released `local.res` — and 0-arg calls are untouched and
8637
+ // still bail below.
8638
+ if ( arguments.length === 1 && !res ) {
8639
+ res = { status: 500 };
8640
+ }
8508
8641
  if ( !res ) {
8509
8642
  self.isProcessingError = true;
8510
8643
  var _b44LateError = msg || code;
@@ -8982,15 +9115,21 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
8982
9115
  if ( typeof(msg) == 'object' ) {
8983
9116
 
8984
9117
  if (msg.title) {
8985
- msgString += '<pre class="'+ eCode +' title">'+ msg.title +'</pre>';
9118
+ // was: msgString += '<pre class="'+ eCode +' title">'+ msg.title +'</pre>';
9119
+ // #B554 — escape: this value is caller-supplied and reached the page as markup.
9120
+ msgString += '<pre class="'+ eCode +' title">'+ _escapeHtml(msg.title) +'</pre>';
8986
9121
  }
8987
9122
 
8988
9123
  if (msg.error) {
8989
- msgString += '<pre class="'+ eCode +' message">'+ msg.error +'</pre>';
9124
+ // was: msgString += '<pre class="'+ eCode +' message">'+ msg.error +'</pre>';
9125
+ // #B554 — escape: this value is caller-supplied and reached the page as markup.
9126
+ msgString += '<pre class="'+ eCode +' message">'+ _escapeHtml(msg.error) +'</pre>';
8990
9127
  }
8991
9128
 
8992
9129
  if (msg.message) {
8993
- msgString += '<pre class="'+ eCode +' message">'+ msg.message +'</pre>';
9130
+ // was: msgString += '<pre class="'+ eCode +' message">'+ msg.message +'</pre>';
9131
+ // #B554 — escape: this value is caller-supplied and reached the page as markup.
9132
+ msgString += '<pre class="'+ eCode +' message">'+ _escapeHtml(msg.message) +'</pre>';
8994
9133
  }
8995
9134
 
8996
9135
  // Fail-closed: render the stack frame only in local scope
@@ -9009,7 +9148,9 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
9009
9148
  }
9010
9149
 
9011
9150
  msg.stack = msg.stack.replace('Error:', '').replace(' ', '');
9012
- msgString += '<pre class="'+ eCode +' stack">'+ msg.stack +'</pre>';
9151
+ // was: msgString += '<pre class="'+ eCode +' stack">'+ msg.stack +'</pre>';
9152
+ // #B554 — escape: this value is caller-supplied and reached the page as markup.
9153
+ msgString += '<pre class="'+ eCode +' stack">'+ _escapeHtml(msg.stack) +'</pre>';
9013
9154
  }
9014
9155
 
9015
9156
  } else {
@@ -9031,15 +9172,21 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
9031
9172
  }
9032
9173
 
9033
9174
  if (title) {
9034
- msgString += '<pre class="'+ eCode +' title">'+ title +'</pre>';
9175
+ // was: msgString += '<pre class="'+ eCode +' title">'+ title +'</pre>';
9176
+ // #B554 — escape: this value is caller-supplied and reached the page as markup.
9177
+ msgString += '<pre class="'+ eCode +' title">'+ _escapeHtml(title) +'</pre>';
9035
9178
  }
9036
9179
  if (message) {
9037
- msgString += '<pre class="'+ eCode +' message">'+ message +'</pre>';
9180
+ // was: msgString += '<pre class="'+ eCode +' message">'+ message +'</pre>';
9181
+ // #B554 — escape: this value is caller-supplied and reached the page as markup.
9182
+ msgString += '<pre class="'+ eCode +' message">'+ _escapeHtml(message) +'</pre>';
9038
9183
  }
9039
9184
  // Fail-closed: local scope only — same gate shape as the
9040
9185
  // msg-shape site above.
9041
9186
  if (stack && _isLocalScope) {
9042
- msgString += '<pre class="'+ eCode +' stack">'+ stack +'</pre>';
9187
+ // was: msgString += '<pre class="'+ eCode +' stack">'+ stack +'</pre>';
9188
+ // #B554 — escape: this value is caller-supplied and reached the page as markup.
9189
+ msgString += '<pre class="'+ eCode +' stack">'+ _escapeHtml(stack) +'</pre>';
9043
9190
  }
9044
9191
  }
9045
9192
  res.writeHead(code, { 'content-type': bundleConf.server.coreConfiguration.mime[ext]+'; charset='+ bundleConf.encoding } );
@@ -176,7 +176,21 @@ module.exports = function renderJSON(jsonObj, deps) {
176
176
  var response = local.res;
177
177
  var next = local.next || null;
178
178
  var stream = null;
179
- if ( typeof(local.res.stream) != 'undefined') {
179
+ // #B550 — a caller may force the compat send path (the HTTP/1.1-shaped branch at the
180
+ // bottom of this file). On HTTP/2 the raw `stream.respond()` path never calls
181
+ // `res.writeHead` or `res.end`, so any middleware that installs itself by wrapping
182
+ // those response methods never runs: a session middleware that sets its cookie from an
183
+ // `on-headers` hook on `writeHead`, and persists from an `end` proxy, emits neither,
184
+ // and the `res.getHeaders()` fold further down then has no cookie to carry. Consumed
185
+ // once off the REQUEST (never the controller's closure — the redirect span it is
186
+ // set in is extracted and executed closure-free by its own tests), so only the
187
+ // flagged render is affected and every other
188
+ // HTTP/2 render stays byte-identical.
189
+ var _forceCompatSend = !!(local.req && local.req._ginaForceCompatSend === true);
190
+ if (_forceCompatSend) {
191
+ delete local.req._ginaForceCompatSend;
192
+ }
193
+ if ( typeof(local.res.stream) != 'undefined' && !_forceCompatSend ) {
180
194
  stream = local.res.stream
181
195
  }
182
196
  // #H10 — opt-in HTTP/2 response trailers (registered via self.sendTrailers()).
@@ -440,6 +454,8 @@ module.exports = function renderJSON(jsonObj, deps) {
440
454
  if ( /^HEAD$/i.test(request.method) ) {
441
455
  var headLen = Buffer.byteLength(data, 'utf8');
442
456
  if ( stream ) {
457
+ // #B562 — defer the raw send into the shim's base end() when one is installed
458
+ var __ginaSendHead = function() {
443
459
  if ( !stream.headersSent ) {
444
460
  var _headH = {
445
461
  'content-type' : local.options.conf.server.coreConfiguration.mime['json'] + '; charset='+ local.options.conf.encoding,
@@ -453,6 +469,14 @@ module.exports = function renderJSON(jsonObj, deps) {
453
469
  stream.respond(_headH);
454
470
  }
455
471
  stream.end();
472
+ };
473
+ if (response._ginaSendShim) {
474
+ response._ginaRawSend = __ginaSendHead;
475
+ response.writeHead(response.statusCode || 200);
476
+ response.end();
477
+ } else {
478
+ __ginaSendHead();
479
+ }
456
480
  } else if ( !headersSent(response) ) {
457
481
  response.setHeader('content-type', local.options.conf.server.coreConfiguration.mime['json'] + '; charset='+ local.options.conf.encoding);
458
482
  response.setHeader('content-length', headLen);
@@ -539,6 +563,8 @@ module.exports = function renderJSON(jsonObj, deps) {
539
563
  local.next = null;
540
564
  return;
541
565
  }
566
+ // #B562 — defer the raw send into the shim's base end() when one is installed
567
+ var __ginaSendBody = function(data) {
542
568
  if (!stream.headersSent) {
543
569
  var _streamHeaders = {
544
570
  'content-type': local.options.conf.server.coreConfiguration.mime['json'] + '; charset='+ local.options.conf.encoding,
@@ -572,6 +598,14 @@ module.exports = function renderJSON(jsonObj, deps) {
572
598
 
573
599
 
574
600
  stream.end(data);
601
+ };
602
+ if (response._ginaSendShim) {
603
+ response._ginaRawSend = __ginaSendBody;
604
+ response.writeHead(response.statusCode || 200);
605
+ response.end(data);
606
+ } else {
607
+ __ginaSendBody(data);
608
+ }
575
609
  response.headersSent = true;
576
610
  local.req = null;
577
611
  local.res = null;
@@ -275,6 +275,8 @@ function sendHtmlResponse(local, html, req, res) {
275
275
  try { console.warn('[render-nunjucks-async] stream already destroyed on HEAD — client disconnected ('+ req.url +')'); } catch (e) {}
276
276
  return;
277
277
  }
278
+ // #B562 — defer the raw send into the shim's base end() when one is installed
279
+ var __ginaSend1 = function() {
278
280
  if (!stream.headersSent) {
279
281
  var _headH2 = {
280
282
  'content-type': res.getHeader('content-type'),
@@ -288,6 +290,14 @@ function sendHtmlResponse(local, html, req, res) {
288
290
  stream.respond(_headH2);
289
291
  }
290
292
  stream.end();
293
+ };
294
+ if (res._ginaSendShim) {
295
+ res._ginaRawSend = __ginaSend1;
296
+ res.writeHead(res.statusCode || 200);
297
+ res.end();
298
+ } else {
299
+ __ginaSend1();
300
+ }
291
301
  res.headersSent = true;
292
302
  } else {
293
303
  // Case 2: HEAD + HTTP/1.1
@@ -304,6 +314,8 @@ function sendHtmlResponse(local, html, req, res) {
304
314
  try { console.warn('[render-nunjucks-async] stream already destroyed — client disconnected before response ('+ req.url +')'); } catch (e) {}
305
315
  return;
306
316
  }
317
+ // #B562 — defer the raw send into the shim's base end() when one is installed
318
+ var __ginaSend2 = function(html) {
307
319
  if (!stream.headersSent) {
308
320
  var _streamHeaders = {
309
321
  'content-type': res.getHeader('content-type'),
@@ -321,6 +333,14 @@ function sendHtmlResponse(local, html, req, res) {
321
333
  stream.respond(_streamHeaders, _trailers ? { waitForTrailers: true } : undefined);
322
334
  }
323
335
  stream.end(html);
336
+ };
337
+ if (res._ginaSendShim) {
338
+ res._ginaRawSend = __ginaSend2;
339
+ res.writeHead(res.statusCode || 200);
340
+ res.end(html);
341
+ } else {
342
+ __ginaSend2(html);
343
+ }
324
344
  res.headersSent = true;
325
345
  return;
326
346
  }
@@ -128,6 +128,40 @@ var inspectorRedact = require('lib/inspector-redact');
128
128
  var emitInspectorWindowData = require('./inspector-window-emit');
129
129
  // #RWATCH S3 — stale-release banner injector (server-side inline; gated inert).
130
130
  var releaseBanner = require('./release-banner');
131
+
132
+ /**
133
+ * #B554 — HTML-escape a value before it is concatenated into an error page.
134
+ *
135
+ * The inline fallback error pages are built by string concatenation, and the
136
+ * values they carry are caller-supplied: `redirect()` hands a request-supplied
137
+ * `?error=<value>` straight to `throwError`, so a crafted link reflected markup
138
+ * into the 500 page and executed it in the application's origin. Escaping at
139
+ * the emission point closes that permanently, wherever the value came from.
140
+ *
141
+ * Three byte-identical local copies exist — one each in
142
+ * `core/controller/controller.js`, `core/server.js` and
143
+ * `core/controller/controller.render-nunjucks.js` — the same deliberate
144
+ * duplication as `_mintErrorRef`: controller.js is evicted from require.cache
145
+ * per request in dev, so a shared home would churn, and the helper is six
146
+ * lines. `test/core/throwerror-html-escape-b554.test.js` pins the three copies
147
+ * identical.
148
+ *
149
+ * @private
150
+ * @param {*} value - the text to escape (null/undefined become '')
151
+ * @returns {string} the value with HTML-significant characters replaced
152
+ *
153
+ * @example
154
+ * _escapeHtml('a<b & "c"'); // 'a&lt;b &amp; &quot;c&quot;'
155
+ */
156
+ var _escapeHtml = function(value) {
157
+ return String(value == null ? '' : value)
158
+ .replace(/&/g, '&amp;')
159
+ .replace(/</g, '&lt;')
160
+ .replace(/>/g, '&gt;')
161
+ .replace(/"/g, '&quot;')
162
+ .replace(/'/g, '&#39;');
163
+ };
164
+
131
165
  // Collection — small data-query helper used to filter the asset list when
132
166
  // rendering without a layout (mirrors render-swig.js:494-498). Fetched via
133
167
  // the lib registry so the dev-mode hot-reload evictions of `lib/index.js`
@@ -556,6 +590,8 @@ function sendHtmlResponse(local, html, req, res) {
556
590
  try { console.warn('[render-nunjucks] stream already destroyed on HEAD — client disconnected ('+ req.url +')'); } catch (e) {}
557
591
  return;
558
592
  }
593
+ // #B562 — defer the raw send into the shim's base end() when one is installed
594
+ var __ginaSend1 = function() {
559
595
  if (!stream.headersSent) {
560
596
  var _headH2 = {
561
597
  'content-type': res.getHeader('content-type'),
@@ -569,6 +605,14 @@ function sendHtmlResponse(local, html, req, res) {
569
605
  stream.respond(_headH2);
570
606
  }
571
607
  stream.end();
608
+ };
609
+ if (res._ginaSendShim) {
610
+ res._ginaRawSend = __ginaSend1;
611
+ res.writeHead(res.statusCode || 200);
612
+ res.end();
613
+ } else {
614
+ __ginaSend1();
615
+ }
572
616
  res.headersSent = true;
573
617
  } else {
574
618
  // Case 2: HEAD + HTTP/1.1
@@ -585,6 +629,8 @@ function sendHtmlResponse(local, html, req, res) {
585
629
  try { console.warn('[render-nunjucks] stream already destroyed — client disconnected before response ('+ req.url +')'); } catch (e) {}
586
630
  return;
587
631
  }
632
+ // #B562 — defer the raw send into the shim's base end() when one is installed
633
+ var __ginaSend2 = function(html) {
588
634
  if (!stream.headersSent) {
589
635
  var _streamHeaders = {
590
636
  'content-type': res.getHeader('content-type'),
@@ -606,6 +652,14 @@ function sendHtmlResponse(local, html, req, res) {
606
652
  stream.respond(_streamHeaders, _trailers ? { waitForTrailers: true } : undefined);
607
653
  }
608
654
  stream.end(html);
655
+ };
656
+ if (res._ginaSendShim) {
657
+ res._ginaRawSend = __ginaSend2;
658
+ res.writeHead(res.statusCode || 200);
659
+ res.end(html);
660
+ } else {
661
+ __ginaSend2(html);
662
+ }
609
663
  res.headersSent = true;
610
664
  return;
611
665
  }
@@ -1248,25 +1302,34 @@ module.exports = async function renderNunjucks(userData, displayInspector, errOp
1248
1302
  : 'en';
1249
1303
 
1250
1304
  if (!_absErrTemplate || !fs.existsSync(_absErrTemplate)) {
1251
- html = '<!doctype html><html lang="' + _errLang + '"><head><title>Error ' + _errStatusCode + '</title></head>'
1305
+ // was: html = '<!doctype html><html lang="' + _errLang + '"><head><title>Error ' + _errStatusCode + '</title></head>'
1306
+ // #B554 — the status and the message text are both escaped in all three of these
1307
+ // fallback documents: the status may be a caller-supplied value (#B466), and the
1308
+ // texts carry a config path and a nunjucks render error that can quote template or
1309
+ // request content. The two comments below are kept to ONE line each on purpose —
1310
+ // `render-engine-dispatch.test.js` pins each message literal within a fixed number
1311
+ // of characters of its anchor, and a longer note here pushes it out of that window.
1312
+ html = '<!doctype html><html lang="' + _errLang + '"><head><title>Error ' + _escapeHtml(_errStatusCode) + '</title></head>'
1252
1313
  + '<body><pre>[render-nunjucks] error template not found: '
1253
- + (_absErrTemplate || '(unset)') + '</pre></body></html>';
1314
+ + _escapeHtml(_absErrTemplate || '(unset)') + '</pre></body></html>';
1254
1315
  } else {
1255
1316
  var _errSource = null;
1256
1317
  try {
1257
1318
  _errSource = fs.readFileSync(_absErrTemplate, 'utf8');
1258
1319
  } catch (readErr) {
1259
- html = '<!doctype html><html lang="' + _errLang + '"><head><title>Error ' + _errStatusCode + '</title></head>'
1320
+ // was: the same raw title + raw text — #B554, both escaped below.
1321
+ html = '<!doctype html><html lang="' + _errLang + '"><head><title>Error ' + _escapeHtml(_errStatusCode) + '</title></head>'
1260
1322
  + '<body><pre>[render-nunjucks] failed to read error template: '
1261
- + (readErr.message || readErr) + '</pre></body></html>';
1323
+ + _escapeHtml(readErr.message || readErr) + '</pre></body></html>';
1262
1324
  }
1263
1325
  if (typeof _errSource === 'string') {
1264
1326
  try {
1265
1327
  html = env.renderString(_errSource, data);
1266
1328
  } catch (renderErr) {
1267
- html = '<!doctype html><html lang="' + _errLang + '"><head><title>Error ' + _errStatusCode + '</title></head>'
1329
+ // was: the same raw title + raw text — #B554, both escaped below.
1330
+ html = '<!doctype html><html lang="' + _errLang + '"><head><title>Error ' + _escapeHtml(_errStatusCode) + '</title></head>'
1268
1331
  + '<body><pre>[render-nunjucks] error template render failed: '
1269
- + (renderErr.message || renderErr) + '</pre></body></html>';
1332
+ + _escapeHtml(renderErr.message || renderErr) + '</pre></body></html>';
1270
1333
  }
1271
1334
  }
1272
1335
  }