gina 0.3.1-alpha.1 → 0.3.2-alpha.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.
- package/.github/workflows/test.yml +3 -3
- package/CHANGELOG.md +7 -0
- package/README.md +7 -13
- package/ROADMAP.md +2 -1
- package/framework/v0.3.2-alpha.1/VERSION +1 -0
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.js +4 -4
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/connector.v2.js +1 -2
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/connector.v3.js +1 -2
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/connector.v4.js +1 -2
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/mysql/index.js +24 -1
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/postgresql/index.js +24 -1
- package/framework/v0.3.2-alpha.1/core/connectors/sql-parser.js +291 -0
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/sqlite/index.js +24 -1
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/controller/controller.render-swig.js +108 -36
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/storage/src/main.js +2 -2
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/validator/src/main.js +1 -1
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/server.js +63 -19
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cache/src/main.js +1 -1
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/collection/src/main.js +1 -1
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/containers/mq/listener.js +2 -2
- package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/main.js +45 -10
- package/llms.txt +3 -2
- package/package.json +4 -7
- package/script/post_install.js +3 -45
- package/script/pre_install.js +2 -14
- package/framework/v0.3.1-alpha.1/VERSION +0 -1
- package/framework/v0.3.1-alpha.1/core/connectors/sql-parser.js +0 -152
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/AUTHORS +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/html/static.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.br +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.gz +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/config.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/content.encoding +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/controller/controller.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/controller/controller.render-json.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/controller/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/optimist-0.6.1/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/optimist-0.6.1/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/optimist-0.6.1/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/optimist-0.6.1/readme.markdown +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/CONTRIBUTING.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/HISTORY.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/Makefile +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/bin/swig.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/browser/comments.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/browser/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/api.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/browser.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/cli.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/extending.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/filters.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/includes/TYPES.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/includes/macros.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/index.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/layout.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/loaders.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/previous.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs/tags.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/docs.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/index.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/index.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/js/lib/rainbow.min.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/js/master.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/layouts/html5.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/layouts/master.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/button.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/fork.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/header.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/layout.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/mixins.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/rainbow.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/reset.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/sidenav.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/swig.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/docs/less/variables.less +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/dateformatter.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/filters.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/lexer.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/loaders/filesystem.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/loaders/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/loaders/memory.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/parser.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/swig.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/autoescape.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/block.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/else.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/elseif.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/extends.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/filter.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/for.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/if.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/import.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/include.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/macro.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/parent.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/raw.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/set.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/tags/spaceless.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/lib/utils.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/scripts/config-lint.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/scripts/githooks/post-merge +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/scripts/githooks/pre-commit +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/basic.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/bin.filters.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/bin.locals.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/bin.locals.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/bin.tags.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/bin.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/custom_filter.bin.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/custom_tag.bin.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/custom_tagControls.bin.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/custom_varControls.bin.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/bin/options.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_1.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_1.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_2.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_2.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_base.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.base.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.middle.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_bare.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_base.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_include.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_real_base.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_set.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_set.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/import.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/import.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/include.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/include.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/include_bar.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/include_extends.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/include_extends.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/includes.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/macros.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/macros.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/macros.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/nested_blocks.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/nested_blocks.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/nested_blocks_parent.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/parent-parent.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/parent-parent.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/parent.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/parent.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/set.expectation.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases/set.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases-error/circular.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases-error/circular_parent.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases-error/extends-non-existent.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases-error/report-filename-partial.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/cases-error/report-filename.test.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/comments.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/filters.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/loaders.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/regressions.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/autoescape.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/else.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/extend.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/filter.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/for.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/if.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/import.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/include.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/macro.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/parent.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/raw.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/set.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags/spaceless.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/tags.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/templates.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/variables.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-1.4.2/tests/whitespace.test.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/deps/swig-client/swig.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/dev/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/gna.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/locales/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/locales/currency.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/locales/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/mime.types +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/model/entity.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/model/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/model/template/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/file/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/intl/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/router.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/server.express.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/server.isaac.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/status.codes +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/_gitignore +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/conf/env.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/conf/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/console.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/context.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/data/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/data/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/json/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/json/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/path.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/prototypes.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/task.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/helpers/text.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/archiver/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/archiver/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/archiver/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/async/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/async/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cache/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cache/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cache/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/add.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/start.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/restart.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/collection/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/collection/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/collection/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/config.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cron/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cron/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/dist/public_suffix_list.dat +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/dist/public_suffix_list.dat.br +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/dist/public_suffix_list.dat.gz +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/generator/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/inherits/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/inherits/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/math/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/merge/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/merge/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/model.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/proc.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/routing/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/routing/build.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/routing/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/session-store.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/shell.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/state.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/url/README.md +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/url/index.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/url/routing.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/validator.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/watcher/package.json +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/package.json +0 -0
|
@@ -14,13 +14,13 @@ jobs:
|
|
|
14
14
|
strategy:
|
|
15
15
|
fail-fast: false
|
|
16
16
|
matrix:
|
|
17
|
-
node-version: [
|
|
17
|
+
node-version: [22, 24]
|
|
18
18
|
|
|
19
19
|
steps:
|
|
20
|
-
- uses: actions/checkout@
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
21
|
|
|
22
22
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
23
|
-
uses: actions/setup-node@
|
|
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
|
-
[](https://badge.fury.io/js/gina) [](https://badge.fury.io/gh/gina-io%2Fgina) [](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/gina) [](https://badge.fury.io/gh/gina-io%2Fgina) [](https://opensource.org/licenses/MIT) [](https://nodejs.org) [](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.
|
|
41
|
-
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
44
|
-
- **
|
|
45
|
-
-
|
|
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.2-alpha.1
|
package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/asset/plugin/dist/vendor/gina/js/gina.js
RENAMED
|
@@ -9758,7 +9758,7 @@ function ValidatorPlugin(rules, data, formId) {
|
|
|
9758
9758
|
require('../../../../../helpers/data');
|
|
9759
9759
|
}
|
|
9760
9760
|
|
|
9761
|
-
var 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 =
|
|
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 =
|
|
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 =
|
|
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
|
package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/connector.v2.js
RENAMED
|
@@ -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
|
|
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;
|
package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/connector.v3.js
RENAMED
|
@@ -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
|
|
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;
|
package/framework/{v0.3.1-alpha.1 → v0.3.2-alpha.1}/core/connectors/couchbase/lib/connector.v4.js
RENAMED
|
@@ -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
|
|
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 :
|
|
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 :
|
|
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 :
|
|
331
|
+
indexes : _indexes,
|
|
309
332
|
error : null,
|
|
310
333
|
source : source || '',
|
|
311
334
|
origin : infos.bundle,
|