gina 0.3.2-alpha.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/CONVENTIONS.md +42 -0
- package/README.md +8 -6
- package/ROADMAP.md +5 -2
- package/bin/cli +1 -0
- package/bin/gina +4 -0
- package/framework/v0.3.2/VERSION +1 -0
- package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/index.html +4 -0
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +160 -11
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +250 -7
- package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js +532 -0
- package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +8 -0
- package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- package/framework/v0.3.2/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/index.js +33 -13
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/controller/controller.js +20 -1
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/controller/controller.render-json.js +60 -14
- package/framework/v0.3.2/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/gna.js +35 -1
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/server.isaac.js +30 -8
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/server.js +50 -9
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/context.js +1 -0
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/add.js +0 -1
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/start.js +11 -13
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/restart.js +10 -1
- package/framework/v0.3.2/lib/cmd/inspector/help.js +48 -0
- package/framework/v0.3.2/lib/cmd/inspector/help.txt +28 -0
- package/framework/v0.3.2/lib/cmd/inspector/open.js +510 -0
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/index.js +1 -0
- package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/model.js +27 -3
- package/llms.txt +6 -1
- package/package.json +101 -101
- package/schema/connectors.json +99 -12
- package/schema/routing.json +93 -7
- package/schema/watchers.json +29 -0
- package/script/post_install.js +5 -1
- package/framework/v0.3.2-alpha.1/VERSION +0 -1
- package/framework/v0.3.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -21544
- package/framework/v0.3.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.3.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.3.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -286
- package/framework/v0.3.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- package/framework/v0.3.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/AUTHORS +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/html/static.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.br +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/html/toolbar.html.gz +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/config.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/ai/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/ai/lib/connector.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/connector.v3.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/connector.v4.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/mysql/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/mysql/lib/connector.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/postgresql/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/postgresql/lib/connector.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/redis/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/redis/lib/session-store.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/sql-parser.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/sqlite/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/sqlite/lib/connector.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/connectors/sqlite/lib/session-store.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/content.encoding +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/controller/controller.render-stream.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/controller/controller.render-swig.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/controller/controller.render-v1.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/controller/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/busboy-1.6.0/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/busboy-1.6.0/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/types/multipart.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/busboy-1.6.0/lib/utils.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/busboy-1.6.0/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/optimist-0.6.1/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/optimist-0.6.1/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/optimist-0.6.1/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/optimist-0.6.1/readme.markdown +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/CONTRIBUTING.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/HISTORY.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/Makefile +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/bin/swig.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/browser/comments.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/browser/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/api.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/browser.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/cli.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/extending.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/filters.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/includes/TYPES.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/includes/macros.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/index.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/layout.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/loaders.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/previous.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs/tags.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/docs.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/index.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/index.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/js/lib/rainbow.min.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/js/master.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/layouts/html5.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/layouts/master.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/button.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/fork.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/header.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/layout.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/mixins.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/rainbow.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/reset.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/sidenav.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/swig.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/docs/less/variables.less +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/dateformatter.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/filters.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/lexer.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/loaders/filesystem.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/loaders/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/loaders/memory.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/parser.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/swig.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/autoescape.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/block.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/else.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/elseif.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/extends.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/filter.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/for.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/if.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/import.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/include.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/macro.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/parent.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/raw.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/set.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/tags/spaceless.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/lib/utils.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/scripts/config-lint.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/scripts/githooks/post-merge +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/scripts/githooks/pre-commit +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/basic.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.filters.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.locals.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.locals.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.tags.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/bin.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_filter.bin.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_tag.bin.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_tagControls.bin.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/custom_varControls.bin.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/bin/options.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_1.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_1.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_2.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_2.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_base.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.base.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_4.middle.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_bare.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_base.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_include.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_layouts/extends_real_base.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_set.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_set.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_3.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/extends_tests/extends_4.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/import.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/import.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include_bar.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include_extends.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/include_extends.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/includes.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/macros.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/macros.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/macros.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/nested_blocks.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/nested_blocks.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/nested_blocks_parent.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent-parent.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent-parent.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/parent.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/set.expectation.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases/set.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/circular.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/circular_parent.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/extends-non-existent.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/report-filename-partial.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/cases-error/report-filename.test.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/comments.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/filters.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/loaders.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/regressions.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/autoescape.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/else.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/extend.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/filter.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/for.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/if.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/import.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/include.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/macro.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/parent.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/raw.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/set.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags/spaceless.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/tags.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/templates.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/variables.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-1.4.2/tests/whitespace.test.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/deps/swig-client/swig.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/dev/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/dev/lib/factory.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/locales/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/locales/currency.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/locales/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/mime.types +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/model/entity.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/model/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/model/template/entityFactory.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/model/template/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/file/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/intl/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/storage/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/validator/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/validator/src/form-validator.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/plugins/lib/validator/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/router.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/server.express.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/status.codes +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/_gitignore +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/config/connectors.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/config/watchers.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_public/css/home.css +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/command/gina.tpl +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/conf/env.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/conf/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/conf/templates.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/console.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/data/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/data/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/data/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/dateFormat.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/json/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/json/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/json/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/path.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/plugins/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/plugins/src/api-error.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/plugins/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/prototypes.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/task.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/helpers/text.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/archiver/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/archiver/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/archiver/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/archiver/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/async/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/async/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cache/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cache/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cache/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cache/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/build.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/restart.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/cache/stats.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/arguments.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/build.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/init.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/link-node-modules.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/link.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/start.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/tail.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/framework/version.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/helper.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/minion/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/minion/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/port/reset.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/add.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/arguments.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/build.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/list.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/collection/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/collection/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/collection/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/collection/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/config.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cron/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cron/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/dist/public_suffix_list.dat +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/dist/public_suffix_list.dat.br +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/dist/public_suffix_list.dat.gz +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/domain/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/generator/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/inherits/LICENSE +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/inherits/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/inherits/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/inherits/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/containers/file/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/containers/mq/listener.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/helper.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/logger/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/math/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/merge/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/merge/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/proc.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/routing/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/routing/build.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/routing/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/routing/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/routing/src/radix.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/session-store.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/shell.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/state.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/swig-filters/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/swig-filters/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/url/README.md +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/url/index.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/url/routing.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/validator.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/watcher/package.json +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/lib/watcher/src/main.js +0 -0
- /package/framework/{v0.3.2-alpha.1 → v0.3.2}/package.json +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
window.originalContext=null;
|
|
2
|
+
window.onGinaLoaded=function(b){if(!b)return!1;if(b.isFrameworkLoaded)return!0;var e={bundle:'{{ page.environment.bundle }}',env:'{{ page.environment.env }}',envIsDev:/^true$/.test('{{ page.environment.envIsDev }}')?!0:!1,scope:'{{ page.environment.scope }}',scopeIsLocal:/^true$/.test('{{ page.environment.scopeIsLocal }}')?!0:!1,scopeIsProduction:/^true$/.test('{{ page.environment.scopeIsProduction }}')?!0:!1,isProxyHost:/^true$/.test('{{ page.environment.isProxyHost }}')?!0:!1,hostname:'{{ page.environment.hostname }}',
|
|
3
|
+
routing:JSON.parse(decodeURIComponent('{{ page.environment.routing }}')),reverseRouting:JSON.parse(decodeURIComponent('{{ page.environment.reverseRouting }}')),version:'{{ page.environment.version }}',webroot:'{{ page.environment.webroot }}',protocol:'{{ page.environment.protocol }}'};if('undefined'!=typeof b.config.routing&&0<b.config.routing.count()&&'undefined'!=typeof b.config.reverseRouting&&!b.config.reverseRouting.count()||'undefined'!=typeof b.config.routing&&0<b.config.routing.count()&&'undefined'==
|
|
4
|
+
typeof b.config.reverseRouting){var a=b.config.routing,d={};for(var f in a)if(/,/.test(a[f].url)){var h=a[f].url.split(/,/g),g=0;let c=h.length;for(;g<c;++g)d[h[g]]=f}else d[a[f].url]=f;b.config.reverseRouting=d}if('undefined'!=typeof b.config)for(let c in b.config)e[c]=b.config[c];b.config=e;/^true$/i.test(e.g)&&(e.proxyHost=b.config.proxyHost='{{ page.environment.proxyHost }}',e.proxyHostname=b.config.proxyHostname='{{ page.environment.proxyHostname }}');b.session={id:'{{ page.data.session.id }}',
|
|
5
|
+
originalTimeout:'{{ page.data.session.timeout }}',createdAt:'{{ page.data.session.createdAt }}',lastModified:'{{ page.data.session.lastModified }}',expiresAt:null};b.session.__defineGetter__('timeout',function(){if(this.lastModified){this.lastModified&&'string'==typeof this.lastModified&&(this.lastModified=new Date(this.lastModified));this.createdAt&&'string'==typeof this.createdAt&&(this.createdAt=new Date(this.createdAt));this.originalTimeout&&'string'==typeof this.originalTimeout&&(this.originalTimeout=
|
|
6
|
+
parseInt(this.originalTimeout));this.expiresAt=new Date((new Date(this.lastModified)).getTime()+this.originalTimeout);var c=this.expiresAt-new Date}else c=null;return c});b.session.timeout;b.config.getRouting=function(c){var k={},l=b.config.routing;if('undefined'==typeof c)return l;c=new RegExp('\\@'+c+String.fromCharCode(36));for(var m in l)c.test(m)&&(k[m]=l[m]);return 0<k.count()?k:null};window.GINA_ENV='{{ page.environment.env }}';window.GINA_ENV_IS_DEV=/^true$/i.test('{{ page.environment.envIsDev }}')?
|
|
7
|
+
!0:!1;if('undefined'!=typeof location.search&&/debug=/i.test(location.search)||!location.search&&/\?/.test(location.href))a=(' '+location.search).slice(1),!a&&/\?/.test(location.href)&&(a=location.href.match(/\?.*/),Array.isArray(a)&&0<a.length&&(a=a[0])),(a=a.match(/debug=(true|false)/))&&(window.GINA_ENV_IS_DEV=b.config.envIsDev=/^true$/i.test(a[0].split(/=/)[1])?!0:!1),a=a=null;b.isFrameworkLoaded=!0;b.setOptions(e);try{b.forms=JSON.parse(decodeURIComponent('{{ page.environment.forms }}'))}catch(c){throw c;
|
|
8
|
+
}a=null;a=document.head.getElementsByTagName('link');d=0;f=a.length;h=!1;for(g=RegExp('css/vendor/gina/gina.min.css');d<f;++d)if(g.test(a[d].href)){h=!0;break}g=f=d=a=null;h||(a=document.createElement('link'),a.href=e.webroot+'css/vendor/gina/gina.min.css',a.media='screen',a.rel='stylesheet',a.type='text/css',e=document.getElementsByTagName('head')[0],(d=e.getElementsByTagName('link'))&&'undefined'!=typeof d.length&&0<d.length?e.insertBefore(a,d[0]):e.appendChild(a),e=d=null);return!0};
|
|
Binary file
|
|
Binary file
|
|
@@ -98,13 +98,28 @@ function Couchbase(conn, infos) {
|
|
|
98
98
|
* extracted indexes. Patches `queryEntry.indexes` in-place once
|
|
99
99
|
* the EXPLAIN result is available.
|
|
100
100
|
*
|
|
101
|
-
* @param {object} conn - The Couchbase connection object
|
|
101
|
+
* @param {object} conn - The Couchbase connection object. May have `_cluster`
|
|
102
|
+
* directly (entity query path) or nested at `_scope._bucket._cluster` (bulk insert path).
|
|
102
103
|
* @param {string} statement - The original N1QL statement (without EXPLAIN prefix)
|
|
103
104
|
* @param {object} queryEntry - The QI entry to patch with index info
|
|
104
105
|
* @param {object} queryOptions - Query options (for parameters)
|
|
105
106
|
* @private
|
|
106
107
|
*/
|
|
107
108
|
var explainForIndexes = function(conn, statement, queryEntry, queryOptions) {
|
|
109
|
+
// Resolve cluster from whichever conn shape we received:
|
|
110
|
+
// - entity query path: conn._cluster exists directly
|
|
111
|
+
// - bulk insert path: conn is a scope object, cluster is at conn._scope._bucket._cluster
|
|
112
|
+
var cluster = (conn._cluster)
|
|
113
|
+
? conn._cluster
|
|
114
|
+
: (conn._scope && conn._scope._bucket && conn._scope._bucket._cluster)
|
|
115
|
+
? conn._scope._bucket._cluster
|
|
116
|
+
: null;
|
|
117
|
+
|
|
118
|
+
if (!cluster || typeof(cluster.query) !== 'function') {
|
|
119
|
+
console.warn('[explainForIndexes] Cannot resolve cluster from conn — skipping EXPLAIN for: ' + statement.substring(0, 80));
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
108
123
|
// Mark as pending so we don't fire multiple EXPLAINs for the same statement
|
|
109
124
|
_explainCache.set(statement, null);
|
|
110
125
|
|
|
@@ -113,18 +128,23 @@ function Couchbase(conn, infos) {
|
|
|
113
128
|
parameters: queryOptions.parameters || []
|
|
114
129
|
};
|
|
115
130
|
|
|
116
|
-
|
|
117
|
-
.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
131
|
+
try {
|
|
132
|
+
cluster.query('EXPLAIN ' + statement, explainOpts)
|
|
133
|
+
.then(function(data) {
|
|
134
|
+
var plan = (data && data.rows && data.rows[0]) ? data.rows[0].plan || data.rows[0] : null;
|
|
135
|
+
var indexes = extractIndexes(plan);
|
|
136
|
+
_explainCache.set(statement, indexes);
|
|
137
|
+
// Patch the current query entry in-place (it's already in _devLog)
|
|
138
|
+
queryEntry.indexes = indexes;
|
|
139
|
+
})
|
|
140
|
+
.catch(function() {
|
|
141
|
+
// EXPLAIN failed — leave indexes as null (N/A badge)
|
|
142
|
+
_explainCache.set(statement, null);
|
|
143
|
+
});
|
|
144
|
+
} catch (_explainErr) {
|
|
145
|
+
console.warn('[explainForIndexes] ' + _explainErr.message);
|
|
146
|
+
_explainCache.set(statement, null);
|
|
147
|
+
}
|
|
128
148
|
};
|
|
129
149
|
|
|
130
150
|
/**
|
|
@@ -38,6 +38,13 @@ if (!process.gina._queryALS) {
|
|
|
38
38
|
var { AsyncLocalStorage } = require('async_hooks');
|
|
39
39
|
process.gina._queryALS = new AsyncLocalStorage();
|
|
40
40
|
}
|
|
41
|
+
// Inspector activation flag — when false, profiling (flow timeline, query log)
|
|
42
|
+
// is skipped and JSON responses stay clean. Set to true when the Inspector SPA
|
|
43
|
+
// is opened or an SSE client connects to /_gina/agent or /_gina/logs.
|
|
44
|
+
// Lives on process.gina so it survives dev-mode cache busting of controller.js.
|
|
45
|
+
if (typeof process.gina._inspectorActive === 'undefined') {
|
|
46
|
+
process.gina._inspectorActive = false;
|
|
47
|
+
}
|
|
41
48
|
var merge = lib.merge;
|
|
42
49
|
var inherits = lib.inherits;
|
|
43
50
|
var console = lib.logger;
|
|
@@ -247,7 +254,11 @@ function SuperController(options) {
|
|
|
247
254
|
// reuse it. AsyncLocalStorage.enterWith() binds the log to this request's
|
|
248
255
|
// async context so connector queries always push to the correct array,
|
|
249
256
|
// even when concurrent requests interleave.
|
|
250
|
-
|
|
257
|
+
// Activated when the Inspector is open locally (_inspectorActive) OR when
|
|
258
|
+
// the request came from a cross-bundle self.query() call with the Inspector
|
|
259
|
+
// header (x-gina-inspector). This ensures QI captures queries on target
|
|
260
|
+
// bundles (e.g. coreapi) without always-on overhead.
|
|
261
|
+
if (_isDev && (process.gina._inspectorActive || (req.headers && req.headers['x-gina-inspector'] === 'true'))) {
|
|
251
262
|
if (!req._devQueryLog) {
|
|
252
263
|
req._devQueryLog = [];
|
|
253
264
|
}
|
|
@@ -2436,6 +2447,7 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
2436
2447
|
}
|
|
2437
2448
|
|
|
2438
2449
|
|
|
2450
|
+
|
|
2439
2451
|
if ( typeof(data) != 'undefined' && data.count() > 0) {
|
|
2440
2452
|
|
|
2441
2453
|
queryData = '?';
|
|
@@ -2570,6 +2582,12 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
2570
2582
|
options.headers['x-forwarded-proto'] = process.gina.PROXY_SCHEME;
|
|
2571
2583
|
}
|
|
2572
2584
|
|
|
2585
|
+
// #QI — propagate Inspector profiling to the target bundle so it
|
|
2586
|
+
// captures queries and timeline entries for cross-bundle propagation.
|
|
2587
|
+
if (_isDev && process.gina._inspectorActive) {
|
|
2588
|
+
options.headers['x-gina-inspector'] = 'true';
|
|
2589
|
+
}
|
|
2590
|
+
|
|
2573
2591
|
if ( ctx.gina.config.envConf[ctx.bundle][ctx.env].server.resolvers.length > 0 ) {
|
|
2574
2592
|
var resolversColl = new Collection(ctx.gina.config.envConf[ctx.bundle][ctx.env].server.resolvers);
|
|
2575
2593
|
options.nameservers = resolversColl.findOne({ scope: process.env.NODE_SCOPE}).nameservers;
|
|
@@ -4169,6 +4187,7 @@ if ( /^local$/i.test(process.env.NODE_SCOPE) ) {
|
|
|
4169
4187
|
if (
|
|
4170
4188
|
getContext('isProxyHost')
|
|
4171
4189
|
&& typeof(tmp.hostname) != 'undefined'
|
|
4190
|
+
&& typeof(process.gina.PROXY_HOSTNAME) != 'undefined'
|
|
4172
4191
|
) {
|
|
4173
4192
|
tmp.hostname = process.gina.PROXY_HOSTNAME;
|
|
4174
4193
|
tmp.host = process.gina.PROXY_HOST;
|
|
@@ -207,17 +207,9 @@ module.exports = function renderJSON(jsonObj, deps) {
|
|
|
207
207
|
|
|
208
208
|
console.info(request.method +' ['+ response.statusCode +'] '+ request.url);
|
|
209
209
|
|
|
210
|
-
// #
|
|
211
|
-
//
|
|
212
|
-
|
|
213
|
-
if (self.isCacheless() && local._queryLog && local._queryLog.length > 0) {
|
|
214
|
-
jsonObj.__ginaQueries = local._queryLog;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// #FI — in dev mode, push response-write + total timing so the Flow
|
|
218
|
-
// waterfall has closing bars for JSON responses. Pushed before the
|
|
219
|
-
// __ginaFlow sidecar injection so they travel with cross-bundle data.
|
|
220
|
-
if (self.isCacheless() && local._timeline) {
|
|
210
|
+
// #FI — push response-write + total timing to the timeline so the
|
|
211
|
+
// Flow waterfall has closing bars for JSON responses.
|
|
212
|
+
if (self.isCacheless() && process.gina._inspectorActive && local._timeline) {
|
|
221
213
|
var _jsonRespEnd = Date.now();
|
|
222
214
|
var _jsonRwStart = local._timeline._renderStart || local._timeline._actionStart || local._timeline.requestStart;
|
|
223
215
|
local._timeline.entries.push({
|
|
@@ -238,9 +230,63 @@ module.exports = function renderJSON(jsonObj, deps) {
|
|
|
238
230
|
});
|
|
239
231
|
}
|
|
240
232
|
|
|
241
|
-
// #
|
|
242
|
-
//
|
|
243
|
-
|
|
233
|
+
// #INS — emit Inspector payload for JSON responses so the Inspector
|
|
234
|
+
// Data tab, Flow tab, and footer status bar work for APIs that only
|
|
235
|
+
// use self.renderJSON(). Gated on _inspectorActive to avoid overhead
|
|
236
|
+
// when the Inspector has not been opened.
|
|
237
|
+
if (self.isCacheless() && process.gina._inspectorActive) {
|
|
238
|
+
var _ctx = getContext('gina') || {};
|
|
239
|
+
var _conf = local.options.conf || {};
|
|
240
|
+
var _mem = process.memoryUsage();
|
|
241
|
+
var _env = {
|
|
242
|
+
'gina' : _ctx.version || '',
|
|
243
|
+
'gina pid' : getEnvVar('GINA_PID') || String(process.pid),
|
|
244
|
+
'nodejs' : process.versions.node + ' ' + process.platform + ' ' + process.arch,
|
|
245
|
+
'engine' : (_conf.server && _conf.server.engine) || '',
|
|
246
|
+
'env' : process.env.NODE_ENV || '',
|
|
247
|
+
'envIsDev' : self.isCacheless(),
|
|
248
|
+
'scope' : process.env.NODE_SCOPE || '',
|
|
249
|
+
'bundle' : _conf.bundle || '',
|
|
250
|
+
'project' : _conf.projectName || '',
|
|
251
|
+
'protocol' : (_conf.server && _conf.server.protocol) || '',
|
|
252
|
+
'scheme' : (_conf.server && _conf.server.scheme) || '',
|
|
253
|
+
'port' : (_conf.server && _conf.server.port) || '',
|
|
254
|
+
'webroot' : (_conf.server && _conf.server.webroot) || '',
|
|
255
|
+
'memory heap' : (_mem.heapUsed / 1024 / 1024).toFixed(2) + ' MB',
|
|
256
|
+
'memory allocated': (require('v8').getHeapStatistics().heap_size_limit / (1024 * 1024 * 1024)).toFixed(2) + ' GB',
|
|
257
|
+
'date.now' : new Date().toISOString(),
|
|
258
|
+
'pid' : process.pid
|
|
259
|
+
};
|
|
260
|
+
var _gdUser = {
|
|
261
|
+
environment : _env,
|
|
262
|
+
data : jsonObj
|
|
263
|
+
};
|
|
264
|
+
if (local._queryLog && local._queryLog.length > 0) {
|
|
265
|
+
_gdUser.queries = local._queryLog;
|
|
266
|
+
}
|
|
267
|
+
if (local._timeline) {
|
|
268
|
+
_gdUser.flow = {
|
|
269
|
+
requestStart : local._timeline.requestStart,
|
|
270
|
+
entries : local._timeline.entries
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
var __gdPayload = { gina: { environment: _env }, user: _gdUser };
|
|
274
|
+
self.serverInstance._lastGinaData = __gdPayload;
|
|
275
|
+
process.emit('inspector#data', __gdPayload);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// #QI — embed query log as a sidecar for cross-bundle propagation.
|
|
279
|
+
// When bundle A calls bundle B via self.query(), B's queries travel
|
|
280
|
+
// back as __ginaQueries in the JSON response body. A's query()
|
|
281
|
+
// callback extracts, merges into its own _queryLog, and deletes
|
|
282
|
+
// the field before the data reaches the controller action.
|
|
283
|
+
if (self.isCacheless() && local._queryLog && local._queryLog.length > 0) {
|
|
284
|
+
jsonObj.__ginaQueries = local._queryLog;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// #FI — embed timeline entries as a sidecar for cross-bundle flow
|
|
288
|
+
// propagation (mirrors __ginaQueries pattern).
|
|
289
|
+
if (self.isCacheless() && local._timeline && local._timeline.entries && local._timeline.entries.length > 0) {
|
|
244
290
|
jsonObj.__ginaFlow = local._timeline.entries;
|
|
245
291
|
}
|
|
246
292
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
var swig=require('../index'),optimist=require('optimist'),fs=require('fs'),path=require('path'),filters=require('../lib/filters'),utils=require('../lib/utils'),uglify=require('uglify-js'),command,argv=optimist.usage('\n Usage:\n $0 compile [files] [options]\n $0 run [files] [options]\n $0 render [files] [options]\n').describe({v:'Show the Swig version number.',o:'Output location.',h:'Show this help screen.',j:'Variable context as a JSON file.',c:'Variable context as a CommonJS-style file. Used only if option `j` is not provided.',
|
|
2
|
+
m:'Minify compiled functions with uglify-js',filters:'Custom filters as a CommonJS-style file',tags:'Custom tags as a CommonJS-style file',options:"Customize Swig's Options from a CommonJS-style file",'wrap-start':'Template wrapper beginning for "compile".','wrap-end':'Template wrapper end for "compile".','method-name':'Method name to set template to and run from.'}).alias('v','version').alias('o','output').default('o','stdout').alias('h','help').alias('j','json').alias('c','context').alias('m','minify').default('wrap-start',
|
|
3
|
+
'var tpl = ').default('wrap-end',';').default('method-name','tpl').check(function(a){if(!a.v){if(!a._.length)throw Error('');command=a._.shift();if('compile'!==command&&'render'!==command&&'run'!==command)throw Error('Unrecognized command "'+command+'". Use -h for help.');if('tpl'!==a['method-name']&&'var tpl ='!==a['wrap-start'])throw Error('Cannot use arguments "--method-name" and "--wrap-start" together.');'tpl'!==a['method-name']&&(a['wrap-start']='var '+a['method-name']+' = ')}}).argv,ctx={},
|
|
4
|
+
out=function(a,b){console.log(b)},efn=function(){},anonymous,files,fn;argv.v&&(console.log(require('../package').version),process.exit(0));argv.j?ctx=JSON.parse(fs.readFileSync(argv.j,'utf8')):argv.c&&(ctx=require(argv.c));if('stdout'!==argv.o){argv.o+='/';argv.o=path.normalize(argv.o);try{fs.mkdirSync(argv.o)}catch(a){if(47!==a.errno)throw a;}out=function(a,b){a=path.basename(a);fs.writeFileSync(argv.o+a,b,{flags:'w'});console.log('Wrote',argv.o+a)}}
|
|
5
|
+
argv.filters&&utils.each(require(path.resolve(argv.filters)),function(a,b){swig.setFilter(b,a)});argv.tags&&utils.each(require(path.resolve(argv.tags)),function(a,b){swig.setTag(b,a.parse,a.compile,a.ends,a.block)});argv.options&&swig.setDefaults(require(argv.options));
|
|
6
|
+
switch(command){case 'compile':fn=function(a,b){b=swig.precompile(b,{filename:a,locals:ctx}).tpl.toString().replace('anonymous','');b=argv['wrap-start']+b+argv['wrap-end'];argv.m&&(b=uglify.minify(b,{fromString:!0}).code);out(a,b)};break;case 'run':fn=function(a,b){(function(){eval(b);var c=eval(argv['method-name']);out(a,c(swig,ctx,filters,utils,efn))})()};break;case 'render':fn=function(a,b){out(a,swig.render(b,{filename:a,locals:ctx}))}}
|
|
7
|
+
argv._.forEach(function(a){var b=fs.readFileSync(a,'utf8');fn(a,b)});
|
|
@@ -237,6 +237,11 @@ try {
|
|
|
237
237
|
ginaPath = getPath('gina').core;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
+
// Ensure gina.home is always registered (SQLite connector, session store)
|
|
241
|
+
if ( !getPath('gina').home && typeof(getEnvVar) != 'undefined' ) {
|
|
242
|
+
setPath('gina.home', getEnvVar('GINA_HOMEDIR'));
|
|
243
|
+
}
|
|
244
|
+
|
|
240
245
|
if ( typeof(getEnvVar) == 'undefined') {
|
|
241
246
|
console.debug('[ FRAMEWORK ][PROCESS ARGV] Process ARGV error ' + process.argv);
|
|
242
247
|
}
|
|
@@ -1337,7 +1342,36 @@ isBundleMounted(projects, bundlesPath, getContext('bundle'), function onBundleMo
|
|
|
1337
1342
|
e.emit('init', instance, middleware, conf);
|
|
1338
1343
|
//In case there is no user init.
|
|
1339
1344
|
if (!gna.initialized) {
|
|
1340
|
-
|
|
1345
|
+
// No onInitialize handler — still need to load models
|
|
1346
|
+
// before starting the server.
|
|
1347
|
+
try {
|
|
1348
|
+
var configuration = config.getInstance();
|
|
1349
|
+
modelUtil.loadAllModels(
|
|
1350
|
+
conf.bundles,
|
|
1351
|
+
configuration,
|
|
1352
|
+
env,
|
|
1353
|
+
function() {
|
|
1354
|
+
joinContext(conf.contexts);
|
|
1355
|
+
gna.getConfig = function(name){
|
|
1356
|
+
var tmp = null;
|
|
1357
|
+
if ( typeof(name) != 'undefined' ) {
|
|
1358
|
+
try {
|
|
1359
|
+
tmp = JSON.clone(conf.content[name])
|
|
1360
|
+
} catch (err) {
|
|
1361
|
+
console.error('[ FRAMEWORK ] ', err.stack);
|
|
1362
|
+
return undefined
|
|
1363
|
+
}
|
|
1364
|
+
} else {
|
|
1365
|
+
tmp = JSON.clone(conf)
|
|
1366
|
+
}
|
|
1367
|
+
return tmp
|
|
1368
|
+
};
|
|
1369
|
+
e.emit('complete', instance);
|
|
1370
|
+
});
|
|
1371
|
+
} catch(loadErr) {
|
|
1372
|
+
console.error('[ FRAMEWORK ] Model loading failed: ' + (loadErr.stack||loadErr.message));
|
|
1373
|
+
e.emit('complete', instance);
|
|
1374
|
+
}
|
|
1341
1375
|
}
|
|
1342
1376
|
// -- EO
|
|
1343
1377
|
|
|
@@ -494,7 +494,8 @@ function ServerEngineClass(options) {
|
|
|
494
494
|
|
|
495
495
|
request.originalUrl = request.url;
|
|
496
496
|
// #FI — dev-mode request timeline for Inspector Flow tab
|
|
497
|
-
|
|
497
|
+
// Only initialized when the Inspector has been opened (process.gina._inspectorActive)
|
|
498
|
+
if (isCacheless && process.gina._inspectorActive) {
|
|
498
499
|
request._devTimeline = { requestStart: Date.now(), entries: [] };
|
|
499
500
|
}
|
|
500
501
|
// From the original
|
|
@@ -607,37 +608,45 @@ function ServerEngineClass(options) {
|
|
|
607
608
|
&& request.method.toUpperCase() === 'GET'
|
|
608
609
|
&& /\/_gina\/inspector(\/.*)?$/.test(request.url)
|
|
609
610
|
) {
|
|
611
|
+
// Activate profiling on first Inspector access — one-way flag,
|
|
612
|
+
// stays true until bundle restart. QI (controller.js:257) gates
|
|
613
|
+
// on this; it must be true before any request is processed.
|
|
614
|
+
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
610
615
|
var _inspBase = __dirname + '/asset/plugin/dist/vendor/gina/inspector';
|
|
611
616
|
var _inspPath = request.url.replace(/^.*\/_gina\/inspector\/?/, '').split('?')[0];
|
|
612
617
|
if (!_inspPath || _inspPath === '') _inspPath = 'index.html';
|
|
613
618
|
|
|
614
619
|
var _inspMime = {
|
|
615
|
-
'html':
|
|
616
|
-
'js':
|
|
617
|
-
'css':
|
|
618
|
-
'svg':
|
|
620
|
+
'html': 'text/html; charset=utf8',
|
|
621
|
+
'js': 'application/javascript; charset=utf8',
|
|
622
|
+
'css': 'text/css; charset=utf8',
|
|
623
|
+
'svg': 'image/svg+xml',
|
|
624
|
+
'woff2': 'font/woff2',
|
|
625
|
+
'woff': 'font/woff'
|
|
619
626
|
};
|
|
620
627
|
var _inspExt = _inspPath.split('.').pop();
|
|
621
628
|
var _inspFile = _(_inspBase + '/' + _inspPath, true);
|
|
622
629
|
|
|
623
630
|
if (fs.existsSync(_inspFile)) {
|
|
631
|
+
var _inspBinary = /^(woff2?|png|ico|gif|jpe?g)$/.test(_inspExt);
|
|
624
632
|
var _inspHeaders = {
|
|
625
633
|
'content-type': _inspMime[_inspExt] || 'application/octet-stream',
|
|
626
634
|
'cache-control': 'no-cache, no-store, must-revalidate',
|
|
627
635
|
'x-content-type-options': 'nosniff',
|
|
628
636
|
'X-Powered-By': 'Gina/' + GINA_VERSION
|
|
629
637
|
};
|
|
638
|
+
var _inspData = fs.readFileSync(_inspFile, _inspBinary ? undefined : 'utf8');
|
|
630
639
|
|
|
631
640
|
// HTTP/2
|
|
632
641
|
if (response.stream) {
|
|
633
642
|
response.stream.respond({ ':status': 200, ..._inspHeaders });
|
|
634
|
-
return response.stream.end(
|
|
643
|
+
return response.stream.end(_inspData);
|
|
635
644
|
}
|
|
636
645
|
|
|
637
646
|
// HTTP/1.1
|
|
638
647
|
response.writeHead(200, _inspHeaders);
|
|
639
648
|
console.info(request.method + ' [200] ' + request.url);
|
|
640
|
-
return response.end(
|
|
649
|
+
return response.end(_inspData);
|
|
641
650
|
}
|
|
642
651
|
// Fall through to 404 if file not found
|
|
643
652
|
}
|
|
@@ -648,6 +657,7 @@ function ServerEngineClass(options) {
|
|
|
648
657
|
&& request.method.toUpperCase() === 'GET'
|
|
649
658
|
&& /\/_gina\/logs$/.test(request.url)
|
|
650
659
|
) {
|
|
660
|
+
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
651
661
|
var _ansiRe = /\x1B\[\d+m/g;
|
|
652
662
|
|
|
653
663
|
var _sseHeaders = {
|
|
@@ -706,6 +716,7 @@ function ServerEngineClass(options) {
|
|
|
706
716
|
&& request.method.toUpperCase() === 'GET'
|
|
707
717
|
&& /\/_gina\/agent$/.test(request.url)
|
|
708
718
|
) {
|
|
719
|
+
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
709
720
|
var _agAnsiRe = /\x1B\[\d+m/g;
|
|
710
721
|
|
|
711
722
|
var _agHeaders = {
|
|
@@ -733,11 +744,22 @@ function ServerEngineClass(options) {
|
|
|
733
744
|
|
|
734
745
|
_agWrite(':ok\n\n');
|
|
735
746
|
|
|
736
|
-
// Send current snapshot immediately if available
|
|
747
|
+
// Send current snapshot immediately if available; otherwise
|
|
748
|
+
// send a lightweight "connected" frame so the Inspector shows
|
|
749
|
+
// the bundle identity without waiting for the first request.
|
|
737
750
|
if (server._lastGinaData) {
|
|
738
751
|
try {
|
|
739
752
|
_agWrite('event: data\ndata: ' + JSON.stringify(server._lastGinaData) + '\n\n');
|
|
740
753
|
} catch (e) {}
|
|
754
|
+
} else {
|
|
755
|
+
try {
|
|
756
|
+
var _initEnv = {
|
|
757
|
+
bundle : options.bundle || '',
|
|
758
|
+
env : env || ''
|
|
759
|
+
};
|
|
760
|
+
var _initPayload = { gina: { environment: _initEnv }, user: { environment: _initEnv } };
|
|
761
|
+
_agWrite('event: data\ndata: ' + JSON.stringify(_initPayload) + '\n\n');
|
|
762
|
+
} catch (e) {}
|
|
741
763
|
}
|
|
742
764
|
|
|
743
765
|
// Data updates — emitted by render-swig.js on every HTML render
|
|
@@ -2257,7 +2257,8 @@ function Server(options) {
|
|
|
2257
2257
|
self.instance.all('*', function onInstance(request, response, next) {
|
|
2258
2258
|
|
|
2259
2259
|
// #FI — dev-mode request timeline for Inspector Flow tab
|
|
2260
|
-
|
|
2260
|
+
// Only initialized when the Inspector has been opened (process.gina._inspectorActive)
|
|
2261
|
+
if (self.isCacheless() && process.gina._inspectorActive) {
|
|
2261
2262
|
request._devTimeline = { requestStart: Date.now(), entries: [] };
|
|
2262
2263
|
}
|
|
2263
2264
|
|
|
@@ -2337,25 +2338,32 @@ function Server(options) {
|
|
|
2337
2338
|
&& request.method.toUpperCase() === 'GET'
|
|
2338
2339
|
&& /\/_gina\/inspector(\/.*)?$/.test(request.url)
|
|
2339
2340
|
) {
|
|
2341
|
+
// Activate profiling on first Inspector access — one-way flag,
|
|
2342
|
+
// stays true until bundle restart. QI (controller.js:257) gates
|
|
2343
|
+
// on this; it must be true before any request is processed.
|
|
2344
|
+
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
2340
2345
|
var _bmBase = __dirname + '/asset/plugin/dist/vendor/gina/inspector';
|
|
2341
2346
|
var _bmPath = request.url.replace(/^.*\/_gina\/inspector\/?/, '').split('?')[0];
|
|
2342
2347
|
if (!_bmPath || _bmPath === '') _bmPath = 'index.html';
|
|
2343
2348
|
|
|
2344
2349
|
var _bmMime = {
|
|
2345
|
-
'html':
|
|
2346
|
-
'js':
|
|
2347
|
-
'css':
|
|
2348
|
-
'svg':
|
|
2350
|
+
'html': 'text/html; charset=utf8',
|
|
2351
|
+
'js': 'application/javascript; charset=utf8',
|
|
2352
|
+
'css': 'text/css; charset=utf8',
|
|
2353
|
+
'svg': 'image/svg+xml',
|
|
2354
|
+
'woff2': 'font/woff2',
|
|
2355
|
+
'woff': 'font/woff'
|
|
2349
2356
|
};
|
|
2350
2357
|
var _bmExt = _bmPath.split('.').pop();
|
|
2351
2358
|
var _bmFile = _(_bmBase + '/' + _bmPath, true);
|
|
2352
2359
|
|
|
2353
2360
|
if (fs.existsSync(_bmFile)) {
|
|
2361
|
+
var _bmBinary = /^(woff2?|png|ico|gif|jpe?g)$/.test(_bmExt);
|
|
2354
2362
|
response.setHeader('content-type', _bmMime[_bmExt] || 'application/octet-stream');
|
|
2355
2363
|
response.setHeader('cache-control', 'no-cache, no-store, must-revalidate');
|
|
2356
2364
|
response.setHeader('x-content-type-options', 'nosniff');
|
|
2357
2365
|
console.info(request.method + ' [200] ' + request.url);
|
|
2358
|
-
return response.end(fs.readFileSync(_bmFile, 'utf8'));
|
|
2366
|
+
return response.end(fs.readFileSync(_bmFile, _bmBinary ? undefined : 'utf8'));
|
|
2359
2367
|
}
|
|
2360
2368
|
// Fall through to 404 if file not found
|
|
2361
2369
|
}
|
|
@@ -2366,6 +2374,7 @@ function Server(options) {
|
|
|
2366
2374
|
&& request.method.toUpperCase() === 'GET'
|
|
2367
2375
|
&& /\/_gina\/logs$/.test(request.url)
|
|
2368
2376
|
) {
|
|
2377
|
+
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
2369
2378
|
var _ansiRe = /\x1B\[\d+m/g;
|
|
2370
2379
|
|
|
2371
2380
|
response.setHeader('content-type', 'text/event-stream; charset=utf-8');
|
|
@@ -2410,6 +2419,7 @@ function Server(options) {
|
|
|
2410
2419
|
&& request.method.toUpperCase() === 'GET'
|
|
2411
2420
|
&& /\/_gina\/agent$/.test(request.url)
|
|
2412
2421
|
) {
|
|
2422
|
+
if (!process.gina._inspectorActive) process.gina._inspectorActive = true;
|
|
2413
2423
|
var _agAnsiRe = /\x1B\[\d+m/g;
|
|
2414
2424
|
|
|
2415
2425
|
response.setHeader('content-type', 'text/event-stream; charset=utf-8');
|
|
@@ -2419,11 +2429,22 @@ function Server(options) {
|
|
|
2419
2429
|
response.setHeader('x-content-type-options', 'nosniff');
|
|
2420
2430
|
response.write(':ok\n\n');
|
|
2421
2431
|
|
|
2422
|
-
// Send current snapshot immediately if available
|
|
2432
|
+
// Send current snapshot immediately if available; otherwise
|
|
2433
|
+
// send a lightweight "connected" frame so the Inspector shows
|
|
2434
|
+
// the bundle identity without waiting for the first request.
|
|
2423
2435
|
if (self.instance && self.instance._lastGinaData) {
|
|
2424
2436
|
try {
|
|
2425
2437
|
response.write('event: data\ndata: ' + JSON.stringify(self.instance._lastGinaData) + '\n\n');
|
|
2426
2438
|
} catch (e) {}
|
|
2439
|
+
} else {
|
|
2440
|
+
try {
|
|
2441
|
+
var _initEnv = {
|
|
2442
|
+
bundle : self.appName || '',
|
|
2443
|
+
env : self.env || ''
|
|
2444
|
+
};
|
|
2445
|
+
var _initPayload = { gina: { environment: _initEnv }, user: { environment: _initEnv } };
|
|
2446
|
+
response.write('event: data\ndata: ' + JSON.stringify(_initPayload) + '\n\n');
|
|
2447
|
+
} catch (e) {}
|
|
2427
2448
|
}
|
|
2428
2449
|
|
|
2429
2450
|
// Data updates — emitted by render-swig.js on every HTML render
|
|
@@ -2908,6 +2929,8 @@ function Server(options) {
|
|
|
2908
2929
|
*/
|
|
2909
2930
|
var processRequestData = function(request, response, next) {
|
|
2910
2931
|
|
|
2932
|
+
|
|
2933
|
+
|
|
2911
2934
|
var bodyStr = null, obj = null, exception = null;
|
|
2912
2935
|
// to compare with /core/controller/controller.js -> getParams()
|
|
2913
2936
|
switch( request.method.toLowerCase() ) {
|
|
@@ -3091,6 +3114,7 @@ function Server(options) {
|
|
|
3091
3114
|
|
|
3092
3115
|
obj = formatDataFromString(bodyStr);
|
|
3093
3116
|
|
|
3117
|
+
|
|
3094
3118
|
if ( typeof(obj) != 'undefined' && obj.count() == 0 && bodyStr.length > 1 ) {
|
|
3095
3119
|
try {
|
|
3096
3120
|
request.put = merge(request.put, obj);
|
|
@@ -3122,8 +3146,10 @@ function Server(options) {
|
|
|
3122
3146
|
}
|
|
3123
3147
|
|
|
3124
3148
|
if ( obj && typeof(obj) != 'undefined' && obj.count() > 0 ) {
|
|
3125
|
-
|
|
3149
|
+
|
|
3150
|
+
// still need this to allow compatibility with express & connect middlewares
|
|
3126
3151
|
request.body = request.put = merge(request.put, obj);
|
|
3152
|
+
|
|
3127
3153
|
}
|
|
3128
3154
|
|
|
3129
3155
|
|
|
@@ -3672,6 +3698,7 @@ function Server(options) {
|
|
|
3672
3698
|
var _origParams = Object.assign({}, req.params);
|
|
3673
3699
|
var _origReqMethod = (typeof(req[_reqMethodKey]) != "undefined") ? Object.assign({}, req[_reqMethodKey]) : undefined;
|
|
3674
3700
|
|
|
3701
|
+
|
|
3675
3702
|
out:
|
|
3676
3703
|
for (let name in routing) {
|
|
3677
3704
|
// skip non-object entries (e.g. $schema annotations in routing.json)
|
|
@@ -3700,7 +3727,7 @@ function Server(options) {
|
|
|
3700
3727
|
// matching; leftover values cause parseRouting lines 396-407 to inject
|
|
3701
3728
|
// phantom segments, compounding work on each subsequent compareUrls call.
|
|
3702
3729
|
req.params = Object.assign({}, _origParams);
|
|
3703
|
-
|
|
3730
|
+
req[_reqMethodKey] = _origReqMethod ? Object.assign({}, _origReqMethod) : {};
|
|
3704
3731
|
|
|
3705
3732
|
// Updating hostname
|
|
3706
3733
|
// if (
|
|
@@ -3869,6 +3896,20 @@ function Server(options) {
|
|
|
3869
3896
|
// Restore req[method] if deleted during route matching (#fix: routes without URL params)
|
|
3870
3897
|
if (typeof(req[_reqMethodKey]) == "undefined") {
|
|
3871
3898
|
req[_reqMethodKey] = _origReqMethod || {};
|
|
3899
|
+
} else if (
|
|
3900
|
+
_origReqMethod && typeof(_origReqMethod) == "object"
|
|
3901
|
+
&& ["get", "put", "post", "patch", "delete"].indexOf(_reqMethodKey) > -1
|
|
3902
|
+
&& _origReqMethod.count() > 0
|
|
3903
|
+
) {
|
|
3904
|
+
// compareUrls recreates req[method] with only URL params, discarding
|
|
3905
|
+
// body data parsed by processRequestData (or query params for GET). Merge back in.
|
|
3906
|
+
// URL params (in req[method]) take precedence over original values.
|
|
3907
|
+
var _bodyKeys = Object.keys(_origReqMethod);
|
|
3908
|
+
for (var _bk = 0; _bk < _bodyKeys.length; ++_bk) {
|
|
3909
|
+
if (typeof(req[_reqMethodKey][_bodyKeys[_bk]]) == "undefined") {
|
|
3910
|
+
req[_reqMethodKey][_bodyKeys[_bk]] = _origReqMethod[_bodyKeys[_bk]];
|
|
3911
|
+
}
|
|
3912
|
+
}
|
|
3872
3913
|
}
|
|
3873
3914
|
|
|
3874
3915
|
// #FI — route matching end
|
|
@@ -204,6 +204,7 @@ function ContextHelper(contexts) {
|
|
|
204
204
|
var frameworkPath = getEnvVar('GINA_FRAMEWORK_DIR');
|
|
205
205
|
setPath('framework', frameworkPath);
|
|
206
206
|
setPath('gina.core', getEnvVar('GINA_CORE'));
|
|
207
|
+
setPath('gina.home', getEnvVar('GINA_HOMEDIR'));
|
|
207
208
|
setPath('gina.lib', _(frameworkPath +'/lib'));
|
|
208
209
|
setPath('gina.helpers', _(frameworkPath +'/helpers'));
|
|
209
210
|
setPath( 'node', _(process.argv[0]), true);
|
|
@@ -345,7 +345,6 @@ function Add(opt, cmd) {
|
|
|
345
345
|
"_comment" : "Your comment goes here.",
|
|
346
346
|
"version" : version,
|
|
347
347
|
"tag" : ( version.split('.') ).join(''),
|
|
348
|
-
"gina_version": getEnvVar('GINA_VERSION'),
|
|
349
348
|
"src" : "src/" + local.bundle,
|
|
350
349
|
"link" : "bundles/"+ local.bundle,
|
|
351
350
|
"releases" : {}
|
|
@@ -144,7 +144,7 @@ function Start(opt, cmd) {
|
|
|
144
144
|
nodeModulesPathObj.existsSync()
|
|
145
145
|
&& nodeModulesContentArr.length == 1
|
|
146
146
|
&& nodeModulesContentArr[0] == 'gina'
|
|
147
|
-
&& typeof(pack.dependencies)
|
|
147
|
+
&& typeof(pack.dependencies) == 'object'
|
|
148
148
|
&& pack.dependencies.count() > 0
|
|
149
149
|
) {
|
|
150
150
|
if (scope == "local")
|
|
@@ -266,6 +266,16 @@ function Start(opt, cmd) {
|
|
|
266
266
|
|
|
267
267
|
var bundle = (isBulkStart) ? self.bundles[bundleIndex] : self.name;
|
|
268
268
|
// terminal.debug('bundle -> ', bundle);
|
|
269
|
+
|
|
270
|
+
var msg = null;
|
|
271
|
+
if ( !isBulkStart && !isDefined('bundle', bundle) ) {
|
|
272
|
+
msg = 'Bundle [ '+ bundle +' ] is not registered inside `@'+ self.projectName +'`.\nDid you run `gina bundle:add '+ bundle +' @'+ self.projectName +'` first?';
|
|
273
|
+
terminal.error(msg);
|
|
274
|
+
|
|
275
|
+
opt.msg = msg;
|
|
276
|
+
return end(opt, cmd, isBulkStart, bundleIndex, true)
|
|
277
|
+
}
|
|
278
|
+
|
|
269
279
|
var env = ( typeof(self.bundlesByProject[self.projectName][bundle].def_env) != 'undefined') ? self.bundlesByProject[self.projectName][bundle].def_env : self.defaultEnv;
|
|
270
280
|
var scope = ( typeof(self.bundlesByProject[self.projectName][bundle].def_scope) != 'undefined') ? self.bundlesByProject[self.projectName][bundle].def_scpoe : self.defaultScope;
|
|
271
281
|
// terminal.debug('env -> ', env);
|
|
@@ -276,18 +286,6 @@ function Start(opt, cmd) {
|
|
|
276
286
|
var bundlePort = self.portsReverseData[bundle + '@' + self.projectName][env][protocol][scheme];
|
|
277
287
|
// terminal.debug('port -> ', bundlePort);
|
|
278
288
|
|
|
279
|
-
var msg = null;
|
|
280
|
-
if ( !isBulkStart && !isDefined('bundle', bundle) ) {
|
|
281
|
-
msg = 'Bundle [ '+ bundle +' ] is not registered inside `@'+ self.projectName +'`';
|
|
282
|
-
terminal.error(msg);
|
|
283
|
-
// opt.client.write(msg);
|
|
284
|
-
// // CMD exit
|
|
285
|
-
// opt.client.emit('end');
|
|
286
|
-
|
|
287
|
-
opt.msg = msg;
|
|
288
|
-
return end(opt, cmd, isBulkStart, bundleIndex, true)
|
|
289
|
-
}
|
|
290
|
-
|
|
291
289
|
var isStarting = false
|
|
292
290
|
, params = null
|
|
293
291
|
, index = null
|
|
@@ -99,7 +99,16 @@ function Restart(opt, cmd) {
|
|
|
99
99
|
console.debug('out => ', out);
|
|
100
100
|
// TODO - retrieve running bundles with its options & restart
|
|
101
101
|
} catch (err) {
|
|
102
|
-
|
|
102
|
+
// gina start may exit non-zero when Node.js writes benign
|
|
103
|
+
// warnings (e.g., ExperimentalWarning) to stderr while the
|
|
104
|
+
// daemon actually started in the background.
|
|
105
|
+
// Check for the PID file before treating this as a failure.
|
|
106
|
+
var pidFile = _(GINA_RUNDIR + '/gina-v' + self.version + '.pid', true);
|
|
107
|
+
if ( fs.existsSync(pidFile) ) {
|
|
108
|
+
console.debug('Framework v'+ self.version +' restarted successfully');
|
|
109
|
+
} else {
|
|
110
|
+
throw err;
|
|
111
|
+
}
|
|
103
112
|
}
|
|
104
113
|
}, 100);
|
|
105
114
|
|