gina 0.6.2 → 0.6.3

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 (570) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +41 -12
  3. package/ROADMAP.md +3 -2
  4. package/bin/cli +19 -2
  5. package/framework/v0.6.3/VERSION +1 -0
  6. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +6 -0
  7. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  8. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  9. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/index.html +1 -0
  10. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +50 -1
  11. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +457 -57
  12. package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.js +1457 -58
  13. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js +625 -0
  14. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  15. package/framework/v0.6.3/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  16. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/index.js +114 -0
  17. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/connector.js +14 -3
  18. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/session-store.js +14 -3
  19. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/session-store.v3.js +29 -2
  20. package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/session-store.v4.js +29 -2
  21. package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/session-store.js +24 -2
  22. package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/session-store.js +33 -9
  23. package/framework/{v0.6.2 → v0.6.3}/core/connectors/scylladb/lib/session-store.js +25 -2
  24. package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/lib/session-store.js +26 -2
  25. package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.js +201 -21
  26. package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-nunjucks.js +8 -0
  27. package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-swig.js +85 -4
  28. package/framework/{v0.6.2 → v0.6.3}/core/gna.js +23 -1
  29. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/csrf/src/main.js +9 -5
  30. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hide-powered-by/README.md +20 -0
  31. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/src/form-validator.js +119 -43
  32. package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/src/main.js +451 -9
  33. package/framework/{v0.6.2 → v0.6.3}/core/server.isaac.js +50 -54
  34. package/framework/{v0.6.2 → v0.6.3}/core/server.js +240 -3
  35. package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/index.js +6 -4
  36. package/framework/{v0.6.2 → v0.6.3}/core/template/conf/settings.json +10 -0
  37. package/framework/{v0.6.2 → v0.6.3}/lib/cache/README.md +9 -1
  38. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/audit/verify.js +11 -9
  39. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/mcp-start.js +21 -12
  40. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/help.txt +1 -1
  41. package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/init.js +13 -1
  42. package/framework/{v0.6.2 → v0.6.3}/lib/dto/src/main.js +18 -11
  43. package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/file/index.js +29 -1
  44. package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/mq/speaker.js +30 -1
  45. package/framework/{v0.6.2 → v0.6.3}/lib/math/index.js +57 -6
  46. package/framework/{v0.6.2 → v0.6.3}/lib/merge/src/main.js +34 -5
  47. package/framework/{v0.6.2 → v0.6.3}/lib/render-cache/src/main.js +77 -4
  48. package/framework/{v0.6.2 → v0.6.3}/lib/routing/src/main.js +13 -1
  49. package/framework/{v0.6.2 → v0.6.3}/lib/routing-introspect/src/main.js +64 -2
  50. package/framework/v0.6.3/lib/secrets/src/backends/env.js +75 -0
  51. package/framework/{v0.6.2 → v0.6.3}/package.json +1 -1
  52. package/gna.js +5 -4
  53. package/llms.txt +19 -17
  54. package/package.json +5 -4
  55. package/schema/connectors.json +2 -2
  56. package/schema/routing.json +5 -0
  57. package/schema/settings.json +6 -1
  58. package/script/generate_gna_types.js +1 -1
  59. package/script/soak/couchbase-soak.js +1316 -0
  60. package/types/globals.d.ts +2 -0
  61. package/types/gna.d.ts +5 -0
  62. package/types/index.d.ts +1 -0
  63. package/utils/helper.js +38 -7
  64. package/framework/v0.6.2/VERSION +0 -1
  65. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  66. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  67. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -603
  68. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  69. package/framework/v0.6.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  70. package/framework/v0.6.2/lib/secrets/src/backends/env.js +0 -60
  71. /package/framework/{v0.6.2 → v0.6.3}/AUTHORS +0 -0
  72. /package/framework/{v0.6.2 → v0.6.3}/LICENSE +0 -0
  73. /package/framework/{v0.6.2 → v0.6.3}/core/asset/html/nolayout.html +0 -0
  74. /package/framework/{v0.6.2 → v0.6.3}/core/asset/html/static.html +0 -0
  75. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/android-chrome-192x192.png +0 -0
  76. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/android-chrome-512x512.png +0 -0
  77. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/apple-touch-icon.png +0 -0
  78. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/favicon-16x16.png +0 -0
  79. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/favicon-32x32.png +0 -0
  80. /package/framework/{v0.6.2 → v0.6.3}/core/asset/img/favicon.ico +0 -0
  81. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/README.md +0 -0
  82. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  83. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  84. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  85. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  86. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  87. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  88. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  89. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  90. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  91. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  92. /package/framework/{v0.6.2 → v0.6.3}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  93. /package/framework/{v0.6.2 → v0.6.3}/core/config.js +0 -0
  94. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/ai/index.js +0 -0
  95. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/ai/lib/connector.js +0 -0
  96. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  97. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  98. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/couchbase/lib/n1ql.js +0 -0
  99. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/duckdb/index.js +0 -0
  100. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/duckdb/lib/connector.js +0 -0
  101. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/index.js +0 -0
  102. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/connector.js +0 -0
  103. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/job-store.js +0 -0
  104. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  105. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mysql/index.js +0 -0
  106. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/mysql/lib/connector.js +0 -0
  107. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/postgresql/index.js +0 -0
  108. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/postgresql/lib/connector.js +0 -0
  109. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/index.js +0 -0
  110. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/connector.js +0 -0
  111. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/job-store.js +0 -0
  112. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/redis/lib/render-cache-store.js +0 -0
  113. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/scylladb/index.js +0 -0
  114. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/scylladb/lib/connector.js +0 -0
  115. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sql-parser.js +0 -0
  116. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/index.js +0 -0
  117. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/lib/connector.js +0 -0
  118. /package/framework/{v0.6.2 → v0.6.3}/core/connectors/sqlite/lib/job-store.js +0 -0
  119. /package/framework/{v0.6.2 → v0.6.3}/core/content.encoding +0 -0
  120. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.framework.js +0 -0
  121. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-json.js +0 -0
  122. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-nunjucks-async.js +0 -0
  123. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-stream.js +0 -0
  124. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-swig-async.js +0 -0
  125. /package/framework/{v0.6.2 → v0.6.3}/core/controller/controller.render-v1.js +0 -0
  126. /package/framework/{v0.6.2 → v0.6.3}/core/controller/index.js +0 -0
  127. /package/framework/{v0.6.2 → v0.6.3}/core/controller/inspector-window-emit.js +0 -0
  128. /package/framework/{v0.6.2 → v0.6.3}/core/controller/release-banner.js +0 -0
  129. /package/framework/{v0.6.2 → v0.6.3}/core/dev/index.js +0 -0
  130. /package/framework/{v0.6.2 → v0.6.3}/core/dev/lib/class.js +0 -0
  131. /package/framework/{v0.6.2 → v0.6.3}/core/dev/lib/factory.js +0 -0
  132. /package/framework/{v0.6.2 → v0.6.3}/core/dev/lib/tools.js +0 -0
  133. /package/framework/{v0.6.2 → v0.6.3}/core/locales/README.md +0 -0
  134. /package/framework/{v0.6.2 → v0.6.3}/core/locales/currency.json +0 -0
  135. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/language/en.json +0 -0
  136. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/language/fr.json +0 -0
  137. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/region/en.json +0 -0
  138. /package/framework/{v0.6.2 → v0.6.3}/core/locales/dist/region/fr.json +0 -0
  139. /package/framework/{v0.6.2 → v0.6.3}/core/locales/index.js +0 -0
  140. /package/framework/{v0.6.2 → v0.6.3}/core/mime.types +0 -0
  141. /package/framework/{v0.6.2 → v0.6.3}/core/model/entity.js +0 -0
  142. /package/framework/{v0.6.2 → v0.6.3}/core/model/index.js +0 -0
  143. /package/framework/{v0.6.2 → v0.6.3}/core/model/template/entityFactory.js +0 -0
  144. /package/framework/{v0.6.2 → v0.6.3}/core/model/template/index.js +0 -0
  145. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/README.md +0 -0
  146. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/index.js +0 -0
  147. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/csrf/README.md +0 -0
  148. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/csrf/package.json +0 -0
  149. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/README.md +0 -0
  150. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coep/README.md +0 -0
  151. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coep/package.json +0 -0
  152. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  153. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coop/README.md +0 -0
  154. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coop/package.json +0 -0
  155. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  156. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/corp/README.md +0 -0
  157. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/corp/package.json +0 -0
  158. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  159. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/csp/README.md +0 -0
  160. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/csp/package.json +0 -0
  161. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  162. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  163. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  164. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  165. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  166. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  167. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  168. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  169. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  170. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/package.json +0 -0
  171. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  172. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  173. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  174. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/src/main.js +0 -0
  175. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  176. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  177. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  178. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  179. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  180. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  181. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  182. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  183. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  184. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  185. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  186. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  187. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  188. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  189. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  190. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  191. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  192. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  193. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/session/README.md +0 -0
  194. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/session/package.json +0 -0
  195. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/session/src/main.js +0 -0
  196. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/README.md +0 -0
  197. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/build.json +0 -0
  198. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/package.json +0 -0
  199. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/storage/src/main.js +0 -0
  200. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/README.md +0 -0
  201. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/build.json +0 -0
  202. /package/framework/{v0.6.2 → v0.6.3}/core/plugins/lib/validator/package.json +0 -0
  203. /package/framework/{v0.6.2 → v0.6.3}/core/router.js +0 -0
  204. /package/framework/{v0.6.2 → v0.6.3}/core/server.express.js +0 -0
  205. /package/framework/{v0.6.2 → v0.6.3}/core/status.codes +0 -0
  206. /package/framework/{v0.6.2 → v0.6.3}/core/template/_gitignore +0 -0
  207. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/app.json +0 -0
  208. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  209. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/routing.json +0 -0
  210. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/settings.json +0 -0
  211. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  212. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/templates.json +0 -0
  213. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  214. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  215. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  216. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  217. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle/locales/en.json +0 -0
  218. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  219. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  220. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  221. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  222. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  223. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  224. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  225. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  226. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/readme.md +0 -0
  227. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_public/sw.js +0 -0
  228. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  229. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  230. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  231. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  232. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  233. /package/framework/{v0.6.2 → v0.6.3}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  234. /package/framework/{v0.6.2 → v0.6.3}/core/template/command/gina.bat.tpl +0 -0
  235. /package/framework/{v0.6.2 → v0.6.3}/core/template/command/gina.tpl +0 -0
  236. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/env.json +0 -0
  237. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/manifest.json +0 -0
  238. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/package.json +0 -0
  239. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/statics.json +0 -0
  240. /package/framework/{v0.6.2 → v0.6.3}/core/template/conf/templates.json +0 -0
  241. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/client/json/401.json +0 -0
  242. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/client/json/403.json +0 -0
  243. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/client/json/404.json +0 -0
  244. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/server/html/50x.html +0 -0
  245. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/server/json/500.json +0 -0
  246. /package/framework/{v0.6.2 → v0.6.3}/core/template/error/server/json/503.json +0 -0
  247. /package/framework/{v0.6.2 → v0.6.3}/core/template/extensions/logger/config.json +0 -0
  248. /package/framework/{v0.6.2 → v0.6.3}/helpers/console.js +0 -0
  249. /package/framework/{v0.6.2 → v0.6.3}/helpers/context.js +0 -0
  250. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/LICENSE +0 -0
  251. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/README.md +0 -0
  252. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/package.json +0 -0
  253. /package/framework/{v0.6.2 → v0.6.3}/helpers/data/src/main.js +0 -0
  254. /package/framework/{v0.6.2 → v0.6.3}/helpers/dateFormat.js +0 -0
  255. /package/framework/{v0.6.2 → v0.6.3}/helpers/index.js +0 -0
  256. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/LICENSE +0 -0
  257. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/README.md +0 -0
  258. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/package.json +0 -0
  259. /package/framework/{v0.6.2 → v0.6.3}/helpers/json/src/main.js +0 -0
  260. /package/framework/{v0.6.2 → v0.6.3}/helpers/path.js +0 -0
  261. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/README.md +0 -0
  262. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/package.json +0 -0
  263. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/src/api-error.js +0 -0
  264. /package/framework/{v0.6.2 → v0.6.3}/helpers/plugins/src/main.js +0 -0
  265. /package/framework/{v0.6.2 → v0.6.3}/helpers/prototypes.js +0 -0
  266. /package/framework/{v0.6.2 → v0.6.3}/helpers/task.js +0 -0
  267. /package/framework/{v0.6.2 → v0.6.3}/helpers/text.js +0 -0
  268. /package/framework/{v0.6.2 → v0.6.3}/lib/admin/package.json +0 -0
  269. /package/framework/{v0.6.2 → v0.6.3}/lib/admin/src/main.js +0 -0
  270. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/README.md +0 -0
  271. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/build.json +0 -0
  272. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/package.json +0 -0
  273. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/src/dep/jszip.min.js +0 -0
  274. /package/framework/{v0.6.2 → v0.6.3}/lib/archiver/src/main.js +0 -0
  275. /package/framework/{v0.6.2 → v0.6.3}/lib/async/package.json +0 -0
  276. /package/framework/{v0.6.2 → v0.6.3}/lib/async/src/main.js +0 -0
  277. /package/framework/{v0.6.2 → v0.6.3}/lib/audit/package.json +0 -0
  278. /package/framework/{v0.6.2 → v0.6.3}/lib/audit/src/main.js +0 -0
  279. /package/framework/{v0.6.2 → v0.6.3}/lib/audit-store.js +0 -0
  280. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/package.json +0 -0
  281. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/src/lockout.js +0 -0
  282. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/src/main.js +0 -0
  283. /package/framework/{v0.6.2 → v0.6.3}/lib/authn/src/totp.js +0 -0
  284. /package/framework/{v0.6.2 → v0.6.3}/lib/authz-gate/package.json +0 -0
  285. /package/framework/{v0.6.2 → v0.6.3}/lib/authz-gate/src/main.js +0 -0
  286. /package/framework/{v0.6.2 → v0.6.3}/lib/cache/build.json +0 -0
  287. /package/framework/{v0.6.2 → v0.6.3}/lib/cache/package.json +0 -0
  288. /package/framework/{v0.6.2 → v0.6.3}/lib/cache/src/main.js +0 -0
  289. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/aliases.json +0 -0
  290. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/audit/arguments.json +0 -0
  291. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/audit/help.txt +0 -0
  292. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/add.js +0 -0
  293. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/arguments.json +0 -0
  294. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/build.js +0 -0
  295. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/copy.js +0 -0
  296. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/cp.js +0 -0
  297. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/help.js +0 -0
  298. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/help.txt +0 -0
  299. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  300. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/list.js +0 -0
  301. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/man.js +0 -0
  302. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/mcp.js +0 -0
  303. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/oas.js +0 -0
  304. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/openapi.js +0 -0
  305. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/remove.js +0 -0
  306. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/rename.js +0 -0
  307. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/restart.js +0 -0
  308. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/rm.js +0 -0
  309. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/start.js +0 -0
  310. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/status.js +0 -0
  311. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/stop.js +0 -0
  312. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/bundle/types.js +0 -0
  313. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/arguments.json +0 -0
  314. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/clear.js +0 -0
  315. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/help.txt +0 -0
  316. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/cache/stats.js +0 -0
  317. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/add.js +0 -0
  318. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/arguments.json +0 -0
  319. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/help.js +0 -0
  320. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/infer.js +0 -0
  321. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/list.js +0 -0
  322. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/migrate.js +0 -0
  323. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/models.js +0 -0
  324. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/remove.js +0 -0
  325. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/rm.js +0 -0
  326. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/connector/test.js +0 -0
  327. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/arguments.json +0 -0
  328. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/help.js +0 -0
  329. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/help.txt +0 -0
  330. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/man.js +0 -0
  331. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/ps.js +0 -0
  332. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/container/stop.js +0 -0
  333. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/add.js +0 -0
  334. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/arguments.json +0 -0
  335. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/help.txt +0 -0
  336. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/args.js +0 -0
  337. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/namespace.js +0 -0
  338. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  339. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/reference-scan.js +0 -0
  340. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/inc/scaffold.js +0 -0
  341. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/remove.js +0 -0
  342. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/rename.js +0 -0
  343. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/controller/rm.js +0 -0
  344. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/add.js +0 -0
  345. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/get.js +0 -0
  346. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/help.js +0 -0
  347. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/help.txt +0 -0
  348. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/link-dev.js +0 -0
  349. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/list.js +0 -0
  350. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/remove.js +0 -0
  351. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/rm.js +0 -0
  352. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/set.js +0 -0
  353. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/unset.js +0 -0
  354. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/env/use.js +0 -0
  355. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/add.js +0 -0
  356. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/arguments.json +0 -0
  357. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/build.js +0 -0
  358. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/dot.js +0 -0
  359. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/get.js +0 -0
  360. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/help.js +0 -0
  361. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/help.txt +0 -0
  362. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/link-node-modules.js +0 -0
  363. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/link.js +0 -0
  364. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/list.js +0 -0
  365. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/man.js +0 -0
  366. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/msg.json +0 -0
  367. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/open.js +0 -0
  368. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/remove.js +0 -0
  369. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/reset.js +0 -0
  370. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/restart.js +0 -0
  371. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/set.js +0 -0
  372. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/start.js +0 -0
  373. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/status.js +0 -0
  374. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/stop.js +0 -0
  375. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/tail.js +0 -0
  376. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/update.js +0 -0
  377. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/framework/version.js +0 -0
  378. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/gina-dev.1.md +0 -0
  379. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/gina-framework.1.md +0 -0
  380. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/gina.1.md +0 -0
  381. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/helper.js +0 -0
  382. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/add.js +0 -0
  383. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/arguments.json +0 -0
  384. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/export.js +0 -0
  385. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/help.js +0 -0
  386. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/help.txt +0 -0
  387. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/import.js +0 -0
  388. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/i18n/scan.js +0 -0
  389. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/_host.js +0 -0
  390. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/arguments.json +0 -0
  391. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/build.js +0 -0
  392. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/help.js +0 -0
  393. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/help.txt +0 -0
  394. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/list.js +0 -0
  395. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/man.js +0 -0
  396. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/rm.js +0 -0
  397. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/image/run.js +0 -0
  398. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/index.js +0 -0
  399. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/inspector/help.js +0 -0
  400. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/inspector/help.txt +0 -0
  401. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/inspector/open.js +0 -0
  402. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/man-render.js +0 -0
  403. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/arguments.json +0 -0
  404. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/help.js +0 -0
  405. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/help.txt +0 -0
  406. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/kill.js +0 -0
  407. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/minion/list.js +0 -0
  408. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/msg.json +0 -0
  409. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/help.js +0 -0
  410. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/help.txt +0 -0
  411. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/inc/scan.js +0 -0
  412. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/list.js +0 -0
  413. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/reset.js +0 -0
  414. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/port/set.js +0 -0
  415. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/add.js +0 -0
  416. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/arguments.json +0 -0
  417. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/backup.js +0 -0
  418. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/build.js +0 -0
  419. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/help.js +0 -0
  420. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/help.txt +0 -0
  421. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/import.js +0 -0
  422. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/list.js +0 -0
  423. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/man.js +0 -0
  424. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/move.js +0 -0
  425. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/remove.js +0 -0
  426. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/rename.js +0 -0
  427. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/restart.js +0 -0
  428. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/restore.js +0 -0
  429. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/rm.js +0 -0
  430. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/start.js +0 -0
  431. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/status.js +0 -0
  432. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/project/stop.js +0 -0
  433. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/arguments.json +0 -0
  434. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/help.js +0 -0
  435. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/help.txt +0 -0
  436. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/list.js +0 -0
  437. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/remove.js +0 -0
  438. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/protocol/set.js +0 -0
  439. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/add.js +0 -0
  440. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/help.js +0 -0
  441. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/help.txt +0 -0
  442. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/link-local.js +0 -0
  443. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/link-production.js +0 -0
  444. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/list.js +0 -0
  445. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/remove.js +0 -0
  446. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/rm.js +0 -0
  447. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/scope/use.js +0 -0
  448. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/arguments.json +0 -0
  449. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/check.js +0 -0
  450. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/help.js +0 -0
  451. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/help.txt +0 -0
  452. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/secrets/scan.js +0 -0
  453. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/help.js +0 -0
  454. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/help.txt +0 -0
  455. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/list.js +0 -0
  456. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/man.js +0 -0
  457. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/service/start.js +0 -0
  458. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd/view/add.js +0 -0
  459. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd-status-format/package.json +0 -0
  460. /package/framework/{v0.6.2 → v0.6.3}/lib/cmd-status-format/src/main.js +0 -0
  461. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/README.md +0 -0
  462. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/build.json +0 -0
  463. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/package.json +0 -0
  464. /package/framework/{v0.6.2 → v0.6.3}/lib/collection/src/main.js +0 -0
  465. /package/framework/{v0.6.2 → v0.6.3}/lib/config.js +0 -0
  466. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-config/package.json +0 -0
  467. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-config/src/main.js +0 -0
  468. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-error/package.json +0 -0
  469. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-error/src/main.js +0 -0
  470. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-registry/package.json +0 -0
  471. /package/framework/{v0.6.2 → v0.6.3}/lib/connector-registry/src/main.js +0 -0
  472. /package/framework/{v0.6.2 → v0.6.3}/lib/cron/README.md +0 -0
  473. /package/framework/{v0.6.2 → v0.6.3}/lib/cron/package.json +0 -0
  474. /package/framework/{v0.6.2 → v0.6.3}/lib/cron/src/main.js +0 -0
  475. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/LICENSE +0 -0
  476. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/README.md +0 -0
  477. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/package.json +0 -0
  478. /package/framework/{v0.6.2 → v0.6.3}/lib/domain/src/main.js +0 -0
  479. /package/framework/{v0.6.2 → v0.6.3}/lib/dto/package.json +0 -0
  480. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-pipe/package.json +0 -0
  481. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-pipe/src/main.js +0 -0
  482. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-types/package.json +0 -0
  483. /package/framework/{v0.6.2 → v0.6.3}/lib/dto-types/src/main.js +0 -0
  484. /package/framework/{v0.6.2 → v0.6.3}/lib/generator/index.js +0 -0
  485. /package/framework/{v0.6.2 → v0.6.3}/lib/i18n/package.json +0 -0
  486. /package/framework/{v0.6.2 → v0.6.3}/lib/i18n/src/main.js +0 -0
  487. /package/framework/{v0.6.2 → v0.6.3}/lib/image-build/package.json +0 -0
  488. /package/framework/{v0.6.2 → v0.6.3}/lib/image-build/src/main.js +0 -0
  489. /package/framework/{v0.6.2 → v0.6.3}/lib/index.js +0 -0
  490. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/LICENSE +0 -0
  491. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/README.md +0 -0
  492. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/package.json +0 -0
  493. /package/framework/{v0.6.2 → v0.6.3}/lib/inherits/src/main.js +0 -0
  494. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-events/package.json +0 -0
  495. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-events/src/main.js +0 -0
  496. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-redact/package.json +0 -0
  497. /package/framework/{v0.6.2 → v0.6.3}/lib/inspector-redact/src/main.js +0 -0
  498. /package/framework/{v0.6.2 → v0.6.3}/lib/instrument/package.json +0 -0
  499. /package/framework/{v0.6.2 → v0.6.3}/lib/instrument/src/main.js +0 -0
  500. /package/framework/{v0.6.2 → v0.6.3}/lib/job/package.json +0 -0
  501. /package/framework/{v0.6.2 → v0.6.3}/lib/job/src/main.js +0 -0
  502. /package/framework/{v0.6.2 → v0.6.3}/lib/job-store.js +0 -0
  503. /package/framework/{v0.6.2 → v0.6.3}/lib/json-config-header/package.json +0 -0
  504. /package/framework/{v0.6.2 → v0.6.3}/lib/json-config-header/src/main.js +0 -0
  505. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/README.md +0 -0
  506. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/package.json +0 -0
  507. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/default/index.js +0 -0
  508. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  509. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  510. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/mq/index.js +0 -0
  511. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/containers/mq/listener.js +0 -0
  512. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/helper.js +0 -0
  513. /package/framework/{v0.6.2 → v0.6.3}/lib/logger/src/main.js +0 -0
  514. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-dispatch/package.json +0 -0
  515. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-dispatch/src/main.js +0 -0
  516. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-http/package.json +0 -0
  517. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-http/src/main.js +0 -0
  518. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-server/package.json +0 -0
  519. /package/framework/{v0.6.2 → v0.6.3}/lib/mcp-server/src/main.js +0 -0
  520. /package/framework/{v0.6.2 → v0.6.3}/lib/merge/README.md +0 -0
  521. /package/framework/{v0.6.2 → v0.6.3}/lib/merge/package.json +0 -0
  522. /package/framework/{v0.6.2 → v0.6.3}/lib/metrics/package.json +0 -0
  523. /package/framework/{v0.6.2 → v0.6.3}/lib/metrics/src/main.js +0 -0
  524. /package/framework/{v0.6.2 → v0.6.3}/lib/model.js +0 -0
  525. /package/framework/{v0.6.2 → v0.6.3}/lib/net-locality/package.json +0 -0
  526. /package/framework/{v0.6.2 → v0.6.3}/lib/net-locality/src/main.js +0 -0
  527. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-filters/README.md +0 -0
  528. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-filters/package.json +0 -0
  529. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-filters/src/main.js +0 -0
  530. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-resolver/package.json +0 -0
  531. /package/framework/{v0.6.2 → v0.6.3}/lib/nunjucks-resolver/src/main.js +0 -0
  532. /package/framework/{v0.6.2 → v0.6.3}/lib/proc.js +0 -0
  533. /package/framework/{v0.6.2 → v0.6.3}/lib/release-watch/package.json +0 -0
  534. /package/framework/{v0.6.2 → v0.6.3}/lib/release-watch/src/main.js +0 -0
  535. /package/framework/{v0.6.2 → v0.6.3}/lib/render-cache/package.json +0 -0
  536. /package/framework/{v0.6.2 → v0.6.3}/lib/render-cache-store.js +0 -0
  537. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/README.md +0 -0
  538. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/build.json +0 -0
  539. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/package.json +0 -0
  540. /package/framework/{v0.6.2 → v0.6.3}/lib/routing/src/radix.js +0 -0
  541. /package/framework/{v0.6.2 → v0.6.3}/lib/routing-introspect/package.json +0 -0
  542. /package/framework/{v0.6.2 → v0.6.3}/lib/secrets/package.json +0 -0
  543. /package/framework/{v0.6.2 → v0.6.3}/lib/secrets/src/main.js +0 -0
  544. /package/framework/{v0.6.2 → v0.6.3}/lib/session-store.js +0 -0
  545. /package/framework/{v0.6.2 → v0.6.3}/lib/shell.js +0 -0
  546. /package/framework/{v0.6.2 → v0.6.3}/lib/sqlite-driver.js +0 -0
  547. /package/framework/{v0.6.2 → v0.6.3}/lib/state.js +0 -0
  548. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-filters/README.md +0 -0
  549. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-filters/package.json +0 -0
  550. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-filters/src/main.js +0 -0
  551. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-resolver/package.json +0 -0
  552. /package/framework/{v0.6.2 → v0.6.3}/lib/swig-resolver/src/main.js +0 -0
  553. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/package.json +0 -0
  554. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/src/loaders/http.js +0 -0
  555. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/src/loaders/memory.js +0 -0
  556. /package/framework/{v0.6.2 → v0.6.3}/lib/template-loaders/src/main.js +0 -0
  557. /package/framework/{v0.6.2 → v0.6.3}/lib/url/README.md +0 -0
  558. /package/framework/{v0.6.2 → v0.6.3}/lib/url/index.js +0 -0
  559. /package/framework/{v0.6.2 → v0.6.3}/lib/url/routing.json +0 -0
  560. /package/framework/{v0.6.2 → v0.6.3}/lib/uuid/package.json +0 -0
  561. /package/framework/{v0.6.2 → v0.6.3}/lib/uuid/src/main.js +0 -0
  562. /package/framework/{v0.6.2 → v0.6.3}/lib/validator.js +0 -0
  563. /package/framework/{v0.6.2 → v0.6.3}/lib/watcher/package.json +0 -0
  564. /package/framework/{v0.6.2 → v0.6.3}/lib/watcher/src/main.js +0 -0
  565. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-framing/package.json +0 -0
  566. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-framing/src/main.js +0 -0
  567. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-query/package.json +0 -0
  568. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-query/src/main.js +0 -0
  569. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-session/package.json +0 -0
  570. /package/framework/{v0.6.2 → v0.6.3}/lib/ws-session/src/main.js +0 -0
@@ -1492,6 +1492,46 @@ function SuperController(options) {
1492
1492
  // delegate fetches the nunjucks module itself via
1493
1493
  // `lib.nunjucksResolver.get()`, so the `swig` / `SwigFilters` deps
1494
1494
  // passed below are harmless when unused.
1495
+ // #SPA1 — content negotiation, resolved BEFORE the delegate is chosen because
1496
+ // this is the one place all four HTML delegates converge and where `local.req`
1497
+ // (routing + gina headers) and `local.res` are both live. Two independent effects:
1498
+ //
1499
+ // (a) a NEGOTIABLE route ALWAYS advertises `Vary: X-Gina-Navigate` — a cache
1500
+ // must be told the response varies whether or not THIS request asked for a
1501
+ // fragment. Set via res.setHeader so it reaches both engines: every HTTP/2
1502
+ // send site folds res.getHeaders() into stream.respond(). `completeHeaders`
1503
+ // is NOT usable for this — it runs at server.js:6452, before the params
1504
+ // block builds req.routing, so the flag would not exist yet (measured).
1505
+ //
1506
+ // (b) `X-Gina-Navigate: fragment` reuses the PROVEN layoutless path by setting
1507
+ // isWithoutLayout, rather than adding a fifth delegate. A custom-error
1508
+ // render is unaffected by construction: those delegates read `errOptions`,
1509
+ // not `local.options`.
1510
+ //
1511
+ // Wrapped so an absent/undeclared flag leaves the default path byte-identical,
1512
+ // and so any unexpected value simply falls through to the full page.
1513
+ try {
1514
+ if ( local.req && local.req.routing && local.req.routing.negotiate === true ) {
1515
+ var _navRes = local.res;
1516
+ if ( _navRes && typeof(_navRes.setHeader) == 'function' && !_navRes.headersSent ) {
1517
+ var _existingVary = ( typeof(_navRes.getHeader) == 'function' ) ? _navRes.getHeader('vary') : null;
1518
+ if ( !_existingVary ) {
1519
+ _navRes.setHeader('vary', 'X-Gina-Navigate');
1520
+ } else if ( !/x-gina-navigate/i.test( String(_existingVary) ) ) {
1521
+ // Vary is a LIST header — append, never clobber a sibling value
1522
+ // (the CORS paths set `vary: Origin`).
1523
+ _navRes.setHeader('vary', String(_existingVary) + ', X-Gina-Navigate');
1524
+ }
1525
+ }
1526
+ if ( local.req.ginaHeaders && local.req.ginaHeaders.navigate === 'fragment' ) {
1527
+ local.options.isWithoutLayout = true;
1528
+ }
1529
+ }
1530
+ } catch (negotiationErr) {
1531
+ // Negotiation is an enhancement — it must never break a render.
1532
+ console.warn('[#SPA1] content negotiation skipped: '+ (negotiationErr.message || negotiationErr));
1533
+ }
1534
+
1495
1535
  var _engine = 'swig';
1496
1536
  try {
1497
1537
  var _settings = local.options
@@ -2864,35 +2904,75 @@ function SuperController(options) {
2864
2904
  /**
2865
2905
  * Move files to assets dir
2866
2906
  *
2867
- * @param {object} res
2868
- * @param {collection} files
2907
+ * #B223 — each move streams the source into a temp sibling
2908
+ * (`<target>.<pid>.<rand>.tmp`) inside the destination directory, then
2909
+ * publishes it with an atomic `rename(2)`: a reader never observes a
2910
+ * partial file under the final name, and a pre-existing destination is
2911
+ * replaced atomically instead of being deleted up front. Failures settle
2912
+ * the callback ONCE with the real filesystem `Error` — source-side stream
2913
+ * errors included (they previously had no listener, so a source vanishing
2914
+ * mid-move escalated to an uncaughtException that killed the bundle
2915
+ * process) — and a failed move never consumes the source file.
2916
+ *
2917
+ * @inner
2918
+ * @param {number} i - Current index in `files`
2919
+ * @param {object} res - Response reference (unused; kept for signature stability)
2920
+ * @param {array} files - `{ source, target }` pairs — spliced as moves complete
2869
2921
  *
2870
2922
  * @callback cb
2871
- * @param {object} [err]
2923
+ * @param {Error|boolean} err - `false` once every file moved; the real `Error` on the first failure
2872
2924
  * */
2873
2925
  var movefiles = function (i, res, files, cb) {
2874
2926
  if (!files.length || files.length == 0) {
2875
2927
  cb(false)
2876
2928
  } else {
2877
- if ( fs.existsSync(files[i].target) ) new _(files[i].target).rmSync();
2929
+ // #B223 — no destination pre-delete: the atomic rename below replaces
2930
+ // it only once the new content is fully written
2931
+ // was: if ( fs.existsSync(files[i].target) ) new _(files[i].target).rmSync();
2932
+ var _tmpTarget = files[i].target + '.' + process.pid + '.' + Math.random().toString(36).slice(2, 8) + '.tmp';
2933
+ var _settled = false;
2878
2934
 
2879
2935
  var sourceStream = fs.createReadStream(files[i].source);
2880
- var destinationStream = fs.createWriteStream(files[i].target);
2936
+ // was: var destinationStream = fs.createWriteStream(files[i].target);
2937
+ var destinationStream = fs.createWriteStream(_tmpTarget);
2938
+
2939
+ var onMoveError = function (err) {
2940
+ if (_settled) return;
2941
+ _settled = true;
2942
+ try { destinationStream.destroy() } catch (_e) {}
2943
+ try { if ( fs.existsSync(_tmpTarget) ) fs.unlinkSync(_tmpTarget) } catch (_e) {}
2944
+ cb(err)
2945
+ };
2946
+
2947
+ // #B223 — the source stream previously had NO error listener: an
2948
+ // unreadable/vanished source raised an unhandled 'error' event
2949
+ sourceStream.on('error', onMoveError);
2881
2950
 
2882
2951
  sourceStream
2883
2952
  .pipe(destinationStream)
2884
- .on('error', function () {
2885
- var err = 'Error on SuperController::copyFile(...): Not found ' + files[i].source + ' or ' + files[i].target;
2886
- cb(err)
2887
- })
2953
+ .on('error', onMoveError)
2888
2954
  .on('close', function () {
2955
+ // 'close' also follows 'error' on an autoDestroyed stream — the
2956
+ // settled latch keeps a failed move from resuming the loop (the
2957
+ // pre-fix shape settled the callback a second time, as a success,
2958
+ // and unlinked the source of a move that had just failed)
2959
+ if (_settled) return;
2889
2960
 
2961
+ try {
2962
+ fs.renameSync(_tmpTarget, files[i].target);
2963
+ } catch (err) {
2964
+ return onMoveError(err)
2965
+ }
2890
2966
  try {
2891
2967
  fs.unlinkSync(files[i].source);
2892
- files.splice(i, 1);
2893
2968
  } catch (err) {
2894
- cb(err)
2969
+ // the source vanishing AFTER a successful publish is not a
2970
+ // move failure (e.g. the upload tmp-cleanup timer took it)
2971
+ if (err.code != 'ENOENT') {
2972
+ return onMoveError(err)
2973
+ }
2895
2974
  }
2975
+ files.splice(i, 1);
2896
2976
 
2897
2977
  movefiles(i, res, files, cb)
2898
2978
  })
@@ -3240,17 +3320,30 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
3240
3320
  * You only need to provide the destination path
3241
3321
  * Use `cb` callback or `onComplete` event
3242
3322
  *
3323
+ * Files are published atomically (temp sibling + rename — #B223), so a
3324
+ * reader never observes a partially-written file under the final name.
3325
+ *
3243
3326
  * @param {string} target is the upload dir destination
3244
3327
  * @param {array} [files]
3245
3328
  *
3246
3329
  * @callback [cb]
3247
- * @param {object} error
3330
+ * @param {Error|boolean} error - `false` on success; the real move `Error`
3331
+ * on failure (`No file to upload` only when there was nothing to store)
3248
3332
  * @param {array} files
3249
3333
  *
3250
3334
  * @event
3251
3335
  * @param {object} error
3252
3336
  * @param {array} files
3253
3337
  *
3338
+ * @example
3339
+ * // store the request's uploaded files, surfacing the real failure cause
3340
+ * self.store(uploadDir, req.files, function onStored(err, files) {
3341
+ * if (err) {
3342
+ * // err.code carries the filesystem diagnostic (EACCES, ENOSPC, ENOENT, ...)
3343
+ * return self.throwError(500, err);
3344
+ * }
3345
+ * self.renderJSON({ files: files });
3346
+ * });
3254
3347
  * */
3255
3348
  this.store = async function(target, files, cb) {
3256
3349
 
@@ -3322,10 +3415,15 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
3322
3415
 
3323
3416
  movefiles(0, local.res, list, function (err) {
3324
3417
  if (err) {
3418
+ // #B223 — surface the REAL move error: every failure used
3419
+ // to be reported as the fabricated empty-upload message,
3420
+ // masking the actual filesystem diagnostics (ENOSPC,
3421
+ // EACCES, a vanished source, ...)
3422
+ var _moveErr = ( err instanceof Error ) ? err : new Error(String(err));
3325
3423
  if (cb) {
3326
- cb(new Error('No file to upload'))
3424
+ cb(_moveErr)
3327
3425
  } else {
3328
- self.emit('uploaded', new Error('No file to upload'))
3426
+ self.emit('uploaded', _moveErr)
3329
3427
  }
3330
3428
  } else {
3331
3429
  if (cb) {
@@ -5859,7 +5957,10 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
5859
5957
  /**
5860
5958
  * Snapshot the current request as a `haltedRequest` and store it in `requestStorage`.
5861
5959
  * Typically called before redirecting to a login page so the original request can be
5862
- * replayed after authentication via `resumeRequest()`.
5960
+ * replayed after authentication via `resumeRequest()`. The snapshotted `url` is the
5961
+ * byte-exact incoming URL — `req.originalUrl` when the engine preserves it (the isaac
5962
+ * engine strips the query string from `req.url` before controllers run; express's own
5963
+ * `originalUrl` is native), falling back to `req.url` for requests without it.
5863
5964
  *
5864
5965
  * @param {object} data - Current action data to preserve
5865
5966
  * @param {object} [requestStorage] - Storage target; defaults to `req.session`
@@ -5887,7 +5988,15 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
5887
5988
  , res = local.res
5888
5989
  , next = local.next
5889
5990
  , haltedRequest = {
5890
- url : req.url,
5991
+ // #B219 — the isaac engine strips the query string from req.url before
5992
+ // controllers run (the query is parsed into req.get); the byte-exact
5993
+ // incoming URL survives on req.originalUrl, stamped as the engine
5994
+ // listener's first statement. Express sets originalUrl natively and does
5995
+ // not strip. Snapshot the preserved URL so the #B215 byte-exact replay
5996
+ // actually carries the query; bare/harness requests without the property
5997
+ // keep the historical req.url source.
5998
+ // was: url : req.url,
5999
+ url : req.originalUrl || req.url,
5891
6000
  routing : req.routing,
5892
6001
  method : req.method.toLowerCase(),
5893
6002
  data : JSON.clone(data)
@@ -5930,9 +6039,13 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
5930
6039
  * Replay a previously paused request (see `pauseRequest()`). Reads the `haltedRequest`
5931
6040
  * snapshot from `requestStorage` (defaulting to `req.session`), restores the original
5932
6041
  * url / method / data / params onto the live request, then re-dispatches it: a GET is
5933
- * replayed by redirecting to the resolved url; a non-GET is re-dispatched in-process to
5934
- * the original controller action (crossing namespaces via `requireController()` when
5935
- * needed). The snapshot is cleared from storage once consumed. For a GET replay, the
6042
+ * replayed by redirecting to the byte-exact halted URL — query string included —
6043
+ * whenever a live session exists (#B215; with no live session the URL is recomposed
6044
+ * from the route pattern plus the snapshotted params, or the halted data as query
6045
+ * params — the composed URL being the data's only travel channel there); a non-GET is
6046
+ * re-dispatched in-process to the original controller action (crossing namespaces via
6047
+ * `requireController()` when needed). The snapshot is cleared from storage once
6048
+ * consumed. For a GET replay, the
5936
6049
  * halted request's extra data rides the session flash channel (`inheritedData`,
5937
6050
  * consumed one-shot by the next routed GET) whenever a live session exists — a custom
5938
6051
  * `requestStorage` with no live session degrades to a plain replay without the data.
@@ -6003,7 +6116,26 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
6003
6116
  if (data.count() > 0) {
6004
6117
  dataAsParams = JSON.clone(haltedRequest.data);
6005
6118
  }
6006
- var url = lib.routing.getRoute(haltedRequest.routing.rule, haltedRequest.params||dataAsParams).url;
6119
+ // #B215 — replay the byte-exact halted URL (query string included) whenever a
6120
+ // live session exists. The recompose below only carries query keys captured
6121
+ // into `req.params` during the original match (keys declared in BOTH the
6122
+ // rule's `requirements` AND `param`): a key bound in `param` only substitutes
6123
+ // its `:key` placeholders at match-commit yet never reaches req.params, and an
6124
+ // undeclared key never does either — so the GET replay arrived query-less,
6125
+ // matched anyway, and rendered literal `:key` template paths as a 500. The
6126
+ // inheritedData flash cannot heal that: router.js merges it into req.get AFTER
6127
+ // matching. `haltedRequest.url` is stamped by every pauseRequest(), so
6128
+ // in-flight pre-#B215 snapshots replay correctly too (#B219: since the isaac
6129
+ // engine strips the query from req.url before controllers run, pauseRequest
6130
+ // snapshots req.originalUrl — pre-#B219 isaac snapshots are path-only and
6131
+ // replay exactly as captured). The session-less flow
6132
+ // keeps the recompose: with no session the flash cannot carry the halted data,
6133
+ // and the composed URL's query params are its only travel channel.
6134
+ // was: var url = lib.routing.getRoute(haltedRequest.routing.rule, haltedRequest.params||dataAsParams).url;
6135
+ var hasLiveSession = ( typeof(req.session) != 'undefined' && req.session ) ? true : false;
6136
+ var url = ( hasLiveSession && typeof(haltedRequest.url) != 'undefined' && haltedRequest.url )
6137
+ ? haltedRequest.url
6138
+ : lib.routing.getRoute(haltedRequest.routing.rule, haltedRequest.params||dataAsParams).url;
6007
6139
  var requiredController = self; // by default;
6008
6140
  if ( req.routing.namespace != haltedRequest.routing.namespace ) {
6009
6141
  try {
@@ -6098,6 +6230,9 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
6098
6230
  * Render a custom error page defined in `routing.json` via `req.routing.param.error`.
6099
6231
  * Sets `local.options.isRenderingCustomError = true` so the render pipeline
6100
6232
  * bypasses the normal rendering-stack guard.
6233
+ * Stamps `res.statusCode` from the error's `status` — when it is a known
6234
+ * status code — before dispatching, so every render delegate serves the
6235
+ * custom page with the real HTTP status (#B190).
6101
6236
  *
6102
6237
  * @param {object} req - Incoming request (reads `req.routing.param`)
6103
6238
  * @param {object} res - Server response
@@ -6161,7 +6296,45 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
6161
6296
  errOptions = merge(localOptions, local.options);
6162
6297
 
6163
6298
 
6299
+ } else if ( typeof(req.routing.param.file) != 'undefined' && req.routing.param.file ) {
6300
+ // #B191 — the resolved error template must never depend on the
6301
+ // reset flag: the server-side throwError twin (server.js) sets
6302
+ // `param.file` but not `isLocalOptionResetNeeded`, and the flag
6303
+ // used to ride a SHARED routing object overlapping errors could
6304
+ // strip. A falsy read here left errOptions null, so the render
6305
+ // delegates fell back to the FAILING route's own `file` and
6306
+ // built a bare, un-rooted template path — surfacing an upstream
6307
+ // failure as a bogus "check your routing.json" misdirection.
6308
+ // `path: null` mirrors the reset branch: custom paths ignore
6309
+ // the namespace.
6310
+ errOptions = merge({
6311
+ file: req.routing.param.file,
6312
+ path: null
6313
+ }, local.options);
6314
+ }
6315
+ // #B190 — stamp the HTTP status on the response before the render
6316
+ // dispatch. The swig and v1 delegates recompute it downstream from
6317
+ // the page data, but the nunjucks and the async delegates only read
6318
+ // the already-set `res.statusCode || 200` at their write sites — so
6319
+ // without this stamp a configured custom error page is served as
6320
+ // HTTP 200 there (live-measured 2026-08-01: nunjucks 200 vs swig 500
6321
+ // on the same fixture).
6322
+ var _eStatusCodes = local.options.conf
6323
+ && local.options.conf.server
6324
+ && local.options.conf.server.coreConfiguration
6325
+ && local.options.conf.server.coreConfiguration.statusCodes
6326
+ || null;
6327
+ if (
6328
+ data
6329
+ && data.status
6330
+ && res
6331
+ && !res.headersSent
6332
+ && _eStatusCodes
6333
+ && typeof(_eStatusCodes[ data.status ]) != 'undefined'
6334
+ ) {
6335
+ res.statusCode = data.status;
6164
6336
  }
6337
+
6165
6338
  delete local.options.namespace;
6166
6339
  self.render(data, displayInspector, errOptions);
6167
6340
  }
@@ -6746,7 +6919,14 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
6746
6919
 
6747
6920
  if (!local.options.isRenderingCustomError) {
6748
6921
  var eRule = 'custom-error-page@'+ bundle;
6749
- var routeObj = bundleConf.content.routing[eRule];
6922
+ // #B191 — dispatch on a CLONE: the shared routing
6923
+ // entry must not carry per-error state. The stamps
6924
+ // below (and renderCustomError's own param deletes)
6925
+ // used to mutate `bundleConf.content.routing[eRule]`
6926
+ // directly, racing overlapping errors on the shared
6927
+ // object; lib/routing getRoute() already clones for
6928
+ // the server-side twin's dispatch.
6929
+ var routeObj = JSON.clone(bundleConf.content.routing[eRule]);
6750
6930
  routeObj.rule = eRule;
6751
6931
  //routeObj.url = decodeURI(local.req.url);/// avoid %20
6752
6932
  routeObj.param.title = ( typeof(eData.title) != 'undefined' ) ? eData.title : 'Error ' + eData.status;
@@ -888,6 +888,14 @@ async function writeCache(local, self, bundle, opt, htmlContent, req, res) {
888
888
  // #B158 — a gated route is never stored: the key carries no principal and
889
889
  // both serve points run before the gate. Full rationale on isRouteGated.
890
890
  libRef.authzGate.isRouteGated(req)
891
+ ||
892
+ // #SPA1 — a NEGOTIABLE route is never stored: the key carries no SHAPE
893
+ // dimension, so a stored entry could replay a fragment to a page request.
894
+ // This WRITE-side refusal is load-bearing, not defence-in-depth — isaac's
895
+ // cache read runs PRE-ROUTING (server.isaac.js ~:2150, off raw request.url
896
+ // with no request.routing in scope), so it cannot be guarded on the flag.
897
+ // Keeping the URL out of the cache entirely is what protects that path.
898
+ ( req.routing && req.routing.negotiate === true )
891
899
  ) {
892
900
  return;
893
901
  }
@@ -53,6 +53,17 @@ async function writeCache(bundle, opt, htmlContent, req, res, cacheIsEnabled, th
53
53
  // #B158 — a gated route is never stored: the key carries no principal and
54
54
  // both serve points run before the gate. Full rationale on isRouteGated.
55
55
  lib.authzGate.isRouteGated(req)
56
+ ||
57
+ // #SPA1 — a NEGOTIABLE route is never stored, for the identical reason one
58
+ // sentence up: the key carries no SHAPE dimension, and both serve points run
59
+ // before the shape is resolved. Storing one would let a fragment be replayed
60
+ // to a page request (and vice versa) on the same URL.
61
+ // This WRITE-side refusal is LOAD-BEARING, not merely defence-in-depth:
62
+ // isaac's cache read runs PRE-ROUTING (server.isaac.js ~:2150 — it keys off
63
+ // the raw request.url with no request.routing in scope, measured), so that
64
+ // read CANNOT be guarded on the flag. Never writing the entry is what keeps
65
+ // the isaac path correct; the express-side read guard is the belt.
66
+ ( req.routing && req.routing.negotiate === true )
56
67
  ) {
57
68
  return;
58
69
  }
@@ -293,6 +304,10 @@ module.exports = async function render(userData, displayInspector, errOptions, d
293
304
  , plugin = null
294
305
  // By default
295
306
  , isWithoutLayout = (localOptions.isWithoutLayout) ? true : false
307
+ // #SPA1 fragment-parent roster — populated only for a layoutless render
308
+ // of an extends template (derived in the extends block, composed into
309
+ // the fragments/ cache parent at the priming + post-asset writes).
310
+ , fragmentBlockRoster = null
296
311
  , stream = null
297
312
  ;
298
313
 
@@ -470,7 +485,14 @@ module.exports = async function render(userData, displayInspector, errOptions, d
470
485
  }
471
486
  pageContentObj = null;
472
487
 
473
- cacheKey = 'swig:' + localOptions.bundle + subFolder +'/'+ data.page.view.file;
488
+ // #SPA1 — the compiled-template cache is shape-dimensioned: a layoutless
489
+ // (fragment) compile of an extends template resolves against a block-roster
490
+ // parent instead of the real layout, so the two shapes must never share a
491
+ // slot (first-shape-wins collision otherwise). isWithoutLayout is final
492
+ // here: the implicit extends-less auto-set runs above, and the later
493
+ // layout-not-found fallbacks only fire for templates that never reach this
494
+ // cache (its write requires an extends directive).
495
+ cacheKey = 'swig:' + localOptions.bundle + subFolder +'/'+ data.page.view.file + ( (isWithoutLayout) ? ':fragment' : '' );
474
496
  // Retrieve layoutPath from content
475
497
  if (
476
498
  hasLayoutInPath
@@ -487,7 +509,32 @@ module.exports = async function render(userData, displayInspector, errOptions, d
487
509
  layoutPath = extendFound[0].match(/(\"|\')(.*)(\"|\')/)[0].replace(/(\"|\')/g, '');
488
510
 
489
511
  // adding layout
490
- var newLayoutPath = 'swig' + subFolder +'/'+ layoutPath;
512
+ // #SPA1 — a layoutless (fragment) render of an extends template
513
+ // must NOT target the shared full-page cached layout: the
514
+ // post-asset persist below stores THIS render's assembled
515
+ // `layout`, which for a fragment is the (empty) nolayout shell —
516
+ // written over the shared file it blanks the parent every
517
+ // full-page render compiles from, so child blocks extend a
518
+ // block-less parent and are discarded. Fragments get their own
519
+ // `fragments/` namespace, primed from the child's OWN block
520
+ // roster so its blocks keep placeholders to fill.
521
+ if ( isWithoutLayout ) {
522
+ var _fragBlockRe = /\{\%-?\s*block\s+([A-Za-z0-9_-]+)/g;
523
+ var _fragBlockNames = [];
524
+ var _fragMatch = null;
525
+ while ( (_fragMatch = _fragBlockRe.exec(_templateContent)) !== null ) {
526
+ if ( _fragBlockNames.indexOf(_fragMatch[1]) < 0 ) {
527
+ _fragBlockNames.push(_fragMatch[1]);
528
+ }
529
+ }
530
+ var _fragLines = [];
531
+ for (var _fragI = 0, _fragLen = _fragBlockNames.length; _fragI < _fragLen; ++_fragI) {
532
+ _fragLines.push('{% block '+ _fragBlockNames[_fragI] +' %}{% endblock %}');
533
+ }
534
+ fragmentBlockRoster = _fragLines.join('\n');
535
+ _fragBlockRe = null; _fragBlockNames = null; _fragMatch = null; _fragLines = null;
536
+ }
537
+ var newLayoutPath = 'swig' + subFolder + ( (isWithoutLayout) ? '/fragments/' : '/' ) + layoutPath;
491
538
  newLayoutFilename = _(cachePath +'/'+ localOptions.bundle +'/'+ newLayoutPath, true);
492
539
 
493
540
  // In dev/cacheless mode we always refresh the cached layout;
@@ -537,7 +584,16 @@ module.exports = async function render(userData, displayInspector, errOptions, d
537
584
 
538
585
  // replaced: openSync/readFileSync/writeSync/closeSync — async read + write (#P29, #P31)
539
586
  // buffer = Buffer.from( fs.readFileSync(localOptions.template.html + '/'+ layoutPath) ); // replaced: CVE-2023-25345
540
- buffer = await fs.promises.readFile(localOptions.template.html + '/'+ layoutPath);
587
+ // #SPA1 — the fragments/ parent primes from the child's block
588
+ // roster, never from the original layout file (the roster is
589
+ // what lets the child's blocks render; the shell tail is
590
+ // appended by the post-asset persist further below).
591
+ if ( isWithoutLayout && fragmentBlockRoster !== null ) {
592
+ buffer = fragmentBlockRoster;
593
+ }
594
+ else {
595
+ buffer = await fs.promises.readFile(localOptions.template.html + '/'+ layoutPath);
596
+ }
541
597
  // Atomic write: temp file + rename. rename(2) on POSIX is
542
598
  // atomic on the same filesystem, so concurrent readers at
543
599
  // the post-priming readFile below never see the target
@@ -744,6 +800,21 @@ module.exports = async function render(userData, displayInspector, errOptions, d
744
800
  // ./namespace/page.html (GOOD)
745
801
 
746
802
  if ( !fs.existsSync(path) ) {
803
+ if (isRenderingCustomError) {
804
+ // #B191 — never dump a routing rule while rendering a CUSTOM
805
+ // ERROR page: the rule in scope is the failing route's (or
806
+ // the injected error route's), correct by construction, and
807
+ // the generic diagnostic below misdirected operators toward
808
+ // editing valid configuration. Name the template that failed
809
+ // and hand off to throwError — its re-entry guard serves the
810
+ // built-in error page without looping through this branch.
811
+ msg = 'could not open the custom error template "'+ path +'"'
812
+ + ' — falling back to the built-in error page.';
813
+ err = new ApiError(msg, 500);
814
+ console.error(err.stack);
815
+ self.throwError(err);
816
+ return;
817
+ }
747
818
  msg = 'could not open "'+ path +'"' +
748
819
  '\n1) The requested file does not exists in your templates/html (check your template directory). Can you find: '+path +
749
820
  '\n2) Check the following rule in your `'+localOptions.conf.bundlePath+'/config/routing.json` and look around `param` to make sure that nothing is wrong with your file declaration: '+
@@ -1732,10 +1803,20 @@ module.exports = async function render(userData, displayInspector, errOptions, d
1732
1803
  // a temp file and renaming onto target is atomic on POSIX, so
1733
1804
  // readers always see either the prior content or the new
1734
1805
  // content.
1806
+ // #SPA1 — a fragment render persists the child's block roster
1807
+ // ahead of the assembled shell: the roster keeps placeholders
1808
+ // for the child's blocks, and the shell tail (xhr-inputs /
1809
+ // scripts) still rides the fragment response after them. The
1810
+ // write lands in the fragments/ namespace, so the full-page
1811
+ // cached layout is never touched by a fragment render.
1812
+ var _persistedLayout = ( isWithoutLayout && fragmentBlockRoster !== null )
1813
+ ? fragmentBlockRoster + '\n' + layout
1814
+ : layout;
1735
1815
  var _layoutTmpAssets = newLayoutFilename + '.tmp.' + process.pid + '.' + Date.now() + '.' + Math.random().toString(36).slice(2);
1736
- await fs.promises.writeFile(_layoutTmpAssets, layout);
1816
+ await fs.promises.writeFile(_layoutTmpAssets, _persistedLayout);
1737
1817
  await fs.promises.rename(_layoutTmpAssets, newLayoutFilename);
1738
1818
  _layoutTmpAssets = null;
1819
+ _persistedLayout = null;
1739
1820
  }
1740
1821
 
1741
1822
  // Last compilation before rendering
@@ -1494,7 +1494,14 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
1494
1494
  // noise for an inert bundle).
1495
1495
  var _rcEnabled = String(_rcServerCache.enable).toLowerCase() === 'true';
1496
1496
  var _rcRouting = (typeof gna.getConfig === 'function') ? gna.getConfig('routing') : null;
1497
- var _rcCheck = lib.RenderCache.validateConfig(_rcServerCache, _rcRouting || {}, gna.core.startingApp);
1497
+ // #B238 — feed the disclosure-warn context from the RESOLVED conf
1498
+ // tree (the same `server.hidePoweredBy` source the engine-agnostic
1499
+ // X-Powered-By gate reads), guarded like `_rcServerCache` above.
1500
+ var _rcHidePoweredBy = false;
1501
+ try {
1502
+ _rcHidePoweredBy = ( config.getInstance()[gna.core.startingApp][env].server.hidePoweredBy === true );
1503
+ } catch (rcHpbErr) { _rcHidePoweredBy = false; }
1504
+ var _rcCheck = lib.RenderCache.validateConfig(_rcServerCache, _rcRouting || {}, gna.core.startingApp, { hidePoweredBy: _rcHidePoweredBy, cacheEnabled: _rcEnabled });
1498
1505
  for (var _rcW = 0; _rcW < _rcCheck.warnings.length; _rcW++) {
1499
1506
  console.warn('[render-cache] ' + _rcCheck.warnings[_rcW]);
1500
1507
  }
@@ -2456,6 +2463,21 @@ gna.getProtected = getProtected;
2456
2463
  */
2457
2464
  gna.filterArgs = filterArgs;
2458
2465
 
2466
+ /**
2467
+ * Import `GINA_*` / `VENDOR_*` / `USER_*` keys from `process.env` into the
2468
+ * framework environment (`process.gina`). Move semantics by default — the
2469
+ * `filterArgs()` sweep deletes each imported key from `process.env`. Pass
2470
+ * `keep=true` for the early visibility pass (`bin/cli` runs it before its
2471
+ * home/settings/host resolution) that leaves `process.env` intact for the
2472
+ * later sweep. Idempotent in both modes.
2473
+ *
2474
+ * @param {boolean} [keep] - Import without deleting from `process.env`
2475
+ * @returns {void}
2476
+ * @example
2477
+ * importEnvVars(true); // process.gina.GINA_ENV === 'dev'; process.env.GINA_ENV intact
2478
+ */
2479
+ gna.importEnvVars = importEnvVars;
2480
+
2459
2481
  /**
2460
2482
  * Resolve the log directory — `GINA_LOGDIR` / `LOGDIR` / prefix `var/log`
2461
2483
  * with fallback to `~/.gina/log`. Creates it if missing.
@@ -436,10 +436,13 @@ var SESSIONLESS_MESSAGE =
436
436
  * 1. `opts.secret` — factory override (test harness only).
437
437
  * 2. `settings.json > csrf.secret` — resolver-compatible config slot.
438
438
  * `${secret:KEY}` placeholders are filled by `lib/secrets` at
439
- * config-load time from `process.env[KEY]`, so this slot lets
440
- * consumers name the env var anything they like.
441
- * 3. `process.env.GINA_CSRF_SECRET` — back-compat direct env read.
442
- * Always honoured when set, regardless of (2).
439
+ * config-load time (framework environment first, then the raw
440
+ * process environment), so this slot lets consumers name the env
441
+ * var anything they like.
442
+ * 3. `GINA_CSRF_SECRET` — back-compat env read, through the framework
443
+ * env reader first, then the raw process environment (#B156 class:
444
+ * the CLI sweep empties process.env of GINA_* keys). Always
445
+ * honoured when set, regardless of (2).
443
446
  *
444
447
  * @example
445
448
  * // settings.json — recommended shape:
@@ -483,7 +486,8 @@ function Csrf(opts) {
483
486
  ? opts.secret
484
487
  : (typeof defaults.secret === 'string' && defaults.secret)
485
488
  ? defaults.secret
486
- : process.env.GINA_CSRF_SECRET;
489
+ : ( (typeof getEnvVar === 'function' && getEnvVar('GINA_CSRF_SECRET'))
490
+ || process.env.GINA_CSRF_SECRET );
487
491
  if (typeof secret !== 'string' || !secret) {
488
492
  throw new Error(
489
493
  '[gina csrf] GINA_CSRF_SECRET env var is required'
@@ -119,3 +119,23 @@ the Isaac engine when absent on most installs).
119
119
  The plugin is safe to register more than once — `removeHeader` is
120
120
  idempotent (no-op when the header is already absent), so a second
121
121
  call has no effect.
122
+
123
+ ## What this does NOT cover (#B238)
124
+
125
+ `server.hidePoweredBy` suppresses the `X-Powered-By` header — nothing
126
+ else. Two other response surfaces can still name the framework:
127
+
128
+ - **`Cache-Status` identifier** — when the render/output cache is
129
+ enabled, every GET carries `Cache-Status: gina-cache; …` (RFC 9211).
130
+ The identifier never changes implicitly (it is a documented-stable
131
+ wire value); instead, a boot warn fires when `server.hidePoweredBy`
132
+ is true, the cache is enabled, and no `server.cache.name` is set.
133
+ Set any RFC 8941 token there (e.g. `"cache"`) to close the
134
+ disclosure, or explicitly `"gina-cache"` to keep the wire and
135
+ silence the warn.
136
+ - **`Vary: X-Gina-Navigate`** — routes with `negotiate: true` emit it
137
+ so shared caches key fragment vs full-page responses correctly.
138
+ This is caching-correctness metadata, not a banner: suppressing or
139
+ renaming it would corrupt intermediary caches / break the client
140
+ contract, so it is not configurable. Routes without `negotiate`
141
+ never emit it.