gina 0.1.6-alpha.16 → 0.1.6-alpha.161
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/LICENSE +1 -1
- package/README-4Contributors.md +14 -8
- package/README.md +13 -4
- package/bin/cli +16 -2
- package/bin/gina +29 -1
- package/framework/{v0.1.6-alpha.16/lib/inherits → v0.1.6-alpha.161}/LICENSE +1 -1
- package/framework/v0.1.6-alpha.161/VERSION +1 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/plugin/README.md +1 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/plugin/dist/vendor/gina/html/toolbar.html +1 -1
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/html/toolbar.html.br +0 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/html/toolbar.html.gz +0 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/plugin/dist/vendor/gina/js/gina.js +6444 -5613
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.min.js +790 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +9 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
- package/framework/v0.1.6-alpha.161/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/config.js +149 -57
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/index.js +108 -26
- package/framework/{v0.1.6-alpha.16/core/connectors/couchbase/lib/connector.v4.js → v0.1.6-alpha.161/core/connectors/couchbase/lib/connector.v3.js} +170 -69
- package/framework/v0.1.6-alpha.161/core/connectors/couchbase/lib/connector.v4.js +470 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/lib/session-store.v4.js +5 -2
- package/framework/v0.1.6-alpha.161/core/content.encoding +9 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/controller/controller.js +847 -1274
- package/framework/v0.1.6-alpha.161/core/controller/controller.render-json.js +262 -0
- package/framework/v0.1.6-alpha.161/core/controller/controller.render-swig.js +1080 -0
- package/framework/v0.1.6-alpha.161/core/controller/controller.render-v1.js +911 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/controller/index.js +2 -2
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/.github/workflows/ci.yml +24 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/.github/workflows/lint.yml +23 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/README.md +191 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-big.js +149 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/bench/bench-multipart-fields-100mb-small.js +143 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-big.js +154 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/bench/bench-multipart-files-100mb-small.js +148 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-100pairs-small.js +101 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/bench/bench-urlencoded-fields-900pairs-small-alt.js +84 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/lib/index.js +57 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/lib/types/multipart.js +680 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/lib/types/urlencoded.js +350 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/lib/utils.js +596 -0
- package/framework/v0.1.6-alpha.161/core/deps/busboy-1.6.0/package.json +22 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/.travis.yml +4 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/LICENSE +21 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/bool.js +10 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/boolean_double.js +7 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/boolean_single.js +7 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/default_hash.js +8 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/default_singles.js +7 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/divide.js +8 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/line_count.js +20 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/line_count_options.js +29 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/line_count_wrap.js +29 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/nonopt.js +4 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/reflect.js +2 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/short.js +3 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/string.js +11 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/usage-options.js +19 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/example/xup.js +10 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/index.js +343 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/package.json +31 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/package.json.dist +39 -0
- package/framework/v0.1.6-alpha.161/core/deps/optimist-0.6.1/readme.markdown +513 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/HISTORY.md +498 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/LICENSE +7 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/README.md +88 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/bin/swig.js +161 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/bin/swig.js.dist +161 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/dist/swig.min.js +7 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/dist/swig.min.js.map +8 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/index.js +1 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/dateformatter.js +198 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/filters.js +630 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/lexer.js +306 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/loaders/filesystem.js +59 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/loaders/index.js +53 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/loaders/memory.js +63 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/parser.js +744 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/swig.js +740 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/autoescape.js +37 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/block.js +25 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/else.js +25 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/elseif.js +28 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/extends.js +19 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/filter.js +68 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/for.js +130 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/if.js +86 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/import.js +91 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/include.js +100 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/index.js +16 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/macro.js +79 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/parent.js +51 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/raw.js +23 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/set.js +109 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/tags/spaceless.js +42 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/lib/utils.js +184 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/package.json +57 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-1.4.2/package.json.dist +61 -0
- package/framework/v0.1.6-alpha.161/core/deps/swig-client/swig.js +5031 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/dev/index.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/dev/lib/factory.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/gna.js +123 -23
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/index.js +3 -3
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/src/make.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/mime.types +1 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/model/entity.js +5 -5
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/model/index.js +30 -26
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/model/template/entityFactory.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/model/template/index.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/index.js +3 -3
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/file/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/intl/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/storage/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/validator/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/validator/src/form-validator.js +39 -27
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/validator/src/main.js +499 -120
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/router.js +100 -49
- package/framework/v0.1.6-alpha.161/core/server.isaac.js +790 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/server.js +437 -160
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/status.codes +1 -11
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/controllers/setup.js +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/command/gina.tpl +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/conf/env.json +28 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/conf/settings.json +4 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/conf/templates.json +4 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/console.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/context.js +30 -13
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/data/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/data/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/dateFormat.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/index.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/json/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/json/src/main.js +7 -4
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/path.js +32 -16
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/plugins/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/plugins/src/api-error.js +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/plugins/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/prototypes.js +8 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/task.js +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/text.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/archiver/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/archiver/src/main.js +11 -11
- package/framework/v0.1.6-alpha.161/lib/cache/README.md +19 -0
- package/framework/v0.1.6-alpha.161/lib/cache/package.json +20 -0
- package/framework/v0.1.6-alpha.161/lib/cache/src/main.js +239 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/add.js +2 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/restart.js +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/start.js +26 -11
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/get.js +1 -1
- package/framework/v0.1.6-alpha.161/lib/cmd/env/help.js +30 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/set.js +21 -0
- package/framework/v0.1.6-alpha.161/lib/cmd/framework/arguments.json +7 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/build.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/dot.js +21 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/init.js +21 -3
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/link-node-modules.js +2 -3
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/link.js +3 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/restart.js +3 -3
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/start.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/tail.js +29 -12
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/version.js +15 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/helper.js +44 -15
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/index.js +1 -1
- package/framework/v0.1.6-alpha.161/lib/cmd/minion/help.txt +18 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/port/reset.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/add.js +7 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/arguments.json +1 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/build.js +32 -7
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/help.txt +4 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/list.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/protocol/list.js +71 -50
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/collection/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/collection/src/main.js +62 -23
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/config.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cron/package.json +2 -2
- package/framework/v0.1.6-alpha.161/lib/domain/dist/2025-03-14_13-41-20_UTC.dat +15754 -0
- package/framework/v0.1.6-alpha.161/lib/domain/dist/public_suffix_list.dat +15754 -0
- package/framework/v0.1.6-alpha.161/lib/domain/dist/public_suffix_list.dat.br +0 -0
- package/framework/v0.1.6-alpha.161/lib/domain/dist/public_suffix_list.dat.gz +0 -0
- package/framework/v0.1.6-alpha.161/lib/domain/exemples/backend.js +12 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/domain/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/domain/src/main.js +75 -13
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/generator/index.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/index.js +3 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161/lib/inherits}/LICENSE +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/inherits/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/inherits/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/containers/file/index.js +2 -0
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/containers/mq/listener.js +10 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/helper.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/main.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/math/index.js +1 -1
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/merge/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/model.js +3 -3
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/proc.js +10 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/routing/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/routing/src/main.js +204 -35
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/session-store.js +3 -3
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/shell.js +7 -6
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/swig-filters/package.json +2 -2
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/swig-filters/src/main.js +98 -92
- package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/validator.js +2 -2
- package/framework/v0.1.6-alpha.161/package.json +11 -0
- package/package.json +3 -3
- package/resources/package.json.template +1 -1
- package/script/post_install.js +4 -4
- package/script/pre_install.js +3 -3
- package/utils/helper.js +38 -14
- package/framework/v0.1.6-alpha.16/VERSION +0 -1
- package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +0 -1
- package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -766
- package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +0 -8
- package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -7
- package/framework/v0.1.6-alpha.16/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +0 -8
- package/framework/v0.1.6-alpha.16/core/connectors/couchbase/lib/connector.v3.js +0 -432
- package/framework/v0.1.6-alpha.16/core/deps/busboy/.travis.yml +0 -17
- package/framework/v0.1.6-alpha.16/core/deps/busboy/README.md +0 -225
- package/framework/v0.1.6-alpha.16/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -73
- package/framework/v0.1.6-alpha.16/core/deps/busboy/deps/encoding/encoding.js +0 -2391
- package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/main.js +0 -89
- package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/types/multipart.js +0 -328
- package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/types/urlencoded.js +0 -214
- package/framework/v0.1.6-alpha.16/core/deps/busboy/lib/utils.js +0 -191
- package/framework/v0.1.6-alpha.16/core/deps/busboy/package.json +0 -69
- package/framework/v0.1.6-alpha.16/core/server.isaac.js +0 -480
- package/framework/v0.1.6-alpha.16/lib/domain/dist/public_suffix_list.dat +0 -14186
- package/framework/v0.1.6-alpha.16/package.json +0 -14
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/AUTHORS +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/html/static.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/asset/plugin/uuid.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/lib/connector.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/lib/connector.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/lib/n1ql.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/lib/session-store.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.1.6-alpha.16/core/deps/busboy → v0.1.6-alpha.161/core/deps/busboy-1.6.0}/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/dev/lib/class.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/currency.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/dist/region/en.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/dist/region/fr.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/src/resources/currency.csv +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/src/resources/region.csv +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/locales/src/resources/region.mapping.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/intl/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/storage/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/server.express.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/_gitignore +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/config/settings.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/config/templates.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle/index.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/command/gina.bat.tpl +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/conf/manifest.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/conf/package.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/conf/statics.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/data/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/data/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/json/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/json/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/archiver/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/archiver/build.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/archiver/src/dep/jszip.min.js +0 -0
- /package/framework/{v0.1.6-alpha.16/lib/collection → v0.1.6-alpha.161/lib/cache}/build.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/aliases.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/arguments.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/list.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/bundle/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/add.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/list.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/env/use.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/open.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/set.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/status.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.1.6-alpha.16/lib/cmd/env → v0.1.6-alpha.161/lib/cmd/minion}/help.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/port/inc/scan.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/port/list.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/rename.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/protocol/set.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/add.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/help.txt +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/link-production.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/list.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/remove.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/scope/use.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cmd/view/add.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/collection/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16/lib/routing → v0.1.6-alpha.161/lib/collection}/build.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cron/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/cron/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/domain/LICENSE +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/domain/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/domain/exemples/frontend.html +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/inherits/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/inherits/example/inheriting_eventemitter.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/inherits/example/protected_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/inherits/example/simple_inheritance.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/containers/default/index.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/containers/mq/index.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/logger/src/containers/mq/speaker.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/merge/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/merge/example/merge.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/merge/example/merge_2_literal objects.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/merge/example/merge_and_preserve_first.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/merge/src/main.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/routing/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16/lib/domain/exemples/backend.js → v0.1.6-alpha.161/lib/routing/build.json} +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/swig-filters/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/url/README.md +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/url/index.js +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/url/mocks.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/url/routing.json +0 -0
- /package/framework/{v0.1.6-alpha.16 → v0.1.6-alpha.161}/lib/url/test.js +0 -0
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
//"use strict";
|
|
2
1
|
//Imports.
|
|
3
2
|
const fs = require('fs');
|
|
4
3
|
const os = require('os');
|
|
5
4
|
const path = require('path');
|
|
6
5
|
const EventEmitter = require('events').EventEmitter;
|
|
7
|
-
const
|
|
6
|
+
const swig = require('./deps/swig-1.4.2');
|
|
7
|
+
const Busboy = require('./deps/busboy-1.6.0');
|
|
8
8
|
const Stream = require('stream');
|
|
9
|
-
const zlib = require('zlib'); // gzip / deflate
|
|
10
9
|
const util = require('util');
|
|
11
10
|
var https = require('https');
|
|
12
11
|
const sslChecker = require('ssl-checker');
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
|
|
15
14
|
var Config = require('./config');
|
|
16
15
|
var Router = require('./router');
|
|
17
16
|
var lib = require('./../lib');
|
|
@@ -21,6 +20,8 @@ var merge = lib.merge;
|
|
|
21
20
|
var Proc = lib.Proc;
|
|
22
21
|
var console = lib.logger;
|
|
23
22
|
var SwigFilters = lib.SwigFilters;
|
|
23
|
+
var Domain = lib.Domain;
|
|
24
|
+
var domainLib = new Domain();
|
|
24
25
|
|
|
25
26
|
function Server(options) {
|
|
26
27
|
|
|
@@ -48,7 +49,7 @@ function Server(options) {
|
|
|
48
49
|
var swigOptions = {
|
|
49
50
|
autoescape: ( typeof(conf.autoescape) != 'undefined') ? conf.autoescape: false,
|
|
50
51
|
loader: swig.loaders.fs(dir),
|
|
51
|
-
cache: (conf.
|
|
52
|
+
cache: (conf.isCacheless) ? false : 'memory'
|
|
52
53
|
};
|
|
53
54
|
|
|
54
55
|
swig.setDefaults(swigOptions);
|
|
@@ -60,8 +61,8 @@ function Server(options) {
|
|
|
60
61
|
|
|
61
62
|
try {
|
|
62
63
|
// Allows you to get a bundle web root
|
|
63
|
-
// swig.setFilter('getWebroot', filters.getWebroot);
|
|
64
|
-
// swig.setFilter('nl2br', filters.nl2br);
|
|
64
|
+
// e.g.: swig.setFilter('getWebroot', filters.getWebroot);
|
|
65
|
+
// e.g.: swig.setFilter('nl2br', filters.nl2br);
|
|
65
66
|
for (let filter in filters) {
|
|
66
67
|
if ( typeof(filters[filter]) == 'function' && !/^getConfig$/.test(filter) ) {
|
|
67
68
|
swig.setFilter(filter, filters[filter]);
|
|
@@ -144,9 +145,14 @@ function Server(options) {
|
|
|
144
145
|
},
|
|
145
146
|
serverOpt,
|
|
146
147
|
{
|
|
147
|
-
engine: options.conf[self.appName][self.env].server.engine,
|
|
148
|
-
protocol: options.conf[self.appName][self.env].server.protocol,
|
|
149
|
-
scheme: options.conf[self.appName][self.env].server.scheme
|
|
148
|
+
engine : options.conf[self.appName][self.env].server.engine,
|
|
149
|
+
protocol : options.conf[self.appName][self.env].server.protocol,
|
|
150
|
+
scheme : options.conf[self.appName][self.env].server.scheme,
|
|
151
|
+
coreConfiguration : options.conf[self.appName][self.env].server.coreConfiguration,
|
|
152
|
+
isCacheless : options.conf[self.appName][self.env].isCacheless,
|
|
153
|
+
routing : options.conf[self.appName][self.env].routing,
|
|
154
|
+
allRoutes : options.conf.routing,
|
|
155
|
+
cachePath : options.conf[self.appName][self.env].cachePath
|
|
150
156
|
}
|
|
151
157
|
);
|
|
152
158
|
|
|
@@ -162,9 +168,10 @@ function Server(options) {
|
|
|
162
168
|
;
|
|
163
169
|
|
|
164
170
|
// locking port & protocol so it can't be changed by the user's settings
|
|
165
|
-
self.conf[self.appName][self.env].server.protocol
|
|
166
|
-
self.conf[self.appName][self.env].server.scheme
|
|
167
|
-
self.conf[self.appName][self.env].server.engine
|
|
171
|
+
self.conf[self.appName][self.env].server.protocol = serverOpt.protocol;
|
|
172
|
+
self.conf[self.appName][self.env].server.scheme = serverOpt.scheme;
|
|
173
|
+
self.conf[self.appName][self.env].server.engine = serverOpt.engine;
|
|
174
|
+
self.conf[self.appName][self.env].server.cachePath = serverOpt.cachePath;
|
|
168
175
|
|
|
169
176
|
serverOpt.port = self.conf[self.appName][self.env].server.port = portsReverse[ self.appName +'@'+ self.projectName ][self.env][serverOpt.protocol][serverOpt.scheme];
|
|
170
177
|
self.conf[self.appName][self.env].server.debugPort = getContext().debugPort;
|
|
@@ -225,7 +232,13 @@ function Server(options) {
|
|
|
225
232
|
init(options);
|
|
226
233
|
}
|
|
227
234
|
|
|
228
|
-
|
|
235
|
+
/**
|
|
236
|
+
* Verify certificate validity
|
|
237
|
+
*
|
|
238
|
+
* @param {string} endpoint
|
|
239
|
+
* @param {number} port
|
|
240
|
+
* @returns
|
|
241
|
+
*/
|
|
229
242
|
this.verifyCertificate = async function(endpoint, port) {
|
|
230
243
|
let sslDetails = null;
|
|
231
244
|
console.debug('Checking certificate validity...');
|
|
@@ -293,6 +306,24 @@ function Server(options) {
|
|
|
293
306
|
|
|
294
307
|
if (failed) {
|
|
295
308
|
if (sslDetails.daysRemaining > -1) {
|
|
309
|
+
var isProxyHost = getContext('isProxyHost');
|
|
310
|
+
if ( /^true$/i.test(isProxyHost) ) {
|
|
311
|
+
console.warn("Host is behind a reverse proxy, skipping server.verifyCertificate(...) ");
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
var rootDomain = domainLib.getRootDomain(endpoint).value;
|
|
315
|
+
hasMatchedEntry = false;
|
|
316
|
+
for (let i in sslDetails.validFor) {
|
|
317
|
+
if ( new RegExp(sslDetails.validFor[i].replace(/^\*\./, '') + '$').test(rootDomain) ) {
|
|
318
|
+
hasMatchedEntry = true;
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (!hasMatchedEntry) {
|
|
323
|
+
console.warn(`[Certificate] "${endpoint}" : Root domain not matching your certificate. If you plan to run your service behind a revese proxy, please do not forget to add "proxy.json" at the root of your project while going to production.${'\n'} ${humanView}`);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
// sslDetails.validFor
|
|
296
327
|
console.emerg(`[Certificate] ${endpoint} : It is like there is a problem with your CA certificate${'\n'} ${humanView}`);
|
|
297
328
|
return;
|
|
298
329
|
}
|
|
@@ -311,6 +342,16 @@ function Server(options) {
|
|
|
311
342
|
instance.getAssets = getAssets;
|
|
312
343
|
instance.completeHeaders = completeHeaders;
|
|
313
344
|
|
|
345
|
+
if ( typeof(instance._cached) == 'undefined' ) {
|
|
346
|
+
instance._cached = new Map();
|
|
347
|
+
}
|
|
348
|
+
if ( typeof(instance._cachedPath) == 'undefined' ) {
|
|
349
|
+
instance._cachePath = self.conf[self.appName][self.env].server.cache.path;
|
|
350
|
+
}
|
|
351
|
+
if ( typeof(instance._cacheIsEnabled) == 'undefined' ) {
|
|
352
|
+
instance._cacheIsEnabled = self.conf[self.appName][self.env].server.cache.enable;
|
|
353
|
+
}
|
|
354
|
+
|
|
314
355
|
router.setServerInstance(instance);
|
|
315
356
|
}
|
|
316
357
|
|
|
@@ -331,7 +372,7 @@ function Server(options) {
|
|
|
331
372
|
, serverCoreConf = self.conf.core
|
|
332
373
|
, routing = {}
|
|
333
374
|
, reverseRouting = {}
|
|
334
|
-
,
|
|
375
|
+
, isCacheless = config.isCacheless()
|
|
335
376
|
, env = self.env
|
|
336
377
|
, scope = self.scope
|
|
337
378
|
, apps = conf.allBundles // conf.bundles
|
|
@@ -371,7 +412,7 @@ function Server(options) {
|
|
|
371
412
|
filename = main
|
|
372
413
|
}
|
|
373
414
|
|
|
374
|
-
if (
|
|
415
|
+
if (isCacheless) {
|
|
375
416
|
delete require.cache[require.resolve(_(filename, true))]
|
|
376
417
|
}
|
|
377
418
|
|
|
@@ -424,15 +465,15 @@ function Server(options) {
|
|
|
424
465
|
}
|
|
425
466
|
|
|
426
467
|
if (typeof(tmp[rule].url) != 'object') {
|
|
427
|
-
if (tmp[rule].url.length > 1 && tmp[rule].url.
|
|
468
|
+
if (tmp[rule].url.length > 1 && tmp[rule].url.substring(0,1) != '/') {
|
|
428
469
|
tmp[rule].url = '/'+tmp[rule].url
|
|
429
470
|
}
|
|
430
|
-
/** else if (tmp[rule].url.length > 1 && conf.envConf[apps[i]][env].server.webroot.
|
|
431
|
-
tmp[rule].url = tmp[rule].url.
|
|
471
|
+
/** else if (tmp[rule].url.length > 1 && conf.envConf[apps[i]][env].server.webroot.substring(conf.envConf[apps[i]][env].server.webroot.length-1,1) == '/') {
|
|
472
|
+
tmp[rule].url = tmp[rule].url.substring(1)
|
|
432
473
|
}*/
|
|
433
474
|
else {
|
|
434
|
-
if (wroot.
|
|
435
|
-
wroot = wroot.
|
|
475
|
+
if (wroot.substring(wroot.length-1,1) == '/') {
|
|
476
|
+
wroot = wroot.substring(wroot.length-1,1).replace('/', '')
|
|
436
477
|
}
|
|
437
478
|
}
|
|
438
479
|
|
|
@@ -448,8 +489,8 @@ function Server(options) {
|
|
|
448
489
|
localWroot = '/'+ routing[rule].bundle;
|
|
449
490
|
conf.envConf[tmp[rule].bundle][env].server.webroot = localWroot
|
|
450
491
|
}
|
|
451
|
-
if (localWroot.
|
|
452
|
-
localWroot = localWroot.
|
|
492
|
+
if (localWroot.substring(localWroot.length-1,1) == '/') {
|
|
493
|
+
localWroot = localWroot.substring(localWroot.length-1,1).replace('/', '')
|
|
453
494
|
}
|
|
454
495
|
if ( typeof(tmp[rule].param.ignoreWebRoot) == 'undefined' || !tmp[rule].param.ignoreWebRoot )
|
|
455
496
|
tmp[rule].url = localWroot + tmp[rule].url
|
|
@@ -463,11 +504,11 @@ function Server(options) {
|
|
|
463
504
|
} else {
|
|
464
505
|
|
|
465
506
|
for (var u=0; u<tmp[rule].url.length; ++u) {
|
|
466
|
-
if (tmp[rule].url[u].length > 1 && tmp[rule].url[u].
|
|
507
|
+
if (tmp[rule].url[u].length > 1 && tmp[rule].url[u].substring(0,1) != '/') {
|
|
467
508
|
tmp[rule].url[u] = '/'+tmp[rule].url[u]
|
|
468
509
|
} else {
|
|
469
|
-
if (wroot.
|
|
470
|
-
wroot = wroot.
|
|
510
|
+
if (wroot.substring(wroot.length-1,1) == '/') {
|
|
511
|
+
wroot = wroot.substring(wroot.length-1,1).replace('/', '')
|
|
471
512
|
}
|
|
472
513
|
}
|
|
473
514
|
if ( typeof(tmp[rule].param.ignoreWebRoot) == 'undefined' || !tmp[rule].param.ignoreWebRoot )
|
|
@@ -584,7 +625,7 @@ function Server(options) {
|
|
|
584
625
|
) {
|
|
585
626
|
|
|
586
627
|
// by default
|
|
587
|
-
path = url.replace(url.
|
|
628
|
+
path = url.replace(url.substring(url.lastIndexOf('/')+1), '');
|
|
588
629
|
if ( typeof(altConf) != 'undefined' && altConf ) {
|
|
589
630
|
bundleConf = self.conf[altConf.split(/\@/)[1]][bundleConf.env];
|
|
590
631
|
backedupPath = path;
|
|
@@ -592,7 +633,7 @@ function Server(options) {
|
|
|
592
633
|
}
|
|
593
634
|
|
|
594
635
|
|
|
595
|
-
// catch `statics.json` defined paths || bundleConf.staticResources.indexOf(url.replace(url.
|
|
636
|
+
// catch `statics.json` defined paths || bundleConf.staticResources.indexOf(url.replace(url.substring(url.lastIndexOf('/')+1), '')) > -1
|
|
596
637
|
if ( bundleConf.staticResources.indexOf(path) > -1 || bundleConf.staticResources.indexOf(staticProps.firstLevel) > -1 ) {
|
|
597
638
|
if ( typeof(altConf) != 'undefined' && altConf && backedupPath ) {
|
|
598
639
|
filename = (bundleConf.staticResources.indexOf(path) > -1) ? bundleConf.content.statics[path] + url.replace(backedupPath, '/') : bundleConf.content.statics[staticProps.firstLevel] + url.replace(staticProps.firstLevel, '/');
|
|
@@ -631,8 +672,8 @@ function Server(options) {
|
|
|
631
672
|
*/
|
|
632
673
|
var getAssets = function (bundleConf, layoutStr, swig, data) {
|
|
633
674
|
|
|
634
|
-
// layout search for <link|script|img>
|
|
635
|
-
var layoutAssets = layoutStr.match(/<link .*?<\/link>|<link .*?(rel\=\"(stylesheet|icon|manifest|(.*)\-icon))(.*)|<script.*?<\/script>|<img .*?(.*)/g) || [];
|
|
675
|
+
// layout search for <link|source|script|img>
|
|
676
|
+
var layoutAssets = layoutStr.match(/<link .*?<\/link>|<link .*?(rel\=\"(stylesheet|icon|manifest|(.*)\-icon))(.*)|<source .*?(type\=\"(image))(.*)|<script.*?<\/script>|<img .*?(.*)/g) || [];
|
|
636
677
|
|
|
637
678
|
var assets = {}
|
|
638
679
|
, cssFiles = []
|
|
@@ -652,63 +693,150 @@ function Server(options) {
|
|
|
652
693
|
// layout assets
|
|
653
694
|
i = 0;
|
|
654
695
|
len = layoutAssets.length;
|
|
655
|
-
var type
|
|
656
|
-
, isAvailable
|
|
657
|
-
, tag
|
|
658
|
-
, properties
|
|
659
|
-
, p
|
|
660
|
-
, pArr
|
|
696
|
+
var type = null
|
|
697
|
+
, isAvailable = null
|
|
698
|
+
, tag = null
|
|
699
|
+
, properties = null
|
|
700
|
+
, p = 0
|
|
701
|
+
, pArr = []
|
|
702
|
+
, sourceTagSrcSetStr = ''
|
|
661
703
|
;
|
|
662
704
|
for (; i < len; ++i) {
|
|
663
705
|
|
|
664
706
|
if (
|
|
665
|
-
!/(\<img|\<link|\<script)/g.test(layoutAssets[i])
|
|
666
|
-
|
|
707
|
+
!/(\<img|\<link|\<source|\<script)/g.test(layoutAssets[i])
|
|
708
|
+
// ||
|
|
709
|
+
// not able to handle srcset case for now
|
|
710
|
+
/**
|
|
711
|
+
/\<img/.test(layoutAssets[i])
|
|
712
|
+
&& /srcset/.test(layoutAssets[i])*/
|
|
667
713
|
) {
|
|
668
714
|
continue;
|
|
669
715
|
}
|
|
670
716
|
|
|
717
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload
|
|
718
|
+
let asType = null;
|
|
719
|
+
|
|
671
720
|
if ( /\<img/.test(layoutAssets[i]) ) {
|
|
672
721
|
type = 'image';
|
|
673
722
|
tag = 'img';
|
|
723
|
+
asType = type;
|
|
674
724
|
}
|
|
675
725
|
|
|
676
|
-
|
|
677
|
-
type = 'javascript';
|
|
678
|
-
tag = 'script';
|
|
679
|
-
}
|
|
726
|
+
|
|
680
727
|
|
|
681
728
|
if ( /\<link/.test(layoutAssets[i]) ) {
|
|
682
|
-
if ( /rel\=\"stylesheet/.test(layoutAssets[i]) ) {
|
|
683
|
-
|
|
684
|
-
} else if ( /rel\=\"(icon|(.*)\-icon)/.test(layoutAssets[i]) ) {
|
|
685
|
-
|
|
686
|
-
} else {
|
|
687
|
-
|
|
729
|
+
// if ( /rel\=\"stylesheet/.test(layoutAssets[i]) ) {
|
|
730
|
+
// type = 'stylesheet';
|
|
731
|
+
// } else if ( /rel\=\"(icon|(.*)\-icon)/.test(layoutAssets[i]) ) {
|
|
732
|
+
// type = 'image';
|
|
733
|
+
// } else {
|
|
734
|
+
// type = 'file';
|
|
735
|
+
// }
|
|
736
|
+
type = layoutAssets[i].match(/rel=\"[-a-z 0-9]+\"/)[0] || null;
|
|
737
|
+
if (type) {
|
|
738
|
+
type = type.replace(/^rel\=\"|"$/g, '');
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
switch (type) {
|
|
743
|
+
case /stylesheet/.test(type):
|
|
744
|
+
asType = 'style';
|
|
745
|
+
break;
|
|
746
|
+
|
|
747
|
+
case /javascript/.test(type):
|
|
748
|
+
asType = 'script';
|
|
749
|
+
break;
|
|
750
|
+
|
|
751
|
+
default:
|
|
752
|
+
asType = null;
|
|
753
|
+
if ( /icon/.test(type) ) {
|
|
754
|
+
asType = 'image';
|
|
755
|
+
// ignoring all (fav)icons type: rel="*icon*" case
|
|
756
|
+
continue;
|
|
757
|
+
}
|
|
758
|
+
if ( /font/.test(type) ) {
|
|
759
|
+
asType = 'font';
|
|
760
|
+
}
|
|
761
|
+
// if ( /manifest/.test(type) ) {
|
|
762
|
+
// asType = 'webmanifest';
|
|
763
|
+
// }
|
|
764
|
+
break;
|
|
688
765
|
}
|
|
689
766
|
|
|
690
767
|
tag = 'link';
|
|
691
768
|
}
|
|
692
769
|
|
|
770
|
+
if ( /\<source/.test(layoutAssets[i]) ) {
|
|
771
|
+
if ( /type\=\"image/.test(layoutAssets[i]) ) {
|
|
772
|
+
type = 'image';
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
tag = 'source';
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
if ( /\<script/.test(layoutAssets[i]) ) {
|
|
779
|
+
type = 'javascript';
|
|
780
|
+
tag = 'script';
|
|
781
|
+
}
|
|
782
|
+
|
|
693
783
|
domain = null;
|
|
784
|
+
let isEncodedContent = false;
|
|
785
|
+
// repsonsive images
|
|
786
|
+
// https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset
|
|
787
|
+
let srcset = null;
|
|
788
|
+
// https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesizes
|
|
789
|
+
let sizes = null;
|
|
790
|
+
let urlArr = null;
|
|
694
791
|
try {
|
|
695
|
-
|
|
792
|
+
urlArr = layoutAssets[i].match(/(src|href|srcset)\=(\".*?\"|\'.*?\')/g);
|
|
793
|
+
for (let u=0, uLen=urlArr.length; u<uLen; u++) {
|
|
794
|
+
if ( /data\:/.test(urlArr[u]) ) {
|
|
795
|
+
isEncodedContent = true;
|
|
796
|
+
break;
|
|
797
|
+
}
|
|
798
|
+
if ( /^srcset\=/.test(urlArr[u]) ) {
|
|
799
|
+
srcset = urlArr[u]
|
|
800
|
+
.replace(/((src|href|srcset)\=\"|(src|href|srcset)\=\')/g, '')
|
|
801
|
+
.replace(/\"/g, '');
|
|
802
|
+
if ( /source/i.test(tag) ) {
|
|
803
|
+
sourceTagSrcSetStr += srcset + ','
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
if ( /^(src|href)\=/.test(urlArr[u]) ) {
|
|
807
|
+
url = urlArr[u]
|
|
808
|
+
.replace(/((src|href|srcset)\=\"|(src|href|srcset)\=\')/g, '')
|
|
809
|
+
.replace(/\"/g, '');
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
if ( isEncodedContent ) { // ignoring "data:..."
|
|
813
|
+
continue
|
|
814
|
+
}
|
|
815
|
+
// url = urlArr[0];
|
|
696
816
|
} catch (err) {
|
|
697
|
-
console.warn('Problem with this asset ('+ i +'/'+ len +'): '+ layoutAssets[i].
|
|
817
|
+
console.warn('Problem with this asset ('+ i +'/'+ len +'): '+ layoutAssets[i].substring(0, 80) +'...');
|
|
698
818
|
continue;
|
|
699
819
|
}
|
|
700
820
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
continue
|
|
821
|
+
if ( /source/i.test(tag) ) {
|
|
822
|
+
continue;
|
|
704
823
|
}
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
// if ( /data\:/.test(url) ) { // ignoring "data:..."
|
|
827
|
+
// continue
|
|
828
|
+
// }
|
|
705
829
|
//url = url.replace(/((src|href)\=\"|(src|href)\=\'|\"|\')/g, '');
|
|
706
|
-
url = url
|
|
830
|
+
// url = url
|
|
831
|
+
// .replace(/((src|href|srcset)\=\"|(src|href|srcset)\=\')/g, '')
|
|
832
|
+
// .replace(/\"/g, '')
|
|
833
|
+
// ;
|
|
707
834
|
if ( !/^\{\{/.test(url) ) {
|
|
708
835
|
url = url.replace(/(\"|\')/g, '');
|
|
709
836
|
}
|
|
710
|
-
if (swig && /^\{\{/.test(url) )
|
|
837
|
+
if (swig && /^\{\{/.test(url) ) {
|
|
711
838
|
url = swig.compile(url, swig.getOptions())(data);
|
|
839
|
+
}
|
|
712
840
|
|
|
713
841
|
if (!/(\:\/\/|^\/\/)/.test(url) ) {
|
|
714
842
|
filename = getAssetFilenameFromUrl(bundleConf, url);
|
|
@@ -728,7 +856,7 @@ function Server(options) {
|
|
|
728
856
|
isAvailable = ( /404/.test(filename) ) ? false : true;
|
|
729
857
|
if ( isAvailable ) {
|
|
730
858
|
try {
|
|
731
|
-
ext = url.
|
|
859
|
+
ext = url.substring(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/)[0];
|
|
732
860
|
} catch(err) {
|
|
733
861
|
|
|
734
862
|
console.warn('No extension found for `'+ filename +'`\n'+ err.stack );
|
|
@@ -739,15 +867,41 @@ function Server(options) {
|
|
|
739
867
|
|
|
740
868
|
assets[key] = {
|
|
741
869
|
type : type,
|
|
870
|
+
as : asType,
|
|
742
871
|
url : url,
|
|
743
872
|
ext : ext,
|
|
744
|
-
mime : (!ext) ? 'NA' : (bundleConf.server.coreConfiguration.mime[ext.
|
|
873
|
+
mime : (!ext) ? 'NA' : (bundleConf.server.coreConfiguration.mime[ext.substring(1)] || 'NA'),
|
|
745
874
|
filename : ( /404/.test(filename) ) ? 'not found' : filename,
|
|
746
875
|
isAvailable : isAvailable
|
|
747
876
|
};
|
|
748
877
|
|
|
749
|
-
|
|
878
|
+
//sourceTagSrcSetStr
|
|
879
|
+
if (sourceTagSrcSetStr.length > 0) {
|
|
880
|
+
assets[key]['imagesrcset'] = sourceTagSrcSetStr.substring(0, sourceTagSrcSetStr.length-1);
|
|
881
|
+
// reset
|
|
882
|
+
sourceTagSrcSetStr = '';
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
if (srcset) {
|
|
886
|
+
if ( typeof(assets[key]['imagesrcset']) != 'undefined' ) {
|
|
887
|
+
assets[key]['imagesrcset'] += ', '+ srcset;
|
|
888
|
+
} else {
|
|
889
|
+
assets[key]['imagesrcset'] = srcset;
|
|
890
|
+
}
|
|
891
|
+
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
if (sizes) {
|
|
895
|
+
if ( typeof(assets[key]['imagesizes']) != 'undefined' ) {
|
|
896
|
+
assets[key]['imagesizes'] += ', '+ sizes;
|
|
897
|
+
} else {
|
|
898
|
+
assets[key]['imagesizes'] = sizes;
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
if (domain) {
|
|
750
903
|
assets[key].domain = domain;
|
|
904
|
+
}
|
|
751
905
|
|
|
752
906
|
if ( type == 'stylesheet' && !/not found/.test(assets[key].filename) ) {
|
|
753
907
|
cssFiles.push(assets[key].filename)
|
|
@@ -873,14 +1027,14 @@ function Server(options) {
|
|
|
873
1027
|
//key = (( /404/.test(filename) ) ? '[404]' : '[200]') +' '+ url;
|
|
874
1028
|
key = url;
|
|
875
1029
|
isAvailable = ( /404/.test(filename) ) ? false : true;
|
|
876
|
-
ext = url.
|
|
1030
|
+
ext = url.substring(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/)[0];
|
|
877
1031
|
assets[key] = {
|
|
878
1032
|
referrer : cssFiles[i],
|
|
879
1033
|
definition : definition,
|
|
880
1034
|
type : type,
|
|
881
1035
|
url : url,
|
|
882
1036
|
ext : ext,
|
|
883
|
-
mime : bundleConf.server.coreConfiguration.mime[ext.
|
|
1037
|
+
mime : bundleConf.server.coreConfiguration.mime[ext.substring(1)] || 'NA',
|
|
884
1038
|
filename : ( /404/.test(filename) ) ? 'not found' : filename
|
|
885
1039
|
};
|
|
886
1040
|
|
|
@@ -936,12 +1090,14 @@ function Server(options) {
|
|
|
936
1090
|
* }
|
|
937
1091
|
*/
|
|
938
1092
|
|
|
939
|
-
|
|
1093
|
+
|
|
1094
|
+
if (swig) { // Deprecated
|
|
940
1095
|
var assetsStr = JSON.stringify(assets);
|
|
941
1096
|
assets = swig.compile( assetsStr.substring(1, assetsStr.length-1), swig.getOptions() )(data);
|
|
942
|
-
|
|
1097
|
+
|
|
1098
|
+
return '{'+ assets +'}';
|
|
943
1099
|
} else {
|
|
944
|
-
return assets
|
|
1100
|
+
return JSON.stringify(assets)
|
|
945
1101
|
}
|
|
946
1102
|
}
|
|
947
1103
|
|
|
@@ -997,8 +1153,10 @@ function Server(options) {
|
|
|
997
1153
|
if ( typeof(request.headers.origin) != 'undefined' ) {
|
|
998
1154
|
authority = request.headers.origin;
|
|
999
1155
|
} else if (request.headers.referer) {
|
|
1000
|
-
referer = request.headers.referer.match(/^[https://|http://][a-z0-9-_.:/]+\//)
|
|
1001
|
-
|
|
1156
|
+
referer = request.headers.referer.match(/^[https://|http://][a-z0-9-_.:/]+\//);
|
|
1157
|
+
if (Array.isArray(referer) && referer.length > 0) {
|
|
1158
|
+
referer = referer[0].substring(0, referer.length-1);
|
|
1159
|
+
}
|
|
1002
1160
|
}
|
|
1003
1161
|
|
|
1004
1162
|
// access-control-allow-origin settings
|
|
@@ -1027,6 +1185,7 @@ function Server(options) {
|
|
|
1027
1185
|
|
|
1028
1186
|
re = new RegExp(authority);
|
|
1029
1187
|
allowedOrigin = ( typeof(conf.server.response.header['access-control-allow-origin']) != 'undefined' && conf.server.response.header['access-control-allow-origin'] != '' ) ? conf.server.response.header['access-control-allow-origin'] : authority;
|
|
1188
|
+
// console.debug('[ server ][access-control-allow-origin] ', allowedOrigin);
|
|
1030
1189
|
var found = null, origin = null, origins = null; // to handles multiple origins
|
|
1031
1190
|
|
|
1032
1191
|
var originHostReplacement = function(name) {
|
|
@@ -1035,8 +1194,8 @@ function Server(options) {
|
|
|
1035
1194
|
return name
|
|
1036
1195
|
}
|
|
1037
1196
|
|
|
1038
|
-
var env = self.conf.env
|
|
1039
|
-
, scope = self.conf.scope
|
|
1197
|
+
var env = self.conf.env || self.env
|
|
1198
|
+
, scope = self.conf.scope || self.scope
|
|
1040
1199
|
;
|
|
1041
1200
|
|
|
1042
1201
|
for (let i=0, len=matched.length; i<len; ++i) {
|
|
@@ -1054,6 +1213,9 @@ function Server(options) {
|
|
|
1054
1213
|
project = arr[0];
|
|
1055
1214
|
env = (arr[1]) ? arr[1] : env;
|
|
1056
1215
|
}
|
|
1216
|
+
if ( typeof(self.conf[bundle]) == 'undefined' ) {
|
|
1217
|
+
continue;
|
|
1218
|
+
}
|
|
1057
1219
|
scheme = self.conf[bundle][env].server.scheme;
|
|
1058
1220
|
hostname = ( !self.conf[bundle][env].hostname ) ? self.conf[bundle][env].server.scheme + '://' + self.conf[bundle][env].host + ':' + self.conf[bundle][env].server.port : self.conf[bundle][env].hostname;
|
|
1059
1221
|
name = name.replace(oldHost, hostname);
|
|
@@ -1112,7 +1274,7 @@ function Server(options) {
|
|
|
1112
1274
|
|
|
1113
1275
|
// update response
|
|
1114
1276
|
try {
|
|
1115
|
-
if ( responseHeaders &&
|
|
1277
|
+
if ( responseHeaders && Object.keys(responseHeaders).length > 0 ) {
|
|
1116
1278
|
return merge(responseHeaders, response.getHeaders());
|
|
1117
1279
|
}
|
|
1118
1280
|
return response.getHeaders();
|
|
@@ -1122,13 +1284,13 @@ function Server(options) {
|
|
|
1122
1284
|
}
|
|
1123
1285
|
|
|
1124
1286
|
this.onHttp2Stream = function(stream, headers, response) {
|
|
1125
|
-
var header
|
|
1126
|
-
, isWebroot
|
|
1127
|
-
, pathname
|
|
1128
|
-
, asset
|
|
1129
|
-
, assets
|
|
1130
|
-
, conf
|
|
1131
|
-
,
|
|
1287
|
+
var header = null
|
|
1288
|
+
, isWebroot = false
|
|
1289
|
+
, pathname = null
|
|
1290
|
+
, asset = null
|
|
1291
|
+
, assets = this._options.template.assets
|
|
1292
|
+
, conf = this._options.conf
|
|
1293
|
+
, isCacheless = conf.isCacheless
|
|
1132
1294
|
;
|
|
1133
1295
|
|
|
1134
1296
|
|
|
@@ -1157,7 +1319,17 @@ function Server(options) {
|
|
|
1157
1319
|
) ? true: false
|
|
1158
1320
|
;
|
|
1159
1321
|
|
|
1160
|
-
if (!stream.pushAllowed) {
|
|
1322
|
+
if (!stream.pushAllowed ) {
|
|
1323
|
+
|
|
1324
|
+
// Fix added for static sites
|
|
1325
|
+
if (
|
|
1326
|
+
!assets[ url ]
|
|
1327
|
+
||
|
|
1328
|
+
!assets[ url ].isBinary && !assets[ url ].isHandler
|
|
1329
|
+
) {
|
|
1330
|
+
return;
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1161
1333
|
asset = {
|
|
1162
1334
|
url : url,
|
|
1163
1335
|
filename : assets[ url ].filename,
|
|
@@ -1203,6 +1375,7 @@ function Server(options) {
|
|
|
1203
1375
|
, header
|
|
1204
1376
|
//, { onError }
|
|
1205
1377
|
);
|
|
1378
|
+
|
|
1206
1379
|
} else {
|
|
1207
1380
|
stream.respond(header);
|
|
1208
1381
|
stream.end();
|
|
@@ -1227,7 +1400,7 @@ function Server(options) {
|
|
|
1227
1400
|
':status': 301
|
|
1228
1401
|
};
|
|
1229
1402
|
|
|
1230
|
-
if (
|
|
1403
|
+
if (isCacheless) {
|
|
1231
1404
|
header['cache-control'] = 'no-cache, no-store, must-revalidate';
|
|
1232
1405
|
header['pragma'] = 'no-cache';
|
|
1233
1406
|
header['expires'] = '0';
|
|
@@ -1300,7 +1473,7 @@ function Server(options) {
|
|
|
1300
1473
|
header['content-length'] = fs.statSync(assets[ url ].filename).size;
|
|
1301
1474
|
}
|
|
1302
1475
|
|
|
1303
|
-
if (
|
|
1476
|
+
if (isCacheless) {
|
|
1304
1477
|
// source maps integration for javascript & css
|
|
1305
1478
|
if ( /(.js|.css)$/.test(asset.filename) && fs.existsSync(asset.filename +'.map') ) {
|
|
1306
1479
|
//pathname = asset.filename +'.map';
|
|
@@ -1389,7 +1562,7 @@ function Server(options) {
|
|
|
1389
1562
|
self._options.conf = bundleConf
|
|
1390
1563
|
}
|
|
1391
1564
|
|
|
1392
|
-
var
|
|
1565
|
+
var isCacheless = bundleConf.isCacheless;
|
|
1393
1566
|
// by default
|
|
1394
1567
|
var filename = bundleConf.publicPath + pathname;
|
|
1395
1568
|
var isFilenameDir = null
|
|
@@ -1397,6 +1570,9 @@ function Server(options) {
|
|
|
1397
1570
|
, isBinary = null
|
|
1398
1571
|
, isHandler = null
|
|
1399
1572
|
, hanlersPath = null
|
|
1573
|
+
, preferedEncoding = bundleConf.server.preferedCompressionEncodingOrder
|
|
1574
|
+
, acceptEncodingArr = (request.headers['accept-encoding']) ? request.headers['accept-encoding'].replace(/\s+/g, '').split(/\,/) : []
|
|
1575
|
+
, acceptEncoding = null
|
|
1400
1576
|
;
|
|
1401
1577
|
|
|
1402
1578
|
// catch `statics.json` defined paths
|
|
@@ -1417,7 +1593,6 @@ function Server(options) {
|
|
|
1417
1593
|
var key = pathname.replace(pathname.split('/').splice(-1), '');
|
|
1418
1594
|
for ( ; s < sLen; ++s ) {
|
|
1419
1595
|
if ( bundleConf.staticResources[s] == key ) {
|
|
1420
|
-
// if ( eval('/^' + bundleConf.staticResources[s].replace(/\//g,'\\/') +'/').test(pathname) ) {
|
|
1421
1596
|
filename = bundleConf.content.statics[ bundleConf.staticResources[s] ] +'/'+ pathname.replace(bundleConf.staticResources[s], '');
|
|
1422
1597
|
break;
|
|
1423
1598
|
}
|
|
@@ -1431,9 +1606,11 @@ function Server(options) {
|
|
|
1431
1606
|
|
|
1432
1607
|
|
|
1433
1608
|
filename = decodeURIComponent(filename);
|
|
1434
|
-
|
|
1609
|
+
let filenameObj = new _(filename, true);
|
|
1610
|
+
filenameObj.exists(function onStaticExists(exists) {
|
|
1611
|
+
// fs.exists(filename, function onStaticExists(exists) {
|
|
1435
1612
|
|
|
1436
|
-
if (!
|
|
1613
|
+
if (!exists) {
|
|
1437
1614
|
return throwError(response, 404, 'Page not found: \n' + pathname, next);
|
|
1438
1615
|
}
|
|
1439
1616
|
|
|
@@ -1446,48 +1623,49 @@ function Server(options) {
|
|
|
1446
1623
|
if ( !fs.existsSync(filename) ) {
|
|
1447
1624
|
throwError(response, 403, 'Forbidden: \n' + pathname, next);
|
|
1448
1625
|
return;
|
|
1449
|
-
}
|
|
1450
|
-
var ext = 'html';
|
|
1451
|
-
if ( /http\/2/.test(protocol) ) {
|
|
1452
|
-
header = {
|
|
1453
|
-
':status': 301,
|
|
1454
|
-
'location': request.url,
|
|
1455
|
-
'content-type': bundleConf.server.coreConfiguration.mime[ext]+'; charset='+ bundleConf.encoding
|
|
1456
|
-
};
|
|
1626
|
+
}
|
|
1457
1627
|
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1628
|
+
var ext = 'html';
|
|
1629
|
+
if ( /http\/2/.test(protocol) ) {
|
|
1630
|
+
header = {
|
|
1631
|
+
':status': 301,
|
|
1632
|
+
'location': request.url,
|
|
1633
|
+
'content-type': bundleConf.server.coreConfiguration.mime[ext]+'; charset='+ bundleConf.encoding
|
|
1634
|
+
};
|
|
1465
1635
|
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1636
|
+
if (isCacheless) {
|
|
1637
|
+
header['cache-control'] = 'no-cache, no-store, must-revalidate';
|
|
1638
|
+
header['pragma'] = 'no-cache';
|
|
1639
|
+
header['expires'] = '0';
|
|
1640
|
+
}
|
|
1641
|
+
request = checkPreflightRequest(request, response);
|
|
1642
|
+
header = completeHeaders(header, request, response);
|
|
1470
1643
|
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1644
|
+
if (!stream.destroyed) {
|
|
1645
|
+
stream.respond(header);
|
|
1646
|
+
stream.end();
|
|
1647
|
+
}
|
|
1648
|
+
|
|
1649
|
+
} else {
|
|
1650
|
+
response.setHeader('location', request.url);
|
|
1651
|
+
request = checkPreflightRequest(request, response);
|
|
1652
|
+
completeHeaders(null, request, response);
|
|
1653
|
+
if (isCacheless) {
|
|
1654
|
+
response.writeHead(301, {
|
|
1655
|
+
'cache-control': 'no-cache, no-store, must-revalidate', // preventing browsers from using cache
|
|
1656
|
+
'pragma': 'no-cache',
|
|
1657
|
+
'expires': '0',
|
|
1658
|
+
'content-type': bundleConf.server.coreConfiguration.mime[ext]
|
|
1659
|
+
});
|
|
1484
1660
|
}
|
|
1661
|
+
response.end()
|
|
1485
1662
|
}
|
|
1663
|
+
|
|
1486
1664
|
return;
|
|
1487
1665
|
}
|
|
1488
1666
|
|
|
1489
1667
|
|
|
1490
|
-
if (
|
|
1668
|
+
if (isCacheless) {
|
|
1491
1669
|
delete require.cache[require.resolve(filename)];
|
|
1492
1670
|
}
|
|
1493
1671
|
|
|
@@ -1527,6 +1705,23 @@ function Server(options) {
|
|
|
1527
1705
|
isBinary = false;
|
|
1528
1706
|
isHandler = true;
|
|
1529
1707
|
file = '(gina.ready(function onGinaReady($){\n'+ file + '\n},window["originalContext"]));'
|
|
1708
|
+
|
|
1709
|
+
// acceptEncodingArr = request.headers['accept-encoding'].replace(/\s+/g, '').split(/\,/);
|
|
1710
|
+
// acceptEncoding = null;
|
|
1711
|
+
for (let e=0, eLen=preferedEncoding.length; e<eLen; e++) {
|
|
1712
|
+
if ( acceptEncodingArr && acceptEncodingArr.indexOf(preferedEncoding[e]) > -1 ) {
|
|
1713
|
+
acceptEncoding = bundleConf.server.coreConfiguration.encoding[ preferedEncoding[e] ] ;
|
|
1714
|
+
break;
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
// Compressed content
|
|
1718
|
+
if (
|
|
1719
|
+
!isCacheless
|
|
1720
|
+
&& acceptEncoding
|
|
1721
|
+
&& fs.existsSync(filename + acceptEncoding)
|
|
1722
|
+
) {
|
|
1723
|
+
isBinary = true;
|
|
1724
|
+
}
|
|
1530
1725
|
}
|
|
1531
1726
|
}
|
|
1532
1727
|
|
|
@@ -1537,8 +1732,12 @@ function Server(options) {
|
|
|
1537
1732
|
request.url = ( ext != null && typeof(ext[0]) != 'undefined' ) ? request.url : request.url + 'index.html';
|
|
1538
1733
|
|
|
1539
1734
|
self._responseHeaders = response.getHeaders();
|
|
1540
|
-
if (
|
|
1735
|
+
if (
|
|
1736
|
+
!isBinary
|
|
1737
|
+
&& typeof(self._options.template.assets[request.url]) == 'undefined'
|
|
1738
|
+
) {
|
|
1541
1739
|
self._options.template.assets = getAssets(bundleConf, file);
|
|
1740
|
+
}
|
|
1542
1741
|
|
|
1543
1742
|
if (
|
|
1544
1743
|
typeof(self._options.template.assets[request.url]) == 'undefined'
|
|
@@ -1603,7 +1802,7 @@ function Server(options) {
|
|
|
1603
1802
|
'location': request.url
|
|
1604
1803
|
};
|
|
1605
1804
|
|
|
1606
|
-
if (
|
|
1805
|
+
if (isCacheless) {
|
|
1607
1806
|
header['cache-control'] = 'no-cache, no-store, must-revalidate';
|
|
1608
1807
|
header['pragma'] = 'no-cache';
|
|
1609
1808
|
header['expires'] = '0';
|
|
@@ -1674,11 +1873,11 @@ function Server(options) {
|
|
|
1674
1873
|
'content-type': contentType + '; charset='+ bundleConf.encoding
|
|
1675
1874
|
};
|
|
1676
1875
|
|
|
1677
|
-
if (
|
|
1876
|
+
if (isCacheless) {
|
|
1678
1877
|
// source maps integration for javascript & css
|
|
1679
1878
|
if ( /(.js|.css)$/.test(filename) && fs.existsSync(filename +'.map') && !/sourceMappingURL/.test(file) ) {
|
|
1680
1879
|
//pathname = pathname +'.map';
|
|
1681
|
-
pathname = webroot + pathname.
|
|
1880
|
+
pathname = webroot + pathname.substring(1) +'.map';
|
|
1682
1881
|
// serve without cache
|
|
1683
1882
|
header['X-SourceMap'] = pathname;
|
|
1684
1883
|
header['cache-control'] = 'no-cache, no-store, must-revalidate';
|
|
@@ -1702,17 +1901,40 @@ function Server(options) {
|
|
|
1702
1901
|
completeHeaders(null, request, response);
|
|
1703
1902
|
response.setHeader('content-type', contentType +'; charset='+ bundleConf.encoding);
|
|
1704
1903
|
// if (/\.(woff|woff2)$/i.test(filename) ) {
|
|
1705
|
-
// response.setHeader("
|
|
1904
|
+
// response.setHeader("transfer-encoding", 'Identity')
|
|
1706
1905
|
// }
|
|
1906
|
+
|
|
1907
|
+
|
|
1707
1908
|
if (isBinary) {
|
|
1708
1909
|
response.setHeader('content-length', fs.statSync(filename).size);
|
|
1910
|
+
|
|
1911
|
+
// acceptEncodingArr = request.headers['accept-encoding'].replace(/\s+/g, '').split(/\,/);
|
|
1912
|
+
// acceptEncoding = null;
|
|
1913
|
+
for (let e=0, eLen=preferedEncoding.length; e<eLen; e++) {
|
|
1914
|
+
if ( acceptEncodingArr && acceptEncodingArr.indexOf(preferedEncoding[e]) > -1 ) {
|
|
1915
|
+
acceptEncoding = bundleConf.server.coreConfiguration.encoding[ preferedEncoding[e] ] ;
|
|
1916
|
+
break;
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
// Compressed content
|
|
1920
|
+
if (
|
|
1921
|
+
!isCacheless
|
|
1922
|
+
&& acceptEncoding
|
|
1923
|
+
&& fs.existsSync(filename + acceptEncoding)
|
|
1924
|
+
) {
|
|
1925
|
+
filename += acceptEncoding;
|
|
1926
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Encoding
|
|
1927
|
+
response.setHeader('content-encoding', acceptEncoding.replace(/^\./, ''));
|
|
1928
|
+
// override content length
|
|
1929
|
+
response.setHeader('content-length', fs.statSync(filename).size);
|
|
1930
|
+
}
|
|
1709
1931
|
}
|
|
1710
1932
|
|
|
1711
|
-
if (
|
|
1933
|
+
if (isCacheless) {
|
|
1712
1934
|
// source maps integration for javascript & css
|
|
1713
1935
|
if ( /(.js|.css)$/.test(filename) && fs.existsSync(filename +'.map') && !/sourceMappingURL/.test(file) ) {
|
|
1714
1936
|
//pathname = pathname +'.map'
|
|
1715
|
-
pathname = webroot + pathname.
|
|
1937
|
+
pathname = webroot + pathname.substring(1) +'.map';
|
|
1716
1938
|
response.setHeader("X-SourceMap", pathname)
|
|
1717
1939
|
}
|
|
1718
1940
|
|
|
@@ -1729,6 +1951,7 @@ function Server(options) {
|
|
|
1729
1951
|
|
|
1730
1952
|
|
|
1731
1953
|
if (isBinary) { // images, javascript, pdf ....
|
|
1954
|
+
|
|
1732
1955
|
fs.createReadStream(filename)
|
|
1733
1956
|
.on('end', function onResponse(){
|
|
1734
1957
|
console.info(request.method +' [200] '+ pathname);
|
|
@@ -1753,7 +1976,8 @@ function Server(options) {
|
|
|
1753
1976
|
});
|
|
1754
1977
|
|
|
1755
1978
|
|
|
1756
|
-
})
|
|
1979
|
+
});
|
|
1980
|
+
filenameObj = null;
|
|
1757
1981
|
}
|
|
1758
1982
|
|
|
1759
1983
|
|
|
@@ -1765,6 +1989,28 @@ function Server(options) {
|
|
|
1765
1989
|
// catch all (request urls)
|
|
1766
1990
|
self.instance.all('*', function onInstance(request, response, next) {
|
|
1767
1991
|
|
|
1992
|
+
// Caching = [...]
|
|
1993
|
+
// TODO - handle this through a middleware
|
|
1994
|
+
/**
|
|
1995
|
+
* var cacheIndex = ['/api/document/get/b47c4dd3-f7c4-44b2-b1fb-401948be1ca4'].indexOf(request.url)
|
|
1996
|
+
* if ( cacheIndex > -1) {
|
|
1997
|
+
* // return caching[cacheIndex].content
|
|
1998
|
+
* }
|
|
1999
|
+
*/
|
|
2000
|
+
|
|
2001
|
+
// Retrieving cached route
|
|
2002
|
+
// var cachedUrls = ['/'];
|
|
2003
|
+
// if (cachedUrls.indexOf(request.url) > -1) {
|
|
2004
|
+
// request.routing = JSON.parse('{"method":"GET","namespace":"home","url":"/","rule":"home@public","param":{"control":"home","file":"../home"},"middleware":["middlewares.maintenance.check"],"bundle":"public","isXMLRequest":false,"isWithCredentials":false}');
|
|
2005
|
+
// var headers = JSON.parse('{"X-Powered-By":"Gina I/O - v0.1.6-alpha.94","access-control-allow-headers":"X-Requested-With, Content-Type","access-control-allow-methods":"GET","access-control-allow-credentials":true,"vary":"Origin","accept-language":"en-US,en;q=0.8,fr;q=0.6"}');
|
|
2006
|
+
// for (let h in headers) {
|
|
2007
|
+
// response.setHeader(h, headers[h]);
|
|
2008
|
+
// }
|
|
2009
|
+
|
|
2010
|
+
// return local.router.route(request, response, next, request.routing);
|
|
2011
|
+
// }
|
|
2012
|
+
|
|
2013
|
+
|
|
1768
2014
|
|
|
1769
2015
|
request.setEncoding(self.conf[self.appName][self.env].encoding);
|
|
1770
2016
|
// be carfull, if you are using jQuery + cross domain, you have to set the header manually in your $.ajax query -> headers: {'X-Requested-With': 'XMLHttpRequest'}
|
|
@@ -1811,7 +2057,7 @@ function Server(options) {
|
|
|
1811
2057
|
|
|
1812
2058
|
local.request = request;
|
|
1813
2059
|
|
|
1814
|
-
response.setHeader('
|
|
2060
|
+
response.setHeader('X-Powered-By', 'Gina/'+ GINA_VERSION );
|
|
1815
2061
|
|
|
1816
2062
|
|
|
1817
2063
|
|
|
@@ -1864,7 +2110,7 @@ function Server(options) {
|
|
|
1864
2110
|
if ( typeof(ext) != 'undefined' && ext != null) {
|
|
1865
2111
|
ext = ext[0];
|
|
1866
2112
|
// if image with `@` found
|
|
1867
|
-
if ( /^image/i.test(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.
|
|
2113
|
+
if ( /^image/i.test(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.substring(1)]) ) {
|
|
1868
2114
|
isImage = true
|
|
1869
2115
|
}
|
|
1870
2116
|
}
|
|
@@ -1873,7 +2119,7 @@ function Server(options) {
|
|
|
1873
2119
|
// and must not be an email
|
|
1874
2120
|
&& !/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(request.url)
|
|
1875
2121
|
// and must be handled by mime.types
|
|
1876
|
-
&& typeof(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.
|
|
2122
|
+
&& typeof(self.conf[self.appName][self.env].server.coreConfiguration.mime[ext.substring(1)]) != 'undefined'
|
|
1877
2123
|
||
|
|
1878
2124
|
ext != null
|
|
1879
2125
|
&& isImage
|
|
@@ -1899,7 +2145,7 @@ function Server(options) {
|
|
|
1899
2145
|
|
|
1900
2146
|
if (
|
|
1901
2147
|
staticProps.isStaticFilename && staticsArr.indexOf(request.url) > -1
|
|
1902
|
-
|| staticProps.isStaticFilename && staticsArr.indexOf( request.url.replace(request.url.
|
|
2148
|
+
|| staticProps.isStaticFilename && staticsArr.indexOf( request.url.replace(request.url.substring(request.url.lastIndexOf('/')+1), '') ) > -1
|
|
1903
2149
|
|| staticProps.isStaticFilename && new RegExp('^'+ staticProps.firstLevel).test(request.url)
|
|
1904
2150
|
|| /\/$/.test(request.url) && !isWebrootHandledByRouting && !/\/engine\.io\//.test(request.url)
|
|
1905
2151
|
) {
|
|
@@ -2067,11 +2313,14 @@ function Server(options) {
|
|
|
2067
2313
|
'method': 'POST',
|
|
2068
2314
|
'bundle' : self.appName
|
|
2069
2315
|
};
|
|
2070
|
-
var busboy =
|
|
2316
|
+
var busboy = Busboy({ headers: request.headers });
|
|
2071
2317
|
|
|
2072
2318
|
// busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
|
|
2073
2319
|
// console.log('Field [' + fieldname + ']: value: ' + inspect(val));
|
|
2074
2320
|
// });
|
|
2321
|
+
|
|
2322
|
+
// Attention: on busboy upgrade, we needs to adapt `busboy/lib/types/multipart.js`
|
|
2323
|
+
// For this, check the emit method
|
|
2075
2324
|
busboy.on('file', function(fieldname, file, filename, encoding, mimetype, group) {
|
|
2076
2325
|
|
|
2077
2326
|
file._dataLen = 0;
|
|
@@ -2087,7 +2336,7 @@ function Server(options) {
|
|
|
2087
2336
|
&& opt.groups[group].allowedExtensions != '*'
|
|
2088
2337
|
) {
|
|
2089
2338
|
var ext = opt.groups[group].allowedExtensions;
|
|
2090
|
-
var fileExt = filename.
|
|
2339
|
+
var fileExt = filename.substring(filename.lastIndexOf('.')+1)
|
|
2091
2340
|
if ( !Array.isArray(ext) ) {
|
|
2092
2341
|
ext = [ext]
|
|
2093
2342
|
}
|
|
@@ -2224,10 +2473,11 @@ function Server(options) {
|
|
|
2224
2473
|
|
|
2225
2474
|
});//EO this.instance
|
|
2226
2475
|
|
|
2227
|
-
|
|
2476
|
+
|
|
2228
2477
|
// Timeout in milliseconds - e.g.: (1000x60)x2 => 2 min
|
|
2229
2478
|
self.instance.timeout = 0; // zero for unlimited
|
|
2230
|
-
|
|
2479
|
+
//Port by default would be 3100
|
|
2480
|
+
self.instance.listen(self.conf[self.appName][self.env].server.port);
|
|
2231
2481
|
|
|
2232
2482
|
self.emit('started', self.conf[self.appName][self.env], true);
|
|
2233
2483
|
}
|
|
@@ -2243,12 +2493,12 @@ function Server(options) {
|
|
|
2243
2493
|
// get rid of encoding issues
|
|
2244
2494
|
try {
|
|
2245
2495
|
if ( !/multipart\/form-data;/.test(request.headers['content-type']) ) {
|
|
2246
|
-
if (
|
|
2496
|
+
if ( !/application\/x\-www\-form\-urlencoded/.test(request.headers['content-type']) && /\+/.test(request.body) ) {
|
|
2247
2497
|
request.body = request.body.replace(/\+/g, ' ');
|
|
2248
2498
|
}
|
|
2249
2499
|
|
|
2250
|
-
if ( request.body.
|
|
2251
|
-
request.body = request.body.
|
|
2500
|
+
if ( request.body.substring(0,1) == '?')
|
|
2501
|
+
request.body = request.body.substring(1);
|
|
2252
2502
|
|
|
2253
2503
|
try {
|
|
2254
2504
|
bodyStr = decodeURIComponent(request.body); // it is already a string for sure
|
|
@@ -2399,8 +2649,8 @@ function Server(options) {
|
|
|
2399
2649
|
request.body = request.body.replace(/\+/g, ' ');
|
|
2400
2650
|
}
|
|
2401
2651
|
|
|
2402
|
-
if ( request.body.
|
|
2403
|
-
request.body = request.body.
|
|
2652
|
+
if ( request.body.substring(0,1) == '?')
|
|
2653
|
+
request.body = request.body.substring(1);
|
|
2404
2654
|
|
|
2405
2655
|
// false & true case
|
|
2406
2656
|
try {
|
|
@@ -2521,8 +2771,10 @@ function Server(options) {
|
|
|
2521
2771
|
|
|
2522
2772
|
var config = new Config();
|
|
2523
2773
|
config.setBundles(self.bundles);
|
|
2524
|
-
|
|
2525
|
-
|
|
2774
|
+
// for all loaded bundles
|
|
2775
|
+
var conf = config.getInstance();
|
|
2776
|
+
//for cacheless mode
|
|
2777
|
+
if ( typeof(conf) != 'undefined') {
|
|
2526
2778
|
self.conf = conf;
|
|
2527
2779
|
}
|
|
2528
2780
|
|
|
@@ -2537,7 +2789,7 @@ function Server(options) {
|
|
|
2537
2789
|
if (self.bundles.indexOf(b) < 0) continue;
|
|
2538
2790
|
if ( typeof(conf[b][self.env].content) != 'undefined' && typeof(conf[b][self.env].content.statics) != 'undefined' && conf[b][self.env].content.statics.count() > 0 ) {
|
|
2539
2791
|
for (let s in conf[b][self.env].content.statics) {
|
|
2540
|
-
s = (s.
|
|
2792
|
+
s = (s.substring(0,1) == '/') ? s.substring(1) : s;
|
|
2541
2793
|
if ( (new RegExp('^/'+s)).test(pathname) ) {
|
|
2542
2794
|
bundle = b;
|
|
2543
2795
|
break end
|
|
@@ -2572,18 +2824,18 @@ function Server(options) {
|
|
|
2572
2824
|
}
|
|
2573
2825
|
|
|
2574
2826
|
var onBundleConfigLoaded = function(bundle, options) {
|
|
2575
|
-
var err
|
|
2576
|
-
,
|
|
2577
|
-
, pathname
|
|
2578
|
-
, req
|
|
2579
|
-
, res
|
|
2580
|
-
, config
|
|
2581
|
-
, next
|
|
2582
|
-
, callback
|
|
2827
|
+
var err = options.err
|
|
2828
|
+
, isCacheless = options.config.isCacheless()
|
|
2829
|
+
, pathname = options.pathname
|
|
2830
|
+
, req = options.req
|
|
2831
|
+
, res = options.res
|
|
2832
|
+
, config = options.conf
|
|
2833
|
+
, next = options.next
|
|
2834
|
+
, callback = options.callback
|
|
2583
2835
|
;
|
|
2584
2836
|
|
|
2585
2837
|
//Reloading assets & files.
|
|
2586
|
-
// if (!
|
|
2838
|
+
// if (!isCacheless) { // all but dev & debug
|
|
2587
2839
|
callback(err, bundle, pathname, options.config, req, res, next)
|
|
2588
2840
|
// } else {
|
|
2589
2841
|
// config.refresh(bundle, function(err, routing) {
|
|
@@ -2703,10 +2955,10 @@ function Server(options) {
|
|
|
2703
2955
|
var handle = async function(req, res, next, bundle, pathname, config) {
|
|
2704
2956
|
|
|
2705
2957
|
var matched = false
|
|
2706
|
-
, isRoute =
|
|
2958
|
+
, isRoute = null
|
|
2707
2959
|
, withViews = hasViews(bundle)
|
|
2708
2960
|
, router = local.router
|
|
2709
|
-
,
|
|
2961
|
+
, isCacheless = config.isCacheless()
|
|
2710
2962
|
, wroot = null
|
|
2711
2963
|
;
|
|
2712
2964
|
|
|
@@ -2734,13 +2986,35 @@ function Server(options) {
|
|
|
2734
2986
|
return;
|
|
2735
2987
|
}
|
|
2736
2988
|
var isMethodAllowed = null, hostname = null;
|
|
2989
|
+
|
|
2990
|
+
// Checking cached route
|
|
2991
|
+
var hasCachedRoute = await routingLib.getCached(req.method +':'+ pathname, req) || null;
|
|
2992
|
+
if ( hasCachedRoute ) {
|
|
2993
|
+
// Supposed to have everything we need to route
|
|
2994
|
+
isRoute = hasCachedRoute;
|
|
2995
|
+
// req = isRoute.request;
|
|
2996
|
+
} else {
|
|
2997
|
+
isRoute = {}
|
|
2998
|
+
}
|
|
2999
|
+
|
|
2737
3000
|
out:
|
|
2738
3001
|
for (let name in routing) {
|
|
3002
|
+
// Ignore cached route
|
|
3003
|
+
if ( hasCachedRoute ) {
|
|
3004
|
+
matched = true;
|
|
3005
|
+
break;
|
|
3006
|
+
}
|
|
3007
|
+
|
|
3008
|
+
// Ignoring routes out of scope
|
|
3009
|
+
if ( routing[name].scopes.indexOf(process.env.NODE_SCOPE) < 0 ) {
|
|
3010
|
+
continue;
|
|
3011
|
+
}
|
|
3012
|
+
|
|
2739
3013
|
if ( typeof(routing[name]['param']) == 'undefined' ) {
|
|
2740
3014
|
break;
|
|
2741
3015
|
}
|
|
2742
3016
|
|
|
2743
|
-
//
|
|
3017
|
+
// Updating hostname
|
|
2744
3018
|
// if (
|
|
2745
3019
|
// typeof(routing[name].hostname) == 'undefined' && !/^redirect$/.test(routing[name].param.control)
|
|
2746
3020
|
// || !routing[name].hostname && !/^redirect$/.test(routing[name].param.control)
|
|
@@ -2755,7 +3029,7 @@ function Server(options) {
|
|
|
2755
3029
|
// }
|
|
2756
3030
|
|
|
2757
3031
|
if (routing[name].bundle != bundle) continue;
|
|
2758
|
-
//
|
|
3032
|
+
// Method filter
|
|
2759
3033
|
method = routing[name].method;
|
|
2760
3034
|
if ( /\,/.test( method ) && reMethod.test(method) ) {
|
|
2761
3035
|
method = req.method
|
|
@@ -2764,10 +3038,12 @@ function Server(options) {
|
|
|
2764
3038
|
// Preparing params to relay to the router.
|
|
2765
3039
|
params = {
|
|
2766
3040
|
method : method,
|
|
3041
|
+
control : routing[name].param.control,
|
|
2767
3042
|
requirements : routing[name].requirements,
|
|
2768
3043
|
namespace : routing[name].namespace || undefined,
|
|
2769
3044
|
url : decodeURI(pathname), /// avoid %20
|
|
2770
3045
|
rule : routing[name].originalRule || name,
|
|
3046
|
+
cache : routing[name].cache || null,
|
|
2771
3047
|
// We clone because we are going to modify it while comparing urls
|
|
2772
3048
|
param : JSON.clone(routing[name].param),
|
|
2773
3049
|
// We clone because we are going to modify it while routing (.splice(..))
|
|
@@ -2777,7 +3053,7 @@ function Server(options) {
|
|
|
2777
3053
|
isWithCredentials : req.isWithCredentials
|
|
2778
3054
|
};
|
|
2779
3055
|
|
|
2780
|
-
//Parsing for the right url.
|
|
3056
|
+
// Parsing for the right url.
|
|
2781
3057
|
try {
|
|
2782
3058
|
isRoute = await routingLib.compareUrls(params, routing[name].url, req, res, next);
|
|
2783
3059
|
} catch (err) {
|
|
@@ -2793,7 +3069,7 @@ function Server(options) {
|
|
|
2793
3069
|
|
|
2794
3070
|
_routing = req.routing;
|
|
2795
3071
|
|
|
2796
|
-
//
|
|
3072
|
+
// Comparing routing method VS request.url method
|
|
2797
3073
|
isMethodAllowed = reMethod.test(_routing.method);
|
|
2798
3074
|
if (!isMethodAllowed) {
|
|
2799
3075
|
// Exception - Method override
|
|
@@ -2807,7 +3083,7 @@ function Server(options) {
|
|
|
2807
3083
|
}
|
|
2808
3084
|
}
|
|
2809
3085
|
|
|
2810
|
-
//
|
|
3086
|
+
// Handling GET method exception - if no param found
|
|
2811
3087
|
var methods = ['get', 'delete'], method = req.method.toLowerCase();
|
|
2812
3088
|
var p = null;
|
|
2813
3089
|
if (
|
|
@@ -2845,13 +3121,14 @@ function Server(options) {
|
|
|
2845
3121
|
// onRouting Event ???
|
|
2846
3122
|
if (isRoute.past) {
|
|
2847
3123
|
matched = true;
|
|
3124
|
+
// Caching route
|
|
3125
|
+
routingLib.cache(req.method +':'+ pathname, name, routing[name], params, req[method]);
|
|
2848
3126
|
isRoute = {};
|
|
2849
3127
|
|
|
2850
3128
|
break;
|
|
2851
3129
|
}
|
|
2852
|
-
|
|
2853
3130
|
}
|
|
2854
|
-
}
|
|
3131
|
+
} // EO for (let name in routing) {
|
|
2855
3132
|
|
|
2856
3133
|
|
|
2857
3134
|
|
|
@@ -2961,11 +3238,11 @@ function Server(options) {
|
|
|
2961
3238
|
, ext = null
|
|
2962
3239
|
, isHtmlContent = false
|
|
2963
3240
|
, hasCustomErrorFile = false
|
|
2964
|
-
, eCode = code.toString().
|
|
3241
|
+
, eCode = code.toString().substring(0,1) + 'xx'
|
|
2965
3242
|
;
|
|
2966
|
-
var extArr = url.
|
|
3243
|
+
var extArr = url.substring(url.lastIndexOf('.')).match(/(\.[A-Za-z0-9]+)/);
|
|
2967
3244
|
if (extArr) {
|
|
2968
|
-
ext = extArr[0].
|
|
3245
|
+
ext = extArr[0].substring(1);
|
|
2969
3246
|
}
|
|
2970
3247
|
if ( !ext || /^(html|htm)$/i.test(ext) ) {
|
|
2971
3248
|
isHtmlContent = true;
|