gina 0.3.0 → 0.3.1

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 (487) hide show
  1. package/.github/workflows/test.yml +3 -3
  2. package/CHANGELOG.md +7 -0
  3. package/README.md +7 -13
  4. package/ROADMAP.md +2 -1
  5. package/framework/v0.3.1/VERSION +1 -0
  6. package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/js/gina.js +4 -4
  7. package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/connector.v2.js +1 -2
  8. package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/connector.v3.js +1 -2
  9. package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/connector.v4.js +1 -2
  10. package/framework/{v0.3.0 → v0.3.1}/core/connectors/mysql/index.js +24 -1
  11. package/framework/{v0.3.0 → v0.3.1}/core/connectors/postgresql/index.js +24 -1
  12. package/framework/v0.3.1/core/connectors/sql-parser.js +291 -0
  13. package/framework/{v0.3.0 → v0.3.1}/core/connectors/sqlite/index.js +24 -1
  14. package/framework/{v0.3.0 → v0.3.1}/core/controller/controller.render-swig.js +108 -36
  15. package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/storage/src/main.js +2 -2
  16. package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/validator/src/main.js +1 -1
  17. package/framework/{v0.3.0 → v0.3.1}/core/server.js +63 -19
  18. package/framework/{v0.3.0 → v0.3.1}/lib/cache/src/main.js +1 -1
  19. package/framework/{v0.3.0 → v0.3.1}/lib/collection/src/main.js +1 -1
  20. package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/containers/mq/listener.js +2 -2
  21. package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/main.js +45 -10
  22. package/llms.txt +3 -2
  23. package/package.json +4 -7
  24. package/script/post_install.js +3 -45
  25. package/script/pre_install.js +2 -14
  26. package/framework/v0.3.0/VERSION +0 -1
  27. package/framework/v0.3.0/core/connectors/sql-parser.js +0 -152
  28. /package/framework/{v0.3.0 → v0.3.1}/AUTHORS +0 -0
  29. /package/framework/{v0.3.0 → v0.3.1}/LICENSE +0 -0
  30. /package/framework/{v0.3.0 → v0.3.1}/core/asset/html/nolayout.html +0 -0
  31. /package/framework/{v0.3.0 → v0.3.1}/core/asset/html/static.html +0 -0
  32. /package/framework/{v0.3.0 → v0.3.1}/core/asset/img/android-chrome-192x192.png +0 -0
  33. /package/framework/{v0.3.0 → v0.3.1}/core/asset/img/android-chrome-512x512.png +0 -0
  34. /package/framework/{v0.3.0 → v0.3.1}/core/asset/img/apple-touch-icon.png +0 -0
  35. /package/framework/{v0.3.0 → v0.3.1}/core/asset/img/favicon-16x16.png +0 -0
  36. /package/framework/{v0.3.0 → v0.3.1}/core/asset/img/favicon-32x32.png +0 -0
  37. /package/framework/{v0.3.0 → v0.3.1}/core/asset/img/favicon.ico +0 -0
  38. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/README.md +0 -0
  39. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  40. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  41. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  42. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  43. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  44. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  45. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  46. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  47. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  48. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +0 -0
  49. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.br +0 -0
  50. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.gz +0 -0
  51. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  52. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  53. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  54. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  55. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  56. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  57. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  58. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  59. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  60. /package/framework/{v0.3.0 → v0.3.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  61. /package/framework/{v0.3.0 → v0.3.1}/core/config.js +0 -0
  62. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/ai/index.js +0 -0
  63. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/ai/lib/connector.js +0 -0
  64. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/index.js +0 -0
  65. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/connector.js +0 -0
  66. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/n1ql.js +0 -0
  67. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/session-store.js +0 -0
  68. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
  69. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  70. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  71. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/mysql/lib/connector.js +0 -0
  72. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/postgresql/lib/connector.js +0 -0
  73. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/redis/index.js +0 -0
  74. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/redis/lib/session-store.js +0 -0
  75. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/sqlite/lib/connector.js +0 -0
  76. /package/framework/{v0.3.0 → v0.3.1}/core/connectors/sqlite/lib/session-store.js +0 -0
  77. /package/framework/{v0.3.0 → v0.3.1}/core/content.encoding +0 -0
  78. /package/framework/{v0.3.0 → v0.3.1}/core/controller/controller.framework.js +0 -0
  79. /package/framework/{v0.3.0 → v0.3.1}/core/controller/controller.js +0 -0
  80. /package/framework/{v0.3.0 → v0.3.1}/core/controller/controller.render-json.js +0 -0
  81. /package/framework/{v0.3.0 → v0.3.1}/core/controller/controller.render-stream.js +0 -0
  82. /package/framework/{v0.3.0 → v0.3.1}/core/controller/controller.render-v1.js +0 -0
  83. /package/framework/{v0.3.0 → v0.3.1}/core/controller/index.js +0 -0
  84. /package/framework/{v0.3.0 → v0.3.1}/core/deps/busboy-1.6.0/LICENSE +0 -0
  85. /package/framework/{v0.3.0 → v0.3.1}/core/deps/busboy-1.6.0/README.md +0 -0
  86. /package/framework/{v0.3.0 → v0.3.1}/core/deps/busboy-1.6.0/lib/index.js +0 -0
  87. /package/framework/{v0.3.0 → v0.3.1}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
  88. /package/framework/{v0.3.0 → v0.3.1}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
  89. /package/framework/{v0.3.0 → v0.3.1}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
  90. /package/framework/{v0.3.0 → v0.3.1}/core/deps/busboy-1.6.0/package.json +0 -0
  91. /package/framework/{v0.3.0 → v0.3.1}/core/deps/optimist-0.6.1/LICENSE +0 -0
  92. /package/framework/{v0.3.0 → v0.3.1}/core/deps/optimist-0.6.1/index.js +0 -0
  93. /package/framework/{v0.3.0 → v0.3.1}/core/deps/optimist-0.6.1/package.json +0 -0
  94. /package/framework/{v0.3.0 → v0.3.1}/core/deps/optimist-0.6.1/readme.markdown +0 -0
  95. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/CONTRIBUTING.md +0 -0
  96. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/HISTORY.md +0 -0
  97. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/LICENSE +0 -0
  98. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/Makefile +0 -0
  99. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/README.md +0 -0
  100. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/bin/swig.js +0 -0
  101. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/browser/comments.js +0 -0
  102. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/browser/index.js +0 -0
  103. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/api.html +0 -0
  104. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/browser.html +0 -0
  105. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/cli.html +0 -0
  106. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/extending.html +0 -0
  107. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/filters.html +0 -0
  108. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/includes/TYPES.html +0 -0
  109. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/includes/macros.html +0 -0
  110. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/index.html +0 -0
  111. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/layout.html +0 -0
  112. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/loaders.html +0 -0
  113. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/previous.html +0 -0
  114. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs/tags.html +0 -0
  115. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/docs.json +0 -0
  116. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/index.html +0 -0
  117. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/index.json +0 -0
  118. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/js/lib/rainbow.min.js +0 -0
  119. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/js/master.js +0 -0
  120. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/layouts/html5.html +0 -0
  121. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/layouts/master.html +0 -0
  122. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/button.less +0 -0
  123. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/fork.less +0 -0
  124. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/header.less +0 -0
  125. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/layout.less +0 -0
  126. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/mixins.less +0 -0
  127. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/rainbow.less +0 -0
  128. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/reset.less +0 -0
  129. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/sidenav.less +0 -0
  130. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/swig.less +0 -0
  131. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/docs/less/variables.less +0 -0
  132. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/index.js +0 -0
  133. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/dateformatter.js +0 -0
  134. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/filters.js +0 -0
  135. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/lexer.js +0 -0
  136. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/loaders/filesystem.js +0 -0
  137. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/loaders/index.js +0 -0
  138. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/loaders/memory.js +0 -0
  139. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/parser.js +0 -0
  140. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/swig.js +0 -0
  141. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/autoescape.js +0 -0
  142. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/block.js +0 -0
  143. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/else.js +0 -0
  144. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/elseif.js +0 -0
  145. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/extends.js +0 -0
  146. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/filter.js +0 -0
  147. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/for.js +0 -0
  148. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/if.js +0 -0
  149. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/import.js +0 -0
  150. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/include.js +0 -0
  151. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/index.js +0 -0
  152. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/macro.js +0 -0
  153. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/parent.js +0 -0
  154. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/raw.js +0 -0
  155. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/set.js +0 -0
  156. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/tags/spaceless.js +0 -0
  157. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/lib/utils.js +0 -0
  158. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/package.json +0 -0
  159. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/scripts/config-lint.js +0 -0
  160. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/scripts/githooks/post-merge +0 -0
  161. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/scripts/githooks/pre-commit +0 -0
  162. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/basic.test.js +0 -0
  163. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/bin.filters.js +0 -0
  164. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/bin.locals.js +0 -0
  165. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/bin.locals.json +0 -0
  166. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/bin.tags.js +0 -0
  167. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/bin.test.js +0 -0
  168. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/custom_filter.bin.html +0 -0
  169. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/custom_tag.bin.html +0 -0
  170. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/custom_tagControls.bin.html +0 -0
  171. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/custom_varControls.bin.html +0 -0
  172. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/bin/options.js +0 -0
  173. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_1.expectation.html +0 -0
  174. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_1.test.html +0 -0
  175. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_2.expectation.html +0 -0
  176. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_2.test.html +0 -0
  177. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_base.html +0 -0
  178. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.base.html +0 -0
  179. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.middle.html +0 -0
  180. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_bare.html +0 -0
  181. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_base.html +0 -0
  182. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_include.html +0 -0
  183. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_real_base.html +0 -0
  184. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_set.expectation.html +0 -0
  185. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_set.test.html +0 -0
  186. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.expectation.html +0 -0
  187. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.test.html +0 -0
  188. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.expectation.html +0 -0
  189. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.test.html +0 -0
  190. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/import.expectation.html +0 -0
  191. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/import.test.html +0 -0
  192. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/include.expectation.html +0 -0
  193. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/include.test.html +0 -0
  194. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/include_bar.html +0 -0
  195. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/include_extends.expectation.html +0 -0
  196. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/include_extends.test.html +0 -0
  197. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/includes.html +0 -0
  198. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/macros.expectation.html +0 -0
  199. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/macros.html +0 -0
  200. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/macros.test.html +0 -0
  201. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/nested_blocks.expectation.html +0 -0
  202. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/nested_blocks.test.html +0 -0
  203. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/nested_blocks_parent.html +0 -0
  204. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/parent-parent.expectation.html +0 -0
  205. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/parent-parent.test.html +0 -0
  206. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/parent.expectation.html +0 -0
  207. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/parent.test.html +0 -0
  208. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/set.expectation.html +0 -0
  209. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases/set.test.html +0 -0
  210. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases-error/circular.test.html +0 -0
  211. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases-error/circular_parent.html +0 -0
  212. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases-error/extends-non-existent.test.html +0 -0
  213. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases-error/report-filename-partial.html +0 -0
  214. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/cases-error/report-filename.test.html +0 -0
  215. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/comments.test.js +0 -0
  216. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/filters.test.js +0 -0
  217. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/loaders.test.js +0 -0
  218. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/regressions.test.js +0 -0
  219. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/autoescape.test.js +0 -0
  220. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/else.test.js +0 -0
  221. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/extend.test.js +0 -0
  222. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/filter.test.js +0 -0
  223. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/for.test.js +0 -0
  224. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/if.test.js +0 -0
  225. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/import.test.js +0 -0
  226. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/include.test.js +0 -0
  227. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/macro.test.js +0 -0
  228. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/parent.test.js +0 -0
  229. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/raw.test.js +0 -0
  230. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/set.test.js +0 -0
  231. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags/spaceless.test.js +0 -0
  232. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/tags.test.js +0 -0
  233. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/templates.test.js +0 -0
  234. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/variables.test.js +0 -0
  235. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-1.4.2/tests/whitespace.test.js +0 -0
  236. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
  237. /package/framework/{v0.3.0 → v0.3.1}/core/deps/swig-client/swig.js +0 -0
  238. /package/framework/{v0.3.0 → v0.3.1}/core/dev/index.js +0 -0
  239. /package/framework/{v0.3.0 → v0.3.1}/core/dev/lib/class.js +0 -0
  240. /package/framework/{v0.3.0 → v0.3.1}/core/dev/lib/factory.js +0 -0
  241. /package/framework/{v0.3.0 → v0.3.1}/core/dev/lib/tools.js +0 -0
  242. /package/framework/{v0.3.0 → v0.3.1}/core/gna.js +0 -0
  243. /package/framework/{v0.3.0 → v0.3.1}/core/locales/README.md +0 -0
  244. /package/framework/{v0.3.0 → v0.3.1}/core/locales/currency.json +0 -0
  245. /package/framework/{v0.3.0 → v0.3.1}/core/locales/dist/language/en.json +0 -0
  246. /package/framework/{v0.3.0 → v0.3.1}/core/locales/dist/language/fr.json +0 -0
  247. /package/framework/{v0.3.0 → v0.3.1}/core/locales/dist/region/en.json +0 -0
  248. /package/framework/{v0.3.0 → v0.3.1}/core/locales/dist/region/fr.json +0 -0
  249. /package/framework/{v0.3.0 → v0.3.1}/core/locales/index.js +0 -0
  250. /package/framework/{v0.3.0 → v0.3.1}/core/mime.types +0 -0
  251. /package/framework/{v0.3.0 → v0.3.1}/core/model/entity.js +0 -0
  252. /package/framework/{v0.3.0 → v0.3.1}/core/model/index.js +0 -0
  253. /package/framework/{v0.3.0 → v0.3.1}/core/model/template/entityFactory.js +0 -0
  254. /package/framework/{v0.3.0 → v0.3.1}/core/model/template/index.js +0 -0
  255. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/README.md +0 -0
  256. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/index.js +0 -0
  257. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/file/README.md +0 -0
  258. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/file/build.json +0 -0
  259. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/file/package.json +0 -0
  260. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/intl/README.md +0 -0
  261. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/intl/build.json +0 -0
  262. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/intl/package.json +0 -0
  263. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/intl/src/main.js +0 -0
  264. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/storage/README.md +0 -0
  265. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/storage/build.json +0 -0
  266. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/storage/package.json +0 -0
  267. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/validator/README.md +0 -0
  268. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/validator/build.json +0 -0
  269. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/validator/package.json +0 -0
  270. /package/framework/{v0.3.0 → v0.3.1}/core/plugins/lib/validator/src/form-validator.js +0 -0
  271. /package/framework/{v0.3.0 → v0.3.1}/core/router.js +0 -0
  272. /package/framework/{v0.3.0 → v0.3.1}/core/server.express.js +0 -0
  273. /package/framework/{v0.3.0 → v0.3.1}/core/server.isaac.js +0 -0
  274. /package/framework/{v0.3.0 → v0.3.1}/core/status.codes +0 -0
  275. /package/framework/{v0.3.0 → v0.3.1}/core/template/_gitignore +0 -0
  276. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/config/app.json +0 -0
  277. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  278. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
  279. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/config/settings.json +0 -0
  280. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  281. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/config/templates.json +0 -0
  282. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  283. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  284. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  285. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  286. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle/index.js +0 -0
  287. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  288. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  289. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  290. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  291. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  292. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  293. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
  294. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  295. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  296. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  297. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  298. /package/framework/{v0.3.0 → v0.3.1}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  299. /package/framework/{v0.3.0 → v0.3.1}/core/template/command/gina.bat.tpl +0 -0
  300. /package/framework/{v0.3.0 → v0.3.1}/core/template/command/gina.tpl +0 -0
  301. /package/framework/{v0.3.0 → v0.3.1}/core/template/conf/env.json +0 -0
  302. /package/framework/{v0.3.0 → v0.3.1}/core/template/conf/manifest.json +0 -0
  303. /package/framework/{v0.3.0 → v0.3.1}/core/template/conf/package.json +0 -0
  304. /package/framework/{v0.3.0 → v0.3.1}/core/template/conf/settings.json +0 -0
  305. /package/framework/{v0.3.0 → v0.3.1}/core/template/conf/statics.json +0 -0
  306. /package/framework/{v0.3.0 → v0.3.1}/core/template/conf/templates.json +0 -0
  307. /package/framework/{v0.3.0 → v0.3.1}/core/template/error/client/json/401.json +0 -0
  308. /package/framework/{v0.3.0 → v0.3.1}/core/template/error/client/json/403.json +0 -0
  309. /package/framework/{v0.3.0 → v0.3.1}/core/template/error/client/json/404.json +0 -0
  310. /package/framework/{v0.3.0 → v0.3.1}/core/template/error/server/html/50x.html +0 -0
  311. /package/framework/{v0.3.0 → v0.3.1}/core/template/error/server/json/500.json +0 -0
  312. /package/framework/{v0.3.0 → v0.3.1}/core/template/error/server/json/503.json +0 -0
  313. /package/framework/{v0.3.0 → v0.3.1}/core/template/extensions/logger/config.json +0 -0
  314. /package/framework/{v0.3.0 → v0.3.1}/helpers/console.js +0 -0
  315. /package/framework/{v0.3.0 → v0.3.1}/helpers/context.js +0 -0
  316. /package/framework/{v0.3.0 → v0.3.1}/helpers/data/LICENSE +0 -0
  317. /package/framework/{v0.3.0 → v0.3.1}/helpers/data/README.md +0 -0
  318. /package/framework/{v0.3.0 → v0.3.1}/helpers/data/package.json +0 -0
  319. /package/framework/{v0.3.0 → v0.3.1}/helpers/data/src/main.js +0 -0
  320. /package/framework/{v0.3.0 → v0.3.1}/helpers/dateFormat.js +0 -0
  321. /package/framework/{v0.3.0 → v0.3.1}/helpers/index.js +0 -0
  322. /package/framework/{v0.3.0 → v0.3.1}/helpers/json/LICENSE +0 -0
  323. /package/framework/{v0.3.0 → v0.3.1}/helpers/json/README.md +0 -0
  324. /package/framework/{v0.3.0 → v0.3.1}/helpers/json/package.json +0 -0
  325. /package/framework/{v0.3.0 → v0.3.1}/helpers/json/src/main.js +0 -0
  326. /package/framework/{v0.3.0 → v0.3.1}/helpers/path.js +0 -0
  327. /package/framework/{v0.3.0 → v0.3.1}/helpers/plugins/README.md +0 -0
  328. /package/framework/{v0.3.0 → v0.3.1}/helpers/plugins/package.json +0 -0
  329. /package/framework/{v0.3.0 → v0.3.1}/helpers/plugins/src/api-error.js +0 -0
  330. /package/framework/{v0.3.0 → v0.3.1}/helpers/plugins/src/main.js +0 -0
  331. /package/framework/{v0.3.0 → v0.3.1}/helpers/prototypes.js +0 -0
  332. /package/framework/{v0.3.0 → v0.3.1}/helpers/task.js +0 -0
  333. /package/framework/{v0.3.0 → v0.3.1}/helpers/text.js +0 -0
  334. /package/framework/{v0.3.0 → v0.3.1}/lib/archiver/README.md +0 -0
  335. /package/framework/{v0.3.0 → v0.3.1}/lib/archiver/build.json +0 -0
  336. /package/framework/{v0.3.0 → v0.3.1}/lib/archiver/package.json +0 -0
  337. /package/framework/{v0.3.0 → v0.3.1}/lib/archiver/src/dep/jszip.min.js +0 -0
  338. /package/framework/{v0.3.0 → v0.3.1}/lib/archiver/src/main.js +0 -0
  339. /package/framework/{v0.3.0 → v0.3.1}/lib/async/package.json +0 -0
  340. /package/framework/{v0.3.0 → v0.3.1}/lib/async/src/main.js +0 -0
  341. /package/framework/{v0.3.0 → v0.3.1}/lib/cache/README.md +0 -0
  342. /package/framework/{v0.3.0 → v0.3.1}/lib/cache/build.json +0 -0
  343. /package/framework/{v0.3.0 → v0.3.1}/lib/cache/package.json +0 -0
  344. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/aliases.json +0 -0
  345. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/add.js +0 -0
  346. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/arguments.json +0 -0
  347. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/build.js +0 -0
  348. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/copy.js +0 -0
  349. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/cp.js +0 -0
  350. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/help.js +0 -0
  351. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/help.txt +0 -0
  352. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/list.js +0 -0
  353. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/remove.js +0 -0
  354. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/rename.js +0 -0
  355. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/restart.js +0 -0
  356. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/rm.js +0 -0
  357. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/start.js +0 -0
  358. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/status.js +0 -0
  359. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/bundle/stop.js +0 -0
  360. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/cache/stats.js +0 -0
  361. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/add.js +0 -0
  362. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/get.js +0 -0
  363. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/help.js +0 -0
  364. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/help.txt +0 -0
  365. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/link-dev.js +0 -0
  366. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/list.js +0 -0
  367. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/remove.js +0 -0
  368. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/rm.js +0 -0
  369. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/set.js +0 -0
  370. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/unset.js +0 -0
  371. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/env/use.js +0 -0
  372. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/arguments.json +0 -0
  373. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/build.js +0 -0
  374. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/dot.js +0 -0
  375. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/get.js +0 -0
  376. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/help.js +0 -0
  377. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/help.txt +0 -0
  378. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/init.js +0 -0
  379. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/link-node-modules.js +0 -0
  380. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/link.js +0 -0
  381. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/msg.json +0 -0
  382. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/open.js +0 -0
  383. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/restart.js +0 -0
  384. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/set.js +0 -0
  385. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/start.js +0 -0
  386. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/status.js +0 -0
  387. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/stop.js +0 -0
  388. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/tail.js +0 -0
  389. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/update.js +0 -0
  390. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/framework/version.js +0 -0
  391. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/gina-dev.1.md +0 -0
  392. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/gina-framework.1.md +0 -0
  393. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/gina.1.md +0 -0
  394. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/helper.js +0 -0
  395. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/index.js +0 -0
  396. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/minion/help.js +0 -0
  397. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/minion/help.txt +0 -0
  398. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/msg.json +0 -0
  399. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/port/help.js +0 -0
  400. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/port/help.txt +0 -0
  401. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/port/inc/scan.js +0 -0
  402. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/port/list.js +0 -0
  403. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/port/reset.js +0 -0
  404. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/port/set.js +0 -0
  405. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/add.js +0 -0
  406. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/arguments.json +0 -0
  407. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/build.js +0 -0
  408. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/help.js +0 -0
  409. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/help.txt +0 -0
  410. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/import.js +0 -0
  411. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/list.js +0 -0
  412. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/move.js +0 -0
  413. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/remove.js +0 -0
  414. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/rename.js +0 -0
  415. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/restart.js +0 -0
  416. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/rm.js +0 -0
  417. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/start.js +0 -0
  418. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/status.js +0 -0
  419. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/project/stop.js +0 -0
  420. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/protocol/help.js +0 -0
  421. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/protocol/help.txt +0 -0
  422. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/protocol/list.js +0 -0
  423. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/protocol/set.js +0 -0
  424. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/add.js +0 -0
  425. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/help.js +0 -0
  426. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/help.txt +0 -0
  427. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/link-local.js +0 -0
  428. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/link-production.js +0 -0
  429. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/list.js +0 -0
  430. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/remove.js +0 -0
  431. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/rm.js +0 -0
  432. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/scope/use.js +0 -0
  433. /package/framework/{v0.3.0 → v0.3.1}/lib/cmd/view/add.js +0 -0
  434. /package/framework/{v0.3.0 → v0.3.1}/lib/collection/README.md +0 -0
  435. /package/framework/{v0.3.0 → v0.3.1}/lib/collection/build.json +0 -0
  436. /package/framework/{v0.3.0 → v0.3.1}/lib/collection/package.json +0 -0
  437. /package/framework/{v0.3.0 → v0.3.1}/lib/config.js +0 -0
  438. /package/framework/{v0.3.0 → v0.3.1}/lib/cron/README.md +0 -0
  439. /package/framework/{v0.3.0 → v0.3.1}/lib/cron/package.json +0 -0
  440. /package/framework/{v0.3.0 → v0.3.1}/lib/cron/src/main.js +0 -0
  441. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/LICENSE +0 -0
  442. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/README.md +0 -0
  443. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +0 -0
  444. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/dist/public_suffix_list.dat +0 -0
  445. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/dist/public_suffix_list.dat.br +0 -0
  446. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/dist/public_suffix_list.dat.gz +0 -0
  447. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/package.json +0 -0
  448. /package/framework/{v0.3.0 → v0.3.1}/lib/domain/src/main.js +0 -0
  449. /package/framework/{v0.3.0 → v0.3.1}/lib/generator/index.js +0 -0
  450. /package/framework/{v0.3.0 → v0.3.1}/lib/index.js +0 -0
  451. /package/framework/{v0.3.0 → v0.3.1}/lib/inherits/LICENSE +0 -0
  452. /package/framework/{v0.3.0 → v0.3.1}/lib/inherits/README.md +0 -0
  453. /package/framework/{v0.3.0 → v0.3.1}/lib/inherits/package.json +0 -0
  454. /package/framework/{v0.3.0 → v0.3.1}/lib/inherits/src/main.js +0 -0
  455. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/README.md +0 -0
  456. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/package.json +0 -0
  457. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/containers/default/index.js +0 -0
  458. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/containers/file/index.js +0 -0
  459. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  460. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  461. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/containers/mq/index.js +0 -0
  462. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/containers/mq/speaker.js +0 -0
  463. /package/framework/{v0.3.0 → v0.3.1}/lib/logger/src/helper.js +0 -0
  464. /package/framework/{v0.3.0 → v0.3.1}/lib/math/index.js +0 -0
  465. /package/framework/{v0.3.0 → v0.3.1}/lib/merge/README.md +0 -0
  466. /package/framework/{v0.3.0 → v0.3.1}/lib/merge/package.json +0 -0
  467. /package/framework/{v0.3.0 → v0.3.1}/lib/merge/src/main.js +0 -0
  468. /package/framework/{v0.3.0 → v0.3.1}/lib/model.js +0 -0
  469. /package/framework/{v0.3.0 → v0.3.1}/lib/proc.js +0 -0
  470. /package/framework/{v0.3.0 → v0.3.1}/lib/routing/README.md +0 -0
  471. /package/framework/{v0.3.0 → v0.3.1}/lib/routing/build.json +0 -0
  472. /package/framework/{v0.3.0 → v0.3.1}/lib/routing/package.json +0 -0
  473. /package/framework/{v0.3.0 → v0.3.1}/lib/routing/src/main.js +0 -0
  474. /package/framework/{v0.3.0 → v0.3.1}/lib/routing/src/radix.js +0 -0
  475. /package/framework/{v0.3.0 → v0.3.1}/lib/session-store.js +0 -0
  476. /package/framework/{v0.3.0 → v0.3.1}/lib/shell.js +0 -0
  477. /package/framework/{v0.3.0 → v0.3.1}/lib/state.js +0 -0
  478. /package/framework/{v0.3.0 → v0.3.1}/lib/swig-filters/README.md +0 -0
  479. /package/framework/{v0.3.0 → v0.3.1}/lib/swig-filters/package.json +0 -0
  480. /package/framework/{v0.3.0 → v0.3.1}/lib/swig-filters/src/main.js +0 -0
  481. /package/framework/{v0.3.0 → v0.3.1}/lib/url/README.md +0 -0
  482. /package/framework/{v0.3.0 → v0.3.1}/lib/url/index.js +0 -0
  483. /package/framework/{v0.3.0 → v0.3.1}/lib/url/routing.json +0 -0
  484. /package/framework/{v0.3.0 → v0.3.1}/lib/validator.js +0 -0
  485. /package/framework/{v0.3.0 → v0.3.1}/lib/watcher/package.json +0 -0
  486. /package/framework/{v0.3.0 → v0.3.1}/lib/watcher/src/main.js +0 -0
  487. /package/framework/{v0.3.0 → v0.3.1}/package.json +0 -0
@@ -14,13 +14,13 @@ jobs:
14
14
  strategy:
15
15
  fail-fast: false
16
16
  matrix:
17
- node-version: [18, 20, 22]
17
+ node-version: [22, 24]
18
18
 
19
19
  steps:
20
- - uses: actions/checkout@v4
20
+ - uses: actions/checkout@v6
21
21
 
22
22
  - name: Use Node.js ${{ matrix.node-version }}
23
- uses: actions/setup-node@v4
23
+ uses: actions/setup-node@v6
24
24
  with:
25
25
  node-version: ${{ matrix.node-version }}
26
26
 
package/CHANGELOG.md CHANGED
@@ -6,6 +6,13 @@ 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.3.1 - 2026-04-06
10
+ ### Added
11
+ * SQL index reporting Phase A (#QI1): connectors read indexes.sql at startup and populate query instrumentation index badges in the Inspector
12
+ ### Changed
13
+ * HTML rendering now uses direct HTTP/2 stream.respond() + stream.end(), bypassing the HTTP/1.1 compatibility layer (matching JSON rendering behaviour)
14
+ * Removed ssl-checker, colors, and uuid dependencies — engine.io is now the sole runtime dependency
15
+
9
16
  ## 0.3.0 - 2026-04-06
10
17
  ### Added
11
18
  * HTTP/2 client resilience: retry with backoff (up to 2 retries with 500ms delay), pre-flight PING validation on cached sessions, and session freshness tracking via _lastPongAt. Protects against OrbStack silent TCP drops and stale HTTP/2 sessions.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Gina
2
2
 
3
- [![npm version](https://badge.fury.io/js/gina.svg)](https://badge.fury.io/js/gina) [![GitHub version](https://badge.fury.io/gh/gina-io%2Fgina.svg)](https://badge.fury.io/gh/gina-io%2Fgina) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js >= 18](https://img.shields.io/badge/node-%3E%3D%2018-brightgreen)](https://nodejs.org) [![Tests](https://github.com/gina-io/gina/actions/workflows/test.yml/badge.svg)](https://github.com/gina-io/gina/actions/workflows/test.yml)
3
+ [![npm version](https://badge.fury.io/js/gina.svg)](https://badge.fury.io/js/gina) [![GitHub version](https://badge.fury.io/gh/gina-io%2Fgina.svg)](https://badge.fury.io/gh/gina-io%2Fgina) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js >= 22](https://img.shields.io/badge/node-%3E%3D%2022-brightgreen)](https://nodejs.org) [![Tests](https://github.com/gina-io/gina/actions/workflows/test.yml/badge.svg)](https://github.com/gina-io/gina/actions/workflows/test.yml)
4
4
 
5
5
  > **Documentation:** [gina.io/docs](https://gina.io/docs/) · **Issues:** [GitHub](https://github.com/gina-io/gina/issues) · **Changelog:** [CHANGELOG.md](./CHANGELOG.md)
6
6
 
@@ -37,18 +37,12 @@ gina bundle:start api @myproject
37
37
  open https://localhost:3100
38
38
  ```
39
39
 
40
- ## What's in 0.3.0-alpha.1
41
-
42
- - **AI connector** — any LLM via `connectors.json`; unified `.infer()` normaliser; raw `.client` for streaming
43
- - **MySQL & PostgreSQL connectors** — entity wiring, SQL files, native Promise + `.onComplete()` shim
44
- - **Async controller actions** — `async function` actions with automatic rejection handling
45
- - **`renderStream()`**stream `AsyncIterable` as SSE or chunked HTTP without buffering
46
- - **103 Early Hints** — automatic for CSS/JS; manual via `self.setEarlyHints(links)`
47
- - **Route radix trie** — O(m) candidate lookup at startup; linear scan replaced on cache miss
48
- - **HTTP/2 session metrics** — `activeSessions`, `totalStreams`, `goawayCount`, `rstCount` in `/_gina/info`
49
- - **Configurable HTTP/2 settings** — `maxConcurrentStreams` and `initialWindowSize` via `settings.json`
50
- - **WatcherService hot reload** — file-change-triggered eviction; per-request overhead eliminated
51
- - **Per-bundle framework version** — pin `"gina_version"` in `manifest.json` per bundle
40
+ ## What's in 0.3.1
41
+
42
+ - **Dependency reduction** — `ssl-checker`, `colors`, and `uuid` removed; engine.io is now the sole runtime dependency
43
+ - **HTTP/2 direct stream for HTML** — `render-swig.js` uses `stream.respond()` + `stream.end()` directly, bypassing the HTTP/1.1 compat layer
44
+ - **SQL index reporting** — MySQL, PostgreSQL, and SQLite connectors read `indexes.sql` at startup; Inspector Query tab shows index badges per query
45
+ - **Release workflow fixes** auto-delete publish branch; stable docs merge to main
52
46
 
53
47
  See the full [Changelog](./CHANGELOG.md) and [Roadmap](./ROADMAP.md).
54
48
 
package/ROADMAP.md CHANGED
@@ -12,7 +12,8 @@ This roadmap covers planned features, architectural improvements, new connectors
12
12
  | --- | --- | --- |
13
13
  | **Apr 2026** | `0.1.8` ✅ | Scaffold correctness · K8s support · Dependency injection · Automatic version migration |
14
14
  | **Q2 2026** | `0.2.0` ✅ | Stability · WatcherService · Redis & SQLite connectors · K8s session storage · Startup cache · Pointer compression · Couchbase v2 deprecation · Couchbase security & critical bug fixes · HTTP/2 security hardening |
15
- | **Q3 2026** | `0.3.0` | Async/await · Dev hot-reload · MySQL & PostgreSQL connectors · AI Phase 2 · Tutorials · Mobile backend guide · Route radix tree · Connector peerDependencies · 103 Early Hints · HTTP/2 observability · Security & CVE page · Couchbase connector hardening · Inspector Phase 1 + Phase 2 · CLI Tier 1 (project lifecycle, port:set, framework:get) |
15
+ | **Q3 2026** | `0.3.0` | Async/await · Dev hot-reload · MySQL & PostgreSQL connectors · AI Phase 2 · Tutorials · Mobile backend guide · Route radix tree · Connector peerDependencies · 103 Early Hints · HTTP/2 observability · Security & CVE page · Couchbase connector hardening · Inspector Phase 1 + Phase 2 · CLI Tier 1 (project lifecycle, port:set, framework:get) |
16
+ | **Q3 2026** | `0.3.1` | Release workflow fixes · SQL query index reporting · HTTP/2 performance · Dependency reduction (`ssl-checker`, `colors`, `uuid` → Node.js built-ins) |
16
17
  | **Q4 2026** | `0.4.0` | TypeScript declarations · AI agents (OpenAPI, MCP) · ScyllaDB connector · PWA scaffold · Prometheus metrics · Advanced tutorial · Website redesign · Docs offline ZIP · Bun investigation · Couchbase v2 removal · HTTP/2 hardening · Trailer support · CLI Tier 2 (bundle/project status, rename, copy, protocol:remove, minions) |
17
18
  | **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) |
18
19
  | **Q3 2027** | `1.0.0` | First stable release — Windows alpha compatibility is a hard gate |
@@ -0,0 +1 @@
1
+ 0.3.1
@@ -9758,7 +9758,7 @@ function ValidatorPlugin(rules, data, formId) {
9758
9758
  require('../../../../../helpers/data');
9759
9759
  }
9760
9760
 
9761
- var uuid = (isGFFCtx) ? { v1: function() { return Date.now().toString(36) + '-' + crypto.randomUUID(); }, v4: function() { return crypto.randomUUID(); } } : require('uuid');
9761
+ var uuid = { v1: function() { return Date.now().toString(36) + '-' + crypto.randomUUID(); }, v4: function() { return crypto.randomUUID(); } };
9762
9762
  var merge = (isGFFCtx) ? require('lib/merge') : require('../../../../../lib/merge');
9763
9763
  var inherits = (isGFFCtx) ? require('lib/inherits') : require('../../../../../lib/inherits');
9764
9764
  var FormValidator = (isGFFCtx) ? require('lib/form-validator') : require('./form-validator');
@@ -18895,7 +18895,7 @@ function StoragePlugin(options) {
18895
18895
 
18896
18896
  var merge = merge || require('lib/merge');;
18897
18897
  var Collection = Collection || require('lib/collection');
18898
- var uuid = uuid || { v1: function() { return Date.now().toString(36) + '-' + crypto.randomUUID(); }, v4: function() { return crypto.randomUUID(); } };
18898
+ var uuid = { v1: function() { return Date.now().toString(36) + '-' + crypto.randomUUID(); }, v4: function() { return crypto.randomUUID(); } };
18899
18899
  var dateFormat = dateFormat || require('helpers/dateFormat');
18900
18900
 
18901
18901
 
@@ -19304,7 +19304,7 @@ if ( ( typeof(module) !== 'undefined' ) && module.exports ) {
19304
19304
  // Publish as node.js module
19305
19305
  var merge = require('lib/merge'); //require('../../../../../lib/merge');
19306
19306
  var Collection = require('lib/collection'); //require('../../../../../lib/collection');
19307
- var uuid = require('uuid');
19307
+ var uuid = { v1: function() { return Date.now().toString(36) + '-' + crypto.randomUUID(); }, v4: function() { return crypto.randomUUID(); } };
19308
19308
 
19309
19309
  module.exports = StoragePlugin
19310
19310
 
@@ -19598,7 +19598,7 @@ if ( typeof(module) !== 'undefined' && module.exports ) {
19598
19598
  function Collection(content, options) {
19599
19599
 
19600
19600
  var isGFFCtx = ( ( typeof(module) !== 'undefined' ) && module.exports ) ? false : true;
19601
- var uuid = (isGFFCtx) ? { v4: function() { return crypto.randomUUID(); } } : require('uuid');
19601
+ var uuid = { v4: function() { return crypto.randomUUID(); } };
19602
19602
  var merge = (isGFFCtx) ? require('lib/merge') : require('../../../lib/merge');
19603
19603
 
19604
19604
  // defined search option rules
@@ -13,8 +13,7 @@ var merge = lib.merge;
13
13
  var modelUtil = new lib.Model();
14
14
 
15
15
  //globalized
16
- // CB-LOW-1 fix: uuid was assigned without `var`, leaking into global.uuid.
17
- var uuid = require('uuid');
16
+ // CB-LOW-1 fix: uuid import removed in 0.3.1 was imported but never called.
18
17
  N1qlQuery = couchbase.N1qlQuery || null;
19
18
  N1qlStringQuery = couchbase.N1qlStringQuery || null;
20
19
  ViewQuery = couchbase.ViewQuery || null;
@@ -3,8 +3,7 @@ var fs = require('fs');
3
3
  var util = require('util');
4
4
  var EventEmitter = require('events').EventEmitter;
5
5
  // const exec = require('child_process').exec; // CB-SEC-1/2: removed — restQuery now uses http.request()
6
- // CB-LOW-1 fix: uuid was assigned without `var`, leaking into global.uuid.
7
- var uuid = require('uuid');
6
+ // CB-LOW-1 fix: uuid import removed in 0.3.1 was imported but never called.
8
7
  var couchbase = require(getPath('project') +'/node_modules/couchbase');// jshint ignore:line
9
8
  var gina = require('../../../../core/gna');
10
9
  var lib = gina.lib;
@@ -3,8 +3,7 @@ var fs = require('fs');
3
3
  var util = require('util');
4
4
  var EventEmitter = require('events').EventEmitter;
5
5
  // const exec = require('child_process').exec; // CB-SEC-1/2: removed — restQuery now uses http.request()
6
- // CB-LOW-1 fix: uuid was assigned without `var`, leaking into global.uuid.
7
- var uuid = require('uuid');
6
+ // CB-LOW-1 fix: uuid import removed in 0.3.1 was imported but never called.
8
7
  var couchbase = require(getPath('project') +'/node_modules/couchbase');// jshint ignore:line
9
8
  var gina = require('../../../../core/gna');
10
9
  var lib = gina.lib;
@@ -61,6 +61,11 @@ function Mysql(conn, infos) {
61
61
  var envIsDev = ( /^true$/i.test(process.env.NODE_ENV_IS_DEV) ) ? true : false;
62
62
  var isCacheless = (process.env.NODE_ENV_IS_DEV == 'false') ? false : true;
63
63
 
64
+ // #QI1 — in-memory index map built from indexes.sql at startup.
65
+ // Keys are lowercase table names; values are [{ name, primary }].
66
+ // null when no indexes.sql exists (grey N/A badge in Inspector).
67
+ var _knownIndexes = null;
68
+
64
69
  // -------------------------------------------------------------------------
65
70
  // init — load entities + SQL methods
66
71
  // -------------------------------------------------------------------------
@@ -121,6 +126,18 @@ function Mysql(conn, infos) {
121
126
  if ( /^\./.test(sqlEntries[s]) ) continue;
122
127
  loadSQL(entities, conn, _(sqlDir + '/' + sqlEntries[s]));
123
128
  }
129
+
130
+ // #QI1 — load indexes.sql if present
131
+ var indexesFile = _(sqlDir + '/indexes.sql', true);
132
+ if (fs.existsSync(indexesFile)) {
133
+ try {
134
+ var indexesSrc = fs.readFileSync(indexesFile).toString();
135
+ _knownIndexes = sqlParser.parseCreateIndexes(indexesSrc);
136
+ } catch (e) {
137
+ console.warn('[mysql] Failed to parse indexes.sql: ' + e.message);
138
+ _knownIndexes = {};
139
+ }
140
+ }
124
141
  }
125
142
 
126
143
  return entities;
@@ -262,6 +279,12 @@ function Mysql(conn, infos) {
262
279
  ? process.gina._queryALS.getStore() : null;
263
280
  _devLog = _alsStore ? _alsStore._devQueryLog : null;
264
281
  if (_devLog) {
282
+ // #QI1 — resolve indexes from _knownIndexes map
283
+ var _indexes = null;
284
+ if (_knownIndexes !== null) {
285
+ var _tbl = sqlParser.extractTargetTable(queryString);
286
+ _indexes = (_tbl && _knownIndexes[_tbl]) ? _knownIndexes[_tbl] : [];
287
+ }
265
288
  _queryEntry = {
266
289
  type : 'MySQL',
267
290
  trigger : entityName.toLowerCase() + '#' + name,
@@ -270,7 +293,7 @@ function Mysql(conn, infos) {
270
293
  durationMs : 0,
271
294
  resultCount : 0,
272
295
  resultSize : 0,
273
- indexes : null,
296
+ indexes : _indexes,
274
297
  error : null,
275
298
  source : source || '',
276
299
  origin : infos.bundle,
@@ -61,6 +61,11 @@ function Postgresql(conn, infos) {
61
61
  var envIsDev = ( /^true$/i.test(process.env.NODE_ENV_IS_DEV) ) ? true : false;
62
62
  var isCacheless = (process.env.NODE_ENV_IS_DEV == 'false') ? false : true;
63
63
 
64
+ // #QI1 — in-memory index map built from indexes.sql at startup.
65
+ // Keys are lowercase table names; values are [{ name, primary }].
66
+ // null when no indexes.sql exists (grey N/A badge in Inspector).
67
+ var _knownIndexes = null;
68
+
64
69
  // -------------------------------------------------------------------------
65
70
  // init — load entities + SQL methods
66
71
  // -------------------------------------------------------------------------
@@ -121,6 +126,18 @@ function Postgresql(conn, infos) {
121
126
  if ( /^\./.test(sqlEntries[s]) ) continue;
122
127
  loadSQL(entities, conn, _(sqlDir + '/' + sqlEntries[s]));
123
128
  }
129
+
130
+ // #QI1 — load indexes.sql if present
131
+ var indexesFile = _(sqlDir + '/indexes.sql', true);
132
+ if (fs.existsSync(indexesFile)) {
133
+ try {
134
+ var indexesSrc = fs.readFileSync(indexesFile).toString();
135
+ _knownIndexes = sqlParser.parseCreateIndexes(indexesSrc);
136
+ } catch (e) {
137
+ console.warn('[postgresql] Failed to parse indexes.sql: ' + e.message);
138
+ _knownIndexes = {};
139
+ }
140
+ }
124
141
  }
125
142
 
126
143
  return entities;
@@ -263,6 +280,12 @@ function Postgresql(conn, infos) {
263
280
  ? process.gina._queryALS.getStore() : null;
264
281
  _devLog = _alsStore ? _alsStore._devQueryLog : null;
265
282
  if (_devLog) {
283
+ // #QI1 — resolve indexes from _knownIndexes map
284
+ var _indexes = null;
285
+ if (_knownIndexes !== null) {
286
+ var _tbl = sqlParser.extractTargetTable(queryString);
287
+ _indexes = (_tbl && _knownIndexes[_tbl]) ? _knownIndexes[_tbl] : [];
288
+ }
266
289
  _queryEntry = {
267
290
  type : 'PG',
268
291
  trigger : entityName.toLowerCase() + '#' + name,
@@ -271,7 +294,7 @@ function Postgresql(conn, infos) {
271
294
  durationMs : 0,
272
295
  resultCount : 0,
273
296
  resultSize : 0,
274
- indexes : null,
297
+ indexes : _indexes,
275
298
  error : null,
276
299
  source : source || '',
277
300
  origin : infos.bundle,
@@ -0,0 +1,291 @@
1
+ 'use strict';
2
+ /**
3
+ * sql-parser.js — state-machine SQL comment utilities (#SQL1)
4
+ *
5
+ * Shared by the Couchbase N1QL connector and the SQLite connector.
6
+ *
7
+ * Both parsers previously used single-pass regexes that broke on:
8
+ * - Nested block comments: /* outer /* inner *‌/ still-outer *‌/
9
+ * - -- or // inside string literals: WHERE name = 'it''s -- not a comment'
10
+ *
11
+ * The state machine below tracks four states:
12
+ * DEFAULT — normal query text
13
+ * BLOCK — inside /* ... *‌/ (depth counter handles nesting)
14
+ * LINE — inside -- ... or // ... until \n
15
+ * STRING — inside '...' or "..." (doubled-quote escape '' / "")
16
+ *
17
+ * SQL uses doubled-quote escapes ('' not \') — backslash escapes are not
18
+ * recognised here to match standard SQL behaviour.
19
+ */
20
+
21
+
22
+ /**
23
+ * stripComments — remove all SQL/N1QL comments from src.
24
+ *
25
+ * Block comments /* ... *‌/ are replaced with a single space to preserve
26
+ * token separation. Line comments produce no output. String content is
27
+ * passed through verbatim so -- or /* inside a string literal is never
28
+ * treated as a comment opener.
29
+ *
30
+ * @param {string} src
31
+ * @return {string}
32
+ */
33
+ function stripComments(src) {
34
+ var out = '';
35
+ var i = 0;
36
+ var len = src.length;
37
+ var depth = 0;
38
+
39
+ while (i < len) {
40
+ var c = src[i];
41
+ var peek = src[i + 1];
42
+
43
+ if (depth > 0) {
44
+ // Inside a block comment
45
+ if (c === '/' && peek === '*') { depth++; i += 2; }
46
+ else if (c === '*' && peek === '/') { depth--; i += 2; if (depth === 0) out += ' '; }
47
+ else { i++; }
48
+ continue;
49
+ }
50
+
51
+ // Enter block comment
52
+ if (c === '/' && peek === '*') { depth++; i += 2; continue; }
53
+
54
+ // Line comment (SQL -- or C-style //) — skip to end of line
55
+ if ((c === '-' && peek === '-') || (c === '/' && peek === '/')) {
56
+ while (i < len && src[i] !== '\n') i++;
57
+ continue;
58
+ }
59
+
60
+ // String literal — pass through verbatim; handle doubled-quote escapes
61
+ if (c === "'" || c === '"') {
62
+ var q = c;
63
+ out += c;
64
+ i++;
65
+ while (i < len) {
66
+ var ch = src[i++];
67
+ out += ch;
68
+ if (ch === q) {
69
+ if (src[i] === q) { out += src[i++]; } // '' or "" escape
70
+ else break; // end of string
71
+ }
72
+ }
73
+ continue;
74
+ }
75
+
76
+ out += c;
77
+ i++;
78
+ }
79
+
80
+ return out;
81
+ }
82
+
83
+
84
+ /**
85
+ * extractFirstBlockComment — return the first /* ... *‌/ comment verbatim
86
+ * (including the /* and *‌/ delimiters), or null if none is found.
87
+ *
88
+ * Nesting is handled: /* outer /* inner *‌/ *‌/ is treated as one comment
89
+ * and the full extent is returned. String literals are skipped — a /* inside
90
+ * a string does not open a comment.
91
+ *
92
+ * Used by the Couchbase N1QL parser to extract $param references from the
93
+ * leading annotation comment before stripping all comments from the query.
94
+ *
95
+ * @param {string} src
96
+ * @return {string|null}
97
+ */
98
+ function extractFirstBlockComment(src) {
99
+ var i = 0;
100
+ var len = src.length;
101
+ var depth = 0;
102
+ var start = -1;
103
+
104
+ while (i < len) {
105
+ var c = src[i];
106
+ var peek = src[i + 1];
107
+
108
+ if (depth > 0) {
109
+ if (c === '/' && peek === '*') {
110
+ depth++; i += 2;
111
+ } else if (c === '*' && peek === '/') {
112
+ depth--; i += 2;
113
+ if (depth === 0) return src.slice(start, i);
114
+ } else {
115
+ i++;
116
+ }
117
+ continue;
118
+ }
119
+
120
+ // Enter block comment
121
+ if (c === '/' && peek === '*') {
122
+ start = i;
123
+ depth++;
124
+ i += 2;
125
+ continue;
126
+ }
127
+
128
+ // String literal — skip, do not scan for comment openers inside strings
129
+ if (c === "'" || c === '"') {
130
+ var q = c;
131
+ i++;
132
+ while (i < len) {
133
+ var ch = src[i++];
134
+ if (ch === q) {
135
+ if (src[i] === q) i++; // '' or "" escape
136
+ else break;
137
+ }
138
+ }
139
+ continue;
140
+ }
141
+
142
+ i++;
143
+ }
144
+
145
+ return null; // no block comment found
146
+ }
147
+
148
+
149
+ /**
150
+ * parseCreateIndexes — parse CREATE INDEX statements from a SQL source string
151
+ * and build a table-keyed index map.
152
+ *
153
+ * Handles:
154
+ * CREATE INDEX <name> ON <table> (...)
155
+ * CREATE UNIQUE INDEX <name> ON <table> (...)
156
+ * CREATE INDEX IF NOT EXISTS <name> ON <table> (...)
157
+ * CREATE UNIQUE INDEX IF NOT EXISTS <name> ON <table> (...)
158
+ *
159
+ * Table names are normalised to lowercase. Quoted identifiers (`"tbl"`,
160
+ * `` `tbl` ``) are unquoted. Schema-qualified names (`schema.table`) keep
161
+ * only the table part.
162
+ *
163
+ * @param {string} src Raw SQL source (may contain comments)
164
+ * @return {Object.<string, Array<{name: string, primary: boolean}>>}
165
+ * Map of lowercase table name → array of index descriptors.
166
+ * Returns an empty object when no CREATE INDEX statements are found.
167
+ */
168
+ function parseCreateIndexes(src) {
169
+ var map = {};
170
+ if (!src) return map;
171
+
172
+ // Strip comments first so -- or /* inside strings doesn't confuse us
173
+ var clean = stripComments(src);
174
+
175
+ // Match CREATE [UNIQUE] INDEX [IF NOT EXISTS] <name> ON <table>
176
+ // Captures: (1) index name, (2) table name
177
+ var re = /CREATE\s+(?:UNIQUE\s+)?INDEX\s+(?:IF\s+NOT\s+EXISTS\s+)?(\S+)\s+ON\s+(\S+)/gi;
178
+ var m;
179
+
180
+ while ((m = re.exec(clean)) !== null) {
181
+ var idxName = unquoteIdentifier(m[1]);
182
+ var tableName = unquoteIdentifier(m[2]);
183
+
184
+ // Strip schema prefix (schema.table → table)
185
+ var dotPos = tableName.lastIndexOf('.');
186
+ if (dotPos > -1) tableName = tableName.substring(dotPos + 1);
187
+
188
+ // Strip trailing parenthesis if captured (e.g. "users(" from "ON users(email)")
189
+ tableName = tableName.replace(/\(.*$/, '');
190
+
191
+ tableName = tableName.toLowerCase();
192
+
193
+ if (!map[tableName]) map[tableName] = [];
194
+
195
+ // Deduplicate by index name
196
+ var exists = false;
197
+ for (var i = 0; i < map[tableName].length; i++) {
198
+ if (map[tableName][i].name === idxName) { exists = true; break; }
199
+ }
200
+ if (!exists) {
201
+ map[tableName].push({ name: idxName, primary: false });
202
+ }
203
+ }
204
+
205
+ return map;
206
+ }
207
+
208
+
209
+ /**
210
+ * extractTargetTable — extract the primary target table from a SQL statement.
211
+ *
212
+ * Handles SELECT ... FROM <table>, INSERT INTO <table>, UPDATE <table>,
213
+ * DELETE FROM <table>. Returns the lowercase, unquoted table name, or null
214
+ * if no table can be determined.
215
+ *
216
+ * For JOINs, only the first FROM target is returned (Phase A limitation —
217
+ * full multi-table extraction is deferred to Phase B).
218
+ *
219
+ * @param {string} queryString Cleaned SQL (comments already stripped)
220
+ * @return {string|null} Lowercase table name, or null
221
+ */
222
+ function extractTargetTable(queryString) {
223
+ if (!queryString) return null;
224
+
225
+ var m;
226
+
227
+ // INSERT INTO <table>
228
+ m = queryString.match(/\bINSERT\s+INTO\s+(\S+)/i);
229
+ if (m) return normaliseTableName(m[1]);
230
+
231
+ // UPDATE <table>
232
+ m = queryString.match(/\bUPDATE\s+(\S+)/i);
233
+ if (m) return normaliseTableName(m[1]);
234
+
235
+ // DELETE FROM <table>
236
+ m = queryString.match(/\bDELETE\s+FROM\s+(\S+)/i);
237
+ if (m) return normaliseTableName(m[1]);
238
+
239
+ // SELECT ... FROM <table>
240
+ m = queryString.match(/\bFROM\s+(\S+)/i);
241
+ if (m) return normaliseTableName(m[1]);
242
+
243
+ return null;
244
+ }
245
+
246
+
247
+ /**
248
+ * Unquote a SQL identifier — strips surrounding `"`, `` ` ``, or `[` `]`.
249
+ * @inner
250
+ * @param {string} id
251
+ * @return {string}
252
+ */
253
+ function unquoteIdentifier(id) {
254
+ if (!id) return id;
255
+ if ((id[0] === '"' && id[id.length - 1] === '"') ||
256
+ (id[0] === '`' && id[id.length - 1] === '`')) {
257
+ return id.substring(1, id.length - 1);
258
+ }
259
+ if (id[0] === '[' && id[id.length - 1] === ']') {
260
+ return id.substring(1, id.length - 1);
261
+ }
262
+ return id;
263
+ }
264
+
265
+
266
+ /**
267
+ * Normalise a captured table token: unquote, strip schema prefix,
268
+ * strip trailing punctuation, lowercase.
269
+ * @inner
270
+ * @param {string} raw
271
+ * @return {string|null}
272
+ */
273
+ function normaliseTableName(raw) {
274
+ if (!raw) return null;
275
+ raw = unquoteIdentifier(raw);
276
+ // Strip schema prefix
277
+ var dot = raw.lastIndexOf('.');
278
+ if (dot > -1) raw = raw.substring(dot + 1);
279
+ // Strip trailing parens, commas, semicolons
280
+ raw = raw.replace(/[,(;]+$/, '');
281
+ raw = unquoteIdentifier(raw); // unquote again after schema strip (schema."table")
282
+ return raw.toLowerCase() || null;
283
+ }
284
+
285
+
286
+ module.exports = {
287
+ stripComments : stripComments,
288
+ extractFirstBlockComment: extractFirstBlockComment,
289
+ parseCreateIndexes : parseCreateIndexes,
290
+ extractTargetTable : extractTargetTable
291
+ };
@@ -64,6 +64,11 @@ function Sqlite(conn, infos) {
64
64
  var envIsDev = ( /^true$/i.test(process.env.NODE_ENV_IS_DEV) ) ? true : false;
65
65
  var isCacheless = (process.env.NODE_ENV_IS_DEV == 'false') ? false : true;
66
66
 
67
+ // #QI1 — in-memory index map built from indexes.sql at startup.
68
+ // Keys are lowercase table names; values are [{ name, primary }].
69
+ // null when no indexes.sql exists (grey N/A badge in Inspector).
70
+ var _knownIndexes = null;
71
+
67
72
  // -------------------------------------------------------------------------
68
73
  // init — load entities + SQL methods
69
74
  // -------------------------------------------------------------------------
@@ -124,6 +129,18 @@ function Sqlite(conn, infos) {
124
129
  if ( /^\./.test(sqlEntries[s]) ) continue;
125
130
  loadSQL(entities, conn, _(sqlDir + '/' + sqlEntries[s]));
126
131
  }
132
+
133
+ // #QI1 — load indexes.sql if present
134
+ var indexesFile = _(sqlDir + '/indexes.sql', true);
135
+ if (fs.existsSync(indexesFile)) {
136
+ try {
137
+ var indexesSrc = fs.readFileSync(indexesFile).toString();
138
+ _knownIndexes = sqlParser.parseCreateIndexes(indexesSrc);
139
+ } catch (e) {
140
+ console.warn('[sqlite] Failed to parse indexes.sql: ' + e.message);
141
+ _knownIndexes = {};
142
+ }
143
+ }
127
144
  }
128
145
 
129
146
  return entities;
@@ -297,6 +314,12 @@ function Sqlite(conn, infos) {
297
314
  ? process.gina._queryALS.getStore() : null;
298
315
  _devLog = _alsStore ? _alsStore._devQueryLog : null;
299
316
  if (_devLog) {
317
+ // #QI1 — resolve indexes from _knownIndexes map
318
+ var _indexes = null;
319
+ if (_knownIndexes !== null) {
320
+ var _tbl = sqlParser.extractTargetTable(queryString);
321
+ _indexes = (_tbl && _knownIndexes[_tbl]) ? _knownIndexes[_tbl] : [];
322
+ }
300
323
  _queryEntry = {
301
324
  type : 'SQL',
302
325
  trigger : entityName.toLowerCase() + '#' + name,
@@ -305,7 +328,7 @@ function Sqlite(conn, infos) {
305
328
  durationMs : 0,
306
329
  resultCount : 0,
307
330
  resultSize : 0,
308
- indexes : null,
331
+ indexes : _indexes,
309
332
  error : null,
310
333
  source : source || '',
311
334
  origin : infos.bundle,