gina 0.6.22 → 0.6.23

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 (599) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +18 -16
  3. package/ROADMAP.md +13 -0
  4. package/framework/v0.6.23/VERSION +1 -0
  5. package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.js +22 -5
  6. package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +249 -249
  7. package/framework/v0.6.23/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  8. package/framework/v0.6.23/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  9. package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.js +38 -8
  10. package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-nunjucks.js +6 -5
  11. package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-swig.js +10 -6
  12. package/framework/v0.6.23/core/controller/inline-script.js +108 -0
  13. package/framework/{v0.6.22 → v0.6.23}/core/server.isaac.js +13 -0
  14. package/framework/{v0.6.22 → v0.6.23}/core/server.js +129 -1
  15. package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/templates.json +3 -0
  16. package/framework/{v0.6.22 → v0.6.23}/core/template/conf/settings.json +63 -2
  17. package/framework/{v0.6.22 → v0.6.23}/core/template/conf/templates.json +1 -0
  18. package/framework/{v0.6.22 → v0.6.23}/lib/index.js +17 -0
  19. package/framework/{v0.6.22 → v0.6.23}/lib/merge/src/main.js +22 -5
  20. package/framework/v0.6.23/lib/security-headers-emitter/package.json +18 -0
  21. package/framework/v0.6.23/lib/security-headers-emitter/src/main.js +225 -0
  22. package/framework/v0.6.23/lib/sri/package.json +18 -0
  23. package/framework/v0.6.23/lib/sri/src/main.js +237 -0
  24. package/framework/{v0.6.22 → v0.6.23}/package.json +1 -1
  25. package/gna.js +4 -4
  26. package/llms.txt +2 -1
  27. package/package.json +3 -3
  28. package/schema/settings.json +47 -0
  29. package/types/index.d.ts +16 -0
  30. package/framework/v0.6.22/VERSION +0 -1
  31. package/framework/v0.6.22/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  32. package/framework/v0.6.22/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  33. /package/framework/{v0.6.22 → v0.6.23}/AUTHORS +0 -0
  34. /package/framework/{v0.6.22 → v0.6.23}/LICENSE +0 -0
  35. /package/framework/{v0.6.22 → v0.6.23}/core/asset/html/nolayout.html +0 -0
  36. /package/framework/{v0.6.22 → v0.6.23}/core/asset/html/static.html +0 -0
  37. /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/android-chrome-192x192.png +0 -0
  38. /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/android-chrome-512x512.png +0 -0
  39. /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/apple-touch-icon.png +0 -0
  40. /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/favicon-16x16.png +0 -0
  41. /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/favicon-32x32.png +0 -0
  42. /package/framework/{v0.6.22 → v0.6.23}/core/asset/img/favicon.ico +0 -0
  43. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/README.md +0 -0
  44. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  45. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  46. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  47. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  48. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  49. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  50. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  51. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  52. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  53. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  54. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  55. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  56. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  57. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  58. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  59. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  60. /package/framework/{v0.6.22 → v0.6.23}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  61. /package/framework/{v0.6.22 → v0.6.23}/core/config.js +0 -0
  62. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/ai/index.js +0 -0
  63. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/ai/lib/connector.js +0 -0
  64. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/index.js +0 -0
  65. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/connector.js +0 -0
  66. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  67. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  68. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/n1ql.js +0 -0
  69. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/session-store.js +0 -0
  70. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  71. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  72. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/couchbase/lib/storage-store.js +0 -0
  73. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/duckdb/index.js +0 -0
  74. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/duckdb/lib/connector.js +0 -0
  75. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/index.js +0 -0
  76. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/connector.js +0 -0
  77. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/job-store.js +0 -0
  78. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  79. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mongodb/lib/session-store.js +0 -0
  80. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mysql/index.js +0 -0
  81. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/mysql/lib/connector.js +0 -0
  82. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/param-redact.js +0 -0
  83. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/postgresql/index.js +0 -0
  84. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/postgresql/lib/connector.js +0 -0
  85. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/index.js +0 -0
  86. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/connector.js +0 -0
  87. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/job-store.js +0 -0
  88. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/kv-store.js +0 -0
  89. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/render-cache-store.js +0 -0
  90. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/redis/lib/session-store.js +0 -0
  91. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/scylladb/index.js +0 -0
  92. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/scylladb/lib/connector.js +0 -0
  93. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/scylladb/lib/session-store.js +0 -0
  94. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/settle-once.js +0 -0
  95. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sql-parser.js +0 -0
  96. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/index.js +0 -0
  97. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/connector.js +0 -0
  98. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/job-store.js +0 -0
  99. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/kv-store.js +0 -0
  100. /package/framework/{v0.6.22 → v0.6.23}/core/connectors/sqlite/lib/session-store.js +0 -0
  101. /package/framework/{v0.6.22 → v0.6.23}/core/content.encoding +0 -0
  102. /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.framework.js +0 -0
  103. /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-json.js +0 -0
  104. /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-nunjucks-async.js +0 -0
  105. /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-stream.js +0 -0
  106. /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-swig-async.js +0 -0
  107. /package/framework/{v0.6.22 → v0.6.23}/core/controller/controller.render-v1.js +0 -0
  108. /package/framework/{v0.6.22 → v0.6.23}/core/controller/index.js +0 -0
  109. /package/framework/{v0.6.22 → v0.6.23}/core/controller/inspector-window-emit.js +0 -0
  110. /package/framework/{v0.6.22 → v0.6.23}/core/controller/release-banner.js +0 -0
  111. /package/framework/{v0.6.22 → v0.6.23}/core/dev/index.js +0 -0
  112. /package/framework/{v0.6.22 → v0.6.23}/core/dev/lib/class.js +0 -0
  113. /package/framework/{v0.6.22 → v0.6.23}/core/dev/lib/factory.js +0 -0
  114. /package/framework/{v0.6.22 → v0.6.23}/core/dev/lib/tools.js +0 -0
  115. /package/framework/{v0.6.22 → v0.6.23}/core/gna.js +0 -0
  116. /package/framework/{v0.6.22 → v0.6.23}/core/locales/README.md +0 -0
  117. /package/framework/{v0.6.22 → v0.6.23}/core/locales/currency.json +0 -0
  118. /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/language/en.json +0 -0
  119. /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/language/fr.json +0 -0
  120. /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/region/en.json +0 -0
  121. /package/framework/{v0.6.22 → v0.6.23}/core/locales/dist/region/fr.json +0 -0
  122. /package/framework/{v0.6.22 → v0.6.23}/core/locales/index.js +0 -0
  123. /package/framework/{v0.6.22 → v0.6.23}/core/mime.types +0 -0
  124. /package/framework/{v0.6.22 → v0.6.23}/core/model/entity.js +0 -0
  125. /package/framework/{v0.6.22 → v0.6.23}/core/model/index.js +0 -0
  126. /package/framework/{v0.6.22 → v0.6.23}/core/model/template/entityFactory.js +0 -0
  127. /package/framework/{v0.6.22 → v0.6.23}/core/model/template/index.js +0 -0
  128. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/README.md +0 -0
  129. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/index.js +0 -0
  130. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/csrf/README.md +0 -0
  131. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/csrf/package.json +0 -0
  132. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/csrf/src/main.js +0 -0
  133. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/README.md +0 -0
  134. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coep/README.md +0 -0
  135. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coep/package.json +0 -0
  136. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  137. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coop/README.md +0 -0
  138. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coop/package.json +0 -0
  139. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  140. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/corp/README.md +0 -0
  141. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/corp/package.json +0 -0
  142. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  143. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/csp/README.md +0 -0
  144. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/csp/package.json +0 -0
  145. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  146. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  147. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  148. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  149. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  150. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  151. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  152. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  153. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  154. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  155. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/package.json +0 -0
  156. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  157. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  158. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  159. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/src/main.js +0 -0
  160. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  161. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  162. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  163. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  164. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  165. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  166. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  167. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  168. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  169. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  170. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  171. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  172. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  173. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  174. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  175. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  176. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  177. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  178. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/session/README.md +0 -0
  179. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/session/package.json +0 -0
  180. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/session/src/main.js +0 -0
  181. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/README.md +0 -0
  182. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/build.json +0 -0
  183. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/package.json +0 -0
  184. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/storage/src/main.js +0 -0
  185. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/README.md +0 -0
  186. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/build.json +0 -0
  187. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/package.json +0 -0
  188. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/src/form-validator.js +0 -0
  189. /package/framework/{v0.6.22 → v0.6.23}/core/plugins/lib/validator/src/main.js +0 -0
  190. /package/framework/{v0.6.22 → v0.6.23}/core/router.js +0 -0
  191. /package/framework/{v0.6.22 → v0.6.23}/core/server.express.js +0 -0
  192. /package/framework/{v0.6.22 → v0.6.23}/core/status.codes +0 -0
  193. /package/framework/{v0.6.22 → v0.6.23}/core/template/_gitignore +0 -0
  194. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/app.json +0 -0
  195. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  196. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/routing.json +0 -0
  197. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/settings.json +0 -0
  198. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  199. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  200. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  201. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  202. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  203. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/index.js +0 -0
  204. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle/locales/en.json +0 -0
  205. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  206. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  207. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  208. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  209. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  210. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  211. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  212. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  213. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/readme.md +0 -0
  214. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_public/sw.js +0 -0
  215. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  216. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  217. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  218. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  219. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  220. /package/framework/{v0.6.22 → v0.6.23}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  221. /package/framework/{v0.6.22 → v0.6.23}/core/template/command/gina.bat.tpl +0 -0
  222. /package/framework/{v0.6.22 → v0.6.23}/core/template/command/gina.tpl +0 -0
  223. /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/env.json +0 -0
  224. /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/manifest.json +0 -0
  225. /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/package.json +0 -0
  226. /package/framework/{v0.6.22 → v0.6.23}/core/template/conf/statics.json +0 -0
  227. /package/framework/{v0.6.22 → v0.6.23}/core/template/error/client/json/401.json +0 -0
  228. /package/framework/{v0.6.22 → v0.6.23}/core/template/error/client/json/403.json +0 -0
  229. /package/framework/{v0.6.22 → v0.6.23}/core/template/error/client/json/404.json +0 -0
  230. /package/framework/{v0.6.22 → v0.6.23}/core/template/error/server/html/50x.html +0 -0
  231. /package/framework/{v0.6.22 → v0.6.23}/core/template/error/server/json/500.json +0 -0
  232. /package/framework/{v0.6.22 → v0.6.23}/core/template/error/server/json/503.json +0 -0
  233. /package/framework/{v0.6.22 → v0.6.23}/core/template/extensions/logger/config.json +0 -0
  234. /package/framework/{v0.6.22 → v0.6.23}/helpers/console.js +0 -0
  235. /package/framework/{v0.6.22 → v0.6.23}/helpers/context.js +0 -0
  236. /package/framework/{v0.6.22 → v0.6.23}/helpers/data/LICENSE +0 -0
  237. /package/framework/{v0.6.22 → v0.6.23}/helpers/data/README.md +0 -0
  238. /package/framework/{v0.6.22 → v0.6.23}/helpers/data/package.json +0 -0
  239. /package/framework/{v0.6.22 → v0.6.23}/helpers/data/src/main.js +0 -0
  240. /package/framework/{v0.6.22 → v0.6.23}/helpers/dateFormat.js +0 -0
  241. /package/framework/{v0.6.22 → v0.6.23}/helpers/index.js +0 -0
  242. /package/framework/{v0.6.22 → v0.6.23}/helpers/json/LICENSE +0 -0
  243. /package/framework/{v0.6.22 → v0.6.23}/helpers/json/README.md +0 -0
  244. /package/framework/{v0.6.22 → v0.6.23}/helpers/json/package.json +0 -0
  245. /package/framework/{v0.6.22 → v0.6.23}/helpers/json/src/main.js +0 -0
  246. /package/framework/{v0.6.22 → v0.6.23}/helpers/path.js +0 -0
  247. /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/README.md +0 -0
  248. /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/package.json +0 -0
  249. /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/src/api-error.js +0 -0
  250. /package/framework/{v0.6.22 → v0.6.23}/helpers/plugins/src/main.js +0 -0
  251. /package/framework/{v0.6.22 → v0.6.23}/helpers/prototypes.js +0 -0
  252. /package/framework/{v0.6.22 → v0.6.23}/helpers/task.js +0 -0
  253. /package/framework/{v0.6.22 → v0.6.23}/helpers/text.js +0 -0
  254. /package/framework/{v0.6.22 → v0.6.23}/lib/admin/package.json +0 -0
  255. /package/framework/{v0.6.22 → v0.6.23}/lib/admin/src/main.js +0 -0
  256. /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/README.md +0 -0
  257. /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/build.json +0 -0
  258. /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/package.json +0 -0
  259. /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/src/dep/jszip.min.js +0 -0
  260. /package/framework/{v0.6.22 → v0.6.23}/lib/archiver/src/main.js +0 -0
  261. /package/framework/{v0.6.22 → v0.6.23}/lib/async/package.json +0 -0
  262. /package/framework/{v0.6.22 → v0.6.23}/lib/async/src/main.js +0 -0
  263. /package/framework/{v0.6.22 → v0.6.23}/lib/audit/package.json +0 -0
  264. /package/framework/{v0.6.22 → v0.6.23}/lib/audit/src/main.js +0 -0
  265. /package/framework/{v0.6.22 → v0.6.23}/lib/audit-store.js +0 -0
  266. /package/framework/{v0.6.22 → v0.6.23}/lib/authn/package.json +0 -0
  267. /package/framework/{v0.6.22 → v0.6.23}/lib/authn/src/lockout.js +0 -0
  268. /package/framework/{v0.6.22 → v0.6.23}/lib/authn/src/main.js +0 -0
  269. /package/framework/{v0.6.22 → v0.6.23}/lib/authn/src/totp.js +0 -0
  270. /package/framework/{v0.6.22 → v0.6.23}/lib/authz-gate/package.json +0 -0
  271. /package/framework/{v0.6.22 → v0.6.23}/lib/authz-gate/src/main.js +0 -0
  272. /package/framework/{v0.6.22 → v0.6.23}/lib/cache/README.md +0 -0
  273. /package/framework/{v0.6.22 → v0.6.23}/lib/cache/build.json +0 -0
  274. /package/framework/{v0.6.22 → v0.6.23}/lib/cache/package.json +0 -0
  275. /package/framework/{v0.6.22 → v0.6.23}/lib/cache/src/main.js +0 -0
  276. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/aliases.json +0 -0
  277. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/audit/arguments.json +0 -0
  278. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/audit/help.txt +0 -0
  279. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/audit/verify.js +0 -0
  280. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/add.js +0 -0
  281. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/arguments.json +0 -0
  282. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/build.js +0 -0
  283. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/copy.js +0 -0
  284. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/cp.js +0 -0
  285. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/help.js +0 -0
  286. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/help.txt +0 -0
  287. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  288. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/list.js +0 -0
  289. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/man.js +0 -0
  290. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/mcp-start.js +0 -0
  291. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/mcp.js +0 -0
  292. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/oas.js +0 -0
  293. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/openapi.js +0 -0
  294. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/remove.js +0 -0
  295. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/rename.js +0 -0
  296. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/restart.js +0 -0
  297. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/rm.js +0 -0
  298. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/start.js +0 -0
  299. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/status.js +0 -0
  300. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/stop.js +0 -0
  301. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/bundle/types.js +0 -0
  302. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/arguments.json +0 -0
  303. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/clear.js +0 -0
  304. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/help.txt +0 -0
  305. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/cache/stats.js +0 -0
  306. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/add.js +0 -0
  307. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/arguments.json +0 -0
  308. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/help.js +0 -0
  309. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/help.txt +0 -0
  310. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/infer.js +0 -0
  311. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/list.js +0 -0
  312. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/migrate.js +0 -0
  313. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/models.js +0 -0
  314. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/remove.js +0 -0
  315. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/rm.js +0 -0
  316. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/connector/test.js +0 -0
  317. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/arguments.json +0 -0
  318. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/help.js +0 -0
  319. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/help.txt +0 -0
  320. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/man.js +0 -0
  321. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/ps.js +0 -0
  322. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/container/stop.js +0 -0
  323. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/add.js +0 -0
  324. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/arguments.json +0 -0
  325. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/help.txt +0 -0
  326. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/args.js +0 -0
  327. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/namespace.js +0 -0
  328. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  329. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/reference-scan.js +0 -0
  330. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/inc/scaffold.js +0 -0
  331. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/remove.js +0 -0
  332. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/rename.js +0 -0
  333. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/controller/rm.js +0 -0
  334. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/add.js +0 -0
  335. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/get.js +0 -0
  336. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/help.js +0 -0
  337. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/help.txt +0 -0
  338. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/link-dev.js +0 -0
  339. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/list.js +0 -0
  340. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/remove.js +0 -0
  341. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/rm.js +0 -0
  342. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/set.js +0 -0
  343. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/unset.js +0 -0
  344. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/env/use.js +0 -0
  345. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/add.js +0 -0
  346. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/arguments.json +0 -0
  347. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/build.js +0 -0
  348. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/dot.js +0 -0
  349. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/get.js +0 -0
  350. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/help.js +0 -0
  351. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/help.txt +0 -0
  352. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/init.js +0 -0
  353. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/link-node-modules.js +0 -0
  354. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/link.js +0 -0
  355. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/list.js +0 -0
  356. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/man.js +0 -0
  357. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/msg.json +0 -0
  358. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/open.js +0 -0
  359. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/remove.js +0 -0
  360. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/reset.js +0 -0
  361. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/restart.js +0 -0
  362. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/set.js +0 -0
  363. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/start.js +0 -0
  364. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/status.js +0 -0
  365. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/stop.js +0 -0
  366. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/tail.js +0 -0
  367. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/update.js +0 -0
  368. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/framework/version.js +0 -0
  369. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/gina-dev.1.md +0 -0
  370. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/gina-framework.1.md +0 -0
  371. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/gina.1.md +0 -0
  372. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/helper.js +0 -0
  373. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/add.js +0 -0
  374. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/arguments.json +0 -0
  375. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/export.js +0 -0
  376. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/help.js +0 -0
  377. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/help.txt +0 -0
  378. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/import.js +0 -0
  379. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/i18n/scan.js +0 -0
  380. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/_host.js +0 -0
  381. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/arguments.json +0 -0
  382. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/build.js +0 -0
  383. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/help.js +0 -0
  384. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/help.txt +0 -0
  385. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/list.js +0 -0
  386. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/man.js +0 -0
  387. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/rm.js +0 -0
  388. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/image/run.js +0 -0
  389. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/index.js +0 -0
  390. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/inspector/help.js +0 -0
  391. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/inspector/help.txt +0 -0
  392. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/inspector/open.js +0 -0
  393. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/man-render.js +0 -0
  394. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/arguments.json +0 -0
  395. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/help.js +0 -0
  396. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/help.txt +0 -0
  397. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/kill.js +0 -0
  398. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/minion/list.js +0 -0
  399. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/msg.json +0 -0
  400. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/help.js +0 -0
  401. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/help.txt +0 -0
  402. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/inc/scan.js +0 -0
  403. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/list.js +0 -0
  404. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/reset.js +0 -0
  405. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/port/set.js +0 -0
  406. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/add.js +0 -0
  407. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/arguments.json +0 -0
  408. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/backup.js +0 -0
  409. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/build.js +0 -0
  410. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/help.js +0 -0
  411. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/help.txt +0 -0
  412. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/import.js +0 -0
  413. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/list.js +0 -0
  414. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/man.js +0 -0
  415. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/move.js +0 -0
  416. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/remove.js +0 -0
  417. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/rename.js +0 -0
  418. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/restart.js +0 -0
  419. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/restore.js +0 -0
  420. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/rm.js +0 -0
  421. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/start.js +0 -0
  422. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/status.js +0 -0
  423. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/project/stop.js +0 -0
  424. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/arguments.json +0 -0
  425. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/help.js +0 -0
  426. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/help.txt +0 -0
  427. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/list.js +0 -0
  428. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/remove.js +0 -0
  429. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/protocol/set.js +0 -0
  430. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/add.js +0 -0
  431. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/help.js +0 -0
  432. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/help.txt +0 -0
  433. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/link-local.js +0 -0
  434. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/link-production.js +0 -0
  435. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/list.js +0 -0
  436. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/remove.js +0 -0
  437. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/rm.js +0 -0
  438. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/scope/use.js +0 -0
  439. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/arguments.json +0 -0
  440. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/check.js +0 -0
  441. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/help.js +0 -0
  442. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/help.txt +0 -0
  443. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/secrets/scan.js +0 -0
  444. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/help.js +0 -0
  445. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/help.txt +0 -0
  446. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/list.js +0 -0
  447. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/man.js +0 -0
  448. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/service/start.js +0 -0
  449. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/arguments.json +0 -0
  450. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/gc.js +0 -0
  451. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/help.txt +0 -0
  452. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/stats.js +0 -0
  453. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/storage/verify.js +0 -0
  454. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd/view/add.js +0 -0
  455. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd-status-format/package.json +0 -0
  456. /package/framework/{v0.6.22 → v0.6.23}/lib/cmd-status-format/src/main.js +0 -0
  457. /package/framework/{v0.6.22 → v0.6.23}/lib/collection/README.md +0 -0
  458. /package/framework/{v0.6.22 → v0.6.23}/lib/collection/build.json +0 -0
  459. /package/framework/{v0.6.22 → v0.6.23}/lib/collection/package.json +0 -0
  460. /package/framework/{v0.6.22 → v0.6.23}/lib/collection/src/main.js +0 -0
  461. /package/framework/{v0.6.22 → v0.6.23}/lib/config.js +0 -0
  462. /package/framework/{v0.6.22 → v0.6.23}/lib/connector-config/package.json +0 -0
  463. /package/framework/{v0.6.22 → v0.6.23}/lib/connector-config/src/main.js +0 -0
  464. /package/framework/{v0.6.22 → v0.6.23}/lib/connector-error/package.json +0 -0
  465. /package/framework/{v0.6.22 → v0.6.23}/lib/connector-error/src/main.js +0 -0
  466. /package/framework/{v0.6.22 → v0.6.23}/lib/connector-registry/package.json +0 -0
  467. /package/framework/{v0.6.22 → v0.6.23}/lib/connector-registry/src/main.js +0 -0
  468. /package/framework/{v0.6.22 → v0.6.23}/lib/cron/README.md +0 -0
  469. /package/framework/{v0.6.22 → v0.6.23}/lib/cron/package.json +0 -0
  470. /package/framework/{v0.6.22 → v0.6.23}/lib/cron/src/main.js +0 -0
  471. /package/framework/{v0.6.22 → v0.6.23}/lib/domain/LICENSE +0 -0
  472. /package/framework/{v0.6.22 → v0.6.23}/lib/domain/README.md +0 -0
  473. /package/framework/{v0.6.22 → v0.6.23}/lib/domain/package.json +0 -0
  474. /package/framework/{v0.6.22 → v0.6.23}/lib/domain/src/main.js +0 -0
  475. /package/framework/{v0.6.22 → v0.6.23}/lib/dto/package.json +0 -0
  476. /package/framework/{v0.6.22 → v0.6.23}/lib/dto/src/main.js +0 -0
  477. /package/framework/{v0.6.22 → v0.6.23}/lib/dto-pipe/package.json +0 -0
  478. /package/framework/{v0.6.22 → v0.6.23}/lib/dto-pipe/src/main.js +0 -0
  479. /package/framework/{v0.6.22 → v0.6.23}/lib/dto-types/package.json +0 -0
  480. /package/framework/{v0.6.22 → v0.6.23}/lib/dto-types/src/main.js +0 -0
  481. /package/framework/{v0.6.22 → v0.6.23}/lib/generator/index.js +0 -0
  482. /package/framework/{v0.6.22 → v0.6.23}/lib/i18n/package.json +0 -0
  483. /package/framework/{v0.6.22 → v0.6.23}/lib/i18n/src/main.js +0 -0
  484. /package/framework/{v0.6.22 → v0.6.23}/lib/image-build/package.json +0 -0
  485. /package/framework/{v0.6.22 → v0.6.23}/lib/image-build/src/main.js +0 -0
  486. /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/LICENSE +0 -0
  487. /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/README.md +0 -0
  488. /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/package.json +0 -0
  489. /package/framework/{v0.6.22 → v0.6.23}/lib/inherits/src/main.js +0 -0
  490. /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-events/package.json +0 -0
  491. /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-events/src/main.js +0 -0
  492. /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-redact/package.json +0 -0
  493. /package/framework/{v0.6.22 → v0.6.23}/lib/inspector-redact/src/main.js +0 -0
  494. /package/framework/{v0.6.22 → v0.6.23}/lib/instrument/package.json +0 -0
  495. /package/framework/{v0.6.22 → v0.6.23}/lib/instrument/src/main.js +0 -0
  496. /package/framework/{v0.6.22 → v0.6.23}/lib/job/package.json +0 -0
  497. /package/framework/{v0.6.22 → v0.6.23}/lib/job/src/main.js +0 -0
  498. /package/framework/{v0.6.22 → v0.6.23}/lib/job-store.js +0 -0
  499. /package/framework/{v0.6.22 → v0.6.23}/lib/json-config-header/package.json +0 -0
  500. /package/framework/{v0.6.22 → v0.6.23}/lib/json-config-header/src/main.js +0 -0
  501. /package/framework/{v0.6.22 → v0.6.23}/lib/kv/package.json +0 -0
  502. /package/framework/{v0.6.22 → v0.6.23}/lib/kv/src/main.js +0 -0
  503. /package/framework/{v0.6.22 → v0.6.23}/lib/kv-store.js +0 -0
  504. /package/framework/{v0.6.22 → v0.6.23}/lib/loading-state/package.json +0 -0
  505. /package/framework/{v0.6.22 → v0.6.23}/lib/loading-state/src/main.js +0 -0
  506. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/README.md +0 -0
  507. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/package.json +0 -0
  508. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/default/index.js +0 -0
  509. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/file/index.js +0 -0
  510. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  511. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  512. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/mq/index.js +0 -0
  513. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/mq/listener.js +0 -0
  514. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/containers/mq/speaker.js +0 -0
  515. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/helper.js +0 -0
  516. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/main.js +0 -0
  517. /package/framework/{v0.6.22 → v0.6.23}/lib/logger/src/redact.js +0 -0
  518. /package/framework/{v0.6.22 → v0.6.23}/lib/maintenance/package.json +0 -0
  519. /package/framework/{v0.6.22 → v0.6.23}/lib/maintenance/src/main.js +0 -0
  520. /package/framework/{v0.6.22 → v0.6.23}/lib/math/index.js +0 -0
  521. /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-dispatch/package.json +0 -0
  522. /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-dispatch/src/main.js +0 -0
  523. /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-http/package.json +0 -0
  524. /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-http/src/main.js +0 -0
  525. /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-server/package.json +0 -0
  526. /package/framework/{v0.6.22 → v0.6.23}/lib/mcp-server/src/main.js +0 -0
  527. /package/framework/{v0.6.22 → v0.6.23}/lib/merge/README.md +0 -0
  528. /package/framework/{v0.6.22 → v0.6.23}/lib/merge/package.json +0 -0
  529. /package/framework/{v0.6.22 → v0.6.23}/lib/metrics/package.json +0 -0
  530. /package/framework/{v0.6.22 → v0.6.23}/lib/metrics/src/main.js +0 -0
  531. /package/framework/{v0.6.22 → v0.6.23}/lib/model.js +0 -0
  532. /package/framework/{v0.6.22 → v0.6.23}/lib/net-locality/package.json +0 -0
  533. /package/framework/{v0.6.22 → v0.6.23}/lib/net-locality/src/main.js +0 -0
  534. /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-filters/README.md +0 -0
  535. /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-filters/package.json +0 -0
  536. /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-filters/src/main.js +0 -0
  537. /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-resolver/package.json +0 -0
  538. /package/framework/{v0.6.22 → v0.6.23}/lib/nunjucks-resolver/src/main.js +0 -0
  539. /package/framework/{v0.6.22 → v0.6.23}/lib/proc.js +0 -0
  540. /package/framework/{v0.6.22 → v0.6.23}/lib/push/package.json +0 -0
  541. /package/framework/{v0.6.22 → v0.6.23}/lib/push/src/main.js +0 -0
  542. /package/framework/{v0.6.22 → v0.6.23}/lib/rate-limit/package.json +0 -0
  543. /package/framework/{v0.6.22 → v0.6.23}/lib/rate-limit/src/main.js +0 -0
  544. /package/framework/{v0.6.22 → v0.6.23}/lib/release-watch/package.json +0 -0
  545. /package/framework/{v0.6.22 → v0.6.23}/lib/release-watch/src/main.js +0 -0
  546. /package/framework/{v0.6.22 → v0.6.23}/lib/render-cache/package.json +0 -0
  547. /package/framework/{v0.6.22 → v0.6.23}/lib/render-cache/src/main.js +0 -0
  548. /package/framework/{v0.6.22 → v0.6.23}/lib/render-cache-store.js +0 -0
  549. /package/framework/{v0.6.22 → v0.6.23}/lib/routing/README.md +0 -0
  550. /package/framework/{v0.6.22 → v0.6.23}/lib/routing/build.json +0 -0
  551. /package/framework/{v0.6.22 → v0.6.23}/lib/routing/package.json +0 -0
  552. /package/framework/{v0.6.22 → v0.6.23}/lib/routing/src/main.js +0 -0
  553. /package/framework/{v0.6.22 → v0.6.23}/lib/routing/src/radix.js +0 -0
  554. /package/framework/{v0.6.22 → v0.6.23}/lib/routing-introspect/package.json +0 -0
  555. /package/framework/{v0.6.22 → v0.6.23}/lib/routing-introspect/src/main.js +0 -0
  556. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/package.json +0 -0
  557. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/backends/env.js +0 -0
  558. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/backends/exec.js +0 -0
  559. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/backends/file.js +0 -0
  560. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/declaration.js +0 -0
  561. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/env-file.js +0 -0
  562. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/main.js +0 -0
  563. /package/framework/{v0.6.22 → v0.6.23}/lib/secrets/src/sources.js +0 -0
  564. /package/framework/{v0.6.22 → v0.6.23}/lib/session-store.js +0 -0
  565. /package/framework/{v0.6.22 → v0.6.23}/lib/shell.js +0 -0
  566. /package/framework/{v0.6.22 → v0.6.23}/lib/sqlite-driver.js +0 -0
  567. /package/framework/{v0.6.22 → v0.6.23}/lib/state.js +0 -0
  568. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/package.json +0 -0
  569. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/local-cas.js +0 -0
  570. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/local-stream.js +0 -0
  571. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/local.js +0 -0
  572. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/main.js +0 -0
  573. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/meta-store.js +0 -0
  574. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/s3.js +0 -0
  575. /package/framework/{v0.6.22 → v0.6.23}/lib/storage/src/util.js +0 -0
  576. /package/framework/{v0.6.22 → v0.6.23}/lib/storage-store.js +0 -0
  577. /package/framework/{v0.6.22 → v0.6.23}/lib/swig-filters/README.md +0 -0
  578. /package/framework/{v0.6.22 → v0.6.23}/lib/swig-filters/package.json +0 -0
  579. /package/framework/{v0.6.22 → v0.6.23}/lib/swig-filters/src/main.js +0 -0
  580. /package/framework/{v0.6.22 → v0.6.23}/lib/swig-resolver/package.json +0 -0
  581. /package/framework/{v0.6.22 → v0.6.23}/lib/swig-resolver/src/main.js +0 -0
  582. /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/package.json +0 -0
  583. /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/src/loaders/http.js +0 -0
  584. /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/src/loaders/memory.js +0 -0
  585. /package/framework/{v0.6.22 → v0.6.23}/lib/template-loaders/src/main.js +0 -0
  586. /package/framework/{v0.6.22 → v0.6.23}/lib/url/README.md +0 -0
  587. /package/framework/{v0.6.22 → v0.6.23}/lib/url/index.js +0 -0
  588. /package/framework/{v0.6.22 → v0.6.23}/lib/url/routing.json +0 -0
  589. /package/framework/{v0.6.22 → v0.6.23}/lib/uuid/package.json +0 -0
  590. /package/framework/{v0.6.22 → v0.6.23}/lib/uuid/src/main.js +0 -0
  591. /package/framework/{v0.6.22 → v0.6.23}/lib/validator.js +0 -0
  592. /package/framework/{v0.6.22 → v0.6.23}/lib/watcher/package.json +0 -0
  593. /package/framework/{v0.6.22 → v0.6.23}/lib/watcher/src/main.js +0 -0
  594. /package/framework/{v0.6.22 → v0.6.23}/lib/ws-framing/package.json +0 -0
  595. /package/framework/{v0.6.22 → v0.6.23}/lib/ws-framing/src/main.js +0 -0
  596. /package/framework/{v0.6.22 → v0.6.23}/lib/ws-query/package.json +0 -0
  597. /package/framework/{v0.6.22 → v0.6.23}/lib/ws-query/src/main.js +0 -0
  598. /package/framework/{v0.6.22 → v0.6.23}/lib/ws-session/package.json +0 -0
  599. /package/framework/{v0.6.22 → v0.6.23}/lib/ws-session/src/main.js +0 -0
@@ -1444,15 +1444,22 @@ function SuperController(options) {
1444
1444
  }
1445
1445
 
1446
1446
  /**
1447
- * Get node resources
1447
+ * Get node resources — builds the `<link>` (css) / `<script>` (js) tag
1448
+ * string for the view's declared assets.
1448
1449
  *
1449
- * @param {string} type
1450
- * @param {string} resStr
1450
+ * #OW3 — when the bundle opted in via templates.json `"sriEnabled": true`,
1451
+ * every same-origin asset that resolves to a readable file on disk gets an
1452
+ * `integrity="sha384-..." crossorigin="anonymous"` attribute pair
1453
+ * (computed by lib/sri, fail-open), and its HTTP/2 preload hint is
1454
+ * suppressed (the hint carries no integrity metadata, so a hinted fetch
1455
+ * could not be matched to the integrity-checked consumer).
1456
+ *
1457
+ * @param {string} type - `'css'` or `'js'`
1451
1458
  * @param {array} resArr
1452
1459
  * @param {boolean} useWebroot
1453
1460
  * @param {string} webrootStr - Webroot string prefix for startsWith check (#P1)
1454
1461
  *
1455
- * @returns {object} content
1462
+ * @returns {string} tag string to inject into the layout
1456
1463
  *
1457
1464
  * @private
1458
1465
  * */
@@ -1488,6 +1495,13 @@ function SuperController(options) {
1488
1495
  hostname = local.options.conf.hostname
1489
1496
  }
1490
1497
 
1498
+ // #OW3 — opt-in Subresource Integrity (templates.json `"sriEnabled": true`).
1499
+ // Attribute computation is fully delegated to lib/sri, which is
1500
+ // fail-open by design: an asset that cannot be honestly hashed
1501
+ // (external URL, unresolvable path, unreadable file) simply gets no
1502
+ // integrity attribute and loads exactly as before.
1503
+ var sriEnabled = (local.options.template.sriEnabled) ? true : false;
1504
+
1491
1505
 
1492
1506
  if (
1493
1507
  isProxyHost
@@ -1514,10 +1528,18 @@ function SuperController(options) {
1514
1528
  if (useWebroot && !obj.url.startsWith(webrootStr) ) {
1515
1529
  obj.url = local.options.conf.server.webroot + obj.url.substring(1);
1516
1530
  }
1531
+ // #OW3 — SRI attribute pair for same-origin disk-resolvable
1532
+ // assets when the bundle opted in; '' otherwise (fail-open).
1533
+ var sriAttributes = (sriEnabled) ? lib.sri.getIntegrityAttributes(obj.url, local.options.conf, local.options.conf.server.webroot) : '';
1517
1534
  // HTTP2 Push via Link
1518
1535
  if (
1519
1536
  /http\/2/.test(local.options.conf.server.protocol)
1520
1537
  && !self.isCacheless()
1538
+ // #OW3 — no preload hint for an SRI'd asset: the hint
1539
+ // carries no integrity metadata, so a hinted fetch may
1540
+ // not match the integrity-checked consumer and would
1541
+ // then be a wasted double-fetch.
1542
+ && !sriAttributes
1521
1543
  ) {
1522
1544
  local.options.template.h2Links += '<'+ obj.url +'>; as=style; rel=preload,'
1523
1545
  }
@@ -1528,9 +1550,9 @@ function SuperController(options) {
1528
1550
  // }
1529
1551
 
1530
1552
  if (obj.media) {
1531
- str += '\n\t\t<link href="'+ obj.url +'" media="'+ obj.media +'" rel="'+ obj.rel +'" type="'+ obj.type +'">';
1553
+ str += '\n\t\t<link href="'+ obj.url +'" media="'+ obj.media +'" rel="'+ obj.rel +'" type="'+ obj.type +'"'+ sriAttributes +'>';
1532
1554
  } else {
1533
- str += '\n\t\t<link href="'+ obj.url +'" rel="'+ obj.rel +'" type="'+ obj.type +'">';
1555
+ str += '\n\t\t<link href="'+ obj.url +'" rel="'+ obj.rel +'" type="'+ obj.type +'"'+ sriAttributes +'>';
1534
1556
  }
1535
1557
  }
1536
1558
  break;
@@ -1543,10 +1565,18 @@ function SuperController(options) {
1543
1565
  if (useWebroot && !obj.url.startsWith(webrootStr) ) {
1544
1566
  obj.url = local.options.conf.server.webroot + obj.url.substring(1);
1545
1567
  }
1568
+ // #OW3 — SRI attribute pair for same-origin disk-resolvable
1569
+ // assets when the bundle opted in; '' otherwise (fail-open).
1570
+ var sriAttributes = (sriEnabled) ? lib.sri.getIntegrityAttributes(obj.url, local.options.conf, local.options.conf.server.webroot) : '';
1546
1571
  // HTTP2 Push via Link
1547
1572
  if (
1548
1573
  /http\/2/.test(local.options.conf.server.protocol)
1549
1574
  && !self.isCacheless()
1575
+ // #OW3 — no preload hint for an SRI'd asset: the hint
1576
+ // carries no integrity metadata, so a hinted fetch may
1577
+ // not match the integrity-checked consumer and would
1578
+ // then be a wasted double-fetch.
1579
+ && !sriAttributes
1550
1580
  ) {
1551
1581
  local.options.template.h2Links += '<'+ obj.url +'>; as=script; rel=preload,'
1552
1582
  }
@@ -1564,11 +1594,11 @@ function SuperController(options) {
1564
1594
  if (
1565
1595
  obj.isExternalPlugin
1566
1596
  ) {
1567
- local.options.template.externalPlugins.splice(1, 0, '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"></script>');
1597
+ local.options.template.externalPlugins.splice(1, 0, '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"'+ sriAttributes +'></script>');
1568
1598
  }
1569
1599
  else {
1570
1600
  // normal case
1571
- str += '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"></script>';
1601
+ str += '\n\t\t<script'+ deferMode +' type="'+ obj.type +'" src="'+ obj.url +'"'+ sriAttributes +'></script>';
1572
1602
  }
1573
1603
  }
1574
1604
  break;
@@ -122,6 +122,7 @@
122
122
 
123
123
  var fs = require('fs');
124
124
  var nodePath = require('path');
125
+ var inlineScript = require('./inline-script');
125
126
  var inspectorRedact = require('lib/inspector-redact');
126
127
  // #INS10 follow-up — prod-window HTML egress (no-HTML, render-json-style emit).
127
128
  var emitInspectorWindowData = require('./inspector-window-emit');
@@ -450,16 +451,16 @@ function injectInspectorScripts(html, data, self, local, displayInspector) {
450
451
  // `</script>` and `<!--` must be escaped inside JSON-serialised script
451
452
  // content so the browser's HTML parser doesn't terminate the tag early
452
453
  // or start an HTML comment. Matches render-swig.js:1096-1097.
453
- var _safeJson = JSON.stringify(__gdPayload)
454
- .replace(/<\/script>/gi, '<\\/script>')
455
- .replace(/<!--/g, '<\\!--');
454
+ // #B451 - see controller.render-swig.js: the blocklist this replaces was
455
+ // bypassable by a trailing space or slash after the script tag name.
456
+ var _safeJson = inlineScript.safeInlineJson(__gdPayload);
456
457
 
457
458
  var __gdScript = '<script' + _cspNonceAttr + '>window.__ginaData = ' + _safeJson + ';</script>\n';
458
459
  var _bundleName = (__gdUser.environment && __gdUser.environment.bundle) || '';
459
460
  var __logsScript = '<script' + _cspNonceAttr + '>'
460
461
  + 'window.__ginaLogs = window.__ginaLogs || [];'
461
462
  + '(function(w){'
462
- + 'var _c=w.console,_l=w.__ginaLogs,_b=' + JSON.stringify(_bundleName) + ';'
463
+ + 'var _c=w.console,_l=w.__ginaLogs,_b=' + inlineScript.safeInlineString(_bundleName) + ';'
463
464
  + '["log","info","warn","error","debug"].forEach(function(lvl){'
464
465
  + 'var orig=_c[lvl].bind(_c);'
465
466
  + '_c[lvl]=function(){'
@@ -1437,7 +1438,7 @@ module.exports = async function renderNunjucks(userData, displayInspector, errOp
1437
1438
  ? Date.now() - local._timeline.requestStart
1438
1439
  : null;
1439
1440
  var _njFlowPatch = (_njLateEntries.length > 0)
1440
- ? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + JSON.stringify(_njLateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
1441
+ ? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + inlineScript.safeInlineJson(_njLateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
1441
1442
  : '';
1442
1443
  var _njPatchScript = '<script' + _cspNonceAttr + '>(function(d){'
1443
1444
  + 'var u=d&&d.user,g=d&&d.gina;'
@@ -12,6 +12,7 @@ const cache = new lib.Cache();
12
12
  const renderCache = new lib.RenderCache();
13
13
  var statusCodes = requireJSON( _( getPath('gina').core + '/status.codes') );
14
14
  // Inspector secret redaction (dev-mode only — never touches the actual response body)
15
+ var inlineScript = require('./inline-script');
15
16
  var inspectorRedact = require('lib/inspector-redact');
16
17
  // #INS10 follow-up — prod-window HTML egress (no-HTML, render-json-style emit).
17
18
  var emitInspectorWindowData = require('./inspector-window-emit');
@@ -1157,7 +1158,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
1157
1158
  var _cacheWeightBytes = Buffer.byteLength(htmlContent, 'utf8');
1158
1159
  var _cacheServerMsFinal = _cacheRespEnd - local._timeline.requestStart;
1159
1160
  var _cacheFlowPatch = (_cacheLateEntries.length > 0)
1160
- ? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + JSON.stringify(_cacheLateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
1161
+ ? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + inlineScript.safeInlineJson(_cacheLateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
1161
1162
  : '';
1162
1163
  var _cachePatchScript = '<script' + _cspNonceAttr + '>(function(d){'
1163
1164
  + 'var u=d&&d.user,g=d&&d.gina;'
@@ -1510,9 +1511,12 @@ module.exports = async function render(userData, displayInspector, errOptions, d
1510
1511
  });
1511
1512
 
1512
1513
  var __gdScript = '<script' + _cspNonceTplAttr + '>window.__ginaData = '
1513
- + JSON.stringify(__gdPayload)
1514
- .replace(/<\/script>/gi, '<\\/script>')
1515
- .replace(/<!--/g, '<\\!--')
1514
+ // #B451 - the previous blocklist here matched only the literal
1515
+ // '</' + 'script>' and '<!--'. It was bypassable: a trailing space
1516
+ // or slash after the tag name also closes the block per the HTML5
1517
+ // script-data-end-tag-name state, and both injected when measured.
1518
+ // The helper escapes '<' itself, so no terminator spelling survives.
1519
+ + inlineScript.safeInlineJson(__gdPayload)
1516
1520
  + ';</script>\n';
1517
1521
 
1518
1522
  // Expose last snapshot for engine.io push and /_gina/agent SSE
@@ -1528,7 +1532,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
1528
1532
  var __logsScript = '<script' + _cspNonceTplAttr + '>'
1529
1533
  + 'window.__ginaLogs = window.__ginaLogs || [];'
1530
1534
  + '(function(w){'
1531
- + 'var _c=w.console,_l=w.__ginaLogs,_b="' + (__gdUser.environment && __gdUser.environment.bundle || '') + '";'
1535
+ + 'var _c=w.console,_l=w.__ginaLogs,_b=' + inlineScript.safeInlineString(__gdUser.environment && __gdUser.environment.bundle || '') + ';'
1532
1536
  + '["log","info","warn","error","debug"].forEach(function(lvl){'
1533
1537
  + 'var orig=_c[lvl].bind(_c);'
1534
1538
  + '_c[lvl]=function(){'
@@ -1980,7 +1984,7 @@ module.exports = async function render(userData, displayInspector, errOptions, d
1980
1984
  var _weightBytesFinal = Buffer.byteLength(htmlContent, 'utf8');
1981
1985
  var _serverMsFinal = _respEnd - local._timeline.requestStart;
1982
1986
  var _flowPatch = (_lateEntries.length > 0)
1983
- ? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + JSON.stringify(_lateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
1987
+ ? 'if(u&&u.flow){var _e=u.flow.entries,_p=' + inlineScript.safeInlineJson(_lateEntries) + ';for(var _i=0;_i<_p.length;_i++){_e.push(_p[_i])}}'
1984
1988
  : '';
1985
1989
  var _patchScript = '<script' + _cspNonceAttr + '>(function(d){'
1986
1990
  + 'var u=d&&d.user,g=d&&d.gina;'
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Safe serialisation of server-side data into an inline `<script>` block.
3
+ *
4
+ * ## Why this module exists
5
+ *
6
+ * A value serialised into an inline script is not in HTML text context — it is in
7
+ * *script data* context, where the HTML tokenizer scans for a script-data end tag
8
+ * and hands everything before it to the JS parser. HTML-escaping is therefore the
9
+ * WRONG tool (it would corrupt the JSON); the right one is to make the `<`
10
+ * character incapable of starting any tag-like sequence at all.
11
+ *
12
+ * ## Why `<` rather than a `</script>` blocklist
13
+ *
14
+ * The previous guard was two `.replace()` calls matching the literal `</script>`
15
+ * and `<!--`. That is a blocklist, and it was incomplete: per the HTML5
16
+ * *script data end tag name state*, the tag name may be followed by TAB, LF, FF,
17
+ * SPACE or `/` as well as `>`. Measured with a spec-compliant parser, both
18
+ * `</script >` and `</script/>` terminated the block and injected, while the
19
+ * blocklist let them through untouched — including at the one site that was
20
+ * considered protected.
21
+ *
22
+ * Escaping `<` itself is allowlist-shaped: it neutralises `</script` in every
23
+ * spelling, `<!--`, and a nested `<script` opener in one step, and cannot be
24
+ * defeated by a terminator variant nobody enumerated. `<` is a valid JSON
25
+ * escape, so the emitted text still `JSON.parse`s back to a byte-identical value
26
+ * (measured across every payload shape in the regression suite).
27
+ *
28
+ * U+2028 / U+2029 are additionally escaped: they are legal inside a JSON string
29
+ * but were line terminators to the JS parser before ES2019, so an unescaped one
30
+ * turns a valid payload into a `SyntaxError`. (This is not theoretical — a literal
31
+ * U+2028 in the probe written to verify this module crashed the parser reading it.)
32
+ *
33
+ * @module core/controller/inline-script
34
+ */
35
+ 'use strict';
36
+
37
+ /**
38
+ * U+2028 LINE SEPARATOR / U+2029 PARAGRAPH SEPARATOR.
39
+ * Built with `RegExp` + `String.fromCharCode` rather than regex literals so that
40
+ * this source file never contains the raw characters — a literal one here would
41
+ * be a line terminator to some parsers reading this very file.
42
+ *
43
+ * @constant {RegExp}
44
+ * @private
45
+ */
46
+ var RE_LINE_SEPARATOR = new RegExp(String.fromCharCode(0x2028), 'g');
47
+ /** @constant {RegExp} @private */
48
+ var RE_PARAGRAPH_SEPARATOR = new RegExp(String.fromCharCode(0x2029), 'g');
49
+ /** @constant {RegExp} @private */
50
+ var RE_LT = /</g;
51
+
52
+ /**
53
+ * Escape an already-serialised JS/JSON string literal so it is safe to emit inside
54
+ * an inline `<script>` block. Operates on TEXT, not on a value — use
55
+ * {@link safeInlineJson} unless you have already stringified.
56
+ *
57
+ * @param {string} text - serialised JS source text (typically `JSON.stringify` output)
58
+ * @returns {string} the same text with `<` and the JS line separators escaped
59
+ *
60
+ * @example
61
+ * escapeForInlineScript('{"a":"x</script >y"}');
62
+ * // => '{"a":"x\\u003c/script >y"}'
63
+ */
64
+ function escapeForInlineScript(text) {
65
+ return String(text)
66
+ .replace(RE_LT, '\\u003c')
67
+ .replace(RE_LINE_SEPARATOR, '\\u2028')
68
+ .replace(RE_PARAGRAPH_SEPARATOR, '\\u2029');
69
+ }
70
+
71
+ /**
72
+ * Serialise a value to JSON that is safe to embed in an inline `<script>`.
73
+ * This is the function every emission site should use.
74
+ *
75
+ * @param {*} value - any JSON-serialisable value
76
+ * @returns {string} JSON text that cannot break out of a script block
77
+ *
78
+ * @example
79
+ * var payload = { client: { fullname: 'Zed</script ><img src=y onerror=1>' } };
80
+ * '<script>window.__ginaData = ' + safeInlineJson(payload) + ';</script>';
81
+ * // the injected markup is inert, and JSON.parse returns the original string
82
+ */
83
+ function safeInlineJson(value) {
84
+ return escapeForInlineScript(JSON.stringify(value));
85
+ }
86
+
87
+ /**
88
+ * Serialise a single string as a safe JS string LITERAL (quotes included) for
89
+ * interpolation into inline script source.
90
+ *
91
+ * Use this instead of hand-writing `'"' + str + '"'`: that form breaks on an
92
+ * embedded quote or backslash regardless of any script-terminator concern.
93
+ *
94
+ * @param {string} str - the string to embed
95
+ * @returns {string} a quoted, escaped JS string literal
96
+ *
97
+ * @example
98
+ * 'var _b=' + safeInlineString(bundleName) + ';'
99
+ */
100
+ function safeInlineString(str) {
101
+ return escapeForInlineScript(JSON.stringify(String(str == null ? '' : str)));
102
+ }
103
+
104
+ module.exports = {
105
+ escapeForInlineScript : escapeForInlineScript,
106
+ safeInlineJson : safeInlineJson,
107
+ safeInlineString : safeInlineString
108
+ };
@@ -1049,6 +1049,19 @@ function ServerEngineClass(options) {
1049
1049
  if (!options.hidePoweredBy) {
1050
1050
  headers['X-Powered-By'] = 'Gina/' + GINA_VERSION;
1051
1051
  }
1052
+ // #OW1 — engine-agnostic security headers (OWASP A02), applied at the
1053
+ // SAME writeHead sites this helper already backs. writeHead commits
1054
+ // headers directly, bypassing setHeader, so the core/server.js twin
1055
+ // cannot reach them — this is the isaac half of ONE shared emitter
1056
+ // (lib/security-headers-emitter), not a drifting copy.
1057
+ // Every call site of this helper is a /_gina/* endpoint (measured
1058
+ // 29/29), and those are deliberately cross-origin — the metrics /
1059
+ // health / SSE handlers emit `access-control-allow-origin: *` and the
1060
+ // Inspector's cross-origin GET/SSE channels are a documented design —
1061
+ // so the cross-origin-isolating headers (coop/corp) are exempted here
1062
+ // unconditionally. Signature deliberately unchanged: no call site
1063
+ // needs editing.
1064
+ headers = lib.securityHeadersEmitter.applyToGinaEndpointHeaders(options.securityHeaders, headers);
1052
1065
  return headers;
1053
1066
  };
1054
1067
 
@@ -119,6 +119,49 @@ var _mintErrorRef = function(supplied) {
119
119
  // the logger's own failure modes — which also means it bypasses log redaction
120
120
  // (#B433): keep messages free of URLs and credentials. Format changes must
121
121
  // preserve `] [debug ][gina:` — test/core/debug-log.test.js pins the contract.
122
+ /**
123
+ * #OW2 — parse a byte-size setting (`"64MB"`, `"512KB"`, `"2048B"`) into bytes.
124
+ *
125
+ * Deliberately SEPARATE from the multipart `parseSize` helper inside the upload
126
+ * branch, which this arc does not touch: that helper sits on the upload path and
127
+ * carries its own source pins, and refactoring a working path as a side-effect of
128
+ * adding a body cap is the "while I'm here" shape that produced the #B446
129
+ * follow-up regression. The two agree by construction on every unit and are pinned
130
+ * against each other in `test/core/body-size-cap.test.js` so they cannot drift;
131
+ * unifying them belongs to a future upload/merge arc (#B457).
132
+ *
133
+ * Bare numbers are MB for back-compat with the multipart convention.
134
+ *
135
+ * @param {string|number} value - e.g. `"64MB"`, `"512KB"`, `2` (= 2MB)
136
+ * @returns {number} bytes, or NaN when unparseable
137
+ * @private
138
+ * @example
139
+ * parseByteSize('64MB'); // 67108864
140
+ * parseByteSize('512KB'); // 524288
141
+ * parseByteSize(2); // 2097152
142
+ */
143
+ var parseByteSize = function(value) {
144
+ if ( typeof(value) == 'number' ) { return value * 1024 * 1024; } // bare number = MB
145
+ if ( typeof(value) != 'string' ) { return NaN; }
146
+ var m = value.trim().match(/^([0-9]*\.?[0-9]+)\s*(b|kb|k|mb|m|gb|g)?$/i);
147
+ if ( !m ) { return NaN; }
148
+ var n = parseFloat(m[1]);
149
+ switch ( (m[2] || 'mb').toLowerCase() ) {
150
+ case 'b':
151
+ return n;
152
+ case 'k':
153
+ case 'kb':
154
+ return n * 1024;
155
+ case 'g':
156
+ case 'gb':
157
+ return n * 1024 * 1024 * 1024;
158
+ case 'm':
159
+ case 'mb':
160
+ default:
161
+ return n * 1024 * 1024;
162
+ }
163
+ };
164
+
122
165
  var _isDebugLog = function() {
123
166
  return process.env.LOG_LEVEL === 'debug' || process.env.LOG_LEVEL === 'trace';
124
167
  };
@@ -4380,6 +4423,23 @@ function Server(options) {
4380
4423
  response.setHeader('X-Powered-By', 'Gina/'+ GINA_VERSION );
4381
4424
  }
4382
4425
 
4426
+ // #OW1 — engine-agnostic security headers (OWASP A02). Placed beside
4427
+ // the hidePoweredBy gate because it needs the SAME coverage: routed
4428
+ // responses, static-asset serves, static/traversal 404s and framework
4429
+ // error pages, none of which traverse the express middleware chain —
4430
+ // and on the default isaac engine NOTHING traverses it (measured: the
4431
+ // only consumer of server._expressMiddlewares is the WS session
4432
+ // binder, name-filtered, against an inert response). The isaac
4433
+ // writeHead sites are covered by the twin call inside
4434
+ // _setPoweredByHeader(). First-writer-wins inside the emitter, so an
4435
+ // explicitly mounted #HDR plugin or an env.json
4436
+ // `server.response.header` entry always wins.
4437
+ lib.securityHeadersEmitter.applyToResponse(
4438
+ self.conf[self.appName][self.env].server.securityHeaders,
4439
+ request,
4440
+ response
4441
+ );
4442
+
4383
4443
  // MS1 — echo the always-on correlation id on every response so a
4384
4444
  // caller / LB / APM can read it back (the read-side of X-Request-Id
4385
4445
  // propagation). Ungated (independent of log format) and guarded
@@ -6246,7 +6306,58 @@ function Server(options) {
6246
6306
  } else {
6247
6307
 
6248
6308
 
6309
+ // #OW2 — bound the non-multipart body accumulation (OWASP A10).
6310
+ // The accumulator below is the ONLY unbounded growth on the request
6311
+ // path: multipart is capped by busboy + maxFieldsSize, but a plain
6312
+ // JSON/urlencoded body grew until the process died. Counting the RAW
6313
+ // chunk bytes (not the decoded string length) is what a cap has to
6314
+ // measure — a multi-byte UTF-8 body is larger on the wire than its
6315
+ // string length suggests.
6316
+ //
6317
+ // Two thresholds, deliberately:
6318
+ // - `server.maxBodySize` ENFORCES (413 + destroy). Defaults to a
6319
+ // permissive 64MB: the ceiling exists to stop unbounded growth,
6320
+ // not to police payload shapes, and the framework's OWN
6321
+ // inter-bundle `self.query()` hop posts through this same pipeline
6322
+ // with no size contract — a tight enforced default would break
6323
+ // gina with gina, in a shape that reads as a consumer bug.
6324
+ // - `server.maxBodySizeWarn` only WARNS (default 2MB), so every
6325
+ // consumer measures their real distribution from their own logs
6326
+ // before a stricter ceiling is ever considered. Precedent: the
6327
+ // #B238 warn-not-flip disclosure gate.
6328
+ // `0` / unset / unparseable disables either threshold (the
6329
+ // maxFieldsSize convention — an invalid cap must not reject
6330
+ // everything).
6331
+ var _bodySrv = ( self.conf[self.appName][self.env].server || {} );
6332
+ var _maxBody = parseByteSize(_bodySrv.maxBodySize);
6333
+ var _maxBodyWarn = parseByteSize(_bodySrv.maxBodySizeWarn);
6334
+ var _bodyBytes = 0;
6335
+ var _bodyWarned = false;
6336
+ var _bodyRejected = false;
6337
+
6249
6338
  request.on('data', function(chunk){ // for this to work, don't forget the name attr for you form elements
6339
+ if ( _bodyRejected ) { return }
6340
+
6341
+ _bodyBytes += chunk.length;
6342
+
6343
+ if ( _maxBodyWarn > 0 && !_bodyWarned && _bodyBytes > _maxBodyWarn ) {
6344
+ _bodyWarned = true;
6345
+ // No URL, no body content — #B433 keeps log lines free of
6346
+ // request data; the method + byte count is the actionable part.
6347
+ console.warn('[ SERVER ] Request body exceeded server.maxBodySizeWarn ('
6348
+ + _bodySrv.maxBodySizeWarn + ') — '+ request.method +' body is over '
6349
+ + _maxBodyWarn +' bytes and still accumulating. Not rejected.');
6350
+ }
6351
+
6352
+ if ( _maxBody > 0 && _bodyBytes > _maxBody ) {
6353
+ _bodyRejected = true;
6354
+ request.body = '';
6355
+ throwError(response, 413, 'Request body exceeded maximum size [ '+ _bodySrv.maxBodySize +' ]', next);
6356
+ // Stop the peer streaming into a request nobody will read.
6357
+ try { request.destroy() } catch (destroyErr) {}
6358
+ return
6359
+ }
6360
+
6250
6361
  if ( typeof(request.body) == 'object') {
6251
6362
  request.body = '';
6252
6363
  }
@@ -6254,6 +6365,13 @@ function Server(options) {
6254
6365
  });
6255
6366
 
6256
6367
  request.on('end', function onEnd() {
6368
+ // #OW2 — a rejected body already answered 413 and destroyed the
6369
+ // stream; dispatching here would double-respond (and parse a body
6370
+ // we deliberately discarded). `destroy()` normally prevents 'end'
6371
+ // from firing at all, but that is a race against already-buffered
6372
+ // chunks, not a guarantee — the flag is the guarantee.
6373
+ if ( _bodyRejected ) { return }
6374
+
6257
6375
  // Preserve the exact unparsed body BEFORE processRequestData mutates
6258
6376
  // request.body into the parsed object. Inbound webhooks that
6259
6377
  // authenticate via an HMAC computed over the raw request bytes need
@@ -6277,7 +6395,17 @@ function Server(options) {
6277
6395
 
6278
6396
 
6279
6397
  // Timeout in milliseconds - e.g.: (1000x60)x2 => 2 min
6280
- self.instance.timeout = 0; // zero for unlimited
6398
+ // #OW2 — configurable via `settings.json > server.timeout`; DEFAULT 0
6399
+ // (unlimited) is deliberate and must stay the default: gina serves SSE
6400
+ // (`text/event-stream`) and WebSockets, and a finite whole-request clock
6401
+ // kills both. The slow-body case a finite value would cover is already
6402
+ // closed by `server.maxBodySize` (the accumulator hits its ceiling
6403
+ // regardless of drip rate); connection-level bounds come from
6404
+ // keepAliveTimeout / headersTimeout and node's own defaults.
6405
+ // An unparseable value falls back to 0 rather than to something arbitrary.
6406
+ var _srvTimeoutCfg = self.conf[self.appName][self.env].server.timeout;
6407
+ var _srvTimeout = ( typeof(_srvTimeoutCfg) == 'undefined' ) ? 0 : parseTimeout(_srvTimeoutCfg);
6408
+ self.instance.timeout = ( typeof(_srvTimeout) == 'number' && _srvTimeout >= 0 ) ? _srvTimeout : 0;
6281
6409
  // Port by default would be 3100
6282
6410
  // '::' as the binding address (ipv4 & ipv6)
6283
6411
  // To check: netstat -tuln
@@ -17,6 +17,9 @@
17
17
  }
18
18
  ],
19
19
  "javascriptsDeferEnabled": true,
20
+ // opt-in Subresource Integrity: adds integrity= + crossorigin= to same-origin
21
+ // <script>/<link> tags whose files resolve on disk (fail-open otherwise)
22
+ //"sriEnabled": true,
20
23
  "javascripts": [
21
24
  // "/js/vendor/jquery/jquery-3.1.0.min.js",
22
25
  // "/js/vendor/modernizr-2.8.3.min.js",
@@ -1,6 +1,34 @@
1
1
  {
2
2
  "server": {
3
3
  "engine": "isaac",
4
+ // #OW2 (OWASP A10) — bound the NON-MULTIPART request body. Multipart uploads
5
+ // are capped separately by busboy + `upload.maxFieldsSize`; a plain JSON or
6
+ // urlencoded body previously accumulated with no ceiling at all, so a single
7
+ // large request was an unbounded-memory exposure.
8
+ //
9
+ // `maxBodySize` ENFORCES: a body exceeding it is answered 413 and the stream
10
+ // is destroyed. The 64MB default is deliberately permissive — the ceiling
11
+ // exists to stop unbounded growth, not to police payload shapes, and gina's
12
+ // OWN inter-bundle `self.query()` hop posts through this same pipeline with
13
+ // no size contract, so a tight enforced default would break gina with gina.
14
+ //
15
+ // `maxBodySizeWarn` only LOGS (no rejection), so you can measure your real
16
+ // body-size distribution from your own logs before choosing a stricter
17
+ // ceiling. Accepts B/KB/MB/GB (case-insensitive); a BARE NUMBER means MB.
18
+ // `0` (or an unparseable value) disables that threshold — an invalid cap
19
+ // must never reject everything.
20
+ "maxBodySize": "64MB",
21
+ "maxBodySizeWarn": "2MB",
22
+ // #OW2 — whole-request socket timeout, in ms or with a unit suffix ("5m").
23
+ // DEFAULT 0 = unlimited, and that default is deliberate, not an oversight:
24
+ // gina serves Server-Sent Events (`text/event-stream`) and WebSockets, both
25
+ // of which are long-lived by design and would be killed by a finite
26
+ // whole-request clock. The slow-body attack this would otherwise mitigate is
27
+ // already closed by `maxBodySize` above (the accumulator hits its ceiling
28
+ // regardless of how slowly the peer drips), and connection-level bounds come
29
+ // from `keepAliveTimeout` / `headersTimeout` below plus node's own defaults.
30
+ // Set a finite value only if you serve no streaming endpoints.
31
+ "timeout": 0,
4
32
  // #HDR8 Phase 2 — framework-wide X-Powered-By suppression, BOTH engines. When
5
33
  // `true`, the framework skips its X-Powered-By emission everywhere it
6
34
  // originates: the engine-agnostic per-request `setHeader` in
@@ -12,8 +40,41 @@
12
40
  // writeHead emit site (plus the routing.json asset `setHeader` site).
13
41
  // gina.plugins.HidePoweredBy() remains available as a middleware-shaped
14
42
  // remover for routed responses.
15
- // Default `false` preserves shipped behaviour; opt-in by setting to `true`.
16
- "hidePoweredBy": false,
43
+ // #OW1 (OWASP A02) — DEFAULT FLIPPED TO `true` in 0.6.23. The framework no
44
+ // longer discloses its name and exact version on every response by default;
45
+ // a version banner is free reconnaissance and buys the operator nothing.
46
+ // Set `false` to restore the pre-0.6.23 emission.
47
+ // NOTE: with the render/output cache enabled and `server.cache.name` unset,
48
+ // `true` raises the documented #B238 boot warn — the cache still names the
49
+ // framework on the wire via `Cache-Status`; set any token to close that too.
50
+ "hidePoweredBy": true,
51
+ // #OW1 (OWASP A02) — framework-level, ENGINE-AGNOSTIC security headers, new
52
+ // in 0.6.23. This is deliberately NOT the top-level `securityHeaders` block
53
+ // below: that one configures the #HDR1-14 PLUGINS when a bundle mounts them.
54
+ // This one is emitted by the framework itself, because the plugins are
55
+ // express middleware and the DEFAULT `isaac` engine never runs the express
56
+ // chain for HTTP responses — a mounted orchestrator emits nothing there.
57
+ //
58
+ // Precedence is FIRST-WRITER-WINS: any header already set by a mounted
59
+ // plugin, by `env.json > server.response.header`, or by an upstream proxy is
60
+ // left untouched. Set `"enabled": false` to restore pre-0.6.23 behaviour.
61
+ //
62
+ // ON by default (cannot break a working application):
63
+ // x-content-type-options: nosniff · x-download-options: noopen
64
+ // x-permitted-cross-domain-policies: none · x-xss-protection: 0
65
+ // referrer-policy: strict-origin-when-cross-origin
66
+ // x-dns-prefetch-control: off · origin-agent-cluster: ?1
67
+ //
68
+ // OPT-IN (each breaks a legitimate deployment shape — set to `true`):
69
+ // "xFrameOptions" — SAMEORIGIN; breaks embedding your app cross-origin.
70
+ // "coop" — severs `window.opener`; breaks OAuth/payment popups.
71
+ // "corp" — blocks cross-origin loading of your assets.
72
+ // "hsts" — 180-day https commitment; emitted over http too.
73
+ // `coop`/`corp` are never applied to `/_gina/*`, which is deliberately
74
+ // cross-origin (metrics/health/SSE emit `access-control-allow-origin: *`).
75
+ "securityHeaders": {
76
+ "enabled": true
77
+ },
17
78
  // #H11 — opt-in Alt-Svc HTTP/3-advertisement header. When `true`, every
18
79
  // routed (user-facing) response carries `Alt-Svc: h3=":443"; ma=86400`,
19
80
  // advertising HTTP/3 (QUIC) availability so QUIC-capable clients upgrade
@@ -26,6 +26,7 @@
26
26
  }
27
27
  ],
28
28
  "javascriptsDeferEnabled": true, // will place scripts in defer mode in the head by default. If false, will place in the footer
29
+ "sriEnabled": false, // opt-in Subresource Integrity: adds integrity= + crossorigin= to same-origin <script>/<link> tags whose files resolve on disk; external URLs and unresolvable paths are skipped (fail-open)
29
30
  "javascripts": [
30
31
  {
31
32
  "name" : "gina",
@@ -146,6 +146,23 @@ function Lib() {
146
146
  // security-bearing, which keeps it out of the hot-reload path entirely
147
147
  // (the lib/authn precedent).
148
148
  maintenance : require('./maintenance'),
149
+ // #OW1 — engine-agnostic security-header emission (OWASP A02). The
150
+ // #HDR1-14 plugins are express middleware, and the DEFAULT engine
151
+ // (isaac) never runs the express chain for HTTP responses, so a mounted
152
+ // orchestrator emits nothing there; this is the framework-side twin, in
153
+ // the same shape as the #HDR8 hidePoweredBy gate.
154
+ // PLAIN require (NOT _require) for the same reason as admin/maintenance
155
+ // above: a stateless pure-function leaf with no state to hot-reload, and
156
+ // security-bearing, which keeps it out of the hot-reload path entirely.
157
+ securityHeadersEmitter : require('./security-headers-emitter'),
158
+ // #OW3 — Subresource Integrity attribute computation (OWASP A08),
159
+ // consumed by the controller's resource builder when a bundle opts in
160
+ // via templates.json `"sriEnabled": true`. PLAIN require (NOT _require):
161
+ // security-bearing like the emitter/authn precedent above, and it holds
162
+ // a module-scope stat-validated hash cache that a per-request re-require
163
+ // would pointlessly discard (the cache can never go stale — every
164
+ // lookup re-stats the file — so surviving reloads costs nothing).
165
+ sri : require('./sri'),
149
166
  // #AI6 — Async-job primitive. Holds an in-memory job registry, a
150
167
  // concurrency-limited worker, and a self-contained unref'd setInterval
151
168
  // sweep timer at module scope. Like State / logger below, it MUST use a