gina 0.1.1-alpha.98 → 0.1.2-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README-4Contributors.md +30 -0
- package/README.md +125 -39
- package/bin/cli +130 -41
- package/bin/cli-debug +46 -15
- package/bin/cmd +63 -41
- package/bin/gina +57 -49
- package/framework/{v0.1.1-alpha.98/lib/inherits → v0.1.2-alpha.1}/LICENSE +1 -1
- package/framework/v0.1.2-alpha.1/VERSION +1 -0
- package/framework/{v0.1.1-alpha.98/core/asset/js/plugin/readme.md → v0.1.2-alpha.1/core/asset/plugin/README.md} +34 -12
- package/framework/v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/css/gina.min.css +1 -0
- package/framework/v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/css/gina.min.css.map +1 -0
- package/framework/v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/html/toolbar.html +251 -0
- package/framework/{v0.1.1-alpha.98/core/asset/js/plugin/dist → v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/js}/gina.js +4588 -3416
- package/framework/v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js +765 -0
- package/framework/v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.map +8 -0
- package/framework/v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +7 -0
- package/framework/v0.1.2-alpha.1/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.map +8 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/config.js +315 -131
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/connectors/couchbase/index.js +460 -274
- package/framework/v0.1.2-alpha.1/core/connectors/couchbase/lib/connector.js +22 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/connectors/couchbase/lib/connector.v2.js +51 -51
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/connectors/couchbase/lib/connector.v3.js +51 -51
- package/framework/v0.1.2-alpha.1/core/connectors/couchbase/lib/connector.v4.js +384 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/connectors/couchbase/lib/n1ql.js +3 -2
- package/framework/v0.1.2-alpha.1/core/connectors/couchbase/lib/session-store.js +22 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/connectors/couchbase/lib/session-store.v3.js +12 -12
- package/framework/v0.1.2-alpha.1/core/connectors/couchbase/lib/session-store.v4.js +361 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/controller/controller.js +1351 -902
- package/framework/v0.1.2-alpha.1/core/controller/index.js +23 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/dev/index.js +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/dev/lib/class.js +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/dev/lib/factory.js +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/gna.js +48 -24
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/README.md +5 -0
- package/framework/v0.1.2-alpha.1/core/locales/dist/region/en.json +5727 -0
- package/framework/v0.1.2-alpha.1/core/locales/dist/region/fr.json +11452 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/index.js +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/src/make.js +39 -41
- package/framework/v0.1.2-alpha.1/core/locales/src/resources/region.mapping.json +43 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/model/entity.js +87 -67
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/model/index.js +16 -16
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/model/template/entityFactory.js +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/model/template/index.js +17 -15
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/index.js +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/file/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/intl/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/intl/src/main.js +5 -5
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/storage/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/storage/src/main.js +6 -5
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/validator/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/validator/src/form-validator.js +404 -300
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/validator/src/main.js +1384 -1314
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/router.js +221 -122
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/server.express.js +69 -65
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/server.isaac.js +274 -180
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/server.js +710 -615
- package/framework/v0.1.2-alpha.1/core/template/boilerplate/bundle/config/settings.json +12 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle/config/settings.server.json +4 -4
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle/config/templates.json +4 -4
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle/controllers/controller.content.js +1 -1
- package/framework/v0.1.2-alpha.1/core/template/boilerplate/bundle/controllers/setup.js +111 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle/index.js +13 -1
- package/framework/v0.1.2-alpha.1/core/template/boilerplate/bundle_templates/html/content/homepage.html +8 -0
- package/framework/v0.1.2-alpha.1/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +11 -0
- package/framework/v0.1.2-alpha.1/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +8 -0
- package/framework/{v0.1.1-alpha.98/core/template/boilerplate/bundle_templates/html/layout → v0.1.2-alpha.1/core/template/boilerplate/bundle_templates/html/layouts}/main.html +10 -3
- package/framework/v0.1.2-alpha.1/core/template/command/gina.bat.tpl +8 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/command/gina.tpl +4 -4
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/conf/env.json +12 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/conf/manifest.json +2 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/conf/package.json +2 -2
- package/framework/v0.1.2-alpha.1/core/template/conf/statics.json +12 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/conf/templates.json +9 -9
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/console.js +3 -3
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/context.js +233 -75
- package/framework/v0.1.2-alpha.1/helpers/data/LICENSE +9 -0
- package/framework/v0.1.2-alpha.1/helpers/data/README.md +12 -0
- package/framework/v0.1.2-alpha.1/helpers/data/package.json +20 -0
- package/framework/v0.1.2-alpha.1/helpers/data/src/main.js +295 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/dateFormat.js +9 -7
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/index.js +13 -8
- package/framework/v0.1.2-alpha.1/helpers/json/LICENSE +9 -0
- package/framework/v0.1.2-alpha.1/helpers/json/README.md +12 -0
- package/framework/{v0.1.1-alpha.98/helpers/plugins → v0.1.2-alpha.1/helpers/json}/package.json +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/json/src/main.js +33 -28
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/path.js +97 -22
- package/framework/{v0.1.1-alpha.98/helpers/json → v0.1.2-alpha.1/helpers/plugins}/package.json +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/plugins/src/api-error.js +23 -23
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/plugins/src/main.js +3 -3
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/prototypes.js +46 -38
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/text.js +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/archiver/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/archiver/src/dep/jszip.min.js +3 -3
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/archiver/src/main.js +183 -168
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/aliases.json +4 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/add.js +84 -28
- package/framework/v0.1.2-alpha.1/lib/cmd/bundle/arguments.json +8 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/help.txt +4 -2
- package/framework/v0.1.2-alpha.1/lib/cmd/bundle/list.js +175 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/remove.js +39 -27
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/restart.js +14 -8
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/start.js +283 -49
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/stop.js +93 -74
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/add.js +87 -49
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/list.js +26 -4
- package/framework/{v0.1.1-alpha.98/lib/cmd/scope → v0.1.2-alpha.1/lib/cmd/env}/remove.js +29 -24
- package/framework/v0.1.2-alpha.1/lib/cmd/env/use.js +106 -0
- package/framework/v0.1.2-alpha.1/lib/cmd/framework/build.js +93 -0
- package/framework/v0.1.2-alpha.1/lib/cmd/framework/init.js +932 -0
- package/framework/v0.1.2-alpha.1/lib/cmd/framework/link-node-modules.js +123 -0
- package/framework/v0.1.2-alpha.1/lib/cmd/framework/link.js +132 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/open.js +25 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/restart.js +78 -26
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/set.js +120 -40
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/start.js +49 -20
- package/framework/v0.1.2-alpha.1/lib/cmd/framework/status.js +144 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/stop.js +64 -31
- package/framework/v0.1.2-alpha.1/lib/cmd/framework/tail.js +303 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/version.js +19 -4
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/helper.js +357 -53
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/index.js +23 -23
- package/framework/v0.1.2-alpha.1/lib/cmd/port/inc/scan.js +142 -0
- package/framework/v0.1.2-alpha.1/lib/cmd/port/list.js +464 -0
- package/framework/v0.1.2-alpha.1/lib/cmd/port/reset.js +417 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/add.js +344 -157
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/arguments.json +2 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/build.js +28 -28
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/help.txt +7 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/list.js +22 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/remove.js +19 -17
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/rename.js +11 -11
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/protocol/set.js +260 -211
- package/framework/v0.1.2-alpha.1/lib/cmd/scope/add.js +129 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/scope/help.txt +4 -4
- package/framework/{v0.1.1-alpha.98/lib/cmd/env/use.js → v0.1.2-alpha.1/lib/cmd/scope/link-production.js} +22 -21
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/scope/list.js +34 -11
- package/framework/v0.1.2-alpha.1/lib/cmd/scope/remove.js +122 -0
- package/framework/v0.1.2-alpha.1/lib/cmd/scope/use.js +68 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/view/add.js +35 -10
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/collection/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/collection/src/main.js +247 -244
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/config.js +33 -31
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cron/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cron/src/main.js +16 -11
- package/framework/v0.1.2-alpha.1/lib/domain/LICENSE +9 -0
- package/framework/v0.1.2-alpha.1/lib/domain/README.md +46 -0
- package/framework/v0.1.2-alpha.1/lib/domain/dist/public_suffix_list.dat +14186 -0
- package/framework/v0.1.2-alpha.1/lib/domain/package.json +20 -0
- package/framework/v0.1.2-alpha.1/lib/domain/src/main.js +442 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/generator/index.js +5 -5
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/index.js +3 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1/lib/inherits}/LICENSE +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/inherits/README.md +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/inherits/package.json +3 -4
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/inherits/src/main.js +3 -3
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/package.json +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/containers/default/index.js +15 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/containers/file/index.js +109 -14
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/containers/mq/index.js +12 -3
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/containers/mq/listener.js +29 -21
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/containers/mq/speaker.js +33 -4
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/helper.js +22 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/main.js +36 -9
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/math/index.js +9 -9
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/merge/README.md +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/merge/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/merge/src/main.js +118 -91
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/model.js +10 -10
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/proc.js +92 -49
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/routing/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/routing/src/main.js +377 -420
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/session-store.js +13 -7
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/shell.js +3 -3
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/swig-filters/package.json +1 -1
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/swig-filters/src/main.js +140 -119
- package/framework/v0.1.2-alpha.1/lib/url/README.md +0 -0
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/validator.js +2 -2
- package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/package.json +1 -1
- package/package.json +10 -10
- package/resources/home/main.json +39 -5
- package/resources/home/settings.json +8 -0
- package/resources/package.json.template +1 -1
- package/script/lib.js +0 -0
- package/script/post_install.js +180 -90
- package/script/pre_install.js +97 -13
- package/services/.gna/67fdf1b224a2ed5597e63d4b64283834468e05e3.txt +0 -0
- package/services/.gna/arch +1 -0
- package/services/.gna/locals.json +14 -0
- package/services/.gna/platform +1 -0
- package/services/configure +6 -0
- package/services/env.json +18 -0
- package/services/manifest.json +30 -0
- package/services/package.json +11 -0
- package/services/src/proxy/config/app.json +6 -0
- package/services/src/proxy/config/routing.json +11 -0
- package/services/src/proxy/config/settings.json +9 -0
- package/services/src/proxy/config/settings.server.json +31 -0
- package/services/src/proxy/config/statics.json +3 -0
- package/services/src/proxy/controllers/controller.content.js +58 -0
- package/services/src/proxy/controllers/controller.js +30 -0
- package/{framework/v0.1.1-alpha.98/core/template/boilerplate/bundle → services/src/proxy}/controllers/setup.js +14 -14
- package/services/src/proxy/index.js +31 -0
- package/services/src/proxy/lib/domain/README.md +48 -0
- package/services/src/proxy/lib/domain/src/config/public_suffix_list.dat +14186 -0
- package/services/src/toolbar/config/app.json +6 -0
- package/services/src/toolbar/config/routing.json +11 -0
- package/{framework/v0.1.1-alpha.98/core/template/boilerplate/bundle → services/src/toolbar}/config/settings.json +0 -0
- package/services/src/toolbar/config/settings.server.json +30 -0
- package/services/src/toolbar/controllers/controller.content.js +39 -0
- package/services/src/toolbar/controllers/controller.js +30 -0
- package/services/src/toolbar/controllers/setup.js +111 -0
- package/services/src/toolbar/index.js +43 -0
- package/utils/helper.js +25 -156
- package/utils/prototypes.js +9 -9
- package/utils/prototypes.json_clone.js +70 -37
- package/framework/v0.1.1-alpha.98/VERSION +0 -1
- package/framework/v0.1.1-alpha.98/core/asset/js/plugin/dist/gina.js.map +0 -56
- package/framework/v0.1.1-alpha.98/core/asset/js/plugin/dist/gina.min.css +0 -1
- package/framework/v0.1.1-alpha.98/core/asset/js/plugin/dist/gina.min.css.map +0 -1
- package/framework/v0.1.1-alpha.98/core/asset/js/plugin/dist/gina.min.js +0 -736
- package/framework/v0.1.1-alpha.98/core/asset/js/plugin/dist/gina.min.js.map +0 -56
- package/framework/v0.1.1-alpha.98/core/asset/js/plugin/dist/gina.onload.min.js +0 -5
- package/framework/v0.1.1-alpha.98/core/asset/js/plugin/dist/gina.onload.min.js.map +0 -8
- package/framework/v0.1.1-alpha.98/core/connectors/couchbase/lib/connector.js +0 -20
- package/framework/v0.1.1-alpha.98/core/connectors/couchbase/lib/session-store.js +0 -21
- package/framework/v0.1.1-alpha.98/core/controller/index.js +0 -27
- package/framework/v0.1.1-alpha.98/core/locales/dist/region/en.json +0 -9492
- package/framework/v0.1.1-alpha.98/core/locales/dist/region/fr.json +0 -9492
- package/framework/v0.1.1-alpha.98/core/locales/src/resources/region.mapping.json +0 -28
- package/framework/v0.1.1-alpha.98/core/template/boilerplate/bundle_templates/html/homepage.html +0 -4
- package/framework/v0.1.1-alpha.98/core/template/conf/statics.json +0 -10
- package/framework/v0.1.1-alpha.98/lib/cmd/bundle/arguments.json +0 -4
- package/framework/v0.1.1-alpha.98/lib/cmd/bundle/list.js +0 -129
- package/framework/v0.1.1-alpha.98/lib/cmd/env/remove.js +0 -150
- package/framework/v0.1.1-alpha.98/lib/cmd/framework/init.js +0 -541
- package/framework/v0.1.1-alpha.98/lib/cmd/framework/status.js +0 -72
- package/framework/v0.1.1-alpha.98/lib/cmd/framework/tail.js +0 -184
- package/framework/v0.1.1-alpha.98/lib/cmd/port/inc/scan.js +0 -108
- package/framework/v0.1.1-alpha.98/lib/cmd/port/list.js +0 -176
- package/framework/v0.1.1-alpha.98/lib/cmd/scope/set.js +0 -57
- package/framework/v0.1.1-alpha.98/lib/cmd/scope/unset.js +0 -44
- package/framework/v0.1.1-alpha.98/lib/cmd/scope/use.js +0 -79
- package/script/post_publish.js +0 -185
- package/script/prepare_version.js +0 -552
- /package/{framework/v0.1.1-alpha.98/core/template/command/gina.bat.tpl → bin/gina.bat} +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/AUTHORS +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/html/nolayout.html +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/html/static.html +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/img/android-chrome-192x192.png +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/img/android-chrome-512x512.png +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/img/apple-touch-icon.png +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/img/favicon-16x16.png +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/img/favicon-32x32.png +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/asset/img/favicon.ico +0 -0
- /package/framework/{v0.1.1-alpha.98/core/asset/js → v0.1.2-alpha.1/core/asset}/plugin/uuid.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/connectors/couchbase/lib/session-store.v2.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/controller/controller.framework.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/.travis.yml +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/LICENSE +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/deps/encoding/encoding-indexes.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/deps/encoding/encoding.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/lib/main.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/lib/types/multipart.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/lib/types/urlencoded.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/lib/utils.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/busboy/package.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/deps/swig-client/swig-2.0.0.min.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/dev/lib/tools.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/currency.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/dist/language/en.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/dist/language/fr.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/src/resources/currency.csv +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/locales/src/resources/region.csv +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/mime.types +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/file/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/file/build.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/intl/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/intl/build.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/storage/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/storage/build.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/validator/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/plugins/lib/validator/build.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/status.codes +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle/config/app.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/conf/settings.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/error/client/json/401.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/error/client/json/403.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/error/client/json/404.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/error/server/html/50x.html +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/error/server/json/500.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/error/server/json/503.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/core/template/extensions/logger/config.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/plugins/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/helpers/task.js +0 -0
- /package/framework/{v0.1.1-alpha.98/helpers/json → v0.1.2-alpha.1/lib/archiver}/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/archiver/build.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/copy.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/cp.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/help.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/rename.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/rm.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/bundle/status.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/get.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/help.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/help.txt +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/link-dev.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/rm.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/set.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/env/unset.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/dot.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/get.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/help.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/help.txt +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/msg.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/framework/update.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/gina-dev.1.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/gina-framework.1.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/gina.1.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/msg.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/port/help.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/port/help.txt +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/port/set.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/help.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/import.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/move.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/restart.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/rm.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/start.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/status.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/project/stop.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/protocol/help.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/protocol/help.txt +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/protocol/list.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/scope/help.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/scope/link-local.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cmd/scope/rm.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/collection/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/collection/build.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/cron/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98/lib/archiver/README.md → v0.1.2-alpha.1/lib/domain/exemples/backend.js} +0 -0
- /package/framework/{v0.1.1-alpha.98/lib/routing/README.md → v0.1.2-alpha.1/lib/domain/exemples/frontend.html} +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/inherits/example/inheriting_eventemitter.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/inherits/example/protected_inheritance.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/inherits/example/simple_inheritance.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/inherits/example/super_attribute_overridden_by_child_on_init.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/merge/example/merge.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/merge/example/merge_2_literal objects.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/merge/example/merge_and_preserve_first.js +0 -0
- /package/framework/{v0.1.1-alpha.98/lib/swig-filters → v0.1.2-alpha.1/lib/routing}/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/routing/build.json +0 -0
- /package/framework/{v0.1.1-alpha.98/lib/url → v0.1.2-alpha.1/lib/swig-filters}/README.md +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/url/index.js +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/url/mocks.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/url/routing.json +0 -0
- /package/framework/{v0.1.1-alpha.98 → v0.1.2-alpha.1}/lib/url/test.js +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* This file is part of the gina package.
|
|
3
|
-
* Copyright (c) 2009-
|
|
3
|
+
* Copyright (c) 2009-2023 Rhinostone <contact@gina.io>
|
|
4
4
|
*
|
|
5
5
|
* For the full copyright and license information, please view the LICENSE
|
|
6
6
|
* file that was distributed with this source code.
|
|
@@ -21,12 +21,18 @@ function Routing() {
|
|
|
21
21
|
allowedMethods: ['get', 'post', 'put', 'delete'],
|
|
22
22
|
reservedParams: ['controle', 'file','title', 'namespace', 'path'],
|
|
23
23
|
notFound: {}
|
|
24
|
-
};
|
|
25
|
-
|
|
24
|
+
};
|
|
25
|
+
|
|
26
26
|
self.allowedMethodsString = self.allowedMethods.join(',');
|
|
27
|
-
|
|
28
|
-
// loading
|
|
29
|
-
var plugins
|
|
27
|
+
|
|
28
|
+
// loading lib & plugins
|
|
29
|
+
var plugins = null
|
|
30
|
+
, inherits = null
|
|
31
|
+
, merge = null
|
|
32
|
+
, Validator = null
|
|
33
|
+
, fs = null
|
|
34
|
+
, promisify = null
|
|
35
|
+
;
|
|
30
36
|
if (!isGFFCtx) {
|
|
31
37
|
fs = require('fs');
|
|
32
38
|
promisify = require('util').promisify;
|
|
@@ -34,26 +40,26 @@ function Routing() {
|
|
|
34
40
|
merge = require('../../merge');
|
|
35
41
|
plugins = require(__dirname+'/../../../core/plugins') || getContext('gina').plugins;
|
|
36
42
|
Validator = plugins.Validator;
|
|
37
|
-
|
|
38
|
-
}
|
|
43
|
+
|
|
44
|
+
}
|
|
39
45
|
// BO - In case of partial rendering whithout handler defined for the partial
|
|
40
46
|
else {
|
|
41
47
|
if ( !merge || typeof(merge) != 'function' ) {
|
|
42
|
-
|
|
48
|
+
merge = require('lib/merge');
|
|
43
49
|
}
|
|
44
|
-
if ( !Validator ||
|
|
45
|
-
|
|
50
|
+
if ( !Validator || typeof(Validator) != 'function' ) {
|
|
51
|
+
Validator = require('lib/form-validator');
|
|
46
52
|
}
|
|
47
|
-
}
|
|
53
|
+
}
|
|
48
54
|
// EO - In case of partial rendering whithout handler defined for the partial
|
|
49
|
-
|
|
55
|
+
|
|
50
56
|
/**
|
|
51
57
|
* Get url props
|
|
52
58
|
* Used to retrieve additional properties for routes with redirect flag for example
|
|
53
|
-
*
|
|
59
|
+
*
|
|
54
60
|
* @param {string} [bundle]
|
|
55
|
-
* @param {string} [env]
|
|
56
|
-
*
|
|
61
|
+
* @param {string} [env]
|
|
62
|
+
*
|
|
57
63
|
* @returns {object} urlProps - { .host, .hostname, .webroot }
|
|
58
64
|
*/
|
|
59
65
|
self.getUrlProps = function(bundle, env) {
|
|
@@ -69,7 +75,7 @@ function Routing() {
|
|
|
69
75
|
urlProps.hostname = _route.hostname;
|
|
70
76
|
urlProps.host = _route.host;
|
|
71
77
|
urlProps.webroot = _route.webroot;
|
|
72
|
-
}
|
|
78
|
+
}
|
|
73
79
|
} else {
|
|
74
80
|
config = getContext('gina').config;
|
|
75
81
|
if ( typeof(getContext('argvFilename')) != 'undefined' ) {
|
|
@@ -81,47 +87,47 @@ function Routing() {
|
|
|
81
87
|
if ( typeof(env) == 'undefined' ) {
|
|
82
88
|
env = config.env;
|
|
83
89
|
}
|
|
84
|
-
|
|
90
|
+
|
|
85
91
|
urlProps.hostname = config.envConf[bundle][env].hostname;
|
|
86
92
|
urlProps.host = config.envConf[bundle][env].host;
|
|
87
93
|
urlProps.webroot = config.envConf[bundle][env].server.webroot;
|
|
88
94
|
}
|
|
89
|
-
|
|
95
|
+
|
|
90
96
|
return urlProps;
|
|
91
97
|
}
|
|
92
|
-
|
|
98
|
+
|
|
93
99
|
/**
|
|
94
100
|
* Load bundle routing configuration
|
|
95
|
-
*
|
|
101
|
+
*
|
|
96
102
|
* @param {object} options
|
|
97
103
|
* {
|
|
98
104
|
* isStadalone: false,
|
|
99
105
|
* bundle: 'default', // bundle's name
|
|
100
106
|
* wroot: '/', // by default
|
|
101
|
-
*
|
|
107
|
+
*
|
|
102
108
|
* }
|
|
103
|
-
*
|
|
109
|
+
*
|
|
104
110
|
*/
|
|
105
111
|
// self.loadBundleRoutingConfiguration = function(options, filename) {
|
|
106
|
-
|
|
112
|
+
|
|
107
113
|
// }
|
|
108
|
-
|
|
114
|
+
|
|
109
115
|
/**
|
|
110
116
|
* Get routing
|
|
111
|
-
*
|
|
117
|
+
*
|
|
112
118
|
* @param {string} [bundle]
|
|
113
119
|
*/
|
|
114
120
|
// self.getRouting = function(bundle) {
|
|
115
|
-
|
|
121
|
+
|
|
116
122
|
// }
|
|
117
|
-
|
|
123
|
+
|
|
118
124
|
/**
|
|
119
125
|
* Get reversed routing
|
|
120
|
-
*
|
|
126
|
+
*
|
|
121
127
|
* @param {string} [bundle]
|
|
122
128
|
*/
|
|
123
129
|
// self.getReverseRouting = function(bundle) {
|
|
124
|
-
|
|
130
|
+
|
|
125
131
|
// }
|
|
126
132
|
|
|
127
133
|
/**
|
|
@@ -136,7 +142,7 @@ function Routing() {
|
|
|
136
142
|
* @returns {object|false} foundRoute
|
|
137
143
|
* */
|
|
138
144
|
self.compareUrls = async function(params, url, request, response, next) {
|
|
139
|
-
|
|
145
|
+
|
|
140
146
|
if ( typeof(request) == 'undefined' ) {
|
|
141
147
|
request = { routing: {} };
|
|
142
148
|
}
|
|
@@ -159,10 +165,14 @@ function Routing() {
|
|
|
159
165
|
++i;
|
|
160
166
|
}
|
|
161
167
|
|
|
168
|
+
i = null;
|
|
169
|
+
urls = null;
|
|
170
|
+
len = null;
|
|
171
|
+
|
|
162
172
|
return foundRoute;
|
|
163
|
-
} else {
|
|
164
|
-
return await parseRouting(params, url, request, response, next);
|
|
165
173
|
}
|
|
174
|
+
|
|
175
|
+
return await parseRouting(params, url, request, response, next);
|
|
166
176
|
};
|
|
167
177
|
|
|
168
178
|
/**
|
|
@@ -174,7 +184,7 @@ function Routing() {
|
|
|
174
184
|
* @private
|
|
175
185
|
* */
|
|
176
186
|
var hasParams = function(pathname) {
|
|
177
|
-
return (
|
|
187
|
+
return (/\:/.test(pathname)) ? true : false;
|
|
178
188
|
};
|
|
179
189
|
|
|
180
190
|
/**
|
|
@@ -190,13 +200,21 @@ function Routing() {
|
|
|
190
200
|
*
|
|
191
201
|
* */
|
|
192
202
|
var parseRouting = async function(params, url, request, response, next) {
|
|
193
|
-
|
|
203
|
+
|
|
194
204
|
// Sample debug break for specific rule
|
|
195
205
|
// if ( params.rule == 'my-specific-rule@bundle' ) {
|
|
196
206
|
// console.debug('passed '+ params.rule);
|
|
197
207
|
// }
|
|
198
|
-
|
|
199
|
-
var
|
|
208
|
+
|
|
209
|
+
var paramUrlSplit = null;
|
|
210
|
+
try {
|
|
211
|
+
paramUrlSplit = params.url.split(/\//);
|
|
212
|
+
} catch (paramUrlSplitErr) {
|
|
213
|
+
console.warn(paramUrlSplitErr);
|
|
214
|
+
paramUrlSplit = ['']
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
var uRe = paramUrlSplit
|
|
200
218
|
, uRo = url.split(/\//)
|
|
201
219
|
, uReCount = 0
|
|
202
220
|
, uRoCount = 0
|
|
@@ -206,119 +224,16 @@ function Routing() {
|
|
|
206
224
|
, i = 0
|
|
207
225
|
, method = request.method.toLowerCase()
|
|
208
226
|
;
|
|
209
|
-
|
|
210
|
-
//
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
// var requiremements = Object.getOwnPropertyNames(params.requirements);
|
|
219
|
-
// var r = 0;
|
|
220
|
-
// // In order to filter variables
|
|
221
|
-
// var uRoVars = uRo.join(',').match(/\:[-_a-z0-9]+/g);
|
|
222
|
-
// // var uRoVarCount = (uRoVars) ? uRoVars.length : 0;
|
|
223
|
-
// while ( r < requiremements.length ) {
|
|
224
|
-
|
|
225
|
-
// // if not listed, but still needing validation
|
|
226
|
-
// if (
|
|
227
|
-
// typeof(params.param[ requiremements[r] ]) == 'undefined'
|
|
228
|
-
// && /^validator\:\:/i.test(params.requirements[ requiremements[r] ])
|
|
229
|
-
// && typeof(request[method][ requiremements[r] ])
|
|
230
|
-
// ) {
|
|
231
|
-
// if (uRo.length != uRe.length) {
|
|
232
|
-
// // r++;
|
|
233
|
-
// // continue;
|
|
234
|
-
// break;
|
|
235
|
-
// }
|
|
236
|
-
// // updating uRoVars
|
|
237
|
-
// uRoVars = uRo.join(',').match(/\:[-_a-z0-9]+/g);
|
|
238
|
-
// /**
|
|
239
|
-
// * "requirements" : {
|
|
240
|
-
// * "email": "validator::{ isEmail: true, isString: [7] }"
|
|
241
|
-
// * }
|
|
242
|
-
// *
|
|
243
|
-
// * e.g.: result = new Validator('routing', _data, null, {email: {isEmail: true, subject: \"Anything\"}} ).isEmail().valid;
|
|
244
|
-
// */
|
|
245
|
-
// let regex = params.requirements[ requiremements[r] ];
|
|
246
|
-
// let _data = {}, _ruleObj = {}, _rule = {};
|
|
247
|
-
|
|
248
|
-
// try {
|
|
249
|
-
// _ruleObj = JSON.parse(
|
|
250
|
-
// regex.split(/::/).splice(1)[0]
|
|
251
|
-
// .replace(/([^\:\"\s+](\w+))\:/g, '"$1":') // { query: { validIf: true }} => { "query": { "validIf": true }}
|
|
252
|
-
// .replace(/([^\:\"\s+](\w+))\s+\:/g, '"$1":') // note the space between `validIf` & `:` { query: { validIf : true }} => { "query": { "validIf": true }}
|
|
253
|
-
// );
|
|
254
|
-
// } catch (err) {
|
|
255
|
-
// throw err;
|
|
256
|
-
// }
|
|
257
|
-
|
|
258
|
-
// let key = requiremements[r];
|
|
259
|
-
// // validator.query case
|
|
260
|
-
// if (typeof(_ruleObj.query) != 'undefined' && typeof(_ruleObj.query.data) != 'undefined') {
|
|
261
|
-
// _data = _ruleObj.query.data;
|
|
262
|
-
// // filter _data vs uRoVars by removing from data those not present in uRoVars
|
|
263
|
-
// for (let k in _data) {
|
|
264
|
-
// if ( uRoVars.indexOf(_data[k]) < 0 ) {
|
|
265
|
-
// delete _data[k]
|
|
266
|
-
// }
|
|
267
|
-
// }
|
|
268
|
-
// for (let p = 0, pLen = uRo.length; p < pLen; p++) {
|
|
269
|
-
// // :variable only
|
|
270
|
-
// if (!/^\:/.test(uRo[p])) continue;
|
|
271
|
-
|
|
272
|
-
// let pName = uRo[p].replace(/^\:/, '');
|
|
273
|
-
// if ( pName != '' && typeof(uRe[p]) != 'undefined' ) {
|
|
274
|
-
// _data[ pName ] = uRe[p];
|
|
275
|
-
// // Updating params
|
|
276
|
-
// if ( typeof(request.params[pName]) == 'undefined' ) {
|
|
277
|
-
// // Set in case it is not found
|
|
278
|
-
// request.params[pName] = uRe[p];
|
|
279
|
-
// }
|
|
280
|
-
// }
|
|
281
|
-
// }
|
|
282
|
-
// }
|
|
283
|
-
// // normal case
|
|
284
|
-
// _data = merge(_data, request[method]);
|
|
285
|
-
|
|
286
|
-
// if ( typeof(_data[key]) == 'undefined' ) {
|
|
287
|
-
// // init default value for unlisted variable/param
|
|
288
|
-
// _data[key] = null;
|
|
289
|
-
// }
|
|
290
|
-
|
|
291
|
-
// _rule[key] = _ruleObj;
|
|
292
|
-
// _validator = new Validator('routing', _data, null, _rule );
|
|
293
|
-
|
|
294
|
-
// if (_ruleObj.count() == 0 ) {
|
|
295
|
-
// console.error('Route validation failed '+ params.rule);
|
|
296
|
-
// return false;
|
|
297
|
-
// }
|
|
298
|
-
|
|
299
|
-
// for (let rule in _ruleObj) {
|
|
300
|
-
// let _result = null;
|
|
301
|
-
// if (Array.isArray(_ruleObj[rule])) { // has args
|
|
302
|
-
// _result = await _validator[key][rule].apply(_validator[key], _ruleObj[rule]);
|
|
303
|
-
// } else {
|
|
304
|
-
// _result = await _validator[key][rule](_ruleObj[rule], request, response, next);
|
|
305
|
-
// }
|
|
306
|
-
// //let condition = _ruleObj[rule].validIf.replace(new RegExp('\\$isValid'), _result.isValid);
|
|
307
|
-
// // if ( eval(condition)) {
|
|
308
|
-
// if ( !_result.isValid ) {
|
|
309
|
-
// --score;
|
|
310
|
-
// }
|
|
311
|
-
// }
|
|
312
|
-
// }
|
|
313
|
-
// r++
|
|
314
|
-
// }
|
|
315
|
-
// }
|
|
316
|
-
|
|
317
|
-
// attaching routing description for this request
|
|
318
|
-
var paramMethod = params.method.toLowerCase();
|
|
319
|
-
|
|
227
|
+
|
|
228
|
+
// Attaching routing description for this request
|
|
229
|
+
var paramMethod = 'get'; // by default
|
|
230
|
+
try {
|
|
231
|
+
paramMethod = params.method.toLowerCase();
|
|
232
|
+
} catch(methodErr) {}
|
|
233
|
+
|
|
234
|
+
|
|
320
235
|
var hasAlreadyBeenScored = false;
|
|
321
|
-
if (
|
|
236
|
+
if (
|
|
322
237
|
typeof(params.requirements) != 'undefined'
|
|
323
238
|
&& /get|delete/i.test(method)
|
|
324
239
|
&& typeof(request[method]) != 'undefined'
|
|
@@ -327,20 +242,20 @@ function Routing() {
|
|
|
327
242
|
typeof(params.requirements) != 'undefined'
|
|
328
243
|
&& /get/i.test(method)
|
|
329
244
|
&& /delete/i.test(paramMethod)
|
|
330
|
-
) {
|
|
245
|
+
) {
|
|
331
246
|
if ( /get/i.test(method) && /delete/i.test(paramMethod) ) {
|
|
332
247
|
method = paramMethod;
|
|
333
248
|
}
|
|
334
249
|
// `delete` methods don't have a body
|
|
335
250
|
// So, request.delete is {} by default
|
|
336
|
-
if ( /^(delete)$/i.test(method) && uRe.length === uRo.length ) {
|
|
251
|
+
if ( /^(delete)$/i.test(method) && uRe.length === uRo.length ) {
|
|
337
252
|
// just in case
|
|
338
253
|
if ( typeof(request[method]) == 'undefined' ) {
|
|
339
254
|
request[method] = {};
|
|
340
255
|
}
|
|
341
256
|
for (let p = 0, pLen = uRo.length; p < pLen; p++) {
|
|
342
|
-
if (uRe[p] === uRo[p]) {
|
|
343
|
-
++score;
|
|
257
|
+
if (uRe[p] === uRo[p]) {
|
|
258
|
+
++score;
|
|
344
259
|
continue;
|
|
345
260
|
}
|
|
346
261
|
let _key = uRo[p].substr(1);
|
|
@@ -355,61 +270,65 @@ function Routing() {
|
|
|
355
270
|
continue;
|
|
356
271
|
}
|
|
357
272
|
if (
|
|
358
|
-
/^:/.test(uRo[p])
|
|
273
|
+
/^:/.test(uRo[p])
|
|
359
274
|
&& typeof(condition) != 'undefined'
|
|
360
275
|
&& new RegExp(condition).test(uRe[p])
|
|
361
276
|
) {
|
|
362
|
-
++score;
|
|
363
|
-
request[method][uRo[p].substr(1)] = uRe[p];
|
|
277
|
+
++score;
|
|
278
|
+
request[method][uRo[p].substr(1)] = uRe[p];
|
|
364
279
|
}
|
|
365
280
|
}
|
|
366
|
-
hasAlreadyBeenScored = true;
|
|
367
|
-
}
|
|
368
|
-
|
|
281
|
+
hasAlreadyBeenScored = true;
|
|
282
|
+
}
|
|
283
|
+
|
|
369
284
|
// Sample debug break for specific rule
|
|
370
285
|
// if ( params.rule == 'my-specific-rule@bundle' ) {
|
|
371
286
|
// console.debug('passed '+ params.rule);
|
|
372
287
|
// }
|
|
373
288
|
for (let p in request[method]) {
|
|
374
289
|
if ( typeof(params.requirements[p]) != 'undefined' && uRo.indexOf(':' + p) < 0 ) {
|
|
375
|
-
uRo[uRoCount] = ':' + p;
|
|
290
|
+
uRo[uRoCount] = ':' + p;
|
|
376
291
|
++uRoCount;
|
|
377
|
-
|
|
292
|
+
|
|
378
293
|
uRe[uReCount] = request[method][p];
|
|
379
294
|
++uReCount;
|
|
380
|
-
if (!hasAlreadyBeenScored && uRe.length === uRo.length)
|
|
381
|
-
++maxLen;
|
|
295
|
+
if (!hasAlreadyBeenScored && uRe.length === uRo.length) {
|
|
296
|
+
++maxLen;
|
|
297
|
+
}
|
|
382
298
|
}
|
|
383
299
|
}
|
|
384
300
|
}
|
|
385
|
-
|
|
386
|
-
|
|
301
|
+
|
|
302
|
+
|
|
387
303
|
// Sample debug break for specific rule
|
|
388
304
|
// if ( params.rule == 'my-specific-rule@bundle' ) {
|
|
389
305
|
// console.debug('passed '+ params.rule);
|
|
390
306
|
// }
|
|
391
|
-
|
|
307
|
+
|
|
392
308
|
if (!hasAlreadyBeenScored && uRe.length === uRo.length) {
|
|
393
|
-
|
|
309
|
+
|
|
394
310
|
for (; i < maxLen; ++i) {
|
|
395
|
-
|
|
311
|
+
|
|
396
312
|
if (uRe[i] === uRo[i]) {
|
|
397
313
|
++score;
|
|
398
314
|
}
|
|
399
|
-
else if (
|
|
315
|
+
else if (
|
|
316
|
+
score == i && hasParams(uRo[i])
|
|
317
|
+
&& await fitsWithRequirements(uRo[i], uRe[i], params, request, response, next)
|
|
318
|
+
) {
|
|
400
319
|
++score;
|
|
401
320
|
}
|
|
402
321
|
}
|
|
403
322
|
}
|
|
404
|
-
|
|
323
|
+
|
|
405
324
|
// This test is done to catch `validator::` rules under requirements
|
|
406
|
-
if (
|
|
407
|
-
typeof(params.requirements) != 'undefined'
|
|
325
|
+
if (
|
|
326
|
+
typeof(params.requirements) != 'undefined'
|
|
408
327
|
&& method == params.method.toLowerCase()
|
|
409
328
|
&& !hasAlreadyBeenScored
|
|
410
329
|
&& score >= maxLen
|
|
411
330
|
) {
|
|
412
|
-
|
|
331
|
+
|
|
413
332
|
var requiremements = Object.getOwnPropertyNames(params.requirements);
|
|
414
333
|
var r = 0;
|
|
415
334
|
// In order to filter variables
|
|
@@ -419,12 +338,12 @@ function Routing() {
|
|
|
419
338
|
// requirement name as `key`
|
|
420
339
|
let key = requiremements[r];
|
|
421
340
|
// if not listed, but still needing validation
|
|
422
|
-
if (
|
|
423
|
-
typeof(params.param[ key ]) == 'undefined'
|
|
341
|
+
if (
|
|
342
|
+
typeof(params.param[ key ]) == 'undefined'
|
|
424
343
|
&& /^validator\:\:/i.test(params.requirements[ key ])
|
|
425
344
|
) {
|
|
426
345
|
if (uRo.length != uRe.length) {
|
|
427
|
-
// r++;
|
|
346
|
+
// r++;
|
|
428
347
|
// continue;
|
|
429
348
|
break;
|
|
430
349
|
}
|
|
@@ -434,22 +353,22 @@ function Routing() {
|
|
|
434
353
|
* "requirements" : {
|
|
435
354
|
* "email": "validator::{ isEmail: true, isString: [7] }"
|
|
436
355
|
* }
|
|
437
|
-
*
|
|
356
|
+
*
|
|
438
357
|
* e.g.: result = new Validator('routing', _data, null, {email: {isEmail: true, subject: \"Anything\"}} ).isEmail().valid;
|
|
439
|
-
*/
|
|
358
|
+
*/
|
|
440
359
|
let regex = params.requirements[ key ];
|
|
441
360
|
let _data = {}, _ruleObj = {}, _rule = {};
|
|
442
|
-
|
|
361
|
+
|
|
443
362
|
try {
|
|
444
363
|
_ruleObj = JSON.parse(
|
|
445
364
|
regex.split(/::/).splice(1)[0]
|
|
446
365
|
.replace(/([^\:\"\s+](\w+))\:/g, '"$1":') // { query: { validIf: true }} => { "query": { "validIf": true }}
|
|
447
366
|
.replace(/([^\:\"\s+](\w+))\s+\:/g, '"$1":') // note the space between `validIf` & `:` { query: { validIf : true }} => { "query": { "validIf": true }}
|
|
448
|
-
);
|
|
367
|
+
);
|
|
449
368
|
} catch (err) {
|
|
450
369
|
throw err;
|
|
451
370
|
}
|
|
452
|
-
|
|
371
|
+
|
|
453
372
|
// validator.query case
|
|
454
373
|
if (typeof(_ruleObj.query) != 'undefined' && typeof(_ruleObj.query.data) != 'undefined') {
|
|
455
374
|
_data = _ruleObj.query.data;
|
|
@@ -462,7 +381,7 @@ function Routing() {
|
|
|
462
381
|
for (let p = 0, pLen = uRo.length; p < pLen; p++) {
|
|
463
382
|
// :variable only
|
|
464
383
|
if (!/^\:/.test(uRo[p])) continue;
|
|
465
|
-
|
|
384
|
+
|
|
466
385
|
let pName = uRo[p].replace(/^\:/, '');
|
|
467
386
|
if ( pName != '' && typeof(uRe[p]) != 'undefined' ) {
|
|
468
387
|
_data[ pName ] = uRe[p];
|
|
@@ -472,30 +391,30 @@ function Routing() {
|
|
|
472
391
|
request.params[pName] = uRe[p];
|
|
473
392
|
}
|
|
474
393
|
}
|
|
475
|
-
}
|
|
394
|
+
}
|
|
476
395
|
}
|
|
477
|
-
|
|
396
|
+
|
|
478
397
|
// If validator.query has data, _data should inherit from request data
|
|
479
|
-
_data = merge(_data, JSON.clone(request[method]) ||
|
|
398
|
+
_data = merge(_data, JSON.clone(request[method]) || {} );
|
|
480
399
|
// This test is to initialize query.data[key] to null by default
|
|
481
400
|
if ( typeof(_data[key]) == 'undefined' ) {
|
|
482
401
|
// init default value for unlisted variable/param
|
|
483
402
|
_data[key] = null;
|
|
484
403
|
}
|
|
485
|
-
|
|
486
|
-
_rule[key] = _ruleObj;
|
|
404
|
+
|
|
405
|
+
_rule[key] = _ruleObj;
|
|
487
406
|
if (!isGFFCtx) {
|
|
488
407
|
_validator = new Validator('routing', _data, null, _rule );
|
|
489
408
|
} else {
|
|
490
409
|
_validator = new Validator(_data);
|
|
491
410
|
}
|
|
492
|
-
|
|
411
|
+
|
|
493
412
|
if (_ruleObj.count() == 0 ) {
|
|
494
413
|
console.error('Route validation failed '+ params.rule);
|
|
495
414
|
--score;
|
|
496
415
|
r++;
|
|
497
416
|
continue;
|
|
498
|
-
}
|
|
417
|
+
}
|
|
499
418
|
// for each validation rule
|
|
500
419
|
for (let rule in _ruleObj) {
|
|
501
420
|
// updating query.data
|
|
@@ -507,8 +426,8 @@ function Routing() {
|
|
|
507
426
|
_result = await _validator[key][rule].apply(_validator[key], _ruleObj[rule]);
|
|
508
427
|
} else {
|
|
509
428
|
_result = await _validator[key][rule](_ruleObj[rule], request, response, next);
|
|
510
|
-
}
|
|
511
|
-
|
|
429
|
+
}
|
|
430
|
+
|
|
512
431
|
//let condition = _ruleObj[rule].validIf.replace(new RegExp('\\$isValid'), _result.isValid);
|
|
513
432
|
// if ( eval(condition)) {
|
|
514
433
|
if ( !_result.isValid ) {
|
|
@@ -521,10 +440,14 @@ function Routing() {
|
|
|
521
440
|
}
|
|
522
441
|
r++
|
|
523
442
|
}
|
|
443
|
+
|
|
444
|
+
r = null;
|
|
445
|
+
uRoVars = null;
|
|
446
|
+
requiremements = null;
|
|
524
447
|
}
|
|
525
448
|
|
|
526
449
|
foundRoute.past = (score === maxLen) ? true : false;
|
|
527
|
-
|
|
450
|
+
|
|
528
451
|
if (foundRoute.past) {
|
|
529
452
|
// attaching routing description for this request
|
|
530
453
|
//request.routing = params; // can be retried in controller with: req.routing
|
|
@@ -532,7 +455,7 @@ function Routing() {
|
|
|
532
455
|
request.routing = checkRouteParams(params, request[method]);
|
|
533
456
|
foundRoute.request = request;
|
|
534
457
|
}
|
|
535
|
-
|
|
458
|
+
|
|
536
459
|
|
|
537
460
|
return foundRoute;
|
|
538
461
|
};
|
|
@@ -563,7 +486,7 @@ function Routing() {
|
|
|
563
486
|
, flags = null
|
|
564
487
|
, key = null
|
|
565
488
|
, tested = false
|
|
566
|
-
|
|
489
|
+
|
|
567
490
|
, _validator = null
|
|
568
491
|
, _data = null
|
|
569
492
|
, _ruleObj = null
|
|
@@ -573,57 +496,59 @@ function Routing() {
|
|
|
573
496
|
// request method
|
|
574
497
|
, requestMethod = request.method.toLowerCase()
|
|
575
498
|
;
|
|
576
|
-
|
|
499
|
+
|
|
577
500
|
if (!_param.length) return false;
|
|
578
501
|
|
|
579
502
|
// if custom path, path rewrite
|
|
580
503
|
if (params.param.path && regex.test(params.param.path)) {
|
|
581
504
|
params.param.path = params.param.path.replace(regex, urlVal);
|
|
582
505
|
}
|
|
583
|
-
|
|
506
|
+
|
|
584
507
|
// if custom namespace, namespace rewrite
|
|
585
|
-
if (params.param.namespace && regex.test(params.param.namespace)) {
|
|
586
|
-
params.param.namespace = params.param.namespace.replace(regex, urlVal);
|
|
508
|
+
if (params.param.namespace && regex.test(params.param.namespace)) {
|
|
509
|
+
params.param.namespace = params.param.namespace.replace(regex, urlVal);
|
|
587
510
|
}
|
|
588
|
-
|
|
511
|
+
|
|
589
512
|
// if custom file, file rewrite
|
|
590
|
-
// if (params.param.file && regex.test(params.param.file)) {
|
|
591
|
-
// params.param.file = params.param.file.replace(regex, urlVal);
|
|
513
|
+
// if (params.param.file && regex.test(params.param.file)) {
|
|
514
|
+
// params.param.file = params.param.file.replace(regex, urlVal);
|
|
592
515
|
// }
|
|
593
516
|
// file is handle like url replacement (path is like pathname)
|
|
594
|
-
if (typeof
|
|
595
|
-
var _regex = new RegExp('(:'+urlVar+'/|:'+urlVar+'$)', 'g');
|
|
596
|
-
replacement.variable = urlVal;
|
|
517
|
+
if ( typeof(params.param.file) != 'undefined' && /\:/.test(params.param.file)) {
|
|
518
|
+
var _regex = new RegExp('(:'+urlVar+'/|:'+urlVar+'$)', 'g');
|
|
519
|
+
replacement.variable = urlVal;
|
|
597
520
|
params.param.file = params.param.file.replace( _regex, replacement );
|
|
521
|
+
_regex = null;
|
|
598
522
|
}
|
|
599
523
|
|
|
600
524
|
// if custom title, title rewrite
|
|
601
|
-
if (params.param.title && regex.test(params.param.title)) {
|
|
525
|
+
if (params.param.title && regex.test(params.param.title)) {
|
|
602
526
|
params.param.title = params.param.title.replace(regex, urlVal);
|
|
603
527
|
}
|
|
604
528
|
|
|
529
|
+
|
|
605
530
|
if (_param.length == 1) { // fast one
|
|
606
|
-
|
|
531
|
+
|
|
607
532
|
re = new RegExp( _param[0]);
|
|
608
533
|
matched = (_param.indexOf(urlVar) > -1) ? _param.indexOf(urlVar) : false;
|
|
609
|
-
|
|
534
|
+
|
|
610
535
|
if (matched === false ) {
|
|
611
536
|
// In order to support rules defined like :
|
|
612
537
|
// { params.url } => `/section/:name/page:number`
|
|
613
538
|
// { request.url } => `/section/plante/page4`
|
|
614
539
|
//
|
|
615
540
|
// with keys = [ ":name", ":number" ]
|
|
616
|
-
|
|
541
|
+
|
|
617
542
|
if ( urlVar.match(re) ) {
|
|
618
543
|
matched = 0;
|
|
619
544
|
}
|
|
620
545
|
}
|
|
621
|
-
|
|
546
|
+
|
|
622
547
|
|
|
623
548
|
if (matched === false) return matched;
|
|
624
549
|
// filter on method
|
|
625
550
|
if (params.method.toLowerCase() !== requestMethod) return false;
|
|
626
|
-
|
|
551
|
+
|
|
627
552
|
if ( typeof(request[requestMethod]) == 'undefined' ) {
|
|
628
553
|
request[requestMethod] = {}
|
|
629
554
|
}
|
|
@@ -635,7 +560,7 @@ function Routing() {
|
|
|
635
560
|
regex = params.requirements[key];
|
|
636
561
|
if (/^\//.test(regex)) {
|
|
637
562
|
re = regex.match(/\/(.*)\//).pop();
|
|
638
|
-
flags = regex.replace('/' + re + '/', '');
|
|
563
|
+
flags = regex.replace('/' + re + '/', '');
|
|
639
564
|
|
|
640
565
|
tested = new RegExp(re, flags).test(urlVal)
|
|
641
566
|
} else if ( /^validator\:\:/.test(regex) && urlVal) {
|
|
@@ -644,11 +569,11 @@ function Routing() {
|
|
|
644
569
|
* "id" : "/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i",
|
|
645
570
|
* "email": "validator::{ isEmail: true, isString: [7] }"
|
|
646
571
|
* }
|
|
647
|
-
*
|
|
572
|
+
*
|
|
648
573
|
* e.g.: tested = new Validator('routing', _data, null, {email: {isEmail: true, subject: \"Anything\"}} ).isEmail().valid;
|
|
649
|
-
*/
|
|
650
|
-
_data = {}; _ruleObj = {}; _rule = {}; str = '';
|
|
651
|
-
urlVar.replace( new RegExp('[^'+ key +']','g'), function(){ str += arguments[0] });
|
|
574
|
+
*/
|
|
575
|
+
_data = {}; _ruleObj = {}; _rule = {}; str = '';
|
|
576
|
+
urlVar.replace( new RegExp('[^'+ key +']','g'), function(){ str += arguments[0] });
|
|
652
577
|
_data[key] = urlVal.replace( new RegExp(str, 'g'), '');
|
|
653
578
|
try {
|
|
654
579
|
//_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
|
|
@@ -656,11 +581,11 @@ function Routing() {
|
|
|
656
581
|
regex.split(/::/).splice(1)[0]
|
|
657
582
|
.replace(/([^\:\"\s+](\w+))\:/g, '"$1":') // { query: { validIf: true }} => { "query": { "validIf": true }}
|
|
658
583
|
.replace(/([^\:\"\s+](\w+))\s+\:/g, '"$1":') // note the space between `validIf` & `:` { query: { validIf : true }} => { "query": { "validIf": true }}
|
|
659
|
-
);
|
|
584
|
+
);
|
|
660
585
|
} catch (err) {
|
|
661
586
|
throw err;
|
|
662
587
|
}
|
|
663
|
-
//_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
|
|
588
|
+
//_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
|
|
664
589
|
if (typeof(_ruleObj.query) != 'undefined' && typeof(_ruleObj.query.data) != 'undefined') {
|
|
665
590
|
// since we only have one param
|
|
666
591
|
// :var1 == :var1
|
|
@@ -670,7 +595,7 @@ function Routing() {
|
|
|
670
595
|
request.params[key] = _data[key];
|
|
671
596
|
}
|
|
672
597
|
}
|
|
673
|
-
_rule[key] = _ruleObj;
|
|
598
|
+
_rule[key] = _ruleObj;
|
|
674
599
|
_validator = new Validator('routing', _data, null, _rule );
|
|
675
600
|
if (_ruleObj.count() == 0 ) {
|
|
676
601
|
console.error('Route validation failed '+ params.rule);
|
|
@@ -681,7 +606,7 @@ function Routing() {
|
|
|
681
606
|
await _validator[key][rule].apply(_validator[key], _ruleObj[rule]);
|
|
682
607
|
} else {
|
|
683
608
|
await _validator[key][rule](_ruleObj[rule], request, response, next);
|
|
684
|
-
}
|
|
609
|
+
}
|
|
685
610
|
}
|
|
686
611
|
tested = _validator.isValid();
|
|
687
612
|
} else {
|
|
@@ -694,7 +619,7 @@ function Routing() {
|
|
|
694
619
|
typeof(params.requirements[key]) != 'undefined' &&
|
|
695
620
|
typeof(request.params) != 'undefined' &&
|
|
696
621
|
tested
|
|
697
|
-
) {
|
|
622
|
+
) {
|
|
698
623
|
request.params[key] = urlVal;
|
|
699
624
|
if ( typeof(request[requestMethod][key]) == 'undefined' ) {
|
|
700
625
|
request[requestMethod][key] = urlVal;
|
|
@@ -744,22 +669,22 @@ function Routing() {
|
|
|
744
669
|
* "id" : "/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i",
|
|
745
670
|
* "email": "validator::{ isEmail: true, isString: [7] }"
|
|
746
671
|
* }
|
|
747
|
-
*
|
|
672
|
+
*
|
|
748
673
|
* e.g.: tested = new Validator('routing', _data, null, {email: {isEmail: true}} ).isEmail().valid;
|
|
749
|
-
*/
|
|
750
|
-
_data = {}; _ruleObj = {}; _rule = {}; str = '';
|
|
751
|
-
urlVar.replace( new RegExp('[^'+ key[0] +']','g'), function(){ str += arguments[0] });
|
|
674
|
+
*/
|
|
675
|
+
_data = {}; _ruleObj = {}; _rule = {}; str = '';
|
|
676
|
+
urlVar.replace( new RegExp('[^'+ key[0] +']','g'), function(){ str += arguments[0] });
|
|
752
677
|
_data[key[0]] = urlVal.replace( new RegExp(str, 'g'), '');
|
|
753
|
-
_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
|
|
754
|
-
_rule[key[0]] = _ruleObj;
|
|
678
|
+
_ruleObj = JSON.parse(regex.split(/::/).splice(1)[0].replace(/([^\W+ true false])+(\w+)/g, '"$&"'));
|
|
679
|
+
_rule[key[0]] = _ruleObj;
|
|
755
680
|
_validator = new Validator('routing', _data, null, _rule );
|
|
756
|
-
|
|
681
|
+
|
|
757
682
|
for (let rule in _ruleObj) {
|
|
758
683
|
if (Array.isArray(_ruleObj[rule])) { // has args
|
|
759
684
|
_validator[key[0]][rule].apply(_validator[key[0]], _ruleObj[rule])
|
|
760
685
|
} else {
|
|
761
686
|
_validator[key[0]][rule](_ruleObj[rule])
|
|
762
|
-
}
|
|
687
|
+
}
|
|
763
688
|
}
|
|
764
689
|
tested = _validator.isValid();
|
|
765
690
|
} else {
|
|
@@ -817,9 +742,9 @@ function Routing() {
|
|
|
817
742
|
|
|
818
743
|
return false
|
|
819
744
|
}
|
|
820
|
-
|
|
745
|
+
|
|
821
746
|
var replacement = function(matched){
|
|
822
|
-
return ( /\/$/.test(matched) ? replacement.variable+ '/': replacement.variable )
|
|
747
|
+
return ( /\/$/.test(matched) ? replacement.variable+ '/': replacement.variable )
|
|
823
748
|
};
|
|
824
749
|
var checkRouteParams = function(route, params) {
|
|
825
750
|
var variable = null
|
|
@@ -833,48 +758,48 @@ function Routing() {
|
|
|
833
758
|
;
|
|
834
759
|
for (p in route.param) {
|
|
835
760
|
if ( typeof(params) != 'undefined' && typeof(params[p]) == 'undefined' ) continue;
|
|
836
|
-
|
|
761
|
+
|
|
837
762
|
if ( /^:/.test(route.param[p]) ) {
|
|
838
763
|
variable = route.param[p].substr(1);
|
|
839
|
-
|
|
764
|
+
|
|
840
765
|
if ( typeof(params) != 'undefined' && typeof(params[variable]) != 'undefined' ) {
|
|
841
|
-
|
|
842
|
-
regex = new RegExp('(:'+variable+'/|:'+variable+'$)', 'g');
|
|
843
|
-
|
|
844
766
|
|
|
845
|
-
|
|
767
|
+
regex = new RegExp('(:'+variable+'/|:'+variable+'$)', 'g');
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
if ( typeof(route.param.path) != 'undefined' && /\:/.test(route.param.path) ) {
|
|
846
771
|
route.param.path = route.param.path.replace( regex, params[variable]);
|
|
847
772
|
}
|
|
848
|
-
if (typeof (route.param.title) != 'undefined' &&
|
|
773
|
+
if (typeof (route.param.title) != 'undefined' && /\:/.test(route.param.title)) {
|
|
849
774
|
route.param.title = route.param.title.replace( regex, params[variable]);
|
|
850
775
|
}
|
|
851
|
-
if (typeof (route.param.namespace) != 'undefined' &&
|
|
776
|
+
if (typeof (route.param.namespace) != 'undefined' && /\:/.test(route.param.namespace)) {
|
|
852
777
|
route.param.namespace = route.param.namespace.replace( regex, params[variable]);
|
|
853
778
|
}
|
|
854
779
|
// file is handle like url replacement (path is like pathname)
|
|
855
|
-
if (typeof (route.param.file) != 'undefined' &&
|
|
856
|
-
replacement.variable = params[variable];
|
|
780
|
+
if (typeof (route.param.file) != 'undefined' && /\:/.test(route.param.file)) {
|
|
781
|
+
replacement.variable = params[variable];
|
|
857
782
|
route.param.file = route.param.file.replace( regex, replacement );
|
|
858
783
|
}
|
|
859
|
-
|
|
860
|
-
if ( /\,/.test(route.url) ) {
|
|
784
|
+
|
|
785
|
+
if ( /\,/.test(route.url) ) {
|
|
861
786
|
urls = route.url.split(/\,/g);
|
|
862
787
|
i = 0; len = urls.length;
|
|
863
788
|
for (; i < len; ++i) {
|
|
864
|
-
replacement.variable = params[variable];
|
|
789
|
+
replacement.variable = params[variable];
|
|
865
790
|
urls[i] = urls[i].replace( regex, replacement );
|
|
866
791
|
}
|
|
867
792
|
route.url = urls.join(',');
|
|
868
|
-
} else {
|
|
869
|
-
replacement.variable = params[variable];
|
|
793
|
+
} else {
|
|
794
|
+
replacement.variable = params[variable];
|
|
870
795
|
route.url = route.url.replace( regex, replacement );
|
|
871
796
|
}
|
|
872
797
|
}
|
|
873
798
|
}
|
|
874
799
|
}
|
|
875
|
-
|
|
800
|
+
|
|
876
801
|
// Selecting url in case of multiple urls & optional requirmements
|
|
877
|
-
if ( urls ) {
|
|
802
|
+
if ( urls ) {
|
|
878
803
|
i = 0; len = urls.length;
|
|
879
804
|
var rawUrlVars = null
|
|
880
805
|
, rawUrlScore = null
|
|
@@ -901,8 +826,8 @@ function Routing() {
|
|
|
901
826
|
route.urlIndex = i;
|
|
902
827
|
}
|
|
903
828
|
}
|
|
904
|
-
}
|
|
905
|
-
|
|
829
|
+
}
|
|
830
|
+
|
|
906
831
|
return route;
|
|
907
832
|
}
|
|
908
833
|
|
|
@@ -916,7 +841,7 @@ function Routing() {
|
|
|
916
841
|
* @returns {object} route
|
|
917
842
|
* */
|
|
918
843
|
self.getRoute = function(rule, params, urlIndex) {
|
|
919
|
-
|
|
844
|
+
|
|
920
845
|
var config = null;
|
|
921
846
|
if (isGFFCtx) {
|
|
922
847
|
config = window.gina.config;
|
|
@@ -926,13 +851,13 @@ function Routing() {
|
|
|
926
851
|
config.getRouting = getContext('gina').Config.instance.getRouting;
|
|
927
852
|
}
|
|
928
853
|
}
|
|
929
|
-
|
|
854
|
+
|
|
930
855
|
var env = config.env || GINA_ENV // by default, takes the current bundle
|
|
931
856
|
, envTmp = null
|
|
932
857
|
//, scheme = null
|
|
933
858
|
, bundle = config.bundle // by default, takes the current bundle
|
|
934
859
|
;
|
|
935
|
-
|
|
860
|
+
|
|
936
861
|
if ( !/\@/.test(rule) && typeof(bundle) != 'undefined' && bundle != null) {
|
|
937
862
|
rule = rule.toLowerCase()
|
|
938
863
|
rule += '@' + bundle
|
|
@@ -957,22 +882,16 @@ function Routing() {
|
|
|
957
882
|
|
|
958
883
|
rule = arr[0].toLowerCase() +'@'+ bundle;
|
|
959
884
|
}
|
|
960
|
-
|
|
961
|
-
|
|
885
|
+
|
|
886
|
+
|
|
962
887
|
var routing = config.getRouting(bundle, env);
|
|
963
888
|
|
|
964
889
|
if ( typeof(routing[rule]) == 'undefined' ) {
|
|
965
890
|
throw new Error('[ RoutingHelper::getRouting(rule, params) ] : `' +rule + '` not found !')
|
|
966
891
|
}
|
|
967
892
|
|
|
968
|
-
var route
|
|
969
|
-
var
|
|
970
|
-
, regex = null
|
|
971
|
-
, urls = null
|
|
972
|
-
, i = null
|
|
973
|
-
, len = null
|
|
974
|
-
, msg = null
|
|
975
|
-
;
|
|
893
|
+
var route = JSON.clone(routing[rule]);
|
|
894
|
+
var msg = null;
|
|
976
895
|
route = checkRouteParams(route, params);
|
|
977
896
|
|
|
978
897
|
if ( /\,/.test(route.url) ) {
|
|
@@ -981,64 +900,92 @@ function Routing() {
|
|
|
981
900
|
delete route.urlIndex;
|
|
982
901
|
}
|
|
983
902
|
urlIndex = ( typeof(urlIndex) != 'undefined' ) ? urlIndex : 0;
|
|
984
|
-
route.url = route.url.split(/,/g)[urlIndex];
|
|
903
|
+
route.url = route.url.split(/,/g)[urlIndex];
|
|
985
904
|
}
|
|
986
905
|
// fix url in case of empty param value allowed by the routing rule
|
|
987
906
|
// to prevent having a folder.
|
|
988
907
|
// eg.: {..., id: '/^\\s*$/'} => {..., id: ''} => /path/to/ becoming /path/to
|
|
989
908
|
if ( /\/$/.test(route.url) && route.url != '/' )
|
|
990
909
|
route.url = route.url.substr(0, route.url.length-1);
|
|
991
|
-
|
|
910
|
+
|
|
992
911
|
// Completeting url with extra params e.g.: ?param1=val1¶m2=val2
|
|
993
912
|
if ( /GET/i.test(route.method) && typeof(params) != 'undefined' ) {
|
|
994
|
-
var queryParams = '?'
|
|
995
|
-
|
|
913
|
+
var queryParams = '?'
|
|
914
|
+
, maskedUrl = routing[rule].url
|
|
915
|
+
;
|
|
916
|
+
|
|
917
|
+
// in route.rule params
|
|
918
|
+
var extracted = [], i = 0;
|
|
996
919
|
for (let r in route.param) {
|
|
997
920
|
if ( self.reservedParams.indexOf(r) > -1 || new RegExp(route.param[r]).test(maskedUrl) )
|
|
998
921
|
continue;
|
|
999
|
-
if (typeof(params[r]) != 'undefined' )
|
|
1000
|
-
queryParams += r +'='+
|
|
922
|
+
if (typeof(params[r]) != 'undefined' ) {
|
|
923
|
+
queryParams += r +'='+ encodeRFC5987ValueChars(params[r])+ '&';
|
|
924
|
+
extracted[i] = params[r];
|
|
925
|
+
++i;
|
|
926
|
+
}
|
|
1001
927
|
}
|
|
1002
|
-
|
|
928
|
+
|
|
929
|
+
// extra params ( not declared in the rule, but added by getUrl() )
|
|
930
|
+
for (let p in params) {
|
|
931
|
+
if (
|
|
932
|
+
self.reservedParams.indexOf(p) > -1
|
|
933
|
+
|| typeof(route.requirements[p]) != 'undefined'
|
|
934
|
+
|| extracted.indexOf(p) > -1
|
|
935
|
+
) {
|
|
936
|
+
continue;
|
|
937
|
+
}
|
|
938
|
+
if ( typeof(params[p]) == 'object' ) {
|
|
939
|
+
queryParams += p +'='+ encodeRFC5987ValueChars(JSON.stringify(params[p])) +'&';
|
|
940
|
+
} else {
|
|
941
|
+
queryParams += p +'='+ params[p] +'&';
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
maskedUrl = null;
|
|
945
|
+
extracted = null;
|
|
946
|
+
i = null;
|
|
947
|
+
|
|
1003
948
|
if (queryParams.length > 1) {
|
|
1004
949
|
queryParams = queryParams.substring(0, queryParams.length-1);
|
|
950
|
+
|
|
1005
951
|
route.url += queryParams;
|
|
1006
952
|
}
|
|
953
|
+
queryParams = null;
|
|
1007
954
|
}
|
|
1008
|
-
|
|
955
|
+
|
|
1009
956
|
// recommanded for x-bundle coms
|
|
1010
957
|
// leave `ignoreWebRoot` empty or set it to false for x-bundle coms
|
|
1011
958
|
route.toUrl = function (ignoreWebRoot) {
|
|
1012
|
-
|
|
959
|
+
|
|
1013
960
|
var urlProps = null;
|
|
1014
961
|
if ( /^redirect$/i.test(this.param.control) ) {
|
|
1015
962
|
urlProps = self.getUrlProps(this.bundle, (env||GINA_ENV));
|
|
1016
963
|
}
|
|
1017
|
-
|
|
964
|
+
|
|
1018
965
|
var wroot = this.webroot || urlProps.webroot
|
|
1019
966
|
, hostname = this.hostname || urlProps.hostname
|
|
1020
967
|
, path = this.url
|
|
1021
968
|
;
|
|
1022
|
-
|
|
969
|
+
|
|
1023
970
|
this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
|
|
1024
971
|
|
|
1025
972
|
return hostname + this.url
|
|
1026
973
|
};
|
|
1027
|
-
|
|
974
|
+
|
|
1028
975
|
/**
|
|
1029
976
|
* request current url
|
|
1030
|
-
*
|
|
1031
|
-
*
|
|
1032
|
-
*
|
|
977
|
+
*
|
|
978
|
+
*
|
|
979
|
+
*
|
|
1033
980
|
* @param {boolean} [ignoreWebRoot]
|
|
1034
981
|
* @param {object} [options] - see: https://nodejs.org/api/https.html#https_new_agent_options
|
|
1035
982
|
* @param {object} [_this] - current context: only used when `promisify`is used
|
|
1036
|
-
*
|
|
983
|
+
*
|
|
1037
984
|
* @callback {callback} [cb] - see: https://nodejs.org/api/https.html#https_new_agent_options
|
|
1038
985
|
* @param {object} res
|
|
1039
986
|
*/
|
|
1040
987
|
route.request = function(ignoreWebRoot, options) {
|
|
1041
|
-
|
|
988
|
+
|
|
1042
989
|
var cb = null, _this = null;
|
|
1043
990
|
if ( typeof(arguments[arguments.length-1]) == 'function' ) {
|
|
1044
991
|
cb = arguments[arguments.length-1];
|
|
@@ -1046,72 +993,78 @@ function Routing() {
|
|
|
1046
993
|
if ( typeof(arguments[2]) == 'object' ) {
|
|
1047
994
|
_this = arguments[2];
|
|
1048
995
|
}
|
|
1049
|
-
|
|
996
|
+
|
|
1050
997
|
var wroot = this.webroot || _this.webroot
|
|
1051
998
|
, hostname = this.hostname || _this.hostname
|
|
1052
999
|
, url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : this.url || _this.url
|
|
1053
1000
|
;
|
|
1054
|
-
|
|
1001
|
+
|
|
1055
1002
|
var scheme = ( /^https/.test(hostname) ) ? 'https' : 'http';
|
|
1056
|
-
|
|
1003
|
+
|
|
1057
1004
|
if (isGFFCtx) {
|
|
1058
1005
|
var target = ( typeof(options) != 'undefined' && typeof(options.target) != 'undefined' ) ? options.target : "_self";
|
|
1059
|
-
window.open(url, target)
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
err = parseError
|
|
1006
|
+
window.open(url, target);
|
|
1007
|
+
return;
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
if ( typeof(options.agent) == 'undefined' ) {
|
|
1011
|
+
// See.: https://nodejs.org/api/http.html#http_class_http_agent
|
|
1012
|
+
// create an agent just for this request
|
|
1013
|
+
options.agent = false;
|
|
1014
|
+
}
|
|
1015
|
+
var agent = require(''+scheme);
|
|
1016
|
+
var onAgentResponse = function(res) {
|
|
1017
|
+
|
|
1018
|
+
var data = '', err = false;
|
|
1019
|
+
|
|
1020
|
+
res.on('data', function (chunk) {
|
|
1021
|
+
data += chunk;
|
|
1022
|
+
});
|
|
1023
|
+
res.on('error', function (error) {
|
|
1024
|
+
err = 'Failed to get mail content';
|
|
1025
|
+
if (error && typeof(error.stack) != 'undefined' ) {
|
|
1026
|
+
err += error.stack;
|
|
1027
|
+
} else if ( typeof(error) == 'string' ) {
|
|
1028
|
+
err += '\n' + error;
|
|
1029
|
+
}
|
|
1030
|
+
});
|
|
1031
|
+
res.on('end', function () {
|
|
1032
|
+
if (/^\{/.test(data) ) {
|
|
1033
|
+
try {
|
|
1034
|
+
data = JSON.parse(data);
|
|
1035
|
+
if (typeof(data.error) != 'undefined') {
|
|
1036
|
+
err = JSON.clone(data);
|
|
1037
|
+
data = null;
|
|
1092
1038
|
}
|
|
1039
|
+
} catch(parseError) {
|
|
1040
|
+
err = parseError
|
|
1093
1041
|
}
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
cb(false, data);
|
|
1042
|
+
}
|
|
1043
|
+
if (err) {
|
|
1044
|
+
cb(err);
|
|
1100
1045
|
return;
|
|
1101
|
-
}
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
cb(false, data);
|
|
1049
|
+
return;
|
|
1050
|
+
});
|
|
1051
|
+
}
|
|
1052
|
+
if (cb) {
|
|
1053
|
+
agent.get(url, options, onAgentResponse);
|
|
1054
|
+
} else {
|
|
1055
|
+
// just throw the request without waiting/handling response
|
|
1056
|
+
agent.get(url, options);
|
|
1109
1057
|
}
|
|
1110
|
-
return;
|
|
1111
|
-
|
|
1058
|
+
return;
|
|
1059
|
+
|
|
1112
1060
|
} // EO route.request()
|
|
1113
|
-
|
|
1114
|
-
if (
|
|
1061
|
+
|
|
1062
|
+
if (
|
|
1063
|
+
/\:/.test(route.url)
|
|
1064
|
+
// Avoiding : `/bundle/path?redirect=https://bundle-dev-scope-v1.docmain.com:3132/bundle/referrer-path`
|
|
1065
|
+
&& !/\:d+\//.test(route.url)
|
|
1066
|
+
&& !/\:\/\//.test(route.url)
|
|
1067
|
+
) {
|
|
1115
1068
|
var paramList = route.url
|
|
1116
1069
|
.match(/(\:(.*)\/|\:(.*)$)/g)
|
|
1117
1070
|
.map(function(el){ return el.replace(/\//g, ''); }).join(', ');
|
|
@@ -1119,6 +1072,9 @@ function Routing() {
|
|
|
1119
1072
|
msg = msg.replace(/\%r/, rule);
|
|
1120
1073
|
var err = new Error(msg);
|
|
1121
1074
|
console.warn( err );
|
|
1075
|
+
paramList = null;
|
|
1076
|
+
err = null;
|
|
1077
|
+
msg = null;
|
|
1122
1078
|
// Do not throw error nor return here !!!
|
|
1123
1079
|
}
|
|
1124
1080
|
|
|
@@ -1134,21 +1090,21 @@ function Routing() {
|
|
|
1134
1090
|
// adding hash if found
|
|
1135
1091
|
if (hash)
|
|
1136
1092
|
url += hash;
|
|
1137
|
-
|
|
1093
|
+
|
|
1138
1094
|
route.url = url;
|
|
1139
1095
|
// recommanded for x-bundle coms
|
|
1140
1096
|
// leave `ignoreWebRoot` empty or set it to false for x-bundle coms
|
|
1141
|
-
route.toUrl = function (ignoreWebRoot) {
|
|
1097
|
+
route.toUrl = function (ignoreWebRoot) {
|
|
1142
1098
|
var wroot = this.webroot
|
|
1143
1099
|
, hostname = this.hostname
|
|
1144
1100
|
, path = this.url
|
|
1145
1101
|
;
|
|
1146
|
-
|
|
1102
|
+
|
|
1147
1103
|
this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
|
|
1148
1104
|
|
|
1149
1105
|
return hostname + this.url
|
|
1150
1106
|
};
|
|
1151
|
-
|
|
1107
|
+
|
|
1152
1108
|
return route
|
|
1153
1109
|
}
|
|
1154
1110
|
|
|
@@ -1161,18 +1117,19 @@ function Routing() {
|
|
|
1161
1117
|
* @param {string} url e.g.: /webroot/some/url/path or http
|
|
1162
1118
|
* @param {string} [bundle] targeted bundle
|
|
1163
1119
|
* @param {string} [method] request method (GET|PUT|PUT|DELETE) - GET is set by default
|
|
1164
|
-
* @param {object} [request]
|
|
1120
|
+
* @param {object} [request]
|
|
1165
1121
|
* @param {boolean} [isOverridinMethod] // will replace request.method by the provided method - Used for redirections
|
|
1166
|
-
*
|
|
1122
|
+
*
|
|
1167
1123
|
* @returns {object|boolean} route - when route is found; `false` when not found
|
|
1168
1124
|
* */
|
|
1169
|
-
|
|
1125
|
+
|
|
1170
1126
|
self.getRouteByUrl = function (url, bundle, method, request, isOverridinMethod) {
|
|
1171
|
-
|
|
1127
|
+
|
|
1172
1128
|
if (
|
|
1173
|
-
arguments.length == 2
|
|
1174
|
-
&& typeof(arguments[1]) != 'undefined'
|
|
1175
|
-
&&
|
|
1129
|
+
arguments.length == 2
|
|
1130
|
+
&& typeof(arguments[1]) != 'undefined'
|
|
1131
|
+
&& arguments[1]
|
|
1132
|
+
&& self.allowedMethods.indexOf(arguments[1].toLowerCase()) > -1
|
|
1176
1133
|
) {
|
|
1177
1134
|
method = arguments[1];
|
|
1178
1135
|
bundle = undefined;
|
|
@@ -1185,24 +1142,24 @@ function Routing() {
|
|
|
1185
1142
|
, hostname = null
|
|
1186
1143
|
, host = null
|
|
1187
1144
|
;
|
|
1188
|
-
|
|
1145
|
+
|
|
1189
1146
|
if ( /\#/.test(url) && url.length > 1 ) {
|
|
1190
1147
|
var urlPart = url.split(/\#/);
|
|
1191
1148
|
url = urlPart[0];
|
|
1192
1149
|
hash = '#' + urlPart[1];
|
|
1193
|
-
|
|
1150
|
+
|
|
1194
1151
|
urlPart = null;
|
|
1195
1152
|
}
|
|
1196
|
-
|
|
1153
|
+
|
|
1197
1154
|
// fast method
|
|
1198
1155
|
if (
|
|
1199
|
-
arguments.length == 1
|
|
1200
|
-
&& typeof(arguments[0]) != 'undefined'
|
|
1156
|
+
arguments.length == 1
|
|
1157
|
+
&& typeof(arguments[0]) != 'undefined'
|
|
1201
1158
|
) {
|
|
1202
1159
|
if ( !/^(https|http)/i.test(url) && !/^\//.test(url)) {
|
|
1203
1160
|
url = '/'+ url;
|
|
1204
1161
|
}
|
|
1205
|
-
|
|
1162
|
+
|
|
1206
1163
|
webroot = '/' + url.split(/\//g)[1];
|
|
1207
1164
|
if (isGFFCtx) {
|
|
1208
1165
|
reverseRouting = gina.config.reverseRouting;
|
|
@@ -1216,24 +1173,24 @@ function Routing() {
|
|
|
1216
1173
|
host = infos.host;
|
|
1217
1174
|
hostname = infos.hostname;
|
|
1218
1175
|
infos = null;
|
|
1219
|
-
}
|
|
1176
|
+
}
|
|
1220
1177
|
}
|
|
1221
|
-
|
|
1178
|
+
|
|
1222
1179
|
isOverridinMethod = ( typeof(arguments[arguments.length-1]) != 'boolean') ? false : arguments[arguments.length-1];
|
|
1223
1180
|
|
|
1224
|
-
var matched = false
|
|
1181
|
+
var matched = false
|
|
1225
1182
|
, config = null
|
|
1226
1183
|
, env = null
|
|
1227
1184
|
, prefix = null
|
|
1228
1185
|
, pathname = null
|
|
1229
1186
|
, params = null
|
|
1230
1187
|
, isRoute = null
|
|
1231
|
-
, foundRoute = null
|
|
1232
|
-
, routeObj = null
|
|
1188
|
+
, foundRoute = null
|
|
1189
|
+
, routeObj = null
|
|
1233
1190
|
;
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1237
1194
|
var isMethodProvidedByDefault = ( typeof(method) != 'undefined' ) ? true : false;
|
|
1238
1195
|
|
|
1239
1196
|
if (isGFFCtx) {
|
|
@@ -1257,18 +1214,18 @@ function Routing() {
|
|
|
1257
1214
|
} else {
|
|
1258
1215
|
|
|
1259
1216
|
var gnaCtx = getContext('gina');
|
|
1260
|
-
|
|
1217
|
+
|
|
1261
1218
|
config = gnaCtx.config;
|
|
1262
1219
|
bundle = (typeof (bundle) != 'undefined') ? bundle : config.bundle;
|
|
1263
1220
|
env = config.env;
|
|
1264
1221
|
routing = config.getRouting(bundle);
|
|
1265
|
-
|
|
1266
|
-
|
|
1222
|
+
|
|
1223
|
+
|
|
1267
1224
|
|
|
1268
1225
|
hostname = config.envConf[bundle][env].hostname;
|
|
1269
1226
|
webroot = config.envConf[bundle][env].server.webroot;
|
|
1270
1227
|
prefix = hostname + webroot;
|
|
1271
|
-
|
|
1228
|
+
|
|
1272
1229
|
if ( !request ) {
|
|
1273
1230
|
request = {
|
|
1274
1231
|
routing: {},
|
|
@@ -1286,15 +1243,15 @@ function Routing() {
|
|
|
1286
1243
|
|
|
1287
1244
|
pathname = url.replace( new RegExp('^('+ hostname +'|'+hostname.replace(/\:\d+/, '') +')' ), '');
|
|
1288
1245
|
if ( typeof(request.routing.path) == 'undefined' )
|
|
1289
|
-
request.routing.path =
|
|
1246
|
+
request.routing.path = decodeURI(pathname);
|
|
1290
1247
|
method = ( typeof(method) != 'undefined' ) ? method.toLowerCase() : 'get';
|
|
1291
|
-
|
|
1248
|
+
|
|
1292
1249
|
if (isMethodProvidedByDefault) {
|
|
1293
1250
|
// to handle 303 redirect like PUT -> GET
|
|
1294
1251
|
request.originalMethod = request.method;
|
|
1295
|
-
|
|
1252
|
+
|
|
1296
1253
|
request.method = method;
|
|
1297
|
-
request.routing.path =
|
|
1254
|
+
request.routing.path = decodeURI(pathname)
|
|
1298
1255
|
}
|
|
1299
1256
|
// last method check
|
|
1300
1257
|
if ( !request.method)
|
|
@@ -1302,8 +1259,8 @@ function Routing() {
|
|
|
1302
1259
|
|
|
1303
1260
|
// getting params
|
|
1304
1261
|
params = {};
|
|
1305
|
-
|
|
1306
|
-
|
|
1262
|
+
|
|
1263
|
+
|
|
1307
1264
|
|
|
1308
1265
|
var paramsList = null;
|
|
1309
1266
|
var re = new RegExp(method, 'i');
|
|
@@ -1318,18 +1275,18 @@ function Routing() {
|
|
|
1318
1275
|
if (routing[name].bundle != bundle) continue;
|
|
1319
1276
|
|
|
1320
1277
|
// method filter
|
|
1321
|
-
localMethod = routing[name].method;
|
|
1278
|
+
localMethod = routing[name].method;
|
|
1322
1279
|
if ( /\,/.test( localMethod ) && re.test(localMethod) ) {
|
|
1323
1280
|
localMethod = request.method
|
|
1324
|
-
}
|
|
1281
|
+
}
|
|
1325
1282
|
if (typeof (routing[name].method) != 'undefined' && !re.test(localMethod)) continue;
|
|
1326
|
-
|
|
1327
|
-
//Preparing params to relay to the core/router.
|
|
1283
|
+
|
|
1284
|
+
//Preparing params to relay to the core/router.
|
|
1328
1285
|
params = {
|
|
1329
1286
|
method : localMethod,
|
|
1330
1287
|
requirements : routing[name].requirements,
|
|
1331
1288
|
namespace : routing[name].namespace || undefined,
|
|
1332
|
-
url :
|
|
1289
|
+
url : decodeURI(pathname), /// avoid %20
|
|
1333
1290
|
rule : routing[name].originalRule || name,
|
|
1334
1291
|
param : routing[name].param,
|
|
1335
1292
|
//middleware: routing[name].middleware,
|
|
@@ -1340,8 +1297,8 @@ function Routing() {
|
|
|
1340
1297
|
|
|
1341
1298
|
// normal case
|
|
1342
1299
|
//Parsing for the right url.
|
|
1343
|
-
try {
|
|
1344
|
-
|
|
1300
|
+
try {
|
|
1301
|
+
|
|
1345
1302
|
isRoute = self.compareUrls(params, routing[name].url, request);
|
|
1346
1303
|
|
|
1347
1304
|
if (isRoute.past) {
|
|
@@ -1361,96 +1318,96 @@ function Routing() {
|
|
|
1361
1318
|
} //EO for break out
|
|
1362
1319
|
|
|
1363
1320
|
if (!matched) {
|
|
1364
|
-
if (isGFFCtx) {
|
|
1365
|
-
var urlHasChanged = false;
|
|
1366
|
-
if (
|
|
1367
|
-
url == '#'
|
|
1368
|
-
&& /GET/i.test(method)
|
|
1369
|
-
&& isMethodProvidedByDefault
|
|
1321
|
+
if (isGFFCtx) {
|
|
1322
|
+
var urlHasChanged = false;
|
|
1323
|
+
if (
|
|
1324
|
+
url == '#'
|
|
1325
|
+
&& /GET/i.test(method)
|
|
1326
|
+
&& isMethodProvidedByDefault
|
|
1370
1327
|
|| /^404\:/.test(url)
|
|
1371
1328
|
) {
|
|
1372
1329
|
url = location.pathname;
|
|
1373
1330
|
urlHasChanged = true;
|
|
1374
1331
|
}
|
|
1375
|
-
|
|
1332
|
+
|
|
1376
1333
|
if ( typeof(self.notFound) == 'undefined' ) {
|
|
1377
1334
|
self.notFound = {}
|
|
1378
1335
|
}
|
|
1379
|
-
|
|
1336
|
+
|
|
1380
1337
|
var notFound = null, msg = '[ RoutingHelper::getRouteByUrl(rule[, bundle, method]) ] : route [ %r ] is called but not found inside your view: `' + url + '` !';
|
|
1381
1338
|
if ( gina.hasPopinHandler && gina.popinIsBinded ) {
|
|
1382
1339
|
notFound = gina.popin.getActivePopin().target.innerHTML.match(/404\:\[\w+\][a-z 0-9-_@]+/);
|
|
1383
1340
|
} else {
|
|
1384
1341
|
notFound = document.body.innerHTML.match(/404\:\[\w+\][a-z 0-9-_@]+/);
|
|
1385
1342
|
}
|
|
1386
|
-
|
|
1343
|
+
|
|
1387
1344
|
notFound = (notFound && notFound.length > 0) ? notFound[0] : null;
|
|
1388
|
-
|
|
1345
|
+
|
|
1389
1346
|
if ( notFound && isMethodProvidedByDefault && urlHasChanged ) {
|
|
1390
|
-
|
|
1391
|
-
var m = notFound.match(/\[\w+\]/)[0];
|
|
1392
|
-
|
|
1347
|
+
|
|
1348
|
+
var m = notFound.match(/\[\w+\]/)[0];
|
|
1349
|
+
|
|
1393
1350
|
notFound = notFound.replace('404:'+m, m.replace(/\[|\]/g, '')+'::' );
|
|
1394
|
-
|
|
1351
|
+
|
|
1395
1352
|
msg = msg.replace(/\%r/, notFound.replace(/404\:\s+/, ''));
|
|
1396
|
-
|
|
1353
|
+
|
|
1397
1354
|
if (typeof(self.notFound[notFound]) == 'undefined') {
|
|
1398
|
-
self.notFound[notFound] = {
|
|
1355
|
+
self.notFound[notFound] = {
|
|
1399
1356
|
count: 1,
|
|
1400
|
-
message: msg
|
|
1357
|
+
message: msg
|
|
1401
1358
|
};
|
|
1402
1359
|
} else if ( isMethodProvidedByDefault && typeof(self.notFound[notFound]) != 'undefined' ) {
|
|
1403
1360
|
++self.notFound[notFound].count;
|
|
1404
1361
|
}
|
|
1405
|
-
|
|
1406
|
-
return false
|
|
1407
|
-
}
|
|
1408
|
-
|
|
1409
|
-
notFound = null;
|
|
1410
|
-
|
|
1411
|
-
var altRule = gina.config.reverseRouting[url] || null;
|
|
1362
|
+
|
|
1363
|
+
return false
|
|
1364
|
+
}
|
|
1365
|
+
|
|
1366
|
+
notFound = null;
|
|
1367
|
+
|
|
1368
|
+
var altRule = gina.config.reverseRouting[url] || null;
|
|
1412
1369
|
if (
|
|
1413
|
-
!notFound
|
|
1370
|
+
!notFound
|
|
1414
1371
|
&& altRule
|
|
1415
1372
|
&& typeof(altRule) != 'undefined'
|
|
1416
1373
|
&& altRule.split(/\@(.+)$/)[1] == bundle
|
|
1417
1374
|
) {
|
|
1418
|
-
|
|
1375
|
+
|
|
1419
1376
|
notFound = altRule;
|
|
1420
1377
|
if ( typeof(self.notFound[notFound]) == 'undefined' ) {
|
|
1421
|
-
|
|
1378
|
+
|
|
1422
1379
|
msg = msg.replace(/\%r/, method.toUpperCase() +'::'+ altRule);
|
|
1423
|
-
|
|
1424
|
-
self.notFound[notFound] = {
|
|
1380
|
+
|
|
1381
|
+
self.notFound[notFound] = {
|
|
1425
1382
|
count: 1,
|
|
1426
|
-
message: msg
|
|
1383
|
+
message: msg
|
|
1427
1384
|
};
|
|
1428
|
-
//console.warn(msg);
|
|
1385
|
+
//console.warn(msg);
|
|
1429
1386
|
} else if ( isMethodProvidedByDefault && typeof(self.notFound[notFound]) != 'undefined' ) {
|
|
1430
1387
|
++self.notFound[notFound].count;
|
|
1431
1388
|
}
|
|
1432
|
-
|
|
1389
|
+
|
|
1433
1390
|
return false
|
|
1434
1391
|
}
|
|
1435
|
-
|
|
1392
|
+
|
|
1436
1393
|
// forms
|
|
1437
1394
|
var altRoute = self.compareUrls(params, url, request) || null;
|
|
1438
1395
|
if(altRoute.past && isMethodProvidedByDefault) {
|
|
1439
1396
|
notFound = method.toUpperCase() +'::'+ altRoute.request.routing.rule;
|
|
1440
1397
|
if ( typeof(self.notFound[notFound]) == 'undefined' ) {
|
|
1441
1398
|
msg = msg.replace(/\%r/, notFound);
|
|
1442
|
-
//console.warn(msg);
|
|
1399
|
+
//console.warn(msg);
|
|
1443
1400
|
} else {
|
|
1444
1401
|
++self.notFound[notFound].count;
|
|
1445
1402
|
}
|
|
1446
|
-
|
|
1403
|
+
|
|
1447
1404
|
return false
|
|
1448
|
-
}
|
|
1405
|
+
}
|
|
1449
1406
|
return false
|
|
1450
1407
|
}
|
|
1451
1408
|
|
|
1452
|
-
|
|
1453
|
-
console.warn( new Error('[ RoutingHelper::getRouteByUrl(rule[, bundle, method, request]) ] : route not found for url: `' + url + '` !').stack );
|
|
1409
|
+
|
|
1410
|
+
console.warn( new Error('[ RoutingHelper::getRouteByUrl(rule[, bundle, method, request]) ] : route not found for url: `' + url + '` !').stack );
|
|
1454
1411
|
return false;
|
|
1455
1412
|
} else {
|
|
1456
1413
|
// fix url in case of empty param value allowed by the routing rule
|
|
@@ -1461,21 +1418,21 @@ function Routing() {
|
|
|
1461
1418
|
// adding hash if found
|
|
1462
1419
|
if (hash)
|
|
1463
1420
|
url += hash;
|
|
1464
|
-
|
|
1421
|
+
|
|
1465
1422
|
route.url = url;
|
|
1466
1423
|
// recommanded for x-bundle coms
|
|
1467
1424
|
// leave `ignoreWebRoot` empty or set it to false for x-bundle coms
|
|
1468
|
-
route.toUrl = function (ignoreWebRoot) {
|
|
1425
|
+
route.toUrl = function (ignoreWebRoot) {
|
|
1469
1426
|
var wroot = this.webroot
|
|
1470
1427
|
, hostname = this.hostname
|
|
1471
1428
|
, path = this.url
|
|
1472
1429
|
;
|
|
1473
|
-
|
|
1430
|
+
|
|
1474
1431
|
this.url = ( typeof(ignoreWebRoot) != 'undefined' && ignoreWebRoot == true ) ? path.replace(wroot, '/') : path;
|
|
1475
|
-
|
|
1432
|
+
|
|
1476
1433
|
return hostname + this.url
|
|
1477
1434
|
};
|
|
1478
|
-
|
|
1435
|
+
|
|
1479
1436
|
return route
|
|
1480
1437
|
}
|
|
1481
1438
|
}
|
|
@@ -1487,6 +1444,6 @@ if ((typeof (module) !== 'undefined') && module.exports) {
|
|
|
1487
1444
|
// Publish as node.js module
|
|
1488
1445
|
module.exports = Routing()
|
|
1489
1446
|
} else if (typeof (define) === 'function' && define.amd) {
|
|
1490
|
-
// Publish as AMD module
|
|
1491
|
-
define('
|
|
1447
|
+
// Publish as AMD module
|
|
1448
|
+
define('lib/routing', ['require', 'lib/form-validator', 'lib/merge'], function() { return Routing() })
|
|
1492
1449
|
}
|