gina 0.5.1-alpha.1 → 0.5.1-alpha.2

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 (467) hide show
  1. package/ROADMAP.md +16 -16
  2. package/framework/v0.5.1-alpha.2/VERSION +1 -0
  3. package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.js +48 -1
  4. package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/package.json +1 -1
  5. package/gna.js +4 -4
  6. package/package.json +3 -3
  7. package/script/check_roadmap_consistency.js +290 -0
  8. package/framework/v0.5.1-alpha.1/VERSION +0 -1
  9. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/AUTHORS +0 -0
  10. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/LICENSE +0 -0
  11. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/html/nolayout.html +0 -0
  12. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/html/static.html +0 -0
  13. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/android-chrome-192x192.png +0 -0
  14. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/android-chrome-512x512.png +0 -0
  15. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/apple-touch-icon.png +0 -0
  16. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/favicon-16x16.png +0 -0
  17. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/favicon-32x32.png +0 -0
  18. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/img/favicon.ico +0 -0
  19. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/README.md +0 -0
  20. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  21. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  22. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  23. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  24. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  25. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  26. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  27. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  28. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  29. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  30. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  31. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  32. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  33. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  34. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
  35. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  36. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  37. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  38. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  39. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  40. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  41. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/config.js +0 -0
  42. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/ai/index.js +0 -0
  43. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/ai/lib/connector.js +0 -0
  44. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/index.js +0 -0
  45. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/connector.js +0 -0
  46. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  47. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  48. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/n1ql.js +0 -0
  49. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/session-store.js +0 -0
  50. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  51. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  52. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/index.js +0 -0
  53. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/lib/connector.js +0 -0
  54. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  55. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mongodb/lib/session-store.js +0 -0
  56. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mysql/index.js +0 -0
  57. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/mysql/lib/connector.js +0 -0
  58. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/postgresql/index.js +0 -0
  59. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/postgresql/lib/connector.js +0 -0
  60. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/redis/index.js +0 -0
  61. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/redis/lib/session-store.js +0 -0
  62. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/scylladb/index.js +0 -0
  63. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/scylladb/lib/connector.js +0 -0
  64. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/scylladb/lib/session-store.js +0 -0
  65. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sql-parser.js +0 -0
  66. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sqlite/index.js +0 -0
  67. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sqlite/lib/connector.js +0 -0
  68. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/connectors/sqlite/lib/session-store.js +0 -0
  69. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/content.encoding +0 -0
  70. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.framework.js +0 -0
  71. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-json.js +0 -0
  72. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-nunjucks-async.js +0 -0
  73. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-nunjucks.js +0 -0
  74. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-stream.js +0 -0
  75. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-swig-async.js +0 -0
  76. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-swig.js +0 -0
  77. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/controller.render-v1.js +0 -0
  78. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/index.js +0 -0
  79. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/controller/inspector-window-emit.js +0 -0
  80. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/LICENSE +0 -0
  81. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/README.md +0 -0
  82. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  83. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  84. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  85. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  86. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/busboy-1.6.0/package.json +0 -0
  87. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/streamsearch-1.1.0/LICENSE +0 -0
  88. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/streamsearch-1.1.0/lib/sbmh.js +0 -0
  89. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/deps/streamsearch-1.1.0/package.json +0 -0
  90. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/index.js +0 -0
  91. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/lib/class.js +0 -0
  92. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/lib/factory.js +0 -0
  93. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/dev/lib/tools.js +0 -0
  94. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/gna.js +0 -0
  95. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/README.md +0 -0
  96. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/currency.json +0 -0
  97. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/language/en.json +0 -0
  98. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/language/fr.json +0 -0
  99. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/region/en.json +0 -0
  100. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/dist/region/fr.json +0 -0
  101. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/locales/index.js +0 -0
  102. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/mime.types +0 -0
  103. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/entity.js +0 -0
  104. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/index.js +0 -0
  105. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/template/entityFactory.js +0 -0
  106. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/model/template/index.js +0 -0
  107. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/README.md +0 -0
  108. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/index.js +0 -0
  109. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/csrf/README.md +0 -0
  110. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/csrf/package.json +0 -0
  111. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/csrf/src/main.js +0 -0
  112. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/README.md +0 -0
  113. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coep/README.md +0 -0
  114. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coep/package.json +0 -0
  115. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  116. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coop/README.md +0 -0
  117. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coop/package.json +0 -0
  118. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  119. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/corp/README.md +0 -0
  120. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/corp/package.json +0 -0
  121. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  122. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/csp/README.md +0 -0
  123. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/csp/package.json +0 -0
  124. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  125. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  126. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  127. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  128. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  129. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  130. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  131. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  132. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  133. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  134. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/package.json +0 -0
  135. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  136. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  137. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  138. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/src/main.js +0 -0
  139. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  140. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  141. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  142. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  143. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  144. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  145. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  146. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  147. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  148. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  149. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  150. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  151. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  152. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  153. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  154. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  155. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  156. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  157. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/session/README.md +0 -0
  158. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/session/package.json +0 -0
  159. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/session/src/main.js +0 -0
  160. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/README.md +0 -0
  161. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/build.json +0 -0
  162. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/package.json +0 -0
  163. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/storage/src/main.js +0 -0
  164. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/README.md +0 -0
  165. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/build.json +0 -0
  166. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/package.json +0 -0
  167. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/src/form-validator.js +0 -0
  168. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/plugins/lib/validator/src/main.js +0 -0
  169. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/router.js +0 -0
  170. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/server.express.js +0 -0
  171. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/server.isaac.js +0 -0
  172. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/server.js +0 -0
  173. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/status.codes +0 -0
  174. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/_gitignore +0 -0
  175. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/app.json +0 -0
  176. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  177. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
  178. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/settings.json +0 -0
  179. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  180. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/templates.json +0 -0
  181. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  182. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  183. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  184. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  185. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/index.js +0 -0
  186. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle/locales/en.json +0 -0
  187. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  188. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  189. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  190. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  191. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  192. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  193. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  194. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
  195. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_public/sw.js +0 -0
  196. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  197. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  198. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  199. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  200. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  201. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/command/gina.bat.tpl +0 -0
  202. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/command/gina.tpl +0 -0
  203. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/env.json +0 -0
  204. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/manifest.json +0 -0
  205. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/package.json +0 -0
  206. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/settings.json +0 -0
  207. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/statics.json +0 -0
  208. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/conf/templates.json +0 -0
  209. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/client/json/401.json +0 -0
  210. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/client/json/403.json +0 -0
  211. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/client/json/404.json +0 -0
  212. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/server/html/50x.html +0 -0
  213. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/server/json/500.json +0 -0
  214. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/error/server/json/503.json +0 -0
  215. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/core/template/extensions/logger/config.json +0 -0
  216. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/console.js +0 -0
  217. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/context.js +0 -0
  218. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/LICENSE +0 -0
  219. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/README.md +0 -0
  220. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/package.json +0 -0
  221. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/data/src/main.js +0 -0
  222. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/dateFormat.js +0 -0
  223. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/index.js +0 -0
  224. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/LICENSE +0 -0
  225. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/README.md +0 -0
  226. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/package.json +0 -0
  227. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/json/src/main.js +0 -0
  228. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/path.js +0 -0
  229. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/README.md +0 -0
  230. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/package.json +0 -0
  231. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/src/api-error.js +0 -0
  232. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/plugins/src/main.js +0 -0
  233. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/prototypes.js +0 -0
  234. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/task.js +0 -0
  235. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/helpers/text.js +0 -0
  236. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/README.md +0 -0
  237. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/build.json +0 -0
  238. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/package.json +0 -0
  239. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/src/dep/jszip.min.js +0 -0
  240. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/archiver/src/main.js +0 -0
  241. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/async/package.json +0 -0
  242. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/async/src/main.js +0 -0
  243. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/README.md +0 -0
  244. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/build.json +0 -0
  245. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/package.json +0 -0
  246. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cache/src/main.js +0 -0
  247. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/aliases.json +0 -0
  248. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/add.js +0 -0
  249. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/arguments.json +0 -0
  250. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/build.js +0 -0
  251. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/copy.js +0 -0
  252. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/cp.js +0 -0
  253. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/help.js +0 -0
  254. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/help.txt +0 -0
  255. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  256. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/list.js +0 -0
  257. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/mcp-start.js +0 -0
  258. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/mcp.js +0 -0
  259. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/oas.js +0 -0
  260. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/openapi.js +0 -0
  261. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/remove.js +0 -0
  262. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/rename.js +0 -0
  263. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/restart.js +0 -0
  264. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/rm.js +0 -0
  265. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/start.js +0 -0
  266. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/status.js +0 -0
  267. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/bundle/stop.js +0 -0
  268. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/cache/stats.js +0 -0
  269. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/add.js +0 -0
  270. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/arguments.json +0 -0
  271. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/help.js +0 -0
  272. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/help.txt +0 -0
  273. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/list.js +0 -0
  274. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/migrate.js +0 -0
  275. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/remove.js +0 -0
  276. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/connector/rm.js +0 -0
  277. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/add.js +0 -0
  278. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/get.js +0 -0
  279. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/help.js +0 -0
  280. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/help.txt +0 -0
  281. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/link-dev.js +0 -0
  282. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/list.js +0 -0
  283. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/remove.js +0 -0
  284. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/rm.js +0 -0
  285. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/set.js +0 -0
  286. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/unset.js +0 -0
  287. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/env/use.js +0 -0
  288. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/arguments.json +0 -0
  289. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/build.js +0 -0
  290. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/dot.js +0 -0
  291. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/get.js +0 -0
  292. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/help.js +0 -0
  293. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/help.txt +0 -0
  294. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/init.js +0 -0
  295. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/link-node-modules.js +0 -0
  296. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/link.js +0 -0
  297. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/msg.json +0 -0
  298. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/open.js +0 -0
  299. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/restart.js +0 -0
  300. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/set.js +0 -0
  301. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/start.js +0 -0
  302. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/status.js +0 -0
  303. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/stop.js +0 -0
  304. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/tail.js +0 -0
  305. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/update.js +0 -0
  306. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/framework/version.js +0 -0
  307. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/gina-dev.1.md +0 -0
  308. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/gina-framework.1.md +0 -0
  309. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/gina.1.md +0 -0
  310. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/helper.js +0 -0
  311. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/add.js +0 -0
  312. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/arguments.json +0 -0
  313. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/export.js +0 -0
  314. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/help.js +0 -0
  315. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/help.txt +0 -0
  316. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/import.js +0 -0
  317. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/i18n/scan.js +0 -0
  318. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/index.js +0 -0
  319. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/inspector/help.js +0 -0
  320. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/inspector/help.txt +0 -0
  321. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/inspector/open.js +0 -0
  322. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/arguments.json +0 -0
  323. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/help.js +0 -0
  324. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/help.txt +0 -0
  325. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/kill.js +0 -0
  326. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/minion/list.js +0 -0
  327. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/msg.json +0 -0
  328. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/help.js +0 -0
  329. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/help.txt +0 -0
  330. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/inc/scan.js +0 -0
  331. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/list.js +0 -0
  332. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/reset.js +0 -0
  333. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/port/set.js +0 -0
  334. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/add.js +0 -0
  335. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/arguments.json +0 -0
  336. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/build.js +0 -0
  337. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/help.js +0 -0
  338. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/help.txt +0 -0
  339. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/import.js +0 -0
  340. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/list.js +0 -0
  341. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/move.js +0 -0
  342. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/remove.js +0 -0
  343. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/rename.js +0 -0
  344. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/restart.js +0 -0
  345. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/rm.js +0 -0
  346. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/start.js +0 -0
  347. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/status.js +0 -0
  348. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/project/stop.js +0 -0
  349. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/arguments.json +0 -0
  350. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/help.js +0 -0
  351. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/help.txt +0 -0
  352. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/list.js +0 -0
  353. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/remove.js +0 -0
  354. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/protocol/set.js +0 -0
  355. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/add.js +0 -0
  356. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/help.js +0 -0
  357. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/help.txt +0 -0
  358. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/link-local.js +0 -0
  359. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/link-production.js +0 -0
  360. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/list.js +0 -0
  361. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/remove.js +0 -0
  362. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/rm.js +0 -0
  363. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/scope/use.js +0 -0
  364. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/arguments.json +0 -0
  365. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/check.js +0 -0
  366. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/help.js +0 -0
  367. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/help.txt +0 -0
  368. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/secrets/scan.js +0 -0
  369. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/help.js +0 -0
  370. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/help.txt +0 -0
  371. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/list.js +0 -0
  372. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/service/start.js +0 -0
  373. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd/view/add.js +0 -0
  374. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd-status-format/package.json +0 -0
  375. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cmd-status-format/src/main.js +0 -0
  376. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/README.md +0 -0
  377. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/build.json +0 -0
  378. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/package.json +0 -0
  379. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/collection/src/main.js +0 -0
  380. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/config.js +0 -0
  381. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/connector-registry/package.json +0 -0
  382. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/connector-registry/src/main.js +0 -0
  383. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cron/README.md +0 -0
  384. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cron/package.json +0 -0
  385. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/cron/src/main.js +0 -0
  386. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/LICENSE +0 -0
  387. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/README.md +0 -0
  388. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/package.json +0 -0
  389. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/domain/src/main.js +0 -0
  390. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/generator/index.js +0 -0
  391. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/i18n/package.json +0 -0
  392. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/i18n/src/main.js +0 -0
  393. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/index.js +0 -0
  394. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/LICENSE +0 -0
  395. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/README.md +0 -0
  396. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/package.json +0 -0
  397. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inherits/src/main.js +0 -0
  398. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inspector-redact/package.json +0 -0
  399. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/inspector-redact/src/main.js +0 -0
  400. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/instrument/package.json +0 -0
  401. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/instrument/src/main.js +0 -0
  402. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/job/package.json +0 -0
  403. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/job/src/main.js +0 -0
  404. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/README.md +0 -0
  405. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/package.json +0 -0
  406. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/default/index.js +0 -0
  407. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/file/index.js +0 -0
  408. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  409. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  410. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/mq/index.js +0 -0
  411. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/mq/listener.js +0 -0
  412. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/containers/mq/speaker.js +0 -0
  413. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/helper.js +0 -0
  414. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/logger/src/main.js +0 -0
  415. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/math/index.js +0 -0
  416. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-dispatch/package.json +0 -0
  417. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-dispatch/src/main.js +0 -0
  418. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-http/package.json +0 -0
  419. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-http/src/main.js +0 -0
  420. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-server/package.json +0 -0
  421. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/mcp-server/src/main.js +0 -0
  422. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/merge/README.md +0 -0
  423. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/merge/package.json +0 -0
  424. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/merge/src/main.js +0 -0
  425. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/metrics/package.json +0 -0
  426. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/metrics/src/main.js +0 -0
  427. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/model.js +0 -0
  428. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-filters/README.md +0 -0
  429. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-filters/package.json +0 -0
  430. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-filters/src/main.js +0 -0
  431. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-resolver/package.json +0 -0
  432. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/nunjucks-resolver/src/main.js +0 -0
  433. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/proc.js +0 -0
  434. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/README.md +0 -0
  435. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/build.json +0 -0
  436. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/package.json +0 -0
  437. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/src/main.js +0 -0
  438. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing/src/radix.js +0 -0
  439. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing-introspect/package.json +0 -0
  440. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/routing-introspect/src/main.js +0 -0
  441. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/secrets/package.json +0 -0
  442. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/secrets/src/backends/env.js +0 -0
  443. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/secrets/src/main.js +0 -0
  444. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/session-store.js +0 -0
  445. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/shell.js +0 -0
  446. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/state.js +0 -0
  447. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-filters/README.md +0 -0
  448. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-filters/package.json +0 -0
  449. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-filters/src/main.js +0 -0
  450. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-resolver/package.json +0 -0
  451. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/swig-resolver/src/main.js +0 -0
  452. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/package.json +0 -0
  453. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/src/loaders/http.js +0 -0
  454. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/src/loaders/memory.js +0 -0
  455. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/template-loaders/src/main.js +0 -0
  456. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/url/README.md +0 -0
  457. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/url/index.js +0 -0
  458. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/url/routing.json +0 -0
  459. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/uuid/package.json +0 -0
  460. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/uuid/src/main.js +0 -0
  461. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/validator.js +0 -0
  462. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/watcher/package.json +0 -0
  463. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/watcher/src/main.js +0 -0
  464. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-framing/package.json +0 -0
  465. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-framing/src/main.js +0 -0
  466. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-session/package.json +0 -0
  467. /package/framework/{v0.5.1-alpha.1 → v0.5.1-alpha.2}/lib/ws-session/src/main.js +0 -0
package/ROADMAP.md CHANGED
@@ -23,8 +23,8 @@ This roadmap covers planned features, architectural improvements, new connectors
23
23
  | **Q4 2026** | `0.3.8` ✅ | Patch: `npm install -g gina@latest` regression fix — `psl` + `@rhinostone/swig` promoted to top-level deps · install scripts decoupled from framework `lib` registry · helpers preload guarding `lib/logger` ↔ `framework/v*/helpers` circular dep |
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
- | **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
- | **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`) |
26
+ | **Q2 2026** | `0.4.0` | Couchbase v2 removal (BREAKING SDK v2 connector + session store dropped) · HTTP/2 response trailers · async-job primitive · CSP per-response nonce · `secrets:scan` / `secrets:check` CLI · SQL column-level index coverage of the items originally targeted here: AI agents (MCP) shipped `0.3.7`, ScyllaDB `0.3.11`, CLI Tier 2 `0.4.1`, the docs offline ZIP is live on the docs site, and the Advanced tutorial · website redesign · Bun investigation moved to `0.5.x` |
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.0`) |
28
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 |
29
29
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
30
30
 
@@ -66,18 +66,18 @@ Stub commands confirmed in source — handler files exist but are empty or comme
66
66
  | ✅ | **`protocol:remove`** — Revert a bundle to the project's default protocol/scheme by removing its `settings.json` override (no shared `ports*.json` mutation), with `--dry-run` / `--force`. | `0.4.1-alpha.2` | 2026-05-31 |
67
67
  | ✅ | **`minion:list`** — List the running bundle child-processes ("minions") of a project, or of every project, grouped by project. `--format=json` supported. | `0.4.1-alpha.2` | 2026-05-31 |
68
68
  | ✅ | **`minion:kill`** — Reap a project's running bundle child-processes ("minions") — both pidfile-tracked and `ps`-discovered orphans — with a graceful SIGTERM/SIGKILL escalation and a `--dry-run` preview. | `0.4.1-alpha.2` | 2026-05-31 |
69
- | 📋 | **`gina --status` / `-t`** — Top-level health check: print whether the framework daemon is running, its version, and active bundle count. Requires adding `--status`/`-t` entries to `aliases.json` and implementing `framework/status.js`. | `0.4.0` | Q4 2026 |
69
+ | 📋 | **`gina --status` / `-t`** — Top-level health check: print whether the framework daemon is running, its version, and active bundle count. Requires adding `--status`/`-t` entries to `aliases.json` and implementing `framework/status.js`. | `0.5.x` | Q4 2026 |
70
70
  | ✅ | **`bundle:copy` / `bundle:cp`** — Duplicate a bundle (source files + config) under a new name within the same project, with a word-boundary name rewrite, a fresh full protocol/scheme/env port matrix, and `--dry-run` / `--force`. | `0.4.1-alpha.2` | 2026-05-31 |
71
71
  | ✅ | **`project:status`** — Show the running/stopped state of each bundle in a project with PID and port info. | `0.4.1-alpha.2` | 2026-05-30 |
72
72
 
73
- ### Tier 3 — `0.5.0`
73
+ ### Tier 3 — `0.5.x`
74
74
 
75
75
  | Status | Feature | Version | Target |
76
76
  | --- | --- | --- | --- |
77
- | 📋 | **`project:move`** — Relocate a project's source directory and update all `~/.gina/` registry entries to the new path. Handler is 0 lines. | `0.5.0` | Q1 2027 |
78
- | 📋 | **`framework:update`** — Self-update the installed Gina framework to the latest (or a specified) version without reinstalling via npm. Handler is 0 lines. | `0.5.0` | Q1 2027 |
79
- | 📋 | **`project:backup` / `project:restore`** — Archive a project's source, config, and data to a tarball (`backup`), and restore from it (`restore`). Documented in `project/help.txt` as support-only. No handler files exist. | `0.5.0` | Q1 2027 |
80
- | 📋 | **`framework:man` / `project:man` / `bundle:man`** — Inline CLI manual pages. Mentioned in `framework/help.txt` but no handler files exist for any group. | `0.5.0` | Q1 2027 |
77
+ | 📋 | **`project:move`** — Relocate a project's source directory and update all `~/.gina/` registry entries to the new path. Handler is 0 lines. | `0.5.x` | Q1 2027 |
78
+ | 📋 | **`framework:update`** — Self-update the installed Gina framework to the latest (or a specified) version without reinstalling via npm. Handler is 0 lines. | `0.5.x` | Q1 2027 |
79
+ | 📋 | **`project:backup` / `project:restore`** — Archive a project's source, config, and data to a tarball (`backup`), and restore from it (`restore`). Documented in `project/help.txt` as support-only. No handler files exist. | `0.5.x` | Q1 2027 |
80
+ | 📋 | **`framework:man` / `project:man` / `bundle:man`** — Inline CLI manual pages. Mentioned in `framework/help.txt` but no handler files exist for any group. | `0.5.x` | Q1 2027 |
81
81
 
82
82
  ---
83
83
 
@@ -112,7 +112,7 @@ Stub commands confirmed in source — handler files exist but are empty or comme
112
112
  | ✅ | **Explicit exports for global helpers** — `getContext`, `setContext`, `_`, `requireJSON` etc. available as explicit `require('gina/gna').getContext` imports alongside the existing global injection. Enables IDE navigation and static analysis. | `0.3.3-alpha.3` | 2026-04-09 |
113
113
  | ✅ | **TypeScript declaration files** — `.d.ts` declarations for the public surface: `SuperController`, `EntitySuper`, connector config shapes, `routing.json` schema, `PathObject`, `uuid`, all config file interfaces, `GinaRequest`/`GinaResponse`. No TS migration of internals — just declarations for consumer projects. `package.json` wired with `"types"` and `"typesVersions"`. | `0.3.3-alpha.3` | 2026-04-09 |
114
114
  | ✅ | **Auto-generated `types/gna.d.ts` from JSDoc** (#M9) — `script/generate_gna_types.js` reads the `GLOBAL_EXPORTS` inventory from the gna-exports unit test plus the JSDoc on `framework/v*/core/gna.js` and emits `types/gna.d.ts` with one entry per global export. Two npm scripts: `npm run types:gen` regenerates, `npm run types:check` exits non-zero if drifted. A `gna-types-drift.test.js` unit test re-runs the generator in memory on every test pass — the JSDoc on `core/gna.js` is the single source of truth. Closes the #M8 → #M9 loop and removes the hand-written declaration. | `0.3.7-alpha.2` | 2026-04-18 |
115
- | 📋 | **`gina connector:audit [@project]`** — reads `connectors.json`, maps each declared connector to its npm peer package (`mysql2`, `pg`, `ioredis`, `couchbase`, `openai`, `@anthropic-ai/sdk`, etc.), and runs `npm audit --json` scoped to those packages in the project's `node_modules`. Reports CVEs with severity and fix availability. If `socket` is installed in the project, delegates to it for supply-chain analysis (malware, typosquatting, protestware) instead of `npm audit`. Exit code 1 on any high/critical finding — CI-friendly. Only audits packages actually declared in `connectors.json`, not the full dependency tree. | `0.4.0` | Q4 2026 |
115
+ | 📋 | **`gina connector:audit [@project]`** — reads `connectors.json`, maps each declared connector to its npm peer package (`mysql2`, `pg`, `ioredis`, `couchbase`, `openai`, `@anthropic-ai/sdk`, etc.), and runs `npm audit --json` scoped to those packages in the project's `node_modules`. Reports CVEs with severity and fix availability. If `socket` is installed in the project, delegates to it for supply-chain analysis (malware, typosquatting, protestware) instead of `npm audit`. Exit code 1 on any high/critical finding — CI-friendly. Only audits packages actually declared in `connectors.json`, not the full dependency tree. | `0.5.x` | Q4 2026 |
116
116
 
117
117
  ### Phase 5 — Future
118
118
 
@@ -287,7 +287,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
287
287
  | ✅ | **Application-level rapid reset rate limiter** (CVE-2023-44487) — per-session stream creation counter | `0.3.13` | 2026-05-14 | The Isaac HTTP/2 session handler counts new streams in a rolling 1s window per session; over `maxStreamsPerSecond` (default 200) it sends a GOAWAY and closes the session. More targeted than `maxSessionRejectedStreams` (which counts refused streams, not created ones). Configurable via `settings.json` `http2Options.maxStreamsPerSecond`; `/_gina/info` exposes a `rapidResetBlocked` counter. |
288
288
  | ✅ | **Trailer support** — `stream.sendTrailers()` + `waitForTrailers: true` | `0.4.0` | 2026-05-22 | Opt-in HTTP/2 response trailers via `self.sendTrailers(fields)`. The render pipeline sets `waitForTrailers` and emits the trailing headers after the body (in the `wantTrailers` event), across all render delegates. Activated only when a controller calls `self.sendTrailers(fields)`; HTTP/1.1 and the no-trailers path are unchanged. For gRPC-style streaming (`grpc-status`) and content-integrity (`Digest`) use cases. |
289
289
  | ✅ | **Alt-Svc header** — advertise HTTP/3 availability | `0.4.2` | 2026-06-02 | Set `Alt-Svc: h3=":443"; ma=86400` response header to advertise HTTP/3 (QUIC) availability via a QUIC-capable reverse proxy (nginx, Caddy, Cloudflare). Gina does not need to implement QUIC — just announce it. Opt-in via `settings.server.json`. Native HTTP/3 is out of scope: Node.js has no stable QUIC API, and the standard deployment topology (Gina → proxy → client) already delivers HTTP/3 at the edge. |
290
- | 📋 | **RFC 9218 Extensible Priorities** — read `Priority: u=N, i` request header | `0.5.0` | Q1 2027 | Use the RFC 9218 priority header to order response writes for multiplexed API clients. Low value for typical HTML page loads; high value for parallel API requests with declared urgency. |
290
+ | 📋 | **RFC 9218 Extensible Priorities** — read `Priority: u=N, i` request header | `0.5.x` | Q1 2027 | Use the RFC 9218 priority header to order response writes for multiplexed API clients. Low value for typical HTML page loads; high value for parallel API requests with declared urgency. |
291
291
  | ✅ | **WebSocket over HTTP/2** (RFC 8441 extended CONNECT) — opt-in via `http2Options.enableConnectProtocol` (default off; https and cleartext h2c HTTP/2 bundles). From `onInitialize`, `app.onWebSocket(path, handler)` registers per-path WebSocket handlers; accepted streams arrive as full sessions backed by a built-in dependency-free RFC 6455 codec (auto-pong, timed close handshake, UTF-8 + close-code validation, payload/fragment DoS caps, backpressure passthrough, graceful shutdown drain). Unknown paths are refused with 404, plain CONNECT keeps its 405, and default-off deployments are byte-identical. | `0.4.7` | 2026-06-11 |
292
292
 
293
293
  ---
@@ -325,7 +325,7 @@ A cold audit of the Couchbase connector identified two critical security vulnera
325
325
  | --- | --- | --- | --- | --- |
326
326
  | ✅ | **`NODE_COMPILE_CACHE` — V8 bytecode startup cache** | `0.2.0` | Q2 2026 | Node.js 22.8+ caches compiled V8 bytecode to disk. Set once at startup — 30–60% faster cold start on subsequent runs with zero code changes to user bundles. No-op on Node < 22.8, so safe to ship unconditionally. |
327
327
  | ✅ | **Route radix trie — compile `routing.json` at startup** | `0.3.0-alpha.1` | 2026-04-01 | `lib/routing/src/radix.js` builds a segment-level trie once at startup. O(m) candidate lookup per request (m = segment count). `Set.has()` check skips non-candidates in the `for…in` loop. Internal change — no user-facing API change. |
328
- | 📋 | **Bun runtime compatibility investigation** | `0.4.0` | Q4 2026 | Prototype Gina under Bun. Two blockers to verify: `require.cache` deletion (dev hot-reload) and `node:http2` completeness. If both pass, Bun gives 3–10x faster startup and meaningful throughput gains. Deliverable: a compatibility report. |
328
+ | 📋 | **Bun runtime compatibility investigation** | `0.5.x` | Q4 2026 | Prototype Gina under Bun. Two blockers to verify: `require.cache` deletion (dev hot-reload) and `node:http2` completeness. If both pass, Bun gives 3–10x faster startup and meaningful throughput gains. Deliverable: a compatibility report. |
329
329
  | ✅ | **V8 pointer compression support** | `0.2.0` | Q2 2026 | Node.js built with `--experimental-enable-pointer-compression` (e.g. [node-caged](https://github.com/platformatic/node-caged) or a custom build) delivers ~50% heap memory reduction across all pointer-heavy structures. Gina is pure JS — compatible out of the box. Adds: startup detection + `GINA_V8_POINTER_COMPRESSED` env var, Dockerfile guide with custom build recipe (full-icu + pointer compression), 4 GB ceiling documentation, N-API-only connector policy. |
330
330
 
331
331
  ---
@@ -370,10 +370,10 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
370
370
 
371
371
  | Status | Feature | Version | Target |
372
372
  | --- | --- | --- | --- |
373
- | ✅ | **`services/src/inspector/` standalone bundle** — ~~Rename `services/src/toolbar/` to `services/src/inspector/`~~ (done). **Authenticated WebSocket transport shipped** (`0.4.3-alpha`): the standalone Inspector connects to a bundle's `/_gina/agent` over a WebSocket (`?transport=ws`) as well as SSE — key-authenticated outside dev mode, with an optional `inspector.agent.allowedOrigins` Origin allowlist; it falls back to SSE automatically if the socket can't open. The embedded SPA at `/_gina/inspector/` remains for quick dev-mode access. **Dev auto-start shipped** (`0.4.3-alpha`): a `gina service:start` command plus a dev-only `gna.js server.on('started')` hook auto-start the standalone Inspector via the daemon-free `gina-container` launcher (gated on dev mode + not-already-running; local-only — no-ops in a fresh install since `services/` ships in neither git nor npm). | `0.5.0` | 2026-06-02 |
373
+ | ✅ | **`services/src/inspector/` standalone bundle** — ~~Rename `services/src/toolbar/` to `services/src/inspector/`~~ (done). **Authenticated WebSocket transport shipped** (`0.4.3-alpha`): the standalone Inspector connects to a bundle's `/_gina/agent` over a WebSocket (`?transport=ws`) as well as SSE — key-authenticated outside dev mode, with an optional `inspector.agent.allowedOrigins` Origin allowlist; it falls back to SSE automatically if the socket can't open. The embedded SPA at `/_gina/inspector/` remains for quick dev-mode access. **Dev auto-start shipped** (`0.4.3-alpha`): a `gina service:start` command plus a dev-only `gna.js server.on('started')` hook auto-start the standalone Inspector via the daemon-free `gina-container` launcher (gated on dev mode + not-already-running; local-only — no-ops in a fresh install since `services/` ships in neither git nor npm). | `0.4.3` | 2026-06-02 |
374
374
  | ✅ | **Agent endpoint — dev-mode SSE (`/_gina/agent`)** — Combined data + log SSE stream. CORS, server.js + server.isaac.js (HTTP/2), Inspector SPA `tryAgent()` with `?target=` param. Named events (`event: data`, `event: log`). Manual connect form on "No source" overlay. | `0.3.0` | 2026-04-05 |
375
- | ✅ | **Agent endpoint — production auth** — **Authenticated `/_gina/agent` + production-safe toggle shipped via the existing SSE transport** (opt-in `inspector.agent.enabled` + key in `settings.json`, constant-time compare, `${secret:KEY}`-capable; key via the `x-gina-inspector-key` header or a `?key=` query param; dev stays open + keyless). Authenticates remote server-log streaming outside dev mode. **WebSocket transport completed** (`0.4.3-alpha`): the standalone Inspector now connects over the #INS8 WebSocket by default (`?transport=sse` forces SSE) with automatic SSE fallback; auth + prod-toggle contract unchanged. | `0.5.0` | 2026-06-02 |
376
- | ✅ | **Toggleable instrumentation** — Runtime toggle for query + flow instrumentation independent of `NODE_ENV_IS_DEV`: a time-boxed, key-authenticated window (`POST /_gina/instrument`) runs capture in production over the authenticated `/_gina/agent` channel, without full dev mode. Opt-in via `inspector.instrumentation`; 3600s hard cap with auto-revert. **v1 shipped 2026-05-26** (JSON/XHR + cross-bundle egress); the server-rendered HTML-page-render egress follow-up also shipped 2026-05-26 (a separate HTML-free emit path wired per render delegate). | `0.5.0` | 2026-05-26 |
375
+ | ✅ | **Agent endpoint — production auth** — **Authenticated `/_gina/agent` + production-safe toggle shipped via the existing SSE transport** (opt-in `inspector.agent.enabled` + key in `settings.json`, constant-time compare, `${secret:KEY}`-capable; key via the `x-gina-inspector-key` header or a `?key=` query param; dev stays open + keyless). Authenticates remote server-log streaming outside dev mode. **WebSocket transport completed** (`0.4.3-alpha`): the standalone Inspector now connects over the #INS8 WebSocket by default (`?transport=sse` forces SSE) with automatic SSE fallback; auth + prod-toggle contract unchanged. | `0.4.0` | 2026-06-02 |
376
+ | ✅ | **Toggleable instrumentation** — Runtime toggle for query + flow instrumentation independent of `NODE_ENV_IS_DEV`: a time-boxed, key-authenticated window (`POST /_gina/instrument`) runs capture in production over the authenticated `/_gina/agent` channel, without full dev mode. Opt-in via `inspector.instrumentation`; 3600s hard cap with auto-revert. **v1 shipped 2026-05-26** (JSON/XHR + cross-bundle egress); the server-rendered HTML-page-render egress follow-up also shipped 2026-05-26 (a separate HTML-free emit path wired per render delegate). | `0.4.0` | 2026-05-26 |
377
377
  | 📋 | **Multi-bundle dashboard** — Discover all running bundles via `ports.json`, connect to each agent. Full-stack request tracing across bundle boundaries. | post-1.0.0 | — |
378
378
  | 📋 | **Browser extension companion** — Chrome/Firefox DevTools panel. Thin UI shell connecting to the standalone Inspector via WebSocket. Optional — not a replacement. | post-1.0.0 | — |
379
379
 
@@ -387,7 +387,7 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
387
387
  | ✅ | **Beginner — Notes API** — Your first REST API: scaffold a project, define 3 routes in `routing.json`, write synchronous controller actions, read `req.post` / `req.params`, return JSON with `renderJSON()`, handle errors with `throwError()`. In-memory store — no database needed. | ~15 min | `0.3.0` | 2026-04-01 |
388
388
  | ✅ | **Tutorial locale detection** — `LocaleSettings` React component detects the reader's locale and timezone via `navigator.language` + `Intl` APIs and pre-fills the `settings.json` scaffold example. Inserted after the scaffold step in both tutorials. Falls back to `en_US`. | — | `0.3.0` | 2026-04-06 |
389
389
  | ✅ | **Intermediate — Link Shortener** — SQLite ORM connector, async controller actions, `render()` + `renderJSON()` in same bundle, HTTP 302 redirect, route `requirements` guard. Includes downloadable project ZIP. | ~30 min | `0.3.0` | 2026-04-01 |
390
- | 📋 | **Advanced** — Full production project: authentication, scoped data isolation, async/await, HTTP/2, structured logging, Docker/K8s deployment. Starts from the intermediate tutorial's finished state. | ~60 min | `0.4.0` | Q4 2026 |
390
+ | 📋 | **Advanced** — Full production project: authentication, scoped data isolation, async/await, HTTP/2, structured logging, Docker/K8s deployment. Starts from the intermediate tutorial's finished state. | ~60 min | `0.5.x` | Q4 2026 |
391
391
 
392
392
  ---
393
393
 
@@ -395,7 +395,7 @@ Gina's built-in per-bundle inspector. Phases 1–2 ship as an embedded SPA at `/
395
395
 
396
396
  | Status | Feature | Version | Target |
397
397
  | --- | --- | --- | --- |
398
- | 📋 | **Official website redesign + docs integration** — Refactor gina.io as a proper project homepage (landing page, feature highlights, showcase) with the documentation fully integrated. Single coherent web presence. Prerequisite: tutorials complete. | `0.4.0` | Q4 2026 |
398
+ | 📋 | **Official website redesign + docs integration** — Refactor gina.io as a proper project homepage (landing page, feature highlights, showcase) with the documentation fully integrated. Single coherent web presence. Prerequisite: tutorials complete. | `0.5.x` | Q4 2026 |
399
399
  | ✅ | **Docs offline ZIP** — One-click download of the complete gina.io documentation as a static HTML ZIP archive. Generated at deploy time by the Docusaurus build pipeline — no server-side logic required. Targeted at users in regions with limited or expensive internet access (offline-first for the African market). | `0.4.0` | 2026-05-22 |
400
400
  | ✅ | **Security & CVE compliance page** — Dedicated docs page listing the HTTP/2 CVEs addressed by Gina and the Node.js version required for each mitigation. Covers CVE-2023-44487 (Rapid Reset), CVE-2024-27316 / CVE-2024-27983 (CONTINUATION flood), CVE-2019-9514 (RST flood), HPACK bomb, and server push abuse. Docs only — no code changes. | `0.3.0-alpha.1` | 2026-04-01 |
401
401
 
@@ -0,0 +1 @@
1
+ 0.5.1-alpha.2
@@ -161,12 +161,27 @@ function SuperController(options) {
161
161
  * Returns `true` when response headers have already been sent.
162
162
  * Checks both HTTP/2 stream and HTTP/1.1 `res.headersSent`.
163
163
  *
164
+ * Also returns `true` when the per-request response refs were already
165
+ * released by a terminal exit (`local.res` is null) — a released response
166
+ * can no longer be written to, so callers' `!headersSent()` guards no-op
167
+ * instead of dereferencing null (#B31).
168
+ *
164
169
  * @inner
165
170
  * @param {object} [res] - Defaults to `local.res`
166
171
  * @returns {boolean}
167
172
  */
168
173
  var headersSent = function(res) {
169
174
  var _res = ( typeof(res) != 'undefined' ) ? res : local.res;
175
+ // #B31 — the per-request response refs may already be released (the
176
+ // terminal-exit triplet: redirect()/renderTEXT()/throwError() and the
177
+ // render delegates set local.res = null once the response is out). A
178
+ // released response cannot be written to anymore, so report it as
179
+ // "sent": callers' existing !headersSent() guards then no-op instead
180
+ // of throwing `Cannot read properties of null (reading 'stream')` —
181
+ // an uncaughtException that proc.js escalates to SIGTERM (bundle kill).
182
+ if ( !_res ) {
183
+ return true;
184
+ }
170
185
  if (
171
186
  typeof(_res.stream) != 'undefined'
172
187
  && typeof(_res.stream.headersSent) != 'undefined'
@@ -5266,11 +5281,17 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
5266
5281
  * - `throwError(code, err)` — 2-arg form: HTTP status + Error|string
5267
5282
  * - `throwError(res, code, msg)` — internal 3-arg form used by the router
5268
5283
  *
5284
+ * Late calls: when throwError fires after a response terminal exit has
5285
+ * already released the per-request refs (`local.res` is null — e.g. an
5286
+ * entity/query callback resuming after a redirect() sent its 301), the
5287
+ * call is logged and ignored instead of crashing the bundle (#B31).
5288
+ *
5269
5289
  * @param {object} [ res ]
5270
5290
  * @param {number} code
5271
5291
  * @param {string} msg
5272
5292
  *
5273
- * @returns {void}
5293
+ * @returns {void|boolean} `false` when the call is ignored (nested
5294
+ * rendering stack, or a late call on a released response)
5274
5295
  * */
5275
5296
  this.throwError = function(res, code, msg) {
5276
5297
 
@@ -5388,6 +5409,32 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
5388
5409
  }
5389
5410
 
5390
5411
  var responseHeaders = null;
5412
+ // #B31 — a late throwError (an entity/query callback, timer or catch
5413
+ // handler resuming after the action already responded) can fire AFTER
5414
+ // a terminal exit (redirect()/render*()/a previous throwError) released
5415
+ // local.req/res/next. Every call shape above has normalized `res` to
5416
+ // local.res by this point, so a null `res` means the response is gone:
5417
+ // reading getHeaders off it threw `Cannot read properties of null
5418
+ // (reading 'getHeaders')` — an uncaughtException that proc.js escalates
5419
+ // to SIGTERM, killing the bundle and every in-flight request with it
5420
+ // (same crash class as #B30: fix the throw site, never widen the
5421
+ // uncaughtException net). Log the swallowed error so the late failure
5422
+ // stays observable, then no-op — same return contract as the
5423
+ // renderingStack guard above.
5424
+ if ( !res ) {
5425
+ res = local.res;
5426
+ }
5427
+ if ( !res ) {
5428
+ var _lateError = errorObject || msg || code;
5429
+ var _lateErrorStr = '';
5430
+ try {
5431
+ _lateErrorStr = ( _lateError && typeof(_lateError) == 'object' ) ? JSON.stringify(_lateError) : String(_lateError || '');
5432
+ } catch (_lateJsonErr) {
5433
+ _lateErrorStr = String(_lateError);
5434
+ }
5435
+ console.warn('[ Controller ] throwError() called after the response was released — ignoring late error: '+ _lateErrorStr);
5436
+ return false;
5437
+ }
5391
5438
  if ( typeof(res.getHeaders) == 'undefined' && typeof(res.stream) != 'undefined' ) {
5392
5439
  responseHeaders = res.stream.sentHeader;
5393
5440
  } else {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gina-framework",
3
- "version": "0.5.1-alpha.1",
3
+ "version": "0.5.1-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.5.1-alpha.1/core/gna');
18
+ var _gna = require('./framework/v0.5.1-alpha.2/core/gna');
19
19
 
20
20
  // SuperController and EntitySuper — loaded from their source modules
21
- var SuperController = require('./framework/v0.5.1-alpha.1/core/controller');
22
- var EntitySuper = require('./framework/v0.5.1-alpha.1/core/model/entity');
21
+ var SuperController = require('./framework/v0.5.1-alpha.2/core/controller');
22
+ var EntitySuper = require('./framework/v0.5.1-alpha.2/core/model/entity');
23
23
 
24
24
  // uuid — from the lib registry
25
- var uuid = require('./framework/v0.5.1-alpha.1/lib/uuid');
25
+ var uuid = require('./framework/v0.5.1-alpha.2/lib/uuid');
26
26
 
27
27
  module.exports = {
28
28
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gina",
3
- "version": "0.5.1-alpha.1",
3
+ "version": "0.5.1-alpha.2",
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,12 +72,12 @@
72
72
  "gina-container": "bin/gina-container",
73
73
  "gina-init": "bin/gina-init"
74
74
  },
75
- "main": "./framework/v0.5.1-alpha.1/core/gna",
75
+ "main": "./framework/v0.5.1-alpha.2/core/gna",
76
76
  "exports": {
77
77
  ".": {
78
78
  "types": "./types/index.d.ts",
79
79
  "import": "./index.mjs",
80
- "require": "./framework/v0.5.1-alpha.1/core/gna.js"
80
+ "require": "./framework/v0.5.1-alpha.2/core/gna.js"
81
81
  },
82
82
  "./gna": {
83
83
  "types": "./types/gna.d.ts",
@@ -0,0 +1,290 @@
1
+ #!/usr/bin/env node
2
+
3
+ /*
4
+ * This file is part of the gina package.
5
+ * Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
6
+ *
7
+ * For the full copyright and license information, please view the LICENSE
8
+ * file that was distributed with this source code.
9
+ */
10
+
11
+ /**
12
+ * @file script/check_roadmap_consistency.js
13
+ *
14
+ * Pre-publish guard that asserts ROADMAP.md does not contradict the
15
+ * stable version being released. Wired into prepare_version.js as
16
+ * `self.checkRoadmapConsistency`, between `checkReadmeFreshness` and
17
+ * `checkDefFrameworkConsistency`. Also runnable standalone:
18
+ *
19
+ * node script/check_roadmap_consistency.js
20
+ *
21
+ * The check fires on stable publishes only — alpha cuts are intermediate
22
+ * and never make a roadmap row stale (rows reference stable versions or
23
+ * `X.Y.x` buckets). The skip is signalled via the `npm_config_tag` env
24
+ * var or `--tag=alpha` on the argv, mirroring check_readme_freshness.js.
25
+ *
26
+ * Three rules, scanned over status rows (lines starting `| 📋 |` or
27
+ * `| ✅ |`) and exact backtick-wrapped version tokens:
28
+ *
29
+ * 1. ABORT — an open (📋) row references the exact version being
30
+ * released. The release is about to ship without that item, so the
31
+ * row becomes a lie the moment the tag lands. Re-target the row
32
+ * (e.g. to the `X.Y.x` bucket) or reword the prose reference.
33
+ * Bucket tokens (`0.5.x`) never trip this rule by design — they
34
+ * are the sanctioned re-target form.
35
+ *
36
+ * 2. ABORT — a done (✅) row references a version NEWER than the one
37
+ * being released. A feature cannot have shipped in a version that
38
+ * does not exist yet; this catches target-version labels left on
39
+ * rows that were flipped to ✅ before the cut. Only tokens sharing
40
+ * the released version's MAJOR are compared, so dependency
41
+ * versions in prose (e.g. a `2.x` template-engine floor or a
42
+ * two-digit uuid major) cannot false-positive.
43
+ *
44
+ * 3. WARN — no timeline row marks the released version ✅
45
+ * (`` `X.Y.Z` ✅ ``). The timeline is coarse narrative, so this is
46
+ * advisory only and never aborts.
47
+ *
48
+ * Why this gate exists: a roadmap-accuracy sweep (2026-06-12) found two
49
+ * recurring drift classes that had survived multiple cuts — ✅ rows
50
+ * carrying their old TARGET version instead of the actual ship version
51
+ * (readers were told a feature needed `0.5.0` when `0.4.0` sufficed),
52
+ * and 📋 rows still targeting versions that had shipped without them
53
+ * (ten rows across `0.4.0`/`0.5.0`). Both are facts that only become
54
+ * checkable at cut time, and manual checklist steps decay (see the
55
+ * README-freshness precedent). This enforces them automatically.
56
+ *
57
+ * Failure mode: fail-closed on rules 1-2 (abort the publish with the
58
+ * offending rows listed). A missing or unreadable ROADMAP.md also
59
+ * aborts — investigate rather than publish with unverified state.
60
+ */
61
+
62
+ 'use strict';
63
+
64
+ var fs = require('fs');
65
+ var nodePath = require('path');
66
+
67
+ /**
68
+ * Regex for an exact backtick-wrapped version token: `X.Y.Z` with an
69
+ * optional `-alpha.N` suffix. Deliberately does NOT match:
70
+ * - bucket tokens (`0.5.x`) — the sanctioned open-row re-target form;
71
+ * - range-prefixed tokens (`^2.3.0`, `~1.2.0`) — dependency floors;
72
+ * - bare (un-backticked) versions in prose — too noisy to police.
73
+ *
74
+ * @constant {RegExp}
75
+ */
76
+ var VERSION_TOKEN_RE = /`(\d+\.\d+\.\d+(?:-alpha\.\d+)?)`/g;
77
+
78
+ /**
79
+ * Regex matching a status row of any roadmap table — a markdown table
80
+ * line whose first cell is the 📋 (open) or ✅ (done) marker.
81
+ *
82
+ * @constant {RegExp}
83
+ */
84
+ var STATUS_ROW_RE = /^\|\s*(📋|✅)\s*\|/;
85
+
86
+ /**
87
+ * Extract every exact backtick-wrapped version token from a line.
88
+ *
89
+ * @param {string} line one roadmap line
90
+ * @returns {string[]} version strings without backticks (may be empty)
91
+ * @example
92
+ * extractVersionTokens('| ✅ | x | `0.4.0` | 2026-05-29 |'); // ['0.4.0']
93
+ * extractVersionTokens('floor `^2.3.0` and bucket `0.5.x`'); // []
94
+ */
95
+ function extractVersionTokens(line) {
96
+ var out = [];
97
+ var m;
98
+ VERSION_TOKEN_RE.lastIndex = 0;
99
+ while ((m = VERSION_TOKEN_RE.exec(line || '')) !== null) {
100
+ out.push(m[1]);
101
+ }
102
+ return out;
103
+ }
104
+
105
+ /**
106
+ * Compare two version strings of the `X.Y.Z[-alpha.N]` shape.
107
+ * A prerelease sorts BEFORE its stable (`0.5.0-alpha.2` < `0.5.0`).
108
+ *
109
+ * @param {string} a
110
+ * @param {string} b
111
+ * @returns {number} -1 when a < b, 0 when equal, 1 when a > b
112
+ * @example
113
+ * compareVersions('0.5.1', '0.5.0'); // 1
114
+ * compareVersions('0.5.0-alpha.1', '0.5.0'); // -1
115
+ */
116
+ function compareVersions(a, b) {
117
+ var pa = String(a).split('-');
118
+ var pb = String(b).split('-');
119
+ var na = pa[0].split('.').map(Number);
120
+ var nb = pb[0].split('.').map(Number);
121
+ for (var i = 0; i < 3; i++) {
122
+ if ((na[i] || 0) > (nb[i] || 0)) return 1;
123
+ if ((na[i] || 0) < (nb[i] || 0)) return -1;
124
+ }
125
+ // numeric cores equal — a bare version outranks its prereleases
126
+ if (!pa[1] && pb[1]) return 1;
127
+ if (pa[1] && !pb[1]) return -1;
128
+ if (!pa[1] && !pb[1]) return 0;
129
+ var aa = Number((pa[1].match(/\d+$/) || [0])[0]);
130
+ var ab = Number((pb[1].match(/\d+$/) || [0])[0]);
131
+ if (aa > ab) return 1;
132
+ if (aa < ab) return -1;
133
+ return 0;
134
+ }
135
+
136
+ /**
137
+ * Parse the roadmap content into status rows.
138
+ *
139
+ * @param {string} content full ROADMAP.md content
140
+ * @returns {Array<{status: string, lineNo: number, line: string, versions: string[]}>}
141
+ */
142
+ function parseStatusRows(content) {
143
+ var rows = [];
144
+ var lines = String(content || '').split('\n');
145
+ for (var i = 0; i < lines.length; i++) {
146
+ var m = lines[i].match(STATUS_ROW_RE);
147
+ if (!m) continue;
148
+ rows.push({
149
+ status: m[1],
150
+ lineNo: i + 1,
151
+ line: lines[i],
152
+ versions: extractVersionTokens(lines[i])
153
+ });
154
+ }
155
+ return rows;
156
+ }
157
+
158
+ /**
159
+ * Run the full consistency check over a roadmap content string.
160
+ * Pure function — callers supply the content and the targeted version,
161
+ * so tests need no filesystem.
162
+ *
163
+ * @param {object} opts
164
+ * @param {string} opts.roadmapContent full ROADMAP.md content
165
+ * @param {string} opts.targetedVersion stable version being released (e.g. "0.5.0")
166
+ * @returns {{ok: boolean, failures: Array<{rule: string, lineNo: number, excerpt: string}>, warnings: string[]}}
167
+ */
168
+ function check(opts) {
169
+ opts = opts || {};
170
+ var content = opts.roadmapContent;
171
+ var version = opts.targetedVersion;
172
+ var failures = [];
173
+ var warnings = [];
174
+ var targetMajor = Number(String(version).split('.')[0]);
175
+
176
+ var rows = parseStatusRows(content);
177
+ for (var i = 0; i < rows.length; i++) {
178
+ var row = rows[i];
179
+ for (var v = 0; v < row.versions.length; v++) {
180
+ var token = row.versions[v];
181
+ if (row.status === '📋' && token === version) {
182
+ failures.push({
183
+ rule: 'open-row-references-released-version',
184
+ lineNo: row.lineNo,
185
+ excerpt: row.line.substring(0, 120)
186
+ });
187
+ break;
188
+ }
189
+ if (row.status === '✅'
190
+ && Number(token.split('.')[0]) === targetMajor
191
+ && compareVersions(token, version) > 0
192
+ ) {
193
+ failures.push({
194
+ rule: 'done-row-references-future-version',
195
+ lineNo: row.lineNo,
196
+ excerpt: row.line.substring(0, 120)
197
+ });
198
+ break;
199
+ }
200
+ }
201
+ }
202
+
203
+ // Rule 3 (warn-only): a timeline row should mark the release — `X.Y.Z` ✅
204
+ var timelineMark = new RegExp('`' + String(version).replace(/\./g, '\\.') + '`\\s*✅');
205
+ if (!timelineMark.test(String(content || ''))) {
206
+ warnings.push('no timeline row marks `' + version + '` as released (`' + version + '` ✅) — coarse narrative only, not blocking');
207
+ }
208
+
209
+ return { ok: failures.length === 0, failures: failures, warnings: warnings };
210
+ }
211
+
212
+ /**
213
+ * True when this invocation is part of an alpha publish. Mirrors
214
+ * check_readme_freshness.js — `npm_config_tag` env var with an argv
215
+ * fallback for direct script invocations.
216
+ *
217
+ * @returns {boolean}
218
+ */
219
+ function isAlphaPublish() {
220
+ if (process.env.npm_config_tag === 'alpha') return true;
221
+ var argv = process.argv || [];
222
+ for (var i = 0; i < argv.length; i++) {
223
+ if (argv[i] === '--tag=alpha' || argv[i] === '--alpha') return true;
224
+ if (argv[i] === '--tag' && argv[i + 1] === 'alpha') return true;
225
+ }
226
+ return false;
227
+ }
228
+
229
+ /**
230
+ * CLI entry. Reads ROADMAP.md and the targeted version from the repo at
231
+ * cwd (or the path given as the first positional argv). Returns 0 on
232
+ * success, 1 on failure.
233
+ *
234
+ * @returns {number} exit code
235
+ */
236
+ function main() {
237
+ if (isAlphaPublish()) {
238
+ console.log('[roadmap] Alpha publish — skipping roadmap consistency gate.');
239
+ return 0;
240
+ }
241
+
242
+ var root = process.argv[2] && process.argv[2].indexOf('--') !== 0
243
+ ? process.argv[2]
244
+ : process.cwd();
245
+
246
+ var content, version;
247
+ try {
248
+ content = fs.readFileSync(nodePath.join(root, 'ROADMAP.md'), 'utf8');
249
+ version = JSON.parse(fs.readFileSync(nodePath.join(root, 'package.json'), 'utf8')).version;
250
+ } catch (err) {
251
+ console.error('[roadmap] ERROR: could not read ROADMAP.md / package.json: ' + (err.message || err));
252
+ return 1;
253
+ }
254
+
255
+ var result = check({ roadmapContent: content, targetedVersion: version });
256
+
257
+ for (var w = 0; w < result.warnings.length; w++) {
258
+ console.warn('[roadmap] WARN: ' + result.warnings[w]);
259
+ }
260
+
261
+ if (result.ok) {
262
+ console.log('[roadmap] OK: ROADMAP.md is consistent with releasing ' + version + '.');
263
+ return 0;
264
+ }
265
+
266
+ console.error('[roadmap] ERROR: ROADMAP.md contradicts releasing ' + version + ' — aborting publish.');
267
+ for (var f = 0; f < result.failures.length; f++) {
268
+ var fail = result.failures[f];
269
+ console.error(' [' + fail.rule + '] line ' + fail.lineNo + ': ' + fail.excerpt);
270
+ }
271
+ console.error('');
272
+ console.error(' Fix shape:');
273
+ console.error(' - open (📋) row naming ' + version + ': re-target it (e.g. to the `X.Y.x` bucket) or reword the reference;');
274
+ console.error(' - done (✅) row naming a version newer than ' + version + ': stamp the actual ship version.');
275
+ console.error(' Then commit on develop and re-run npm publish.');
276
+ return 1;
277
+ }
278
+
279
+ module.exports = {
280
+ extractVersionTokens: extractVersionTokens,
281
+ compareVersions: compareVersions,
282
+ parseStatusRows: parseStatusRows,
283
+ check: check,
284
+ isAlphaPublish: isAlphaPublish,
285
+ main: main
286
+ };
287
+
288
+ if (require.main === module) {
289
+ process.exit(main());
290
+ }
@@ -1 +0,0 @@
1
- 0.5.1-alpha.1