gina 0.4.7 → 0.5.0

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 (472) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +5 -6
  3. package/ROADMAP.md +4 -3
  4. package/framework/v0.5.0/VERSION +1 -0
  5. package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.js +35 -0
  6. package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.render-nunjucks.js +48 -17
  7. package/framework/{v0.4.7 → v0.5.0}/core/server.js +25 -3
  8. package/framework/{v0.4.7 → v0.5.0}/package.json +1 -1
  9. package/gna.js +4 -4
  10. package/gna.mjs +20 -0
  11. package/index.mjs +28 -0
  12. package/llms.txt +4 -0
  13. package/package.json +15 -2
  14. package/schema/settings.json +1 -1
  15. package/framework/v0.4.7/VERSION +0 -1
  16. /package/framework/{v0.4.7 → v0.5.0}/AUTHORS +0 -0
  17. /package/framework/{v0.4.7 → v0.5.0}/LICENSE +0 -0
  18. /package/framework/{v0.4.7 → v0.5.0}/core/asset/html/nolayout.html +0 -0
  19. /package/framework/{v0.4.7 → v0.5.0}/core/asset/html/static.html +0 -0
  20. /package/framework/{v0.4.7 → v0.5.0}/core/asset/img/android-chrome-192x192.png +0 -0
  21. /package/framework/{v0.4.7 → v0.5.0}/core/asset/img/android-chrome-512x512.png +0 -0
  22. /package/framework/{v0.4.7 → v0.5.0}/core/asset/img/apple-touch-icon.png +0 -0
  23. /package/framework/{v0.4.7 → v0.5.0}/core/asset/img/favicon-16x16.png +0 -0
  24. /package/framework/{v0.4.7 → v0.5.0}/core/asset/img/favicon-32x32.png +0 -0
  25. /package/framework/{v0.4.7 → v0.5.0}/core/asset/img/favicon.ico +0 -0
  26. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/README.md +0 -0
  27. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  28. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  29. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  30. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  31. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  32. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  33. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  34. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  35. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  36. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  37. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  38. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  39. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  40. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  41. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
  42. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  43. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  44. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  45. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  46. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  47. /package/framework/{v0.4.7 → v0.5.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  48. /package/framework/{v0.4.7 → v0.5.0}/core/config.js +0 -0
  49. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/ai/index.js +0 -0
  50. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/ai/lib/connector.js +0 -0
  51. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/index.js +0 -0
  52. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/lib/connector.js +0 -0
  53. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  54. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  55. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/lib/n1ql.js +0 -0
  56. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/lib/session-store.js +0 -0
  57. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  58. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  59. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/mongodb/index.js +0 -0
  60. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/mongodb/lib/connector.js +0 -0
  61. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  62. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/mongodb/lib/session-store.js +0 -0
  63. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/mysql/index.js +0 -0
  64. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/mysql/lib/connector.js +0 -0
  65. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/postgresql/index.js +0 -0
  66. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/postgresql/lib/connector.js +0 -0
  67. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/redis/index.js +0 -0
  68. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/redis/lib/session-store.js +0 -0
  69. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/scylladb/index.js +0 -0
  70. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/scylladb/lib/connector.js +0 -0
  71. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/scylladb/lib/session-store.js +0 -0
  72. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/sql-parser.js +0 -0
  73. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/sqlite/index.js +0 -0
  74. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/sqlite/lib/connector.js +0 -0
  75. /package/framework/{v0.4.7 → v0.5.0}/core/connectors/sqlite/lib/session-store.js +0 -0
  76. /package/framework/{v0.4.7 → v0.5.0}/core/content.encoding +0 -0
  77. /package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.framework.js +0 -0
  78. /package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.render-json.js +0 -0
  79. /package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.render-nunjucks-async.js +0 -0
  80. /package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.render-stream.js +0 -0
  81. /package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.render-swig-async.js +0 -0
  82. /package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.render-swig.js +0 -0
  83. /package/framework/{v0.4.7 → v0.5.0}/core/controller/controller.render-v1.js +0 -0
  84. /package/framework/{v0.4.7 → v0.5.0}/core/controller/index.js +0 -0
  85. /package/framework/{v0.4.7 → v0.5.0}/core/controller/inspector-window-emit.js +0 -0
  86. /package/framework/{v0.4.7 → v0.5.0}/core/deps/busboy-1.6.0/LICENSE +0 -0
  87. /package/framework/{v0.4.7 → v0.5.0}/core/deps/busboy-1.6.0/README.md +0 -0
  88. /package/framework/{v0.4.7 → v0.5.0}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  89. /package/framework/{v0.4.7 → v0.5.0}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  90. /package/framework/{v0.4.7 → v0.5.0}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  91. /package/framework/{v0.4.7 → v0.5.0}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  92. /package/framework/{v0.4.7 → v0.5.0}/core/deps/busboy-1.6.0/package.json +0 -0
  93. /package/framework/{v0.4.7 → v0.5.0}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  94. /package/framework/{v0.4.7 → v0.5.0}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  95. /package/framework/{v0.4.7 → v0.5.0}/core/deps/streamsearch-1.1.0/package.json +0 -0
  96. /package/framework/{v0.4.7 → v0.5.0}/core/dev/index.js +0 -0
  97. /package/framework/{v0.4.7 → v0.5.0}/core/dev/lib/class.js +0 -0
  98. /package/framework/{v0.4.7 → v0.5.0}/core/dev/lib/factory.js +0 -0
  99. /package/framework/{v0.4.7 → v0.5.0}/core/dev/lib/tools.js +0 -0
  100. /package/framework/{v0.4.7 → v0.5.0}/core/gna.js +0 -0
  101. /package/framework/{v0.4.7 → v0.5.0}/core/locales/README.md +0 -0
  102. /package/framework/{v0.4.7 → v0.5.0}/core/locales/currency.json +0 -0
  103. /package/framework/{v0.4.7 → v0.5.0}/core/locales/dist/language/en.json +0 -0
  104. /package/framework/{v0.4.7 → v0.5.0}/core/locales/dist/language/fr.json +0 -0
  105. /package/framework/{v0.4.7 → v0.5.0}/core/locales/dist/region/en.json +0 -0
  106. /package/framework/{v0.4.7 → v0.5.0}/core/locales/dist/region/fr.json +0 -0
  107. /package/framework/{v0.4.7 → v0.5.0}/core/locales/index.js +0 -0
  108. /package/framework/{v0.4.7 → v0.5.0}/core/mime.types +0 -0
  109. /package/framework/{v0.4.7 → v0.5.0}/core/model/entity.js +0 -0
  110. /package/framework/{v0.4.7 → v0.5.0}/core/model/index.js +0 -0
  111. /package/framework/{v0.4.7 → v0.5.0}/core/model/template/entityFactory.js +0 -0
  112. /package/framework/{v0.4.7 → v0.5.0}/core/model/template/index.js +0 -0
  113. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/README.md +0 -0
  114. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/index.js +0 -0
  115. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/csrf/README.md +0 -0
  116. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/csrf/package.json +0 -0
  117. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/csrf/src/main.js +0 -0
  118. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/README.md +0 -0
  119. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/coep/README.md +0 -0
  120. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/coep/package.json +0 -0
  121. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  122. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/coop/README.md +0 -0
  123. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/coop/package.json +0 -0
  124. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  125. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/corp/README.md +0 -0
  126. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/corp/package.json +0 -0
  127. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  128. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/csp/README.md +0 -0
  129. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/csp/package.json +0 -0
  130. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  131. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  132. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  133. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  134. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  135. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  136. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  137. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  138. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  139. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  140. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/package.json +0 -0
  141. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  142. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  143. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  144. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/src/main.js +0 -0
  145. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  146. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  147. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  148. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  149. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  150. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  151. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  152. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  153. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  154. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  155. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  156. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  157. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  158. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  159. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  160. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  161. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  162. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  163. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/session/README.md +0 -0
  164. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/session/package.json +0 -0
  165. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/session/src/main.js +0 -0
  166. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/storage/README.md +0 -0
  167. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/storage/build.json +0 -0
  168. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/storage/package.json +0 -0
  169. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/storage/src/main.js +0 -0
  170. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/validator/README.md +0 -0
  171. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/validator/build.json +0 -0
  172. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/validator/package.json +0 -0
  173. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/validator/src/form-validator.js +0 -0
  174. /package/framework/{v0.4.7 → v0.5.0}/core/plugins/lib/validator/src/main.js +0 -0
  175. /package/framework/{v0.4.7 → v0.5.0}/core/router.js +0 -0
  176. /package/framework/{v0.4.7 → v0.5.0}/core/server.express.js +0 -0
  177. /package/framework/{v0.4.7 → v0.5.0}/core/server.isaac.js +0 -0
  178. /package/framework/{v0.4.7 → v0.5.0}/core/status.codes +0 -0
  179. /package/framework/{v0.4.7 → v0.5.0}/core/template/_gitignore +0 -0
  180. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/config/app.json +0 -0
  181. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  182. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/config/routing.json +0 -0
  183. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/config/settings.json +0 -0
  184. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  185. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/config/templates.json +0 -0
  186. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  187. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  188. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  189. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  190. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/index.js +0 -0
  191. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle/locales/en.json +0 -0
  192. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  193. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  194. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  195. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  196. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  197. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  198. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  199. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/readme.md +0 -0
  200. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_public/sw.js +0 -0
  201. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  202. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  203. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  204. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  205. /package/framework/{v0.4.7 → v0.5.0}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  206. /package/framework/{v0.4.7 → v0.5.0}/core/template/command/gina.bat.tpl +0 -0
  207. /package/framework/{v0.4.7 → v0.5.0}/core/template/command/gina.tpl +0 -0
  208. /package/framework/{v0.4.7 → v0.5.0}/core/template/conf/env.json +0 -0
  209. /package/framework/{v0.4.7 → v0.5.0}/core/template/conf/manifest.json +0 -0
  210. /package/framework/{v0.4.7 → v0.5.0}/core/template/conf/package.json +0 -0
  211. /package/framework/{v0.4.7 → v0.5.0}/core/template/conf/settings.json +0 -0
  212. /package/framework/{v0.4.7 → v0.5.0}/core/template/conf/statics.json +0 -0
  213. /package/framework/{v0.4.7 → v0.5.0}/core/template/conf/templates.json +0 -0
  214. /package/framework/{v0.4.7 → v0.5.0}/core/template/error/client/json/401.json +0 -0
  215. /package/framework/{v0.4.7 → v0.5.0}/core/template/error/client/json/403.json +0 -0
  216. /package/framework/{v0.4.7 → v0.5.0}/core/template/error/client/json/404.json +0 -0
  217. /package/framework/{v0.4.7 → v0.5.0}/core/template/error/server/html/50x.html +0 -0
  218. /package/framework/{v0.4.7 → v0.5.0}/core/template/error/server/json/500.json +0 -0
  219. /package/framework/{v0.4.7 → v0.5.0}/core/template/error/server/json/503.json +0 -0
  220. /package/framework/{v0.4.7 → v0.5.0}/core/template/extensions/logger/config.json +0 -0
  221. /package/framework/{v0.4.7 → v0.5.0}/helpers/console.js +0 -0
  222. /package/framework/{v0.4.7 → v0.5.0}/helpers/context.js +0 -0
  223. /package/framework/{v0.4.7 → v0.5.0}/helpers/data/LICENSE +0 -0
  224. /package/framework/{v0.4.7 → v0.5.0}/helpers/data/README.md +0 -0
  225. /package/framework/{v0.4.7 → v0.5.0}/helpers/data/package.json +0 -0
  226. /package/framework/{v0.4.7 → v0.5.0}/helpers/data/src/main.js +0 -0
  227. /package/framework/{v0.4.7 → v0.5.0}/helpers/dateFormat.js +0 -0
  228. /package/framework/{v0.4.7 → v0.5.0}/helpers/index.js +0 -0
  229. /package/framework/{v0.4.7 → v0.5.0}/helpers/json/LICENSE +0 -0
  230. /package/framework/{v0.4.7 → v0.5.0}/helpers/json/README.md +0 -0
  231. /package/framework/{v0.4.7 → v0.5.0}/helpers/json/package.json +0 -0
  232. /package/framework/{v0.4.7 → v0.5.0}/helpers/json/src/main.js +0 -0
  233. /package/framework/{v0.4.7 → v0.5.0}/helpers/path.js +0 -0
  234. /package/framework/{v0.4.7 → v0.5.0}/helpers/plugins/README.md +0 -0
  235. /package/framework/{v0.4.7 → v0.5.0}/helpers/plugins/package.json +0 -0
  236. /package/framework/{v0.4.7 → v0.5.0}/helpers/plugins/src/api-error.js +0 -0
  237. /package/framework/{v0.4.7 → v0.5.0}/helpers/plugins/src/main.js +0 -0
  238. /package/framework/{v0.4.7 → v0.5.0}/helpers/prototypes.js +0 -0
  239. /package/framework/{v0.4.7 → v0.5.0}/helpers/task.js +0 -0
  240. /package/framework/{v0.4.7 → v0.5.0}/helpers/text.js +0 -0
  241. /package/framework/{v0.4.7 → v0.5.0}/lib/archiver/README.md +0 -0
  242. /package/framework/{v0.4.7 → v0.5.0}/lib/archiver/build.json +0 -0
  243. /package/framework/{v0.4.7 → v0.5.0}/lib/archiver/package.json +0 -0
  244. /package/framework/{v0.4.7 → v0.5.0}/lib/archiver/src/dep/jszip.min.js +0 -0
  245. /package/framework/{v0.4.7 → v0.5.0}/lib/archiver/src/main.js +0 -0
  246. /package/framework/{v0.4.7 → v0.5.0}/lib/async/package.json +0 -0
  247. /package/framework/{v0.4.7 → v0.5.0}/lib/async/src/main.js +0 -0
  248. /package/framework/{v0.4.7 → v0.5.0}/lib/cache/README.md +0 -0
  249. /package/framework/{v0.4.7 → v0.5.0}/lib/cache/build.json +0 -0
  250. /package/framework/{v0.4.7 → v0.5.0}/lib/cache/package.json +0 -0
  251. /package/framework/{v0.4.7 → v0.5.0}/lib/cache/src/main.js +0 -0
  252. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/aliases.json +0 -0
  253. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/add.js +0 -0
  254. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/arguments.json +0 -0
  255. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/build.js +0 -0
  256. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/copy.js +0 -0
  257. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/cp.js +0 -0
  258. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/help.js +0 -0
  259. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/help.txt +0 -0
  260. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  261. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/list.js +0 -0
  262. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/mcp-start.js +0 -0
  263. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/mcp.js +0 -0
  264. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/oas.js +0 -0
  265. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/openapi.js +0 -0
  266. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/remove.js +0 -0
  267. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/rename.js +0 -0
  268. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/restart.js +0 -0
  269. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/rm.js +0 -0
  270. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/start.js +0 -0
  271. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/status.js +0 -0
  272. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/bundle/stop.js +0 -0
  273. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/cache/stats.js +0 -0
  274. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/add.js +0 -0
  275. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/arguments.json +0 -0
  276. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/help.js +0 -0
  277. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/help.txt +0 -0
  278. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/list.js +0 -0
  279. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/migrate.js +0 -0
  280. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/remove.js +0 -0
  281. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/connector/rm.js +0 -0
  282. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/add.js +0 -0
  283. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/get.js +0 -0
  284. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/help.js +0 -0
  285. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/help.txt +0 -0
  286. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/link-dev.js +0 -0
  287. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/list.js +0 -0
  288. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/remove.js +0 -0
  289. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/rm.js +0 -0
  290. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/set.js +0 -0
  291. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/unset.js +0 -0
  292. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/env/use.js +0 -0
  293. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/arguments.json +0 -0
  294. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/build.js +0 -0
  295. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/dot.js +0 -0
  296. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/get.js +0 -0
  297. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/help.js +0 -0
  298. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/help.txt +0 -0
  299. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/init.js +0 -0
  300. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/link-node-modules.js +0 -0
  301. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/link.js +0 -0
  302. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/msg.json +0 -0
  303. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/open.js +0 -0
  304. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/restart.js +0 -0
  305. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/set.js +0 -0
  306. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/start.js +0 -0
  307. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/status.js +0 -0
  308. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/stop.js +0 -0
  309. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/tail.js +0 -0
  310. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/update.js +0 -0
  311. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/framework/version.js +0 -0
  312. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/gina-dev.1.md +0 -0
  313. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/gina-framework.1.md +0 -0
  314. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/gina.1.md +0 -0
  315. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/helper.js +0 -0
  316. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/i18n/add.js +0 -0
  317. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/i18n/arguments.json +0 -0
  318. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/i18n/export.js +0 -0
  319. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/i18n/help.js +0 -0
  320. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/i18n/help.txt +0 -0
  321. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/i18n/import.js +0 -0
  322. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/i18n/scan.js +0 -0
  323. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/index.js +0 -0
  324. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/inspector/help.js +0 -0
  325. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/inspector/help.txt +0 -0
  326. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/inspector/open.js +0 -0
  327. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/minion/arguments.json +0 -0
  328. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/minion/help.js +0 -0
  329. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/minion/help.txt +0 -0
  330. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/minion/kill.js +0 -0
  331. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/minion/list.js +0 -0
  332. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/msg.json +0 -0
  333. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/port/help.js +0 -0
  334. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/port/help.txt +0 -0
  335. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/port/inc/scan.js +0 -0
  336. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/port/list.js +0 -0
  337. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/port/reset.js +0 -0
  338. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/port/set.js +0 -0
  339. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/add.js +0 -0
  340. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/arguments.json +0 -0
  341. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/build.js +0 -0
  342. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/help.js +0 -0
  343. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/help.txt +0 -0
  344. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/import.js +0 -0
  345. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/list.js +0 -0
  346. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/move.js +0 -0
  347. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/remove.js +0 -0
  348. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/rename.js +0 -0
  349. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/restart.js +0 -0
  350. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/rm.js +0 -0
  351. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/start.js +0 -0
  352. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/status.js +0 -0
  353. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/project/stop.js +0 -0
  354. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/protocol/arguments.json +0 -0
  355. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/protocol/help.js +0 -0
  356. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/protocol/help.txt +0 -0
  357. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/protocol/list.js +0 -0
  358. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/protocol/remove.js +0 -0
  359. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/protocol/set.js +0 -0
  360. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/add.js +0 -0
  361. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/help.js +0 -0
  362. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/help.txt +0 -0
  363. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/link-local.js +0 -0
  364. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/link-production.js +0 -0
  365. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/list.js +0 -0
  366. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/remove.js +0 -0
  367. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/rm.js +0 -0
  368. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/scope/use.js +0 -0
  369. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/secrets/arguments.json +0 -0
  370. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/secrets/check.js +0 -0
  371. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/secrets/help.js +0 -0
  372. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/secrets/help.txt +0 -0
  373. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/secrets/scan.js +0 -0
  374. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/service/help.js +0 -0
  375. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/service/help.txt +0 -0
  376. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/service/list.js +0 -0
  377. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/service/start.js +0 -0
  378. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd/view/add.js +0 -0
  379. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd-status-format/package.json +0 -0
  380. /package/framework/{v0.4.7 → v0.5.0}/lib/cmd-status-format/src/main.js +0 -0
  381. /package/framework/{v0.4.7 → v0.5.0}/lib/collection/README.md +0 -0
  382. /package/framework/{v0.4.7 → v0.5.0}/lib/collection/build.json +0 -0
  383. /package/framework/{v0.4.7 → v0.5.0}/lib/collection/package.json +0 -0
  384. /package/framework/{v0.4.7 → v0.5.0}/lib/collection/src/main.js +0 -0
  385. /package/framework/{v0.4.7 → v0.5.0}/lib/config.js +0 -0
  386. /package/framework/{v0.4.7 → v0.5.0}/lib/connector-registry/package.json +0 -0
  387. /package/framework/{v0.4.7 → v0.5.0}/lib/connector-registry/src/main.js +0 -0
  388. /package/framework/{v0.4.7 → v0.5.0}/lib/cron/README.md +0 -0
  389. /package/framework/{v0.4.7 → v0.5.0}/lib/cron/package.json +0 -0
  390. /package/framework/{v0.4.7 → v0.5.0}/lib/cron/src/main.js +0 -0
  391. /package/framework/{v0.4.7 → v0.5.0}/lib/domain/LICENSE +0 -0
  392. /package/framework/{v0.4.7 → v0.5.0}/lib/domain/README.md +0 -0
  393. /package/framework/{v0.4.7 → v0.5.0}/lib/domain/package.json +0 -0
  394. /package/framework/{v0.4.7 → v0.5.0}/lib/domain/src/main.js +0 -0
  395. /package/framework/{v0.4.7 → v0.5.0}/lib/generator/index.js +0 -0
  396. /package/framework/{v0.4.7 → v0.5.0}/lib/i18n/package.json +0 -0
  397. /package/framework/{v0.4.7 → v0.5.0}/lib/i18n/src/main.js +0 -0
  398. /package/framework/{v0.4.7 → v0.5.0}/lib/index.js +0 -0
  399. /package/framework/{v0.4.7 → v0.5.0}/lib/inherits/LICENSE +0 -0
  400. /package/framework/{v0.4.7 → v0.5.0}/lib/inherits/README.md +0 -0
  401. /package/framework/{v0.4.7 → v0.5.0}/lib/inherits/package.json +0 -0
  402. /package/framework/{v0.4.7 → v0.5.0}/lib/inherits/src/main.js +0 -0
  403. /package/framework/{v0.4.7 → v0.5.0}/lib/inspector-redact/package.json +0 -0
  404. /package/framework/{v0.4.7 → v0.5.0}/lib/inspector-redact/src/main.js +0 -0
  405. /package/framework/{v0.4.7 → v0.5.0}/lib/instrument/package.json +0 -0
  406. /package/framework/{v0.4.7 → v0.5.0}/lib/instrument/src/main.js +0 -0
  407. /package/framework/{v0.4.7 → v0.5.0}/lib/job/package.json +0 -0
  408. /package/framework/{v0.4.7 → v0.5.0}/lib/job/src/main.js +0 -0
  409. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/README.md +0 -0
  410. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/package.json +0 -0
  411. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/containers/default/index.js +0 -0
  412. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/containers/file/index.js +0 -0
  413. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  414. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  415. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/containers/mq/index.js +0 -0
  416. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/containers/mq/listener.js +0 -0
  417. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/containers/mq/speaker.js +0 -0
  418. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/helper.js +0 -0
  419. /package/framework/{v0.4.7 → v0.5.0}/lib/logger/src/main.js +0 -0
  420. /package/framework/{v0.4.7 → v0.5.0}/lib/math/index.js +0 -0
  421. /package/framework/{v0.4.7 → v0.5.0}/lib/mcp-dispatch/package.json +0 -0
  422. /package/framework/{v0.4.7 → v0.5.0}/lib/mcp-dispatch/src/main.js +0 -0
  423. /package/framework/{v0.4.7 → v0.5.0}/lib/mcp-http/package.json +0 -0
  424. /package/framework/{v0.4.7 → v0.5.0}/lib/mcp-http/src/main.js +0 -0
  425. /package/framework/{v0.4.7 → v0.5.0}/lib/mcp-server/package.json +0 -0
  426. /package/framework/{v0.4.7 → v0.5.0}/lib/mcp-server/src/main.js +0 -0
  427. /package/framework/{v0.4.7 → v0.5.0}/lib/merge/README.md +0 -0
  428. /package/framework/{v0.4.7 → v0.5.0}/lib/merge/package.json +0 -0
  429. /package/framework/{v0.4.7 → v0.5.0}/lib/merge/src/main.js +0 -0
  430. /package/framework/{v0.4.7 → v0.5.0}/lib/metrics/package.json +0 -0
  431. /package/framework/{v0.4.7 → v0.5.0}/lib/metrics/src/main.js +0 -0
  432. /package/framework/{v0.4.7 → v0.5.0}/lib/model.js +0 -0
  433. /package/framework/{v0.4.7 → v0.5.0}/lib/nunjucks-filters/README.md +0 -0
  434. /package/framework/{v0.4.7 → v0.5.0}/lib/nunjucks-filters/package.json +0 -0
  435. /package/framework/{v0.4.7 → v0.5.0}/lib/nunjucks-filters/src/main.js +0 -0
  436. /package/framework/{v0.4.7 → v0.5.0}/lib/nunjucks-resolver/package.json +0 -0
  437. /package/framework/{v0.4.7 → v0.5.0}/lib/nunjucks-resolver/src/main.js +0 -0
  438. /package/framework/{v0.4.7 → v0.5.0}/lib/proc.js +0 -0
  439. /package/framework/{v0.4.7 → v0.5.0}/lib/routing/README.md +0 -0
  440. /package/framework/{v0.4.7 → v0.5.0}/lib/routing/build.json +0 -0
  441. /package/framework/{v0.4.7 → v0.5.0}/lib/routing/package.json +0 -0
  442. /package/framework/{v0.4.7 → v0.5.0}/lib/routing/src/main.js +0 -0
  443. /package/framework/{v0.4.7 → v0.5.0}/lib/routing/src/radix.js +0 -0
  444. /package/framework/{v0.4.7 → v0.5.0}/lib/routing-introspect/package.json +0 -0
  445. /package/framework/{v0.4.7 → v0.5.0}/lib/routing-introspect/src/main.js +0 -0
  446. /package/framework/{v0.4.7 → v0.5.0}/lib/secrets/package.json +0 -0
  447. /package/framework/{v0.4.7 → v0.5.0}/lib/secrets/src/backends/env.js +0 -0
  448. /package/framework/{v0.4.7 → v0.5.0}/lib/secrets/src/main.js +0 -0
  449. /package/framework/{v0.4.7 → v0.5.0}/lib/session-store.js +0 -0
  450. /package/framework/{v0.4.7 → v0.5.0}/lib/shell.js +0 -0
  451. /package/framework/{v0.4.7 → v0.5.0}/lib/state.js +0 -0
  452. /package/framework/{v0.4.7 → v0.5.0}/lib/swig-filters/README.md +0 -0
  453. /package/framework/{v0.4.7 → v0.5.0}/lib/swig-filters/package.json +0 -0
  454. /package/framework/{v0.4.7 → v0.5.0}/lib/swig-filters/src/main.js +0 -0
  455. /package/framework/{v0.4.7 → v0.5.0}/lib/swig-resolver/package.json +0 -0
  456. /package/framework/{v0.4.7 → v0.5.0}/lib/swig-resolver/src/main.js +0 -0
  457. /package/framework/{v0.4.7 → v0.5.0}/lib/template-loaders/package.json +0 -0
  458. /package/framework/{v0.4.7 → v0.5.0}/lib/template-loaders/src/loaders/http.js +0 -0
  459. /package/framework/{v0.4.7 → v0.5.0}/lib/template-loaders/src/loaders/memory.js +0 -0
  460. /package/framework/{v0.4.7 → v0.5.0}/lib/template-loaders/src/main.js +0 -0
  461. /package/framework/{v0.4.7 → v0.5.0}/lib/url/README.md +0 -0
  462. /package/framework/{v0.4.7 → v0.5.0}/lib/url/index.js +0 -0
  463. /package/framework/{v0.4.7 → v0.5.0}/lib/url/routing.json +0 -0
  464. /package/framework/{v0.4.7 → v0.5.0}/lib/uuid/package.json +0 -0
  465. /package/framework/{v0.4.7 → v0.5.0}/lib/uuid/src/main.js +0 -0
  466. /package/framework/{v0.4.7 → v0.5.0}/lib/validator.js +0 -0
  467. /package/framework/{v0.4.7 → v0.5.0}/lib/watcher/package.json +0 -0
  468. /package/framework/{v0.4.7 → v0.5.0}/lib/watcher/src/main.js +0 -0
  469. /package/framework/{v0.4.7 → v0.5.0}/lib/ws-framing/package.json +0 -0
  470. /package/framework/{v0.4.7 → v0.5.0}/lib/ws-framing/src/main.js +0 -0
  471. /package/framework/{v0.4.7 → v0.5.0}/lib/ws-session/package.json +0 -0
  472. /package/framework/{v0.4.7 → v0.5.0}/lib/ws-session/src/main.js +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,12 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
6
6
  and is generated by [Changie](https://github.com/miniscruff/changie).
7
7
 
8
8
 
9
+ ## 0.5.0 - 2026-06-11
10
+ ### Added
11
+ * ESM compatibility layer (#M10): package.json now declares an "exports" map with dual CJS/ESM entry points — `import gina from 'gina'` and `import gna from 'gina/gna'` work natively in ESM projects and modern bundlers (default exports only; the gina/gna getter semantics are preserved). CJS `require()` resolution is byte-identical to before, and TypeScript declarations keep resolving via per-entry "types" conditions. The documented public surface is the bare specifier, ./gna and ./package.json; undeclared deep subpaths are no longer resolvable.
12
+ * Extension-keyed template-engine dispatch (#M11): a single bundle can now mix swig and nunjucks — a templates.json section declaring `"ext": ".njk"` (or a `self.setTemplate(file, '.njk')` call) renders through nunjucks and `".swig"` through swig, regardless of the bundle-level `render.engine` setting; `.html` and any other extension keep following `render.engine`, so existing bundles are unchanged. Bundles with `.njk` sections get the same fail-fast NUNJUCKS_NOT_INSTALLED startup check as `render.engine: "nunjucks"` bundles.
13
+ * Nunjucks Inspector parity (#M11): dev-mode nunjucks pages now render the Inspector statusbar (the statusbar template is rendered through nunjucks and spliced post-render with a dollar-safe function replacer) and expose the query log as `data.page.queries` alongside the already-piped flow timeline — the Inspector Queries tab no longer renders empty for nunjucks bundles. Closes the within-Inspector parity gaps against the swig render path.
14
+
9
15
  ## 0.4.7 - 2026-06-11
10
16
  ### Added
11
17
  * Csp plugin: new opt-in reportOnlyOmit option — an array of directive names to omit from a Content-Security-Policy-Report-Only header and emit again automatically when reportOnly flips to false, so one directive set covers both modes. Built for engine-divergent directives such as frame-ancestors (reported in report-only by Chrome and Firefox, ignored with a console warning by Safari/WebKit): a bundle can trade the Gecko/Blink report signal for a clean WebKit console as an explicit, lifecycle-managed choice. Entries are validated against the CSP Level 3 whitelist, a factory-time warning names what was dropped, and the default output is unchanged.
package/README.md CHANGED
@@ -22,7 +22,7 @@ Node.js MVC framework with built-in HTTP/2, multi-bundle architecture, and scope
22
22
  | ORM / entities | EventEmitter-based entity system; SQL files auto-wired to entity methods |
23
23
  | Connectors | Couchbase, MongoDB, ScyllaDB / Cassandra, MySQL, PostgreSQL, Redis, SQLite, AI (LLM) — loaded from project `node_modules` |
24
24
  | AI connector | Any LLM provider via named protocol (`anthropic://`, `openai://`, `ollama://`, …) |
25
- | Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.7.2 — maintained fork with CVE-2023-25345 patched; streaming SSE/chunked via `renderStream()`. Nunjucks supported as opt-in via `render.engine = "nunjucks"` |
25
+ | Template engine | [`@rhinostone/swig`](https://github.com/gina-io/swig) 2.7.2 — maintained fork with CVE-2023-25345 patched; streaming SSE/chunked via `renderStream()`. Nunjucks supported as opt-in via `render.engine = "nunjucks"` or per-section `"ext": ".njk"` |
26
26
  | Internationalisation | Per-bundle JSON catalogs, `t()` helper, swig + nunjucks `t` filter, CLDR plurals, ICU MessageFormat opt-in via `t.icu()` |
27
27
  | Observability | Built-in `/_gina/metrics` Prometheus endpoint (opt-in, IP-allowlisted) — Node.js process metrics + HTTP counter / duration histogram with cardinality-safe route labels |
28
28
  | Hot reload | WatcherService evicts `require.cache` only on file change — zero per-request overhead in dev |
@@ -39,12 +39,11 @@ gina bundle:start api @myproject
39
39
  open https://localhost:3100
40
40
  ```
41
41
 
42
- ## What's in 0.4.7
42
+ ## What's in 0.5.0
43
43
 
44
- - **WebSocket over HTTP/2 (opt-in).** HTTP/2 bundles can serve WebSocket endpoints over the RFC 8441 extended-CONNECT transport, with a built-in dependency-free RFC 6455 framing codec no external WebSocket library. Enable with `http2Options.enableConnectProtocol: true`, then register handlers from `onInitialize` with `app.onWebSocket(path, handler)`: each accepted stream arrives as a session with a `send`/`ping`/`close` API, automatic pong replies, payload and fragment caps, and a graceful close handshake.
45
- - **HTTP/2 hardening parity for h2c.** Cleartext HTTP/2 bundles (for example, backends behind a TLS-terminating reverse proxy) now receive the same hardening as `https` bundlesthe stream caps, session flood defenses, and `settings.json` `http2Options` overrides all apply, where previously such bundles ran protocol defaults (effectively unlimited concurrent streams with server push enabled) and silently ignored their overrides.
46
- - **Graceful shutdown for live sockets.** Bundles with open WebSocket or engine.io connections no longer block SIGTERM shutdown until the hard timeout every live socket is closed cleanly before the HTTP server closes, WebSockets with a `1001 going away` close handshake.
47
- - **CSP `reportOnlyOmit` (opt-in).** Omit engine-divergent directives such as `frame-ancestors` from `Content-Security-Policy-Report-Only` headers and have them restored automatically when `reportOnly` flips to `false` — one directive set across both modes, validated against the CSP Level 3 whitelist.
44
+ - **Native ESM entry points.** `package.json` now declares an `"exports"` map with dual CJS/ESM entries `import gina from 'gina'` and `import gna from 'gina/gna'` work natively in ESM projects and modern bundlers (default exports only; the `gina/gna` getters resolve at access time, after framework boot). CJS `require()` resolution is byte-identical to before, and TypeScript declarations keep resolving through per-entry `types` conditions. Note: with the `exports` map in place, the package's Node-resolvable surface is exactly `gina`, `gina/gna`, and `gina/package.json` undeclared deep subpaths are no longer resolvable.
45
+ - **Mixed template engines per bundle.** A `templates.json` section declaring `"ext": ".njk"` (or a `self.setTemplate(file, '.njk')` call) renders through nunjucks and `".swig"` through swig regardless of the bundle-level `render.engine` setting. `.html` and any other extension keep following `render.engine`, so existing bundles are unchanged. Bundles with `.njk` sections get the same fail-fast `NUNJUCKS_NOT_INSTALLED` startup check as nunjucks-engine bundles.
46
+ - **Nunjucks Inspector parity (dev mode).** Dev-mode nunjucks pages now render the Inspector statusbar and expose the query log as `data.page.queries` alongside the flow timeline the Inspector Queries tab no longer renders empty for nunjucks bundles.
48
47
 
49
48
  See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
50
49
 
package/ROADMAP.md CHANGED
@@ -24,7 +24,8 @@ This roadmap covers planned features, architectural improvements, new connectors
24
24
  | **Q2 2026** | `0.3.9` ✅ | Consumer-feedback batch (11 framework patches): per-request middleware dispatch isolation · Couchbase 4.x JsonTranscoder · `length` filter null safety · `process.env` mirroring · 6 nunjucks render-pipeline patches (libRef fallback · namespace prefix drop · bundle filter wraps · top-level userData · `data.data` alias · ginaLoader placeholders) · `getAssets` mid-URL `{{ }}` strip-guard anchor |
25
25
  | **Q2 2026** | `0.3.10` ✅ | FormValidator HTML5 form-reassociation hardening trilogy (`HTMLFormControlsCollection`-based `bindForm` + `unbindForm` symmetry · radio mutual-exclusion + IDL/attribute reconciliation · `defaultChecked` cache for reset) · `X-Forwarded-Prefix` reverse-proxy path-prefix awareness |
26
26
  | **Q4 2026** | `0.4.0` | AI agents (MCP) · ScyllaDB connector · Advanced tutorial · Website redesign · Docs offline ZIP · Bun investigation · Couchbase v2 removal · Trailer support · CLI Tier 2 (bundle/project status, rename, copy, protocol:remove, minions) |
27
- | **Q1 2027** | `0.5.0` | ESM support · Template engine migration · Structured logging · Alt-Svc · HTTP/2 priorities · WebSocket over HTTP/2 · Inspector Production · CLI Tier 3 (project:move, framework:update, backup/restore, man pages) |
27
+ | **Q2 2026** | `0.5.0` | ESM entry points (dual CJS/ESM `exports` map) · Mixed template engines per bundle (extension-keyed `.njk` / `.swig` dispatch) · Nunjucks Inspector parity the other items originally targeted here shipped earlier: structured logging (`0.4.5`), Alt-Svc (`0.4.2`), WebSocket over HTTP/2 (`0.4.7`), Inspector production auth (`0.4.3`) |
28
+ | **Q1 2027** | `0.5.x` | HTTP/2 priorities (blocked on Node scheduler hooks) · CLI Tier 3 (project:move, framework:update, backup/restore, man pages) · Beemaster admin + visual translation editor |
28
29
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
29
30
 
30
31
  ---
@@ -117,8 +118,8 @@ Stub commands confirmed in source — handler files exist but are empty or comme
117
118
 
118
119
  | Status | Feature | Version | Target |
119
120
  | --- | --- | --- | --- |
120
- | 📋 | **ESM compatibility layer** — Dual CJS/ESM entry points via `"exports"` in `package.json`. Framework internals stay CJS; public API gets ESM re-exports. | `0.5.0` | Q1 2027 |
121
- | 🚧 | **Pluggable template engine** — **Partially shipped in `0.3.7`**: opt-in `render.engine = "nunjucks"` dispatch per bundle. The project installs `nunjucks` itself (no framework dep); Gina loads it via `lib/nunjucks-resolver` and routes through `controller.render-nunjucks.js`. Swig remains the default, runs unchanged. Inspector dev payload, HTTP/2 `stream.respond()` direct path, and error-page template routing all shipped in `0.3.7-alpha.2`. **Closing the parity gap on the `0.3.7` ASAP track** (see Nunjucks Parity below): filter registry port, `setResources` / `<gina>` layout placeholders, static HTML cache parity, Early Hints 103 auto-send. **Remaining `0.5.0` scope**: within-Inspector sub-items (`statusbar.html` include + flow/queries pipelines); per-template-extension dispatch so a single bundle can mix engines (`.swig` / `.njk`); optional auto-detect on `.njk` presence. Breaking syntax differences (`{% parent %}` → `{{ super() }}`, filter renames, `autoescape` default, `date` format strings, no `{% spaceless %}`) are nunjucks's own — Gina doesn't paper over them. | `0.5.0` | Q1 2027 |
121
+ | | **ESM compatibility layer** — **Shipped**: `package.json` declares an `"exports"` map with dual CJS/ESM entry points. `import gina from 'gina'` and `import gna from 'gina/gna'` work natively in ESM projects and modern bundlers (default exports only — the `gina/gna` getters resolve at access time, after framework boot, so they are passed through as a namespace rather than frozen into named exports). Framework internals stay CJS and `require()` resolution is byte-identical; TypeScript declarations resolve via per-entry `types` conditions. The documented public surface is the bare specifier, `./gna`, and `./package.json` — undeclared deep subpaths are no longer resolvable. | `0.5.0` | 2026-06-11 |
122
+ | | **Pluggable template engine** — **Complete**: opt-in `render.engine = "nunjucks"` dispatch per bundle shipped in `0.3.7` (the project installs `nunjucks` itself no framework dep; Gina loads it via `lib/nunjucks-resolver` and routes through `controller.render-nunjucks.js`; swig remains the default and runs unchanged), followed by the four-session parity track (filter registry, `setResources` / `<gina>` layout placeholders, static HTML cache, Early Hints 103) and the `0.3.9` consumer-feedback patches. **The `0.5.0` scope shipped 2026-06-11**: per-template-extension dispatch — a templates.json section declaring `"ext": ".njk"` (or a `self.setTemplate(file, '.njk')` call) renders through nunjucks and `".swig"` through swig regardless of the bundle-level `render.engine`, so a single bundle can mix engines with no new config keys (`.html` keeps following `render.engine`; bundles with `.njk` sections get the same fail-fast NUNJUCKS_NOT_INSTALLED startup check); nunjucks Inspector parity — the dev statusbar and the query log (`data.page.queries`) now ship alongside the flow timeline. Auto-detect on `.njk` presence was dropped: explicit per-section `ext` config covers the use case without init-time filesystem magic. Breaking syntax differences (`{% parent %}` → `{{ super() }}`, filter renames, `autoescape` default, `date` format strings, no `{% spaceless %}`) are nunjucks's own — Gina doesn't paper over them. | `0.5.0` | 2026-06-11 |
122
123
  | ✅ | **Structured logging** — **Shipped in `0.4.5`**: set `GINA_LOG_FORMAT=json` for one machine-parseable object per log line (`{ ts, level, bundle, message }`); the coloured, human-readable format stays the default, so `docker logs` is unchanged. Additive — existing consumers are unaffected. Enables log aggregation (Loki, Datadog, CloudWatch). When JSON output is on, every line emitted during a request also carries per-request `requestId` (honouring an inbound `X-Request-Id` when well-formed, else generated) and `durationMs` for correlation. | `0.4.5` | 2026-06-06 |
123
124
  | ✅ | **Research `AsyncLocalStorage` for request context** — Concluded (2026-06-06): a full `local`→`AsyncLocalStorage` migration was evaluated and **declined** (per-request isolation already exists via per-request controller instances; the hot closure paths get *more* fragile under `getStore()`). The one win — a narrow always-on `{ requestId, startMs }` context — shipped in `0.4.5` as the substrate for the per-request log fields above. | `0.4.5` | 2026-06-06 |
124
125
 
@@ -0,0 +1 @@
1
+ 0.5.0
@@ -1199,6 +1199,41 @@ function SuperController(options) {
1199
1199
  }
1200
1200
  } catch (e) { /* fall back to default 'swig' */ }
1201
1201
 
1202
+ // #M11 — extension-keyed engine dispatch. An explicit template
1203
+ // extension is an unambiguous engine signal, so a single bundle can
1204
+ // mix engines per section (templates.json `ext`) or per
1205
+ // `self.setTemplate(file, ext)` call: `.njk` renders through
1206
+ // nunjucks, `.swig` through swig. The precedence mirrors the
1207
+ // delegates' own resolution (setTemplate override ext first, then
1208
+ // the rule's template ext) so the dispatch can never disagree with
1209
+ // the file the delegate resolves; the ambiguous `.html` default —
1210
+ // and any other extension — keeps following `render.engine` above,
1211
+ // which leaves every existing bundle byte-unchanged.
1212
+ // initNunjucksEngine scans templates.json for `.njk` sections so a
1213
+ // mixed bundle still fails fast at startup when the project lacks
1214
+ // nunjucks; a pure-runtime `.njk` switch (setTemplate on a bundle
1215
+ // with no `.njk` config at all) surfaces the resolver's explicit
1216
+ // "get() called before load()" error instead.
1217
+ try {
1218
+ var _effExt = null;
1219
+ if ( local.options && local.options._templateOverride && local.options._templateOverride.ext ) {
1220
+ _effExt = local.options._templateOverride.ext;
1221
+ } else if ( local.options && local.options.template && local.options.template.ext ) {
1222
+ _effExt = local.options.template.ext;
1223
+ }
1224
+ if (_effExt) {
1225
+ _effExt = String(_effExt).toLowerCase();
1226
+ if ( !/^\./.test(_effExt) ) {
1227
+ _effExt = '.' + _effExt;
1228
+ }
1229
+ if (_effExt === '.njk') {
1230
+ _engine = 'nunjucks';
1231
+ } else if (_effExt === '.swig') {
1232
+ _engine = 'swig';
1233
+ }
1234
+ }
1235
+ } catch (e) { /* keep the settings-level engine */ }
1236
+
1202
1237
  var _delegate;
1203
1238
  if (_engine === 'nunjucks') {
1204
1239
  // #TPL1 — a nunjucks bundle with a configured async loader renders
@@ -26,14 +26,14 @@
26
26
  * + `<script>window.__ginaLogs = ...</script>` are injected before `</body>`
27
27
  * in dev mode, redacted via `lib/inspector-redact`, stashed on
28
28
  * `self.serverInstance._lastGinaData`, and emitted via
29
- * `process.emit('inspector#data')`. Within this port, **statusbar.html
30
- * inclusion is still deferred**the swig template uses `{% include %}`
31
- * with swig-specific syntax; a nunjucks-compatible statusbar template
32
- * is a separate follow-up. `data.page.flow` (flow timeline from
33
- * `local._timeline`) and `data.page.queries` (query log from
34
- * `local._queryLog`) are also not yet piped into the Inspector payload
35
- * — the data is computed in render-swig.js around lines 980-1040 and
36
- * belongs in a shared helper before porting.
29
+ * `process.emit('inspector#data')`. The within-port follow-ups shipped
30
+ * with #M11: the dev statusbar.html body a leaf with only `{% if %}`
31
+ * / `{{ }}` tags, valid nunjucks is rendered through the resolver
32
+ * module's `renderString()` and spliced post-render (render-swig
33
+ * inlines the same body into the layout pre-compile — #TPL2), and both
34
+ * `data.page.flow` (flow timeline from `local._timeline`) and
35
+ * `data.page.queries` (query log from `local._queryLog`) are piped
36
+ * into the Inspector payload inside `injectInspectorScripts()`.
37
37
  * 2. ~~**HTTP/2 `stream.respond()` direct path**~~ — **shipped 2026-04-22**
38
38
  * (commit TBD). `sendHtmlResponse` now implements the four-way branch
39
39
  * from `class.controller.md §7b` (HEAD×stream, HEAD×HTTP1.1, body×stream,
@@ -230,12 +230,12 @@ function resolveTemplatePath(data, localOptions) {
230
230
  if (effective === localOptions.namespace) {
231
231
  effective = 'index';
232
232
  }
233
- // FRAMEWORK PATCH: drop redundant `<namespace>-` prefix
234
- // from the file segment when present, so `project/project-get.njk`
235
- // resolves to `project/get.njk` (and `client/client-list.njk` to
233
+ // Drop the redundant `<namespace>-` prefix from the file segment
234
+ // when present, so `project/project-get.njk` resolves to
235
+ // `project/get.njk` (and `client/client-list.njk` to
236
236
  // `client/list.njk`). Lets route names that already carry the
237
237
  // namespace (e.g. `project-get`, `client-list`) live at the cleaner
238
- // `<namespace>/<action>.njk` path. Push upstream to gina-io/gina.
238
+ // `<namespace>/<action>.njk` path. Upstreamed in 0.3.9.
239
239
  var nsPrefix = localOptions.namespace + '-';
240
240
  if (effective.length > nsPrefix.length && effective.indexOf(nsPrefix) === 0) {
241
241
  effective = effective.substring(nsPrefix.length);
@@ -252,10 +252,12 @@ function resolveTemplatePath(data, localOptions) {
252
252
  }
253
253
 
254
254
  /**
255
- * Builds the Inspector dev-payload scripts and injects them into the
256
- * rendered HTML just before `</body>`. Mirrors render-swig.js:1041-1128
257
- * but without the `statusbar.html` `{% include %}` (that template is
258
- * swig-specific a nunjucks-compatible version is a follow-up).
255
+ * Builds the Inspector dev-payload scripts + the dev statusbar and injects
256
+ * them into the rendered HTML just before `</body>`. Mirrors render-swig.js
257
+ * (#TPL2 inlines the statusbar.html body into the layout pre-compile; here
258
+ * the engine pass has already happened, so the statusbar body — a leaf with
259
+ * only `{% if %}` / `{{ }}` tags, valid nunjucks — is rendered through the
260
+ * resolver module's `renderString()` and spliced as plain HTML).
259
261
  *
260
262
  * Runs only in dev mode (`self.isCacheless()`), gated by `displayInspector`:
261
263
  *
@@ -323,6 +325,13 @@ function injectInspectorScripts(html, data, self, local, displayInspector) {
323
325
  };
324
326
  }
325
327
 
328
+ // #M11 — Inspector Queries tab parity with render-swig: expose the raw
329
+ // QI query log alongside the flow-timeline fold-in above, so
330
+ // `__ginaData.user.queries` exists for nunjucks pages too.
331
+ if (local._queryLog && local._queryLog.length > 0) {
332
+ data.page.queries = local._queryLog;
333
+ }
334
+
326
335
  // Two deep clones — one labelled gina (metadata for the Inspector
327
336
  // sidebar), one labelled user (mirrors what application code sees).
328
337
  // JSON.parse(JSON.stringify(...)) is intentional: it drops functions,
@@ -450,10 +459,32 @@ function injectInspectorScripts(html, data, self, local, displayInspector) {
450
459
  process.emit('inspector#data', __gdPayload);
451
460
  } catch (e) { /* listener raised — not fatal to the render */ }
452
461
 
462
+ // #M11 — dev statusbar parity with render-swig. statusbar.html is a leaf
463
+ // template (only {% if page.cspNonce %} + {{ }} tags — valid nunjucks),
464
+ // but this helper runs AFTER the engine pass, so the body is rendered
465
+ // through the resolver module's renderString() and spliced as plain
466
+ // HTML. Read per-render so dev edits hot-reload; this path is
467
+ // dev/inspector-gated above, so there is no production read.
468
+ var _statusbarHtml = '';
469
+ try {
470
+ var _statusbarTpl = fs.readFileSync(
471
+ getPath('gina').core + '/asset/plugin/dist/vendor/gina/html/statusbar.html', 'utf8'
472
+ );
473
+ _statusbarHtml = require('../../lib/nunjucks-resolver').get().renderString(_statusbarTpl, data);
474
+ } catch (_sbErr) {
475
+ console.warn('[render] Inspector statusbar unavailable: ' + (_sbErr.message || _sbErr));
476
+ }
477
+
453
478
  // Inject before the first `</body>`. Case-insensitive match; the
454
479
  // surrounding newline + tab match render-swig's formatting so the
455
480
  // diff against a rendered swig-then-nunjucks page is cosmetic-only.
456
- return html.replace(/<\/body>/i, '\t' + __logsScript + __gdScript + '\n\t</body>');
481
+ // $-safe splice (function replacer): with a STRING replacement,
482
+ // String.prototype.replace expands dollar patterns — the statusbar body
483
+ // literally contains two of them, and the JSON payloads can carry them
484
+ // in user data. The function form returns the text verbatim; mirrors
485
+ // render-swig.js's #TPL2 splice fix.
486
+ var _injected = '\t' + __logsScript + __gdScript + _statusbarHtml + '\n\t</body>';
487
+ return html.replace(/<\/body>/i, function () { return _injected; });
457
488
  }
458
489
 
459
490
  /**
@@ -414,8 +414,15 @@ function Server(options) {
414
414
  * throws NUNJUCKS_NOT_INSTALLED here, terminating bundle startup with
415
415
  * a clear error — rendering with a stub would mask the misconfig.
416
416
  *
417
- * No-op when render.engine is unset or "swig" the existing swig
418
- * engine init handles that case via initSwigEngine below.
417
+ * No-op when render.engine is unset or "swig" AND no templates.json
418
+ * section declares a `.njk` extension the existing swig engine init
419
+ * handles that case via initSwigEngine below. A bundle whose
420
+ * settings-level engine is swig can still mix in nunjucks-rendered
421
+ * sections via per-section templates.json `ext` declarations (#M11:
422
+ * `.njk` routes through the nunjucks delegate at dispatch time), so
423
+ * nunjucks is initialised for those bundles too and a missing project
424
+ * nunjucks install fails at startup instead of 500-ing the first
425
+ * `.njk` render.
419
426
  *
420
427
  * @inner
421
428
  * @private
@@ -424,7 +431,22 @@ function Server(options) {
424
431
  var initNunjucksEngine = function(conf) {
425
432
  var _settings = (conf && conf.content && conf.content.settings) || {};
426
433
  var _engine = (_settings.render && _settings.render.engine) || 'swig';
427
- if (_engine !== 'nunjucks') { return; }
434
+ // #M11 extension-keyed mixing: any templates.json section whose
435
+ // `ext` is `.njk` (or `njk`) dispatches through nunjucks even when
436
+ // the settings-level engine is swig, so those bundles need the
437
+ // same fail-fast startup init.
438
+ var _hasNjkSection = false;
439
+ try {
440
+ var _tpls = (conf && conf.content && conf.content.templates) || {};
441
+ for (var _section in _tpls) {
442
+ var _sectionExt = _tpls[_section] && _tpls[_section].ext;
443
+ if ( _sectionExt && /^\.?njk$/i.test(String(_sectionExt)) ) {
444
+ _hasNjkSection = true;
445
+ break;
446
+ }
447
+ }
448
+ } catch (e) { /* fall through — the settings-level engine decides */ }
449
+ if (_engine !== 'nunjucks' && !_hasNjkSection) { return; }
428
450
  var _nunjucksSettings = _settings.nunjucks || {};
429
451
  // load() throws NUNJUCKS_NOT_INSTALLED if the project does not have
430
452
  // nunjucks in its node_modules — we intentionally let that propagate
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gina-framework",
3
- "version": "0.4.7-alpha.2",
3
+ "version": "0.4.8-alpha.2",
4
4
  "dependencies": {
5
5
  "@rhinostone/swig": "^2.7.2",
6
6
  "intl-messageformat": "^11.2.4",
package/gna.js CHANGED
@@ -15,14 +15,14 @@
15
15
  'use strict';
16
16
 
17
17
  // Framework core — the main gna module (lifecycle hooks, lib, etc.)
18
- var _gna = require('./framework/v0.4.7/core/gna');
18
+ var _gna = require('./framework/v0.5.0/core/gna');
19
19
 
20
20
  // SuperController and EntitySuper — loaded from their source modules
21
- var SuperController = require('./framework/v0.4.7/core/controller');
22
- var EntitySuper = require('./framework/v0.4.7/core/model/entity');
21
+ var SuperController = require('./framework/v0.5.0/core/controller');
22
+ var EntitySuper = require('./framework/v0.5.0/core/model/entity');
23
23
 
24
24
  // uuid — from the lib registry
25
- var uuid = require('./framework/v0.4.7/lib/uuid');
25
+ var uuid = require('./framework/v0.5.0/lib/uuid');
26
26
 
27
27
  module.exports = {
28
28
 
package/gna.mjs ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Gina — ESM counterpart of `require('gina/gna')` (#M10)
3
+ *
4
+ * import gna from 'gina/gna';
5
+ *
6
+ * // destructure AFTER framework boot — see below
7
+ * const { getContext, getConfig } = gna;
8
+ *
9
+ * Default export ONLY, on purpose: the CJS module exposes getter
10
+ * properties that resolve at ACCESS time (after framework boot). Static
11
+ * named ESM re-exports would capture `undefined` before boot, so the
12
+ * getter namespace is passed through untouched.
13
+ */
14
+ import { createRequire } from 'node:module';
15
+
16
+ const require = createRequire(import.meta.url);
17
+
18
+ const gnaHelpers = require('./gna.js');
19
+
20
+ export default gnaHelpers;
package/index.mjs ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Gina — ESM entry point (#M10)
3
+ *
4
+ * Mirrors `require('gina')` for ESM consumers and modern bundlers:
5
+ *
6
+ * import gina from 'gina';
7
+ *
8
+ * gina.onInitialize(function (event, conf) { ... });
9
+ * gina.start();
10
+ *
11
+ * Default export ONLY — the framework object is assembled at runtime by
12
+ * the CJS core (lifecycle hooks, lib registry, plugins), so the namespace
13
+ * default is the honest ESM surface; static named re-exports would freeze
14
+ * values at import time.
15
+ *
16
+ * The core is resolved through package.json's `main` field so this file
17
+ * never carries a version-pinned framework path (no version-bump coupling).
18
+ * Importing outside a spawned bundle child has exactly the semantics of
19
+ * `require('gina')` there — the framework bootstrap expects the bundle
20
+ * context and throws without it.
21
+ */
22
+ import { createRequire } from 'node:module';
23
+
24
+ const require = createRequire(import.meta.url);
25
+
26
+ const gna = require(require('./package.json').main);
27
+
28
+ export default gna;
package/llms.txt CHANGED
@@ -951,3 +951,7 @@ Dev-mode query instrumentation captures every database query tied to the current
951
951
  168. **Never hardcode `framework/v<version>` paths in test fixtures, test harnesses, or CI workflows — derive the dir from `package.json` at runtime; enforced by `test/lib/e2e-no-version-pins.test.js`.** The framework directory is renamed at every release cut (the stable rename plus two alpha bumps), so a version-pinned path is green on every CI run between cuts and breaks exactly at the release — polluting the cut's CI signal — and the tag's tree (merged to master, which only moves via tag merges) then carries a deterministic red until the NEXT tag. Incident shape (v0.4.6): an e2e fixture linked the built stylesheet via a literal `framework/v0.4.6-alpha.2/...` href; both post-rename pushes went red with CSS-initial-value failures (`overflow: visible` where the scroll-lock expects `hidden`, `transition-property: all` where the enter transition expects `opacity`) — the diagnostic tell that the page's JS ran but its stylesheet didn't load. Fix: serve fixtures through `test/e2e/runtime-server.js`, which resolves `framework/v<version>` from `package.json` (the same idiom as the CI workflows' `FW_DIR="framework/v${VERSION}"`). The guard test sweeps `test/e2e/**`, `.github/workflows/**`, and `playwright.config.js` for `framework/v<digit>` literals in the gated suite, so a reintroduced pin fails at commit time instead of at the cut; the regex is digit-anchored so `framework/v<version>` prose, `v${VERSION}` interpolation, and `v*` glob pathspecs never match, and it carries per-directory non-empty-sweep pins so a dir move cannot hollow it into a silent always-green no-op. `gna.js` and the root `package.json` `main` field carry the literal BY DESIGN — the release scripts rewrite them atomically with the dir rename (dir name == `package.json` version at every commit), so they are maintained surfaces, deliberately not swept. A post-rename pre-publish Playwright smoke was measured and declined: with zero literals enforced, every committed tree is rename-consistent by construction, and dist staleness (the other tag-tree drift class) is the bundle-freshness gate's job. Established 2026-06-11 (commits `37281177` + `26ff8e83`).
952
952
 
953
953
  169. **WebSocket over HTTP/2 shipped (develop 2026-06-11, target `0.5.0`; commits `a1bf4d95` transport + `a5f29e5f` codec + `f6ebca90` bridge/API).** Three layers, each with a measured lesson. (1) Transport (Isaac engine): strict `=== true` opt-in `http2Options.enableConnectProtocol` — a boolean settings key must NEVER reuse the `|| default` idiom of its numeric siblings (the string `"true"` or `1` must not flip a SETTINGS advert); the key lives in the `http2Options.settings` literal, which reaches `createSecureServer` (https) and the cleartext `createServer` branches alike since the h2c flood-defense parity fix (2026-06-11 — before it, the cleartext branches passed a bare `{ allowHTTP1 }` literal, dropping the SETTINGS advert AND the session flood caps `maxSessionRejectedStreams`/`maxSessionInvalidFrames`, so h2c bundles ran protocol-default limits — effectively unlimited concurrent streams, server push enabled — and silently ignored their settings.json `http2Options` overrides; passing `http2Options` verbatim is safe because TLS material only merges under `/https/` scheme gates). **Extended-CONNECT streams must be handled on the compat `connect` event, not `session.on('stream')`** — Node's http2 compat layer auto-responds 405 to every CONNECT stream and its internal listener is attached at session setup, before any userland session-level listener, so a stream-handler design loses the race with `ERR_HTTP2_HEADERS_SENT`. Registering a `connect` listener suppresses that auto-405 for ALL CONNECT, so every handler path must terminate the stream (an unanswered CONNECT hangs forever), including the HTTP/1.1 CONNECT signature (`(req, socket, head)`, no `request.stream`) the same event receives under `allowHTTP1`. Refusals are HTTP statuses (405 plain-CONNECT byte-parity — the compat default is just `:status`+`date`; 501 unclaimed; 404 unregistered path), not `close(NGHTTP2_REFUSED_STREAM)`: measured client-side, the RST shape yields an opaque stream error with no loggable status and carries retry semantics. With the flag off, nghttp2 rejects extended CONNECT before any app event — default-off deployments are byte-identical. (2) `lib/ws-framing`: dependency-free RFC 6455 codec (UTF-8 via core `buffer.isUtf8`; maxPayload enforced from the DECLARED frame length before buffering; close-code table mirrors the ws predicate). Write-own was chosen after measuring that ws's `exports` map blocks deep-requiring its internals and that conforming vendoring is whole-tarball-only — which would ship a second copy of a package that is already a framework dependency. The maturity gap is covered by a differential oracle in the tests: ws's root export exposes `Receiver`/`Sender` publicly, so frames are cross-checked in both directions and both parsers must refuse unmasked client frames. (3) `lib/ws-session` + `app.onWebSocket(path, handler)`: `onInitialize`'s `app` IS the raw engine server, so the registration API needs zero routing-layer changes; the dispatcher installs lazily (zero registrations keep the 501-unclaimed refusal); handler exceptions are contained (1011 close, never an uncaughtException); sessions register a closer in the SIGTERM drain registry so shutdown sends `1001 going away` instead of blocking the drain — and since the WS shutdown-drain fix (2026-06-11) the pre-existing engine.io and `/_gina/agent` WS sockets register there too (engine.io with a graceful `socket.close()` — its API takes no status code; the agent WS with `ws.close(1001, 'server shutting down')`), each closer added at socket setup and removed in the socket's own close handler, so no live socket surface blocks SIGTERM until the hard timeout anymore. A routing.json-declared WS surface was measured and deferred: the route matcher's allowed-methods list and exact-method gate sit on the hot path and reject CONNECT, and controller dispatch is render-lifecycle-only — every streaming endpoint bypasses routing, and so does this one. Established 2026-06-11.
954
+
955
+ 170. **ESM compatibility layer shipped (#M10, develop 2026-06-11, commit `58bd2570`): strict `exports` map + default-export-only `.mjs` wrappers; four design constraints worth keeping.** (1) The map is STRICT — `.`, `./gna`, `./package.json` only — because a measured survey found nothing else Node-resolved against the package (client-side RequireJS IDs like `gina/validator` are not Node subpaths and are untouched by `exports`); a `"./*"` wildcard would NOT have preserved legacy behaviour anyway, since exports-pattern resolution disables extension-adding and directory-index resolution. (2) Each entry carries a `types` condition FIRST: once `exports` exists, TypeScript's node16/bundler resolution ignores `typesVersions`, so omitting the conditions would silently break declaration resolution for TS consumers. (3) Both wrappers are default-export-only ON PURPOSE — `gna.js` (the `gina/gna` helper module) exposes getter properties that resolve at ACCESS time after framework boot, and static named ESM re-exports would freeze `undefined` pre-boot; `index.mjs` resolves the core via `require(require('./package.json').main)` (createRequire), so it carries no version-pinned path and is NOT a bump-chain member, while the version-pinned `exports['.'].require` IS kept in lockstep with `main` by both bump scripts (prepare_version.js + post_publish.js set it explicitly — package.json is rewritten as a parsed object there, so a generic content-regex never covers it) and the lockstep is test-pinned (`exports['.'].require === main + '.js'`). (4) Test design: `require('gina')` boots the framework and throws outside a spawned bundle child, so the behavioural ESM test stubs the CJS `require.cache` at the resolved core path before `import('gina')` (the wrapper's createRequire shares the global cache); and only the NEGATIVE assertion (`ERR_PACKAGE_PATH_NOT_EXPORTED` on an undeclared subpath) proves the map is active — positive resolutions also succeed via the legacy node_modules walk + `main`.
956
+
957
+ 171. **Per-template-extension engine dispatch + nunjucks Inspector parity shipped (#M11, develop 2026-06-11, commits `18cd093a` + `b2f652cd`).** (1) Dispatch: the effective extension (setTemplate override ext → templates.json section `ext` → the `.html` default — the delegates' OWN precedence, deliberately with no filename sniffing, so the dispatch can never disagree with the file the delegate resolves) keys the engine at `controller.js` `this.render`: `.njk`→nunjucks, `.swig`→swig, anything else follows the bundle-level `render.engine`; one bundle mixes engines with zero new config keys, and existing bundles are byte-unchanged because `.html` follows the setting. `initNunjucksEngine` also runs when any templates.json section declares a `.njk` ext (dotted/dotless/case-insensitive), keeping the boot-time NUNJUCKS_NOT_INSTALLED fail-fast for mixed bundles; a pure-runtime `setTemplate('.njk')` on a bundle with no `.njk` config surfaces the resolver's explicit get()-before-load() error. Auto-detect-on-`.njk`-presence was measured and DROPPED — with ext-keyed dispatch its only residual value was magic ext-defaulting, which explicit per-section `ext` config covers. (2) Inspector parity: `data.page.queries` is piped from `local._queryLog` (same gate shape as render-swig) and the dev statusbar ships for nunjucks — statusbar.html is a LEAF template valid in both engines, but the nunjucks injection point runs AFTER the engine pass, so the body is rendered through the resolver module's `renderString()` and spliced before `</body>` with a $-safe FUNCTION replacer; converting that splice also fixed the latent dollar-expansion hazard the old string-replacement form shared with the pre-#TPL2 swig splice (`$'`/`$\``/`$n` in statusbar source or user-data JSON would splice document fragments into the script). `data.page.flow` had already shipped (#FI) — the roadmap row and the delegate's own header comment claiming otherwise were both stale; verify-before-inheriting caught them.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gina",
3
- "version": "0.4.7",
3
+ "version": "0.5.0",
4
4
  "description": "Node.js MVC framework with built-in HTTP/2, multi-bundle architecture, and scope-based data isolation — no Express dependency",
5
5
  "keywords": [
6
6
  "nodejs",
@@ -72,7 +72,20 @@
72
72
  "gina-container": "bin/gina-container",
73
73
  "gina-init": "bin/gina-init"
74
74
  },
75
- "main": "./framework/v0.4.7/core/gna",
75
+ "main": "./framework/v0.5.0/core/gna",
76
+ "exports": {
77
+ ".": {
78
+ "types": "./types/index.d.ts",
79
+ "import": "./index.mjs",
80
+ "require": "./framework/v0.5.0/core/gna.js"
81
+ },
82
+ "./gna": {
83
+ "types": "./types/gna.d.ts",
84
+ "import": "./gna.mjs",
85
+ "require": "./gna.js"
86
+ },
87
+ "./package.json": "./package.json"
88
+ },
76
89
  "types": "./types/index.d.ts",
77
90
  "typesVersions": {
78
91
  "*": {
@@ -258,7 +258,7 @@
258
258
  "properties": {
259
259
  "engine": {
260
260
  "type": "string",
261
- "description": "Template engine for self.render() HTML output. \"swig\" (default) uses @rhinostone/swig via controller.render-swig.js; \"nunjucks\" uses the project-installed nunjucks package via controller.render-nunjucks.js. When set to \"nunjucks\", bundle startup fails with NUNJUCKS_NOT_INSTALLED if the package is absent from the project's node_modules.",
261
+ "description": "Bundle-level template engine for self.render() HTML output. \"swig\" (default) uses @rhinostone/swig via controller.render-swig.js; \"nunjucks\" uses the project-installed nunjucks package via controller.render-nunjucks.js. When set to \"nunjucks\", bundle startup fails with NUNJUCKS_NOT_INSTALLED if the package is absent from the project's node_modules. An explicit template extension overrides this per render: a section whose templates.json `ext` is \".njk\" (or a self.setTemplate(file, '.njk') call) renders through nunjucks, \".swig\" through swig — so a single bundle can mix engines; \".html\" and any other extension follow this setting.",
262
262
  "enum": ["swig", "nunjucks"],
263
263
  "default": "swig"
264
264
  }
@@ -1 +0,0 @@
1
- 0.4.7
File without changes
File without changes
File without changes