You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by il...@apache.org on 2018/08/21 02:33:07 UTC
[incubator-dubbo-ops] branch develop updated: Restful (#87)
This is an automated email from the ASF dual-hosted git repository.
iluo pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-ops.git
The following commit(s) were added to refs/heads/develop by this push:
new ec776c5 Restful (#87)
ec776c5 is described below
commit ec776c565f5c41bc17ae7327cce2dbef884a9a24
Author: min <z8...@gmail.com>
AuthorDate: Tue Aug 21 10:33:05 2018 +0800
Restful (#87)
* add restController
* controller
* add adminLTE
* update
* add routing rule page
* reconstruction
* update readme and configuration
* change file name to satisfy travis ci
* change title to dubbo ops
* relocation restful controller
* remove author & add license
* import specific class instead of *
* add ASF License & change theme
---
.gitignore | 6 +
README.md | 2 +-
dubbo-admin/README.md | 17 +
dubbo-admin/dubbo-ops-backend/pom.xml | 110 +
.../apache/dubbo/admin}/DubboAdminApplication.java | 2 +-
.../java/org/apache/dubbo/admin}/SpringUtil.java | 3 +-
.../org/apache/dubbo/admin}/config/I18nConfig.java | 6 +-
.../dubbo/admin}/config/XmlConfiguration.java | 2 +-
.../dubbo/admin/controller/ServiceController.java | 119 +
.../org/apache/dubbo/admin/domain/ServiceDO.java | 57 +
.../apache/dubbo/admin/domain/ServiceDetailDO.java | 45 +
.../apache/dubbo/admin}/filter/LoginFilter.java | 38 +-
.../biz/common/i18n/MessageResourceService.java | 2 +-
.../i18n/impl/MessageResourceServiceImpl.java | 7 +-
.../admin}/governance/service/ConfigService.java | 6 +-
.../admin}/governance/service/ConsumerService.java | 8 +-
.../admin}/governance/service/OverrideService.java | 6 +-
.../admin}/governance/service/OwnerService.java | 6 +-
.../admin}/governance/service/ProviderService.java | 8 +-
.../admin}/governance/service/RouteService.java | 6 +-
.../admin}/governance/service/UserService.java | 6 +-
.../governance/service/impl/AbstractService.java | 11 +-
.../governance/service/impl/ConfigServiceImpl.java | 8 +-
.../service/impl/ConsumerServiceImpl.java | 32 +-
.../service/impl/OverrideServiceImpl.java | 19 +-
.../governance/service/impl/OwnerServiceImpl.java | 25 +-
.../service/impl/ProviderServiceImpl.java | 44 +-
.../governance/service/impl/RouteServiceImpl.java | 19 +-
.../governance/service/impl/UserServiceImpl.java | 15 +-
.../admin}/governance/sync/RegistryServerSync.java | 19 +-
.../dubbo/admin}/governance/sync/util/Pair.java | 2 +-
.../admin}/governance/sync/util/SyncUtils.java | 18 +-
.../admin}/governance/util/GovernanceWarmup.java | 5 +-
.../dubbo/admin}/governance/util/Paginator.java | 2 +-
.../dubbo/admin}/governance/util/UrlUtils.java | 2 +-
.../dubbo/admin}/governance/util/WebConstants.java | 2 +-
.../admin}/registry/common/ChangeListener.java | 2 +-
.../admin}/registry/common/StatusManager.java | 10 +-
.../admin}/registry/common/domain/Access.java | 2 +-
.../admin}/registry/common/domain/Agreement.java | 2 +-
.../admin}/registry/common/domain/Approval.java | 2 +-
.../common/domain/ApprovalRequisition.java | 2 +-
.../admin}/registry/common/domain/Change.java | 2 +-
.../admin}/registry/common/domain/Cluster.java | 2 +-
.../admin}/registry/common/domain/Config.java | 2 +-
.../admin}/registry/common/domain/Consumer.java | 10 +-
.../admin}/registry/common/domain/DependItem.java | 2 +-
.../admin}/registry/common/domain/Dependency.java | 2 +-
.../admin}/registry/common/domain/Document.java | 2 +-
.../admin}/registry/common/domain/Entity.java | 2 +-
.../admin}/registry/common/domain/Favorite.java | 2 +-
.../admin}/registry/common/domain/Feature.java | 2 +-
.../dubbo/admin}/registry/common/domain/Layer.java | 2 +-
.../admin}/registry/common/domain/LoadBalance.java | 2 +-
.../dubbo/admin}/registry/common/domain/Mock.java | 2 +-
.../admin}/registry/common/domain/Operation.java | 2 +-
.../admin}/registry/common/domain/Override.java | 6 +-
.../dubbo/admin}/registry/common/domain/Owner.java | 2 +-
.../admin}/registry/common/domain/PageList.java | 2 +-
.../admin}/registry/common/domain/Provider.java | 10 +-
.../admin}/registry/common/domain/Registry.java | 2 +-
.../dubbo/admin}/registry/common/domain/Route.java | 6 +-
.../registry/common/domain/SearchHistory.java | 2 +-
.../dubbo/admin}/registry/common/domain/Test.java | 2 +-
.../dubbo/admin}/registry/common/domain/User.java | 6 +-
.../admin}/registry/common/domain/Weight.java | 2 +-
.../registry/common/registry/ConvertUtil.java | 8 +-
.../registry/common/route/OverrideUtils.java | 12 +-
.../admin}/registry/common/route/ParseUtils.java | 14 +-
.../admin}/registry/common/route/RouteRule.java | 14 +-
.../registry/common/route/RouteRuleUtils.java | 14 +-
.../admin}/registry/common/route/RouteUtils.java | 22 +-
.../common/status/DatabaseStatusChecker.java | 14 +-
.../registry/common/status/LoadStatusChecker.java | 8 +-
.../common/status/MemoryStatusChecker.java | 2 +-
.../dubbo/admin}/registry/common/util/Coder.java | 6 +-
.../admin}/registry/common/util/Entities.java | 2 +-
.../admin}/registry/common/util/IntHashMap.java | 2 +-
.../admin}/registry/common/util/LocaleUtils.java | 2 +-
.../admin}/registry/common/util/MessageSource.java | 8 +-
.../admin}/registry/common/util/OverrideUtils.java | 12 +-
.../registry/common/util/StringEscapeUtils.java | 2 +-
.../dubbo/admin}/registry/common/util/Tool.java | 16 +-
.../dubbo/admin}/web/mvc/BaseController.java | 28 +-
.../dubbo/admin/web/mvc/RouterController.java | 344 +
.../admin}/web/mvc/common/auth/DubboUser.java | 6 +-
.../admin}/web/mvc/common/i18n/LocaleUtil.java | 2 +-
.../web/mvc/governance/AccessesController.java | 73 +-
.../web/mvc/governance/AddressesController.java | 66 +
.../web/mvc/governance/LoadbalancesController.java | 42 +-
.../web/mvc/governance/OverridesController.java | 57 +-
.../web/mvc/governance/OwnersController.java | 30 +-
.../web/mvc/governance/RoutesController.java | 155 +-
.../mvc/governance/ServiceDetailController.java} | 418 +-
.../web/mvc/governance/ServicesController.java | 33 +-
.../web/mvc/governance/WeightsController.java | 67 +-
.../dubbo/admin/web/mvc/home/IndexController.java | 48 +
.../admin}/web/mvc/sysinfo/DumpController.java | 33 +-
.../admin}/web/mvc/sysinfo/DumpsController.java | 20 +-
.../admin}/web/mvc/sysinfo/EnvsController.java | 22 +-
.../admin}/web/mvc/sysinfo/LogsController.java | 42 +-
.../admin}/web/mvc/sysinfo/StatusesController.java | 18 +-
.../admin}/web/mvc/sysinfo/VersionsController.java | 27 +-
.../dubbo/admin}/web/pulltool/DateFormatUtil.java | 6 +-
.../dubbo/admin}/web/pulltool/RootContextPath.java | 2 +-
.../org/apache/dubbo/admin}/web/pulltool/Tool.java | 46 +-
.../src/main/resources/application.properties | 20 +
.../src/main/resources/dubbo-admin.xml | 1 -
.../src/main/resources/log4j.properties | 0
dubbo-admin/dubbo-ops-frontend/.babelrc | 12 +
dubbo-admin/dubbo-ops-frontend/.editorconfig | 9 +
dubbo-admin/dubbo-ops-frontend/.eslintignore | 4 +
dubbo-admin/dubbo-ops-frontend/.eslintrc.js | 25 +
dubbo-admin/dubbo-ops-frontend/.gitignore | 14 +
dubbo-admin/dubbo-ops-frontend/.postcssrc.js | 10 +
dubbo-admin/dubbo-ops-frontend/README.md | 21 +
dubbo-admin/dubbo-ops-frontend/build/build.js | 41 +
.../dubbo-ops-frontend/build/check-versions.js | 54 +
dubbo-admin/dubbo-ops-frontend/build/logo.png | Bin 0 -> 6849 bytes
dubbo-admin/dubbo-ops-frontend/build/utils.js | 101 +
.../dubbo-ops-frontend/build/vue-loader.conf.js | 22 +
.../dubbo-ops-frontend/build/webpack.base.conf.js | 92 +
.../dubbo-ops-frontend/build/webpack.dev.conf.js | 95 +
.../dubbo-ops-frontend/build/webpack.prod.conf.js | 145 +
dubbo-admin/dubbo-ops-frontend/config/dev.env.js | 7 +
dubbo-admin/dubbo-ops-frontend/config/index.js | 76 +
dubbo-admin/dubbo-ops-frontend/config/prod.env.js | 4 +
dubbo-admin/dubbo-ops-frontend/index.html | 30 +
dubbo-admin/dubbo-ops-frontend/package-lock.json | 11910 +++++++++++++++++++
dubbo-admin/dubbo-ops-frontend/package.json | 76 +
dubbo-admin/dubbo-ops-frontend/pom.xml | 81 +
dubbo-admin/dubbo-ops-frontend/src/.gitrepo | 12 +
dubbo-admin/dubbo-ops-frontend/src/App.vue | 64 +
.../dubbo-ops-frontend/src/assets/dubbo.svg | 1 +
dubbo-admin/dubbo-ops-frontend/src/assets/logo.png | Bin 0 -> 5674 bytes
.../dubbo-ops-frontend/src/components/Drawer.vue | 97 +
.../dubbo-ops-frontend/src/components/Footers.vue | 31 +
.../src/components/RoutingRule.vue | 193 +
.../src/components/ServiceDetail.vue | 237 +
.../src/components/ServiceSearch.vue | 120 +
.../dubbo-ops-frontend/src/components/Toolbar.vue | 49 +
dubbo-admin/dubbo-ops-frontend/src/main.js | 38 +
dubbo-admin/dubbo-ops-frontend/src/router/index.js | 44 +
dubbo-admin/dubbo-ops-frontend/src/store/index.js | 30 +
dubbo-admin/dubbo-ops-frontend/static/.gitkeep | 0
dubbo-admin/pom.xml | 81 +-
.../dubboadmin/governance/util/ContextUtil.java | 38 -
.../dubboadmin/web/mvc/RouterController.java | 344 -
.../web/mvc/governance/AddressesController.java | 155 -
.../web/mvc/governance/ApplicationsController.java | 336 -
.../governance/NoServicePrivilegeController.java | 36 -
.../web/mvc/governance/ProvidersController.java | 507 -
.../dubboadmin/web/mvc/home/DisableController.java | 65 -
.../dubboadmin/web/mvc/home/IndexController.java | 87 -
.../dubboadmin/web/mvc/home/LookupController.java | 83 -
.../dubboadmin/web/mvc/home/RegController.java | 42 -
.../web/mvc/home/RegisterController.java | 75 -
.../dubboadmin/web/mvc/home/RestfulController.java | 99 -
.../dubboadmin/web/mvc/home/ResultController.java | 78 -
.../web/mvc/home/ServicestatusController.java | 66 -
.../dubboadmin/web/mvc/home/ShellController.java | 78 -
.../dubboadmin/web/mvc/home/StatusController.java | 68 -
.../dubboadmin/web/mvc/home/UnregController.java | 56 -
.../web/mvc/home/UnregisterController.java | 64 -
.../web/mvc/home/UnregisterallController.java | 61 -
.../web/mvc/personal/InfosController.java | 51 -
.../web/mvc/personal/PasswdsController.java | 49 -
.../web/mvc/sysmanage/ConfigsController.java | 89 -
.../web/mvc/sysmanage/PrivilegesController.java | 23 -
.../web/mvc/sysmanage/UserownController.java | 43 -
.../dubboadmin/web/pulltool/I18nMessageTool.java | 46 -
.../alibaba/dubboadmin/web/pulltool/ToolUtil.java | 52 -
.../src/main/resources/application.properties | 27 -
.../src/main/resources/i18n/message.properties | 16 -
.../src/main/resources/i18n/message_en.properties | 768 --
.../src/main/resources/i18n/message_zh.properties | 802 --
.../main/resources/i18n/message_zh_CN.properties | 802 --
.../main/resources/i18n/message_zh_TW.properties | 726 --
.../src/main/resources/static/css/common.css | 689 --
.../src/main/resources/static/css/dubbo.css | 335 -
dubbo-admin/src/main/resources/static/css/skin.css | 275 -
.../src/main/resources/static/images/404error.gif | Bin 2131 -> 0 bytes
.../src/main/resources/static/images/bg01.gif | Bin 52 -> 0 bytes
.../src/main/resources/static/images/bg02.gif | Bin 52 -> 0 bytes
.../src/main/resources/static/images/bg03.gif | Bin 52 -> 0 bytes
.../src/main/resources/static/images/bg04.gif | Bin 816 -> 0 bytes
.../src/main/resources/static/images/btn_info.png | Bin 3713 -> 0 bytes
.../main/resources/static/images/btn_service.png | Bin 3718 -> 0 bytes
.../main/resources/static/images/button_hover.png | Bin 3084 -> 0 bytes
.../main/resources/static/images/button_normal.png | Bin 3551 -> 0 bytes
.../src/main/resources/static/images/co_01.gif | Bin 138 -> 0 bytes
.../src/main/resources/static/images/co_02.gif | Bin 141 -> 0 bytes
.../src/main/resources/static/images/co_03.gif | Bin 141 -> 0 bytes
.../src/main/resources/static/images/co_04.gif | Bin 142 -> 0 bytes
.../src/main/resources/static/images/dog.gif | Bin 1908 -> 0 bytes
.../main/resources/static/images/dubbo_list_th.png | Bin 3558 -> 0 bytes
.../src/main/resources/static/images/exit.png | Bin 3888 -> 0 bytes
.../src/main/resources/static/images/fav_arrow.png | Bin 3888 -> 0 bytes
.../resources/static/images/fav_tab_active.png | Bin 2889 -> 0 bytes
.../resources/static/images/fav_tab_normal.png | Bin 2867 -> 0 bytes
.../src/main/resources/static/images/fav_title.png | Bin 3553 -> 0 bytes
.../src/main/resources/static/images/head_bg.png | Bin 2836 -> 0 bytes
.../src/main/resources/static/images/ico_add.png | Bin 3050 -> 0 bytes
.../src/main/resources/static/images/ico_back.png | Bin 3258 -> 0 bytes
.../main/resources/static/images/ico_balance.png | Bin 3090 -> 0 bytes
.../main/resources/static/images/ico_cancel.png | Bin 3487 -> 0 bytes
.../main/resources/static/images/ico_delete.png | Bin 3223 -> 0 bytes
.../main/resources/static/images/ico_disable.png | Bin 3206 -> 0 bytes
.../src/main/resources/static/images/ico_down.png | Bin 318 -> 0 bytes
.../src/main/resources/static/images/ico_edit.png | Bin 3053 -> 0 bytes
.../main/resources/static/images/ico_enable.png | Bin 3252 -> 0 bytes
.../src/main/resources/static/images/ico_error.png | Bin 222 -> 0 bytes
.../main/resources/static/images/ico_favorite.png | Bin 3287 -> 0 bytes
.../src/main/resources/static/images/ico_forb.png | Bin 3924 -> 0 bytes
.../src/main/resources/static/images/ico_graph.png | Bin 280 -> 0 bytes
.../src/main/resources/static/images/ico_help.png | Bin 924 -> 0 bytes
.../src/main/resources/static/images/ico_list.png | Bin 344 -> 0 bytes
.../main/resources/static/images/ico_password.png | Bin 3267 -> 0 bytes
.../main/resources/static/images/ico_reconnect.png | Bin 3018 -> 0 bytes
.../main/resources/static/images/ico_recover.png | Bin 3371 -> 0 bytes
.../main/resources/static/images/ico_register.png | Bin 3312 -> 0 bytes
.../main/resources/static/images/ico_reload.png | Bin 3016 -> 0 bytes
.../main/resources/static/images/ico_renotify.png | Bin 3173 -> 0 bytes
.../src/main/resources/static/images/ico_run.png | Bin 3592 -> 0 bytes
.../src/main/resources/static/images/ico_save.png | Bin 3084 -> 0 bytes
.../main/resources/static/images/ico_search.png | Bin 3326 -> 0 bytes
.../src/main/resources/static/images/ico_show.png | Bin 3195 -> 0 bytes
.../main/resources/static/images/ico_subscribe.png | Bin 3142 -> 0 bytes
.../src/main/resources/static/images/ico_tree.png | Bin 356 -> 0 bytes
.../src/main/resources/static/images/ico_up.png | Bin 1499 -> 0 bytes
.../src/main/resources/static/images/ico_user.png | Bin 3066 -> 0 bytes
.../src/main/resources/static/images/ico_warn.png | Bin 644 -> 0 bytes
.../src/main/resources/static/images/input.png | Bin 3586 -> 0 bytes
.../src/main/resources/static/images/login_bg.png | Bin 145515 -> 0 bytes
.../src/main/resources/static/images/login_box.png | Bin 13308 -> 0 bytes
.../resources/static/images/login_btn_hover.png | Bin 2983 -> 0 bytes
.../resources/static/images/login_btn_normal.png | Bin 296 -> 0 bytes
.../main/resources/static/images/login_shadow.png | Bin 3585 -> 0 bytes
.../src/main/resources/static/images/logo.png | Bin 15743 -> 0 bytes
.../src/main/resources/static/images/main_bg.png | Bin 2864 -> 0 bytes
.../src/main/resources/static/images/nav_bg.png | Bin 2857 -> 0 bytes
.../main/resources/static/images/nav_btn_bg22.png | Bin 3211 -> 0 bytes
.../main/resources/static/images/nav_btn_bg3.png | Bin 1996 -> 0 bytes
.../main/resources/static/images/nav_btn_bg33.png | Bin 4856 -> 0 bytes
.../main/resources/static/images/nav_btn_bg44.png | Bin 4594 -> 0 bytes
.../src/main/resources/static/images/nav_pass.png | Bin 3662 -> 0 bytes
.../main/resources/static/images/nav_selected.png | Bin 3652 -> 0 bytes
.../src/main/resources/static/images/pop_close.png | Bin 3950 -> 0 bytes
.../src/main/resources/static/images/pop_left.png | Bin 3546 -> 0 bytes
.../resources/static/images/pop_leftbottom.png | Bin 3693 -> 0 bytes
.../resources/static/images/pop_lefttop_small.png | Bin 6954 -> 0 bytes
.../main/resources/static/images/pop_midbottom.png | Bin 3549 -> 0 bytes
.../resources/static/images/pop_midtop_small.png | Bin 3549 -> 0 bytes
.../src/main/resources/static/images/pop_right.png | Bin 3547 -> 0 bytes
.../resources/static/images/pop_rightbottom.png | Bin 2973 -> 0 bytes
.../resources/static/images/pop_righttop_small.png | Bin 5186 -> 0 bytes
.../main/resources/static/images/search_active.png | Bin 2866 -> 0 bytes
.../main/resources/static/images/search_btn.png | Bin 654 -> 0 bytes
.../resources/static/images/search_global_m.png | Bin 3579 -> 0 bytes
.../main/resources/static/images/search_input.png | Bin 4228 -> 0 bytes
.../main/resources/static/images/search_line.png | Bin 2795 -> 0 bytes
.../main/resources/static/images/tab_active.png | Bin 3541 -> 0 bytes
.../resources/static/images/table_title_bg.png | Bin 3595 -> 0 bytes
.../main/resources/static/images/tip_choose.png | Bin 10725 -> 0 bytes
.../main/resources/static/images/tip_confirm.png | Bin 11185 -> 0 bytes
.../src/main/resources/static/images/tip_del.png | Bin 19215 -> 0 bytes
.../main/resources/static/images/tip_succeed.png | Bin 19527 -> 0 bytes
.../main/resources/static/images/tree-blank.gif | Bin 69 -> 0 bytes
.../resources/static/images/tree-down-left.gif | Bin 100 -> 0 bytes
.../src/main/resources/static/images/tree-down.gif | Bin 103 -> 0 bytes
.../main/resources/static/images/tree-left-up.gif | Bin 98 -> 0 bytes
.../resources/static/images/tree-right-down.gif | Bin 94 -> 0 bytes
.../main/resources/static/images/tree-up-right.gif | Bin 101 -> 0 bytes
.../src/main/resources/static/images/tree-up.gif | Bin 104 -> 0 bytes
dubbo-admin/src/main/resources/static/js/ajax.js | 89 -
dubbo-admin/src/main/resources/static/js/box.js | 97 -
dubbo-admin/src/main/resources/static/js/dubbo.js | 546 -
.../main/resources/static/js/jquery-1.4.2.min.js | 154 -
.../main/resources/static/js/jquery.hoverIntent.js | 150 -
.../resources/static/js/jquery.simplemodal-1.4.js | 721 --
dubbo-admin/src/main/resources/static/js/menu.js | 69 -
dubbo-admin/src/main/resources/static/js/pop.js | 82 -
.../src/main/resources/static/js/trcolor.js | 47 -
.../resources/templates/common/screen/error_404.vm | 152 -
.../templates/common/screen/error_other.vm | 133 -
.../src/main/resources/templates/default.vm | 15 -
.../templates/governance/layout/default.vm | 294 -
.../governance/layout/noServicePrivilege.vm | 29 -
.../templates/governance/layout/redirect.vm | 29 -
.../templates/governance/layout/search.vm | 15 -
.../templates/governance/screen/accesses/add.vm | 108 -
.../templates/governance/screen/accesses/index.vm | 92 -
.../templates/governance/screen/addresses/index.vm | 62 -
.../governance/screen/addresses/search.vm | 19 -
.../governance/screen/applications/index.vm | 156 -
.../governance/screen/applications/search.vm | 19 -
.../templates/governance/screen/consumers/edit.vm | 143 -
.../templates/governance/screen/consumers/index.vm | 219 -
.../governance/screen/consumers/notified.vm | 133 -
.../governance/screen/consumers/routed.vm | 139 -
.../templates/governance/screen/consumers/show.vm | 139 -
.../resources/templates/governance/screen/error.vm | 15 -
.../governance/screen/loadbalances/add.vm | 120 -
.../governance/screen/loadbalances/edit.vm | 103 -
.../governance/screen/loadbalances/index.vm | 82 -
.../governance/screen/loadbalances/show.vm | 45 -
.../governance/screen/noServicePrivilege.vm | 44 -
.../templates/governance/screen/overrides/add.vm | 208 -
.../templates/governance/screen/overrides/edit.vm | 232 -
.../templates/governance/screen/overrides/index.vm | 90 -
.../templates/governance/screen/overrides/show.vm | 183 -
.../templates/governance/screen/owners/add.vm | 71 -
.../templates/governance/screen/owners/index.vm | 55 -
.../templates/governance/screen/providers/add.vm | 98 -
.../templates/governance/screen/providers/edit.vm | 109 -
.../templates/governance/screen/providers/index.vm | 182 -
.../templates/governance/screen/providers/show.vm | 126 -
.../templates/governance/screen/redirect.vm | 73 -
.../templates/governance/screen/routes/add.vm | 265 -
.../templates/governance/screen/routes/edit.vm | 268 -
.../templates/governance/screen/routes/index.vm | 122 -
.../templates/governance/screen/routes/preview.vm | 29 -
.../governance/screen/routes/routeselect.vm | 108 -
.../templates/governance/screen/routes/show.vm | 95 -
.../templates/governance/screen/services/index.vm | 169 -
.../templates/governance/screen/services/search.vm | 19 -
.../templates/governance/screen/weights/add.vm | 142 -
.../templates/governance/screen/weights/edit.vm | 132 -
.../templates/governance/screen/weights/index.vm | 69 -
.../templates/governance/screen/weights/show.vm | 90 -
.../main/resources/templates/home/control/menu.vm | 136 -
.../main/resources/templates/home/screen/ajax.vm | 15 -
.../main/resources/templates/home/screen/index.vm | 284 -
.../resources/templates/home/screen/services.vm | 26 -
.../resources/templates/sysinfo/layout/default.vm | 148 -
.../resources/templates/sysinfo/layout/redirect.vm | 29 -
.../resources/templates/sysinfo/layout/search.vm | 15 -
.../templates/sysinfo/screen/dumps/index.vm | 76 -
.../templates/sysinfo/screen/envs/index.vm | 35 -
.../templates/sysinfo/screen/logs/index.vm | 55 -
.../resources/templates/sysinfo/screen/redirect.vm | 71 -
.../templates/sysinfo/screen/socketConn.vm | 122 -
.../templates/sysinfo/screen/statuses/index.vm | 59 -
.../templates/sysinfo/screen/versions/index.vm | 35 -
.../templates/sysinfo/screen/versions/show.vm | 38 -
.../dubboadmin/DubboAdminApplicationTests.java | 35 -
dubbo-monitor-simple/pom.xml | 1 +
pom.xml | 29 +-
348 files changed, 15351 insertions(+), 16555 deletions(-)
diff --git a/.gitignore b/.gitignore
index 7f60d60..1a623e7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,9 @@ target/
# system ignore
.DS_Store
Thumbs.db
+
+dubbo-admin/dubbo-ops-backend/src/main/resources/public
+dubbo-admin/dubbo-ops-backend/target
+dubbo-admin/dubbo-ops-frontend/dist
+dubbo-admin/dubbo-ops-frontend/node
+dubbo-admin/dubbo-ops-frontend/node-modules
diff --git a/README.md b/README.md
index e81a20c..eb41128 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@ The following modules in [Apache Dubbo(incubating)](https://github.com/apache/in
You can get a release of dubbo monitor in two steps:
#### dubbo admin
-dubbo admin is a spring boot application, you can start it with fat jar or in IDE directly
+please refer to the README.md in dubbo admin module
#### dubbo monitor and dubbo registry
- Step 1:
diff --git a/dubbo-admin/README.md b/dubbo-admin/README.md
new file mode 100644
index 0000000..7ebecf3
--- /dev/null
+++ b/dubbo-admin/README.md
@@ -0,0 +1,17 @@
+# Dubbo admin
+
+> dubbo admin front end and back end
+
+## Build setup
+
+``` bash
+# build
+mvn clean install
+
+# run
+mvn --projects dubbo-ops-backend spring-boot:run
+
+# visit
+localhost:8080
+
+```
\ No newline at end of file
diff --git a/dubbo-admin/dubbo-ops-backend/pom.xml b/dubbo-admin/dubbo-ops-backend/pom.xml
new file mode 100644
index 0000000..bb42768
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/pom.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ he License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>dubbo-admin</artifactId>
+ <groupId>org.apache</groupId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>dubbo-ops-backend</artifactId>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <java.version>1.8</java.version>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>3.7</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>dubbo</artifactId>
+ <version>2.6.2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.curator</groupId>
+ <artifactId>curator-framework</artifactId>
+ <version>2.12.0</version>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ <version>1.2.46</version>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy Vue.js frontend content</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>src/main/resources/public</outputDirectory>
+ <overwrite>true</overwrite>
+ <resources>
+ <resource>
+ <directory>${project.parent.basedir}/dubbo-ops-frontend/target/dist</directory>
+ <includes>
+ <include>static/</include>
+ <include>index.html</include>
+ </includes>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+
+</project>
\ No newline at end of file
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/DubboAdminApplication.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/DubboAdminApplication.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/DubboAdminApplication.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/DubboAdminApplication.java
index 58ba7c3..fe4d601 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/DubboAdminApplication.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/DubboAdminApplication.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin;
+package org.apache.dubbo.admin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/SpringUtil.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/SpringUtil.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/SpringUtil.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/SpringUtil.java
index c390c09..237f6a7 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/SpringUtil.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/SpringUtil.java
@@ -15,12 +15,11 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin;
+package org.apache.dubbo.admin;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
-
import org.springframework.context.ApplicationContext;
public class SpringUtil {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/I18nConfig.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/config/I18nConfig.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/I18nConfig.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/config/I18nConfig.java
index 669949d..5631dbb 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/I18nConfig.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/config/I18nConfig.java
@@ -15,9 +15,7 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.config;
-
-import java.util.Locale;
+package org.apache.dubbo.admin.config;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
@@ -29,6 +27,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
+import java.util.Locale;
+
@Configuration
@EnableAutoConfiguration
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/XmlConfiguration.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/config/XmlConfiguration.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/XmlConfiguration.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/config/XmlConfiguration.java
index 9c94a83..92f3460 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/config/XmlConfiguration.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/config/XmlConfiguration.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.config;
+package org.apache.dubbo.admin.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
diff --git a/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
new file mode 100644
index 0000000..13ede87
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * he License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dubbo.admin.controller;
+
+import org.apache.dubbo.admin.domain.ServiceDO;
+import org.apache.dubbo.admin.domain.ServiceDetailDO;
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+@RestController
+@RequestMapping("/service")
+public class ServiceController {
+
+ @Autowired
+ private ProviderService providerService;
+
+ @Autowired
+ private ConsumerService consumerService;
+
+ @RequestMapping("/search")
+ public List<ServiceDO> search(@RequestParam String filter,
+ @RequestParam String pattern,
+ HttpServletRequest request,
+ HttpServletResponse response, Model model) {
+
+ List<Provider> allProviders = providerService.findAll();
+
+ List<ServiceDO> result = new ArrayList<>();
+ if (pattern.equals("app")) {
+ for (Provider provider : allProviders) {
+ Map<String, String> map = StringUtils.parseQueryString(provider.getParameters());
+ String app = map.get(Constants.APPLICATION_KEY);
+ if (app.toLowerCase().contains(filter)) {
+ ServiceDO s = new ServiceDO();
+ s.setAppName(app);
+ s.setServiceName(provider.getService());
+ s.setGroup(map.get(Constants.GROUP_KEY));
+ s.setVersion(map.get(Constants.VERSION_KEY));
+ result.add(s);
+ }
+ }
+
+ } else if (pattern.equals("service")) {
+ for (Provider provider : allProviders) {
+ String service = provider.getService();
+ Map<String, String> map = StringUtils.parseQueryString(provider.getParameters());
+ if (service.toLowerCase().contains(filter.toLowerCase())) {
+ ServiceDO s = new ServiceDO();
+ s.setAppName(map.get(Constants.APPLICATION_KEY));
+ s.setServiceName(service);
+ s.setGroup(map.get(Constants.GROUP_KEY));
+ s.setVersion(map.get(Constants.VERSION_KEY));
+ result.add(s);
+ }
+ }
+
+ } else if (pattern.equals("ip")) {
+ for (Provider provider : allProviders) {
+ String address = provider.getAddress();
+ Map<String, String> map = StringUtils.parseQueryString(provider.getParameters());
+ if (address.contains(filter)) {
+ ServiceDO s = new ServiceDO();
+ s.setAppName(map.get(Constants.APPLICATION_KEY));
+ s.setServiceName(provider.getService());
+ s.setGroup(map.get(Constants.GROUP_KEY));
+ s.setVersion(map.get(Constants.VERSION_KEY));
+ result.add(s);
+ }
+
+ }
+ }
+ model.addAttribute("serviceDO", result);
+ return result;
+ }
+
+ @RequestMapping("/detail")
+ public ServiceDetailDO serviceDetail(@RequestParam String app, @RequestParam String service) {
+ List<Provider> providers = providerService.findByAppandService(app, service);
+
+ List<Consumer> consumers = consumerService.findByAppandService(app, service);
+
+ ServiceDetailDO serviceDetailDO = new ServiceDetailDO();
+ serviceDetailDO.setConsumers(consumers);
+ serviceDetailDO.setProviders(providers);
+ return serviceDetailDO;
+ }
+
+}
diff --git a/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDO.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDO.java
new file mode 100644
index 0000000..406b300
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDO.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * he License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dubbo.admin.domain;
+
+public class ServiceDO {
+ private String serviceName;
+ private String appName;
+ private String group;
+ private String version;
+
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ public void setServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ }
+
+ public String getAppName() {
+ return appName;
+ }
+
+ public void setAppName(String appName) {
+ this.appName = appName;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public void setGroup(String group) {
+ this.group = group;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDetailDO.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDetailDO.java
new file mode 100644
index 0000000..d590dbb
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDetailDO.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * he License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dubbo.admin.domain;
+
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+
+import java.util.List;
+
+public class ServiceDetailDO {
+
+ List<Provider> providers;
+ List<Consumer> consumers;
+
+ public List<Provider> getProviders() {
+ return providers;
+ }
+
+ public void setProviders(List<Provider> providers) {
+ this.providers = providers;
+ }
+
+ public List<Consumer> getConsumers() {
+ return consumers;
+ }
+
+ public void setConsumers(List<Consumer> consumers) {
+ this.consumers = consumers;
+ }
+}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/filter/LoginFilter.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/filter/LoginFilter.java
similarity index 94%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/filter/LoginFilter.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/filter/LoginFilter.java
index fe6c3aa..56959b3 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/filter/LoginFilter.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/filter/LoginFilter.java
@@ -15,8 +15,21 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.filter;
+package org.apache.dubbo.admin.filter;
+import org.apache.dubbo.admin.governance.service.UserService;
+import org.apache.dubbo.admin.governance.util.WebConstants;
+import org.apache.dubbo.admin.registry.common.domain.User;
+import org.apache.dubbo.admin.registry.common.util.Coder;
+import com.alibaba.dubbo.common.logger.Logger;
+import com.alibaba.dubbo.common.logger.LoggerFactory;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import javax.servlet.*;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
@@ -25,28 +38,7 @@ import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.dubbo.common.logger.Logger;
-import com.alibaba.dubbo.common.logger.LoggerFactory;
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.UserService;
-import com.alibaba.dubboadmin.governance.util.WebConstants;
-import com.alibaba.dubboadmin.registry.common.domain.User;
-import com.alibaba.dubboadmin.registry.common.util.Coder;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
+//@Component
public class LoginFilter implements Filter{
private static final Logger logger = LoggerFactory.getLogger(LoginFilter.class);
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/MessageResourceService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/MessageResourceService.java
similarity index 94%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/MessageResourceService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/MessageResourceService.java
index e70c5ce..cb527ab 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/MessageResourceService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/MessageResourceService.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.biz.common.i18n;
+package org.apache.dubbo.admin.governance.biz.common.i18n;
public interface MessageResourceService {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
similarity index 90%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
index c0b47b8..43f060f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
@@ -14,12 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.biz.common.i18n.impl;
+package org.apache.dubbo.admin.governance.biz.common.i18n.impl;
-import com.alibaba.dubboadmin.governance.biz.common.i18n.MessageResourceService;
-import com.alibaba.dubboadmin.web.mvc.common.i18n.LocaleUtil;
-
+import org.apache.dubbo.admin.web.mvc.common.i18n.LocaleUtil;
+import org.apache.dubbo.admin.governance.biz.common.i18n.MessageResourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.context.NoSuchMessageException;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConfigService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConfigService.java
similarity index 90%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConfigService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConfigService.java
index a3a0ee8..0554459 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConfigService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConfigService.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service;
+package org.apache.dubbo.admin.governance.service;
+
+import org.apache.dubbo.admin.registry.common.domain.Config;
import java.util.List;
import java.util.Map;
-import com.alibaba.dubboadmin.registry.common.domain.Config;
-
/**
* TODO Comment of ConfigDAO
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConsumerService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConsumerService.java
similarity index 89%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConsumerService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConsumerService.java
index e980eeb..3ea58aa 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ConsumerService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConsumerService.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service;
+package org.apache.dubbo.admin.governance.service;
-import java.util.List;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
+import java.util.List;
/**
* Query service for consumer info
@@ -51,6 +51,8 @@ public interface ConsumerService {
List<Consumer> findByApplication(String application);
+ List<Consumer> findByAppandService(String app, String serviceName);
+
List<String> findServicesByApplication(String application);
List<String> findServices();
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OverrideService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/OverrideService.java
similarity index 92%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OverrideService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/OverrideService.java
index afa2a67..8f31c3c 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OverrideService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/OverrideService.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service;
+package org.apache.dubbo.admin.governance.service;
-import java.util.List;
+import org.apache.dubbo.admin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
+import java.util.List;
public interface OverrideService {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OwnerService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/OwnerService.java
similarity index 91%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OwnerService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/OwnerService.java
index 367125a..4ffbd84 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/OwnerService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/OwnerService.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service;
+package org.apache.dubbo.admin.governance.service;
-import java.util.List;
+import org.apache.dubbo.admin.registry.common.domain.Owner;
-import com.alibaba.dubboadmin.registry.common.domain.Owner;
+import java.util.List;
public interface OwnerService {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ProviderService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
similarity index 91%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ProviderService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
index 15ba776..c95db9e 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/ProviderService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service;
+package org.apache.dubbo.admin.governance.service;
-import java.util.List;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
+import java.util.List;
/**
* ProviderService
@@ -54,6 +54,8 @@ public interface ProviderService {
List<Provider> findByService(String serviceName);
+ List<Provider> findByAppandService(String app, String serviceName);
+
List<Provider> findAll();
List<Provider> findByAddress(String providerAddress);
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/RouteService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/RouteService.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/RouteService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/RouteService.java
index 236d881..c667814 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/RouteService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/RouteService.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service;
+package org.apache.dubbo.admin.governance.service;
-import java.util.List;
+import org.apache.dubbo.admin.registry.common.domain.Route;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
+import java.util.List;
/**
* RouteService
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/UserService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/UserService.java
similarity index 92%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/UserService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/UserService.java
index 1869859..21bab2d 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/UserService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/UserService.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service;
+package org.apache.dubbo.admin.governance.service;
-import java.util.List;
+import org.apache.dubbo.admin.registry.common.domain.User;
-import com.alibaba.dubboadmin.registry.common.domain.User;
+import java.util.List;
/**
* UserService
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/AbstractService.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/AbstractService.java
similarity index 92%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/AbstractService.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/AbstractService.java
index 3c01d63..3db5428 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/AbstractService.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/AbstractService.java
@@ -14,19 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentMap;
+package org.apache.dubbo.admin.governance.service.impl;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.registry.RegistryService;
-import com.alibaba.dubboadmin.governance.sync.RegistryServerSync;
-
+import org.apache.dubbo.admin.governance.sync.RegistryServerSync;
import org.springframework.beans.factory.annotation.Autowired;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
+
/**
* IbatisDAO
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConfigServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConfigServiceImpl.java
similarity index 88%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConfigServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConfigServiceImpl.java
index 7921ac6..9cfa0d6 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConfigServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConfigServiceImpl.java
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
+package org.apache.dubbo.admin.governance.service.impl;
+
+import org.apache.dubbo.admin.governance.service.ConfigService;
+import org.apache.dubbo.admin.registry.common.domain.Config;
import java.util.List;
import java.util.Map;
-import com.alibaba.dubboadmin.governance.service.ConfigService;
-import com.alibaba.dubboadmin.registry.common.domain.Config;
-
/**
* TODO Comment of IbatisConfigDAO
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConsumerServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConsumerServiceImpl.java
similarity index 90%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConsumerServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConsumerServiceImpl.java
index bf7c3da..da4d8cb 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ConsumerServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConsumerServiceImpl.java
@@ -14,7 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
+package org.apache.dubbo.admin.governance.service.impl;
+
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.sync.util.Pair;
+import org.apache.dubbo.admin.governance.sync.util.SyncUtils;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
@@ -22,15 +30,6 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentMap;
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.sync.util.Pair;
-import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-
-import org.springframework.stereotype.Component;
-
@Component
public class ConsumerServiceImpl extends AbstractService implements ConsumerService {
@@ -178,6 +177,19 @@ public class ConsumerServiceImpl extends AbstractService implements ConsumerServ
return SyncUtils.url2ConsumerList(findConsumerUrlByApplication(application));
}
+ public List<Consumer> findByAppandService(String app, String serviceName) {
+ return SyncUtils.url2ConsumerList(findConsumerUrlByAppandService(app, serviceName));
+ }
+
+ private Map<Long, URL> findConsumerUrlByAppandService(String application, String service) {
+ Map<String, String> filter = new HashMap<>();
+ filter.put(Constants.CATEGORY_KEY, Constants.CONSUMERS_CATEGORY);
+ filter.put(Constants.APPLICATION_KEY, application);
+ filter.put(Constants.SERVICE_FILTER_KEY, service);
+
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
private Map<Long, URL> findConsumerUrlByApplication(String application) {
Map<String, String> filter = new HashMap<String, String>();
filter.put(Constants.CATEGORY_KEY, Constants.CONSUMERS_CATEGORY);
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OverrideServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OverrideServiceImpl.java
similarity index 95%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OverrideServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OverrideServiceImpl.java
index 151bbac..45af685 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OverrideServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OverrideServiceImpl.java
@@ -14,21 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+package org.apache.dubbo.admin.governance.service.impl;
+import org.apache.dubbo.admin.registry.common.domain.Override;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.sync.util.Pair;
-import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.sync.util.Pair;
+import org.apache.dubbo.admin.governance.sync.util.SyncUtils;
import org.springframework.stereotype.Component;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* IbatisOverrideDAO.java
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OwnerServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OwnerServiceImpl.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OwnerServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OwnerServiceImpl.java
index 4fa2613..dd276a7 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/OwnerServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OwnerServiceImpl.java
@@ -14,25 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+package org.apache.dubbo.admin.governance.service.impl;
+import org.apache.dubbo.admin.registry.common.domain.Override;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.OwnerService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Owner;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.OwnerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.Owner;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
@Component
public class OwnerServiceImpl extends AbstractService implements OwnerService {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ProviderServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ProviderServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
index 8ee59e1..64956c5 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/ProviderServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
@@ -14,7 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
+package org.apache.dubbo.admin.governance.service.impl;
+
+import org.apache.dubbo.admin.registry.common.domain.Override;
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.governance.sync.util.Pair;
+import org.apache.dubbo.admin.governance.sync.util.SyncUtils;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.registry.common.route.ParseUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
@@ -23,20 +36,6 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentMap;
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.governance.sync.util.Pair;
-import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.route.ParseUtils;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
/**
* IbatisProviderService
*
@@ -313,6 +312,10 @@ public class ProviderServiceImpl extends AbstractService implements ProviderServ
return SyncUtils.url2ProviderList(findProviderUrlByService(serviceName));
}
+ public List<Provider> findByAppandService(String app, String serviceName) {
+ return SyncUtils.url2ProviderList(findProviderUrlByAppandService(app, serviceName));
+ }
+
private Map<Long, URL> findProviderUrlByService(String service) {
Map<String, String> filter = new HashMap<String, String>();
filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
@@ -384,8 +387,17 @@ public class ProviderServiceImpl extends AbstractService implements ProviderServ
return SyncUtils.url2ProviderList(findProviderUrlByApplication(application));
}
+ private Map<Long, URL> findProviderUrlByAppandService(String app, String service) {
+ Map<String, String> filter = new HashMap<>();
+ filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
+ filter.put(Constants.APPLICATION_KEY, app);
+ filter.put(SyncUtils.SERVICE_FILTER_KEY, service);
+ return SyncUtils.filterFromCategory(getRegistryCache(), filter);
+ }
+
+
private Map<Long, URL> findProviderUrlByApplication(String application) {
- Map<String, String> filter = new HashMap<String, String>();
+ Map<String, String> filter = new HashMap<>();
filter.put(Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY);
filter.put(Constants.APPLICATION_KEY, application);
return SyncUtils.filterFromCategory(getRegistryCache(), filter);
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/RouteServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/RouteServiceImpl.java
similarity index 94%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/RouteServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/RouteServiceImpl.java
index f618e90..17911a7 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/RouteServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/RouteServiceImpl.java
@@ -14,21 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+package org.apache.dubbo.admin.governance.service.impl;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubboadmin.governance.service.RouteService;
-import com.alibaba.dubboadmin.governance.sync.util.Pair;
-import com.alibaba.dubboadmin.governance.sync.util.SyncUtils;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
-
+import org.apache.dubbo.admin.governance.service.RouteService;
+import org.apache.dubbo.admin.governance.sync.util.Pair;
+import org.apache.dubbo.admin.governance.sync.util.SyncUtils;
+import org.apache.dubbo.admin.registry.common.domain.Route;
import org.springframework.stereotype.Component;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
/**
* IbatisRouteService
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/UserServiceImpl.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/UserServiceImpl.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/UserServiceImpl.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/UserServiceImpl.java
index b100bad..b6fd76a 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/service/impl/UserServiceImpl.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/UserServiceImpl.java
@@ -14,18 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.service.impl;
-
-import java.util.List;
-import java.util.Map;
-
-import com.alibaba.dubboadmin.governance.service.UserService;
-import com.alibaba.dubboadmin.registry.common.domain.User;
-import com.alibaba.dubboadmin.registry.common.util.Coder;
+package org.apache.dubbo.admin.governance.service.impl;
+import org.apache.dubbo.admin.governance.service.UserService;
+import org.apache.dubbo.admin.registry.common.domain.User;
+import org.apache.dubbo.admin.registry.common.util.Coder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
+import java.util.List;
+import java.util.Map;
+
/**
* IBatisUserService
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/RegistryServerSync.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/RegistryServerSync.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/RegistryServerSync.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/RegistryServerSync.java
index 40d2ea2..deb63ed 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/RegistryServerSync.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/RegistryServerSync.java
@@ -14,16 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.sync;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.atomic.AtomicLong;
+package org.apache.dubbo.admin.governance.sync;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
@@ -33,13 +24,17 @@ import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.common.utils.StringUtils;
import com.alibaba.dubbo.registry.NotifyListener;
import com.alibaba.dubbo.registry.RegistryService;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
-
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.AtomicLong;
+
@Component
public class RegistryServerSync implements InitializingBean, DisposableBean, NotifyListener {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/Pair.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/Pair.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/Pair.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/Pair.java
index 0fbed83..872df67 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/Pair.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/Pair.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.sync.util;
+package org.apache.dubbo.admin.governance.sync.util;
import java.util.Map;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/SyncUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/SyncUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
index 96e94a3..04d26a5 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/sync/util/SyncUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
@@ -14,21 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.sync.util;
+package org.apache.dubbo.admin.governance.sync.util;
+
+import org.apache.dubbo.admin.registry.common.domain.Override;
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.registry.common.domain.Route;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
-
public class SyncUtils {
public static final String SERVICE_FILTER_KEY = ".service";
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/GovernanceWarmup.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/GovernanceWarmup.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/GovernanceWarmup.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/GovernanceWarmup.java
index e23c86a..b41e1ac 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/GovernanceWarmup.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/GovernanceWarmup.java
@@ -14,13 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.util;
+package org.apache.dubbo.admin.governance.util;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.common.status.StatusChecker;
-import com.alibaba.dubboadmin.registry.common.StatusManager;
-
+import org.apache.dubbo.admin.registry.common.StatusManager;
import org.springframework.beans.factory.InitializingBean;
public class GovernanceWarmup implements InitializingBean {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/Paginator.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/Paginator.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/Paginator.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/Paginator.java
index 4ec1152..3e4c122 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/Paginator.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/Paginator.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.util;
+package org.apache.dubbo.admin.governance.util;
import java.io.Serializable;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/UrlUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/UrlUtils.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/UrlUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/UrlUtils.java
index 15fa653..fdd1b40 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/UrlUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/UrlUtils.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.util;
+package org.apache.dubbo.admin.governance.util;
import java.util.Map;
import java.util.Map.Entry;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/WebConstants.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/WebConstants.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
index 9d6cc3f..aebaaf6 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/governance/util/WebConstants.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.governance.util;
+package org.apache.dubbo.admin.governance.util;
import java.util.HashMap;
import java.util.Map;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/ChangeListener.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/ChangeListener.java
similarity index 95%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/ChangeListener.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/ChangeListener.java
index d74361c..661f146 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/ChangeListener.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/ChangeListener.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common;
+package org.apache.dubbo.admin.registry.common;
public interface ChangeListener {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/StatusManager.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/StatusManager.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/StatusManager.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/StatusManager.java
index 5120bae..7f0d1ab 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/StatusManager.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/StatusManager.java
@@ -14,17 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common;
+package org.apache.dubbo.admin.registry.common;
+
+import com.alibaba.dubbo.common.status.Status;
+import com.alibaba.dubbo.common.status.Status.Level;
+import com.alibaba.dubbo.common.status.StatusChecker;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import com.alibaba.dubbo.common.status.Status;
-import com.alibaba.dubbo.common.status.Status.Level;
-import com.alibaba.dubbo.common.status.StatusChecker;
-
/**
* StatusManager
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Access.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Access.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Access.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Access.java
index 28baf26..19c187f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Access.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Access.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
public class Access extends Entity {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Agreement.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Agreement.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Agreement.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Agreement.java
index 8a55871..5e11877 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Agreement.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Agreement.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Specifies the applied Quality of Service Level Agreement (SLA) object.
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Approval.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Approval.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Approval.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Approval.java
index 921381c..ff37545 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Approval.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Approval.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Service online approval.
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/ApprovalRequisition.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/ApprovalRequisition.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/ApprovalRequisition.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/ApprovalRequisition.java
index d28ef0a..8e3ff2d 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/ApprovalRequisition.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/ApprovalRequisition.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Service online / offline approval
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Change.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Change.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Change.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Change.java
index 6859de7..846f3d8 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Change.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Change.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Service change information object
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Cluster.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Cluster.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Cluster.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Cluster.java
index 15124e3..820a2ee 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Cluster.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Cluster.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
public class Cluster extends Entity {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Config.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Config.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Config.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Config.java
index 72bfd40..2181c87 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Config.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Config.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Config instance
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Consumer.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Consumer.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Consumer.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Consumer.java
index c02f802..142c5a5 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Consumer.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Consumer.java
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+package org.apache.dubbo.admin.registry.common.domain;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.StringUtils;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
/**
* Consumer
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/DependItem.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/DependItem.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/DependItem.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/DependItem.java
index 0a0524b..805cbef 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/DependItem.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/DependItem.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
import java.util.ArrayList;
import java.util.List;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Dependency.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Dependency.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Dependency.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Dependency.java
index 46f1032..b981d16 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Dependency.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Dependency.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
import java.io.Serializable;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Document.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Document.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Document.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Document.java
index 95b8f9b..f529bbe 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Document.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Document.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Document
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Entity.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Entity.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Entity.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Entity.java
index 54531f7..3979309 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Entity.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Entity.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
import java.io.Serializable;
import java.util.Date;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Favorite.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Favorite.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Favorite.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Favorite.java
index bc65057..cd3e648 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Favorite.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Favorite.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
public class Favorite extends Entity {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Feature.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Feature.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Feature.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Feature.java
index f751ff5..c9d1eb9 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Feature.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Feature.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* System features
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Layer.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Layer.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Layer.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Layer.java
index 0ad3acf..3e19554 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Layer.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Layer.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
public class Layer extends Entity {
private static final long serialVersionUID = 6114868933223039253L;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/LoadBalance.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/LoadBalance.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/LoadBalance.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/LoadBalance.java
index 651b8ca..f0e1075 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/LoadBalance.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/LoadBalance.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* LoadBalance
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Mock.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Mock.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Mock.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Mock.java
index 1d88db7..48e2c58 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Mock.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Mock.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Mock
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Operation.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Operation.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Operation.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Operation.java
index 6043242..96ecb20 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Operation.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Operation.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
import java.util.Arrays;
import java.util.Collections;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Override.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Override.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Override.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Override.java
index eeedd20..5487a70 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Override.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Override.java
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
-
-import java.util.Map;
+package org.apache.dubbo.admin.registry.common.domain;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.StringUtils;
+import java.util.Map;
+
public class Override extends Entity {
private static final long serialVersionUID = 114828505391757846L;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Owner.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Owner.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Owner.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Owner.java
index 278fb83..ab8301c 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Owner.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Owner.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
public class Owner extends Entity {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/PageList.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/PageList.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/PageList.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/PageList.java
index 6405c32..83674ff 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/PageList.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/PageList.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
import java.io.Serializable;
import java.util.List;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Provider.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Provider.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Provider.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Provider.java
index 5675874..ecc977e 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Provider.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Provider.java
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
+
+import org.apache.dubbo.admin.registry.common.registry.ConvertUtil;
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
import java.util.Date;
import java.util.List;
import java.util.Map;
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubboadmin.registry.common.registry.ConvertUtil;
-
/**
* Provider
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Registry.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Registry.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Registry.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Registry.java
index a70464e..4531e32 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Registry.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Registry.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
import java.util.Date;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Route.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Route.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
index b6e8d47..3b389fc 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Route.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
-
-import java.util.List;
+package org.apache.dubbo.admin.registry.common.domain;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.URL;
+import java.util.List;
+
/**
* Route
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/SearchHistory.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/SearchHistory.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/SearchHistory.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/SearchHistory.java
index 32c405b..1812fdc 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/SearchHistory.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/SearchHistory.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
public class SearchHistory extends Entity {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Test.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Test.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Test.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Test.java
index e4a1530..75548e1 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Test.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Test.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
/**
* Test
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/User.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/User.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/User.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/User.java
index e9826d3..821f012 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/User.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/User.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
+
+import org.apache.dubbo.admin.registry.common.route.ParseUtils;
import java.util.Arrays;
import java.util.List;
-import com.alibaba.dubboadmin.registry.common.route.ParseUtils;
-
/**
* User
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Weight.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Weight.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Weight.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Weight.java
index 2f3f0da..0fa064f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/domain/Weight.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Weight.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.domain;
+package org.apache.dubbo.admin.registry.common.domain;
public class Weight extends Entity {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/registry/ConvertUtil.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/registry/ConvertUtil.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/registry/ConvertUtil.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/registry/ConvertUtil.java
index b3b1508..098bab4 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/registry/ConvertUtil.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/registry/ConvertUtil.java
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.registry;
-
-import java.util.HashMap;
-import java.util.Map;
+package org.apache.dubbo.admin.registry.common.registry;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.utils.StringUtils;
+import java.util.HashMap;
+import java.util.Map;
+
public class ConvertUtil {
private ConvertUtil() {
}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/OverrideUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/OverrideUtils.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/OverrideUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/OverrideUtils.java
index 6de10ee..374c67f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/OverrideUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/OverrideUtils.java
@@ -14,18 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.route;
+package org.apache.dubbo.admin.registry.common.route;
+
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Override;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import com.alibaba.dubbo.common.Constants;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-
public class OverrideUtils {
public static final Comparator<Override> OVERRIDE_COMPARATOR = new Comparator<Override>() {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/ParseUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/ParseUtils.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/ParseUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/ParseUtils.java
index 396b4e7..53f3cac 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/ParseUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/ParseUtils.java
@@ -14,22 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.route;
+package org.apache.dubbo.admin.registry.common.route;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import com.alibaba.dubbo.common.utils.StringUtils;
+
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import com.alibaba.dubbo.common.utils.StringUtils;
-
/**
* String parsing tools related to interpolation, including Glob mode, Query string, Service URL processing.
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRule.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRule.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRule.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRule.java
index 4e6ce27..4575a9f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRule.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRule.java
@@ -14,21 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.route;
+package org.apache.dubbo.admin.registry.common.route;
+
+import org.apache.dubbo.admin.registry.common.domain.Route;
+import com.alibaba.dubbo.common.utils.StringUtils;
import java.text.ParseException;
-import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Map;
+import java.util.Collections;
import java.util.Map.Entry;
-import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
-
/**
* Router rule can be divided into two parts, When Condition and Then Condition <br>
* When/Then Confition is expressed in a style of (KV) pair, the V part of the condition pair can contain multiple values (a list) <br>
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRuleUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRuleUtils.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRuleUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRuleUtils.java
index 7d1aebd..5f12722 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteRuleUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRuleUtils.java
@@ -14,19 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.route;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
+package org.apache.dubbo.admin.registry.common.route;
import com.alibaba.dubbo.common.utils.StringUtils;
+import java.util.*;
+import java.util.Map.Entry;
+
public class RouteRuleUtils {
private RouteRuleUtils() {
}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteUtils.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteUtils.java
index 6774182..0ba04d3 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/route/RouteUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteUtils.java
@@ -14,21 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.route;
+package org.apache.dubbo.admin.registry.common.route;
+
+import org.apache.dubbo.admin.registry.common.domain.Override;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.registry.common.domain.Route;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import java.net.URI;
import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
+import java.util.*;
/**
* RouteParser route rule parse tool。
@@ -84,7 +80,7 @@ public class RouteUtils {
Map<String, String> urls = new HashMap<String, String>();
urls.put("consumer://" + consumerAddress + "/" + serviceName, consumerQueryUrl); // not empty dummy data
for (Provider provider : providers) {
- if (com.alibaba.dubboadmin.web.pulltool.Tool.isProviderEnabled(provider, overrides)) {
+ if (Tool.isProviderEnabled(provider, overrides)) {
urls.put(provider.getUrl(), provider.getParameters());
}
}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/DatabaseStatusChecker.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/DatabaseStatusChecker.java
similarity index 98%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/DatabaseStatusChecker.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/DatabaseStatusChecker.java
index d02def8..6336c22 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/DatabaseStatusChecker.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/DatabaseStatusChecker.java
@@ -14,21 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.status;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-
-import javax.sql.DataSource;
+package org.apache.dubbo.admin.registry.common.status;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
import com.alibaba.dubbo.common.status.Status;
import com.alibaba.dubbo.common.status.StatusChecker;
-
import org.springframework.beans.factory.annotation.Autowired;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+
/**
* DatabaseStatus
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/LoadStatusChecker.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/LoadStatusChecker.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/LoadStatusChecker.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/LoadStatusChecker.java
index cfbf5cc..f555fdb 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/LoadStatusChecker.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/LoadStatusChecker.java
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.status;
+package org.apache.dubbo.admin.registry.common.status;
+
+import com.alibaba.dubbo.common.status.Status;
+import com.alibaba.dubbo.common.status.StatusChecker;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.reflect.Method;
-import com.alibaba.dubbo.common.status.Status;
-import com.alibaba.dubbo.common.status.StatusChecker;
-
/**
* Load StatusController
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/MemoryStatusChecker.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/MemoryStatusChecker.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/MemoryStatusChecker.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/MemoryStatusChecker.java
index c28e35a..fa1ac7d 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/status/MemoryStatusChecker.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/MemoryStatusChecker.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.status;
+package org.apache.dubbo.admin.registry.common.status;
import com.alibaba.dubbo.common.status.Status;
import com.alibaba.dubbo.common.status.StatusChecker;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Coder.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Coder.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Coder.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Coder.java
index 644a12b..874adca 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Coder.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Coder.java
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
+package org.apache.dubbo.admin.registry.common.util;
+
+import com.alibaba.dubbo.common.io.Bytes;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import com.alibaba.dubbo.common.io.Bytes;
-
public class Coder {
private Coder() {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Entities.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Entities.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Entities.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Entities.java
index 8361430..8d321c7 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Entities.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Entities.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
+package org.apache.dubbo.admin.registry.common.util;
import java.io.IOException;
import java.io.StringWriter;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/IntHashMap.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/IntHashMap.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/IntHashMap.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/IntHashMap.java
index 4713cb8..6dc36f0 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/IntHashMap.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/IntHashMap.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
+package org.apache.dubbo.admin.registry.common.util;
/**
* <p>A hash map that uses primitive ints for the key rather than objects.</p>
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/LocaleUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/LocaleUtils.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/LocaleUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/LocaleUtils.java
index 58a29c1..2917fe1 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/LocaleUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/LocaleUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
+package org.apache.dubbo.admin.registry.common.util;
import java.util.Locale;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/MessageSource.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/MessageSource.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/MessageSource.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/MessageSource.java
index 3613abb..8b22ca3 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/MessageSource.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/MessageSource.java
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
-
-import java.text.MessageFormat;
-import java.util.ResourceBundle;
+package org.apache.dubbo.admin.registry.common.util;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
+
/**
* MessageSource
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/OverrideUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/OverrideUtils.java
similarity index 95%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/OverrideUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/OverrideUtils.java
index 3c20cae..2fb9c0b 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/OverrideUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/OverrideUtils.java
@@ -14,18 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
+package org.apache.dubbo.admin.registry.common.util;
+
+import org.apache.dubbo.admin.registry.common.domain.LoadBalance;
+import org.apache.dubbo.admin.registry.common.domain.Override;
+import org.apache.dubbo.admin.registry.common.domain.Weight;
+import com.alibaba.dubbo.common.utils.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.registry.common.domain.LoadBalance;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Weight;
-
/**
* OverrideUtils.java
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/StringEscapeUtils.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/StringEscapeUtils.java
similarity index 99%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/StringEscapeUtils.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/StringEscapeUtils.java
index 32419a9..f11f429 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/StringEscapeUtils.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/StringEscapeUtils.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
+package org.apache.dubbo.admin.registry.common.util;
import java.io.IOException;
import java.io.StringWriter;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Tool.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Tool.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Tool.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Tool.java
index a5d3e95..cfb8a50 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/registry/common/util/Tool.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Tool.java
@@ -14,22 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.registry.common.util;
+package org.apache.dubbo.admin.registry.common.util;
+
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubbo.common.utils.NetUtils;
+import com.alibaba.dubbo.common.utils.StringUtils;
import java.lang.reflect.Array;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.regex.Pattern;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.common.utils.StringUtils;
-
/**
* Tool
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/BaseController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/BaseController.java
similarity index 84%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/BaseController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/BaseController.java
index 4cab02f..41678fb 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/BaseController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/BaseController.java
@@ -15,25 +15,22 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc;
-
-import java.util.Map;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc;
import com.alibaba.dubbo.common.logger.Logger;
import com.alibaba.dubbo.common.logger.LoggerFactory;
-import com.alibaba.dubboadmin.governance.biz.common.i18n.MessageResourceService;
-import com.alibaba.dubboadmin.governance.util.WebConstants;
-import com.alibaba.dubboadmin.registry.common.domain.User;
-import com.alibaba.dubboadmin.web.pulltool.RootContextPath;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
-
+import org.apache.dubbo.admin.governance.biz.common.i18n.MessageResourceService;
+import org.apache.dubbo.admin.governance.util.WebConstants;
+import org.apache.dubbo.admin.registry.common.domain.User;
+import org.apache.dubbo.admin.web.pulltool.RootContextPath;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.regex.Pattern;
+
public class BaseController {
protected static final Logger logger = LoggerFactory.getLogger(BaseController.class);
@@ -77,9 +74,4 @@ public class BaseController {
return messageResourceService.getMessage(key, args);
}
- private String getDefaultRedirect(Map<String, Object> context, String operate) {
- String defaultRedirect = (String) context.get("defaultRedirect");
- return defaultRedirect;
- }
-
}
diff --git a/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/RouterController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/RouterController.java
new file mode 100644
index 0000000..0a9a22c
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/RouterController.java
@@ -0,0 +1,344 @@
+///*
+// * Licensed to the Apache Software Foundation (ASF) under one or more
+// * contributor license agreements. See the NOTICE file distributed with
+// * this work for additional information regarding copyright ownership.
+// * The ASF licenses this file to You under the Apache License, Version 2.0
+// * (the "License"); you may not use this file except in compliance with
+// * the License. You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
+//
+//package com.alibaba.com.alibaba.dubboadmin.web.mvc;
+//
+//import java.lang.reflect.Method;
+//import java.util.Map;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//
+//import com.alibaba.com.alibaba.dubboadmin.SpringUtil;
+//import com.alibaba.com.alibaba.dubboadmin.governance.util.WebConstants;
+//import com.alibaba.com.alibaba.dubboadmin.web.mvc.governance.ServicesController;
+//
+//import org.apache.commons.lang.StringUtils;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Controller;
+//import org.springframework.ui.Model;
+//import org.springframework.web.bind.annotation.PathVariable;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RequestParam;
+//
+//
+//@Controller
+//public class RouterController {
+//
+// @Autowired
+// ServicesController servicesController;
+//
+// private boolean isPrimitive(Class<?> cls) {
+// return cls.isPrimitive() || cls == Boolean.class || cls == Byte.class
+// || cls == Character.class || cls == Short.class || cls == Integer.class
+// || cls == Long.class || cls == Float.class || cls == Double.class
+// || cls == String.class;
+// }
+//
+// private Object convertPrimitive(Class<?> cls, String value) {
+// if (cls == boolean.class || cls == Boolean.class) {
+// return value == null || value.length() == 0 ? false : Boolean.valueOf(value);
+// } else if (cls == byte.class || cls == Byte.class) {
+// return value == null || value.length() == 0 ? 0 : Byte.valueOf(value);
+// } else if (cls == char.class || cls == Character.class) {
+// return value == null || value.length() == 0 ? '\0' : value.charAt(0);
+// } else if (cls == short.class || cls == Short.class) {
+// return value == null || value.length() == 0 ? 0 : Short.valueOf(value);
+// } else if (cls == int.class || cls == Integer.class) {
+// return value == null || value.length() == 0 ? 0 : Integer.valueOf(value);
+// } else if (cls == long.class || cls == Long.class) {
+// return value == null || value.length() == 0 ? 0 : Long.valueOf(value);
+// } else if (cls == float.class || cls == Float.class) {
+// return value == null || value.length() == 0 ? 0 : Float.valueOf(value);
+// } else if (cls == double.class || cls == Double.class) {
+// return value == null || value.length() == 0 ? 0 : Double.valueOf(value);
+// }
+// return value;
+// }
+//
+// //address mapping
+// @RequestMapping("/governance/addresses/{ip:[0-9.]+:?[0-9]+}/{type}")
+// public String addressRouter(@PathVariable("ip") String ip, @PathVariable("type") String type,
+// HttpServletRequest request, HttpServletResponse response, Model model) {
+// model.addAttribute("address", ip);
+// return appRouter(null, "addresses", ip, type, request, response, model);
+// }
+//
+// @RequestMapping("/governance/addresses/{ip:[0-9.]+:?[0-9]+}/{type}/{action}")
+// public String addresswithIDRouter(@RequestParam Map<String, String> params, @PathVariable("ip") String ip, @PathVariable("type") String type,
+// @PathVariable("action") String action, HttpServletRequest request,
+// HttpServletResponse response, Model model) {
+// model.addAttribute("address", ip);
+// return appAction(params, null, "addresses",ip, type, action, request, response, model);
+// }
+//
+// @RequestMapping("/governance/addresses/{ip:[0-9.]+:?[0-9]+}/{type}/{id}/{action}")
+// public String addressWithIDandAction(@PathVariable("ip") String ip, @PathVariable("type") String type,
+// @PathVariable("id") String id, @PathVariable("action") String action,
+// HttpServletRequest request, HttpServletResponse response, Model model) {
+// model.addAttribute("address", ip);
+// return appActionWithIdandAction(null, null, type, id, action, request, response, model);
+// }
+//
+//
+// // service mapping
+// @RequestMapping("/governance/services/{service}/{type}")
+// public String servicerRouter(@PathVariable("service") String service, @PathVariable("type") String type,
+// HttpServletRequest request, HttpServletResponse response, Model model) {
+// model.addAttribute("service", service);
+// return appRouter(null, "services", service, type, request, response, model);
+// }
+//
+// @RequestMapping("/governance/services/{service}/{type}/{action}")
+// public String serviceAction(@RequestParam Map<String, String> param,
+// @PathVariable("service") String service, @PathVariable("type") String type,
+// @PathVariable("action") String action, HttpServletRequest request,
+// HttpServletResponse response, Model model) {
+// for (Map.Entry<String, String> entry : param.entrySet()) {
+// System.out.println("key: " + entry.getKey());
+// System.out.println("value: " + entry.getValue());
+// }
+// model.addAttribute("service", service);
+// return appAction(param, null, "services", service, type, action, request, response, model);
+// }
+//
+// @RequestMapping("/governance/services/{service}/{type}/{id}/{action}")
+// public String serviceActionWithId(@RequestParam Map<String, Object> param,
+// @PathVariable("service") String service,
+// @PathVariable("type") String type, @PathVariable("id") String id,
+// @PathVariable("action") String action, HttpServletRequest request, HttpServletResponse response, Model model) {
+// String method = request.getMethod();
+// String app = null;
+// System.out.println("type: " + type);
+// System.out.println("action: " + action);
+// System.out.println("method: " + method);
+// for (Map.Entry<String, Object> entry : param.entrySet()) {
+// if (entry.getKey().equals("application")) {
+// app = (String)entry.getValue();
+// }
+// System.out.println("key: " + entry.getKey());
+// System.out.println("value: " + entry.getValue());
+// }
+// return appActionWithIdandAction(app, service, type, id, action, request, response, model);
+// }
+//
+// // app mapping all execute goes here
+// //@RequestMapping("/governance/applications/{app}/services/{ids}/{action}")
+// //public String serviceActionWithApp(@PathVariable("app") String app, @PathVariable("ids") String ids,
+// // @PathVariable("type") String type, HttpServletRequest request,
+// // HttpServletResponse response, Model model) {
+// // return "";
+// //}
+//
+// @RequestMapping("/governance/applications/{app}/{elements}/{element}/{type}")
+// public String appRouter(@PathVariable("app") String app, @PathVariable("elements") String elements,
+// @PathVariable("element") String element, @PathVariable("type") String type,
+// HttpServletRequest request,
+// HttpServletResponse response, Model model) {
+// if (app != null) {
+// model.addAttribute("app", app);
+// }
+// if (StringUtils.isNumeric(element)) {
+// //service action, shield, recover..
+// Long[] ids = new Long[1];
+// ids[0] = Long.valueOf(element);
+// model.addAttribute("service", request.getParameter("service"));
+// try {
+// Method m = servicesController.getClass().getDeclaredMethod(type, Long[].class, HttpServletRequest.class,
+// HttpServletResponse.class, Model.class);
+// Object result = m.invoke(servicesController, ids, request, response, model);
+// return (String) result;
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// if (elements.equals("services")) {
+// model.addAttribute("service", element);
+// } else if (elements.equals("addresses")) {
+// model.addAttribute("address", element);
+// }
+//
+// String name = WebConstants.mapper.get(type);
+// if (name != null) {
+// Object controller = SpringUtil.getBean(name);
+// if (controller != null) {
+// try {
+// Method index = controller.getClass().getDeclaredMethod("index", HttpServletRequest.class, HttpServletResponse.class,
+// Model.class);
+// Object result = index.invoke(controller, request, response, model);
+// return (String)result;
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// }
+// return "";
+// }
+//
+// @RequestMapping("/governance/applications/{app}/{type}")
+// public String appWithService(@PathVariable("app") String app, @PathVariable("type") String type,
+// HttpServletRequest request,
+// HttpServletResponse response,
+// Model model) {
+// model.addAttribute("app", app);
+// String name = WebConstants.mapper.get(type);
+// if (name != null) {
+// Object controller = SpringUtil.getBean(name);
+// try {
+// Method index = controller.getClass().getDeclaredMethod("index", HttpServletRequest.class,
+// HttpServletResponse.class, Model.class);
+// Object result = index.invoke(controller, request, response, model);
+// return (String) result;
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+//
+// }
+// return "";
+// }
+//
+//
+// @RequestMapping("/governance/applications/{app}/{elements}/{element}/{type}/{action}")
+// public String appAction(@RequestParam Map<String, String> params, @PathVariable("app") String app,
+// @PathVariable("elements") String elements, @PathVariable("element") String element,
+// @PathVariable("type") String type, @PathVariable("action") String action,
+// HttpServletRequest request, HttpServletResponse response, Model model) {
+// if (app != null) {
+// model.addAttribute("app", app);
+// }
+// if (elements.equals("services")) {
+// model.addAttribute("service", element);
+// } else if (elements.equals("addresses")) {
+// model.addAttribute("address", element);
+// }
+//
+// String name = WebConstants.mapper.get(type);
+// if (name != null) {
+// Object controller = SpringUtil.getBean(name);
+// if (controller != null) {
+// if (request.getMethod().equals("POST")) {
+// Method[] methods = controller.getClass().getDeclaredMethods();
+// for (Method method : methods) {
+// if (method.getName().equals(action)) {
+// Class<?> param = method.getParameterTypes()[0];
+// try {
+// if (!param.isAssignableFrom(HttpServletRequest.class)) {
+// Object value = param.newInstance();
+// Method[] mms = param.getDeclaredMethods();
+// for (Method m : mms) {
+// if (m.getName().toLowerCase().startsWith("set")) {
+// String methodName = m.getName();
+// String key = methodName.substring(3).toLowerCase();
+// String tmp = params.get(key);
+// Object obj = tmp;
+// if (tmp != null) {
+// Class<?> t = m.getParameterTypes()[0];
+// if (isPrimitive(t)) {
+// obj = convertPrimitive(t, tmp);
+// }
+// m.invoke(value, obj);
+// }
+//
+// }
+// }
+// return (String)method.invoke(controller, value, request, response, model);
+// } else {
+// return (String)method.invoke(controller, request, response, model);
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+//
+//
+// }
+// }
+// } else {
+// try {
+// if (StringUtils.isNumeric(action)) {
+// // action is id, call show method
+// Method show = controller.getClass().getDeclaredMethod("show", Long.class, HttpServletRequest.class, HttpServletResponse.class,
+// Model.class);
+// Object result = show.invoke(controller, Long.valueOf(action), request, response, model);
+// return (String)result;
+// } else {
+// Method m = controller.getClass().getDeclaredMethod(action, HttpServletRequest.class,
+// HttpServletResponse.class,
+// Model.class);
+// Object result = m.invoke(controller, request, response, model);
+// return (String)result;
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// }
+// }
+// return "";
+// }
+//
+//
+// @RequestMapping("/governance/applications/{app}/services/{service}/{type}/{id}/{action}")
+// public String appActionWithIdandAction(@PathVariable("app") String app, @PathVariable("service") String service,
+// @PathVariable("type") String type, @PathVariable("id") String id,
+// @PathVariable("action") String action,
+// HttpServletRequest request, HttpServletResponse response, Model model) {
+// if (app != null) {
+// model.addAttribute("app", app);
+// }
+// model.addAttribute("service", service);
+// String name = WebConstants.mapper.get(type);
+// if (name != null) {
+// Object controller = SpringUtil.getBean(name);
+// if (controller != null) {
+// try {
+// Object result = null;
+// if (StringUtils.isNumeric(id)) {
+// //single id
+// Method m = null;
+// try {
+// m = controller.getClass().getDeclaredMethod(action, Long.class, HttpServletRequest.class,
+// HttpServletResponse.class, Model.class);
+// result = m.invoke(controller, Long.valueOf(id), request, response, model);
+// } catch (NoSuchMethodException e) {
+// m = controller.getClass().getDeclaredMethod(action, Long[].class, HttpServletRequest.class,
+// HttpServletResponse.class, Model.class);
+// result = m.invoke(controller, new Long[]{Long.valueOf(id)}, request, response, model);
+//
+// }
+// } else {
+// //id array
+// String[] array = id.split(",");
+// Long[] ids = new Long[array.length];
+// for (int i = 0; i < array.length; i ++) {
+// ids[i] = Long.valueOf(array[i]);
+// }
+//
+// Method m = controller.getClass().getDeclaredMethod(action, Long[].class, HttpServletRequest.class,
+// HttpServletResponse.class, Model.class);
+//
+// result = m.invoke(controller, ids, request, response, model);
+// }
+// return (String)result;
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+// }
+// return "";
+//
+// }
+//}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/auth/DubboUser.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/auth/DubboUser.java
similarity index 92%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/auth/DubboUser.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/auth/DubboUser.java
index 9339417..acf9e7f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/auth/DubboUser.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/auth/DubboUser.java
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.common.auth;
+package org.apache.dubbo.admin.web.mvc.common.auth;
-import java.io.Serializable;
+import org.apache.dubbo.admin.registry.common.domain.User;
-import com.alibaba.dubboadmin.registry.common.domain.User;
+import java.io.Serializable;
/**
* MinasUser: DubboUser
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/i18n/LocaleUtil.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/i18n/LocaleUtil.java
similarity index 95%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/i18n/LocaleUtil.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/i18n/LocaleUtil.java
index 5d61e8a..e48d2bc 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/common/i18n/LocaleUtil.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/i18n/LocaleUtil.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.common.i18n;
+package org.apache.dubbo.admin.web.mvc.common.i18n;
import java.util.Locale;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/AccessesController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AccessesController.java
similarity index 87%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/AccessesController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AccessesController.java
index d814f4c..90cd59f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/AccessesController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AccessesController.java
@@ -14,33 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.StringReader;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.governance.service.RouteService;
-import com.alibaba.dubboadmin.registry.common.domain.Access;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
-import com.alibaba.dubboadmin.registry.common.route.RouteRule;
-import com.alibaba.dubboadmin.registry.common.route.RouteRule.MatchPair;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
+package org.apache.dubbo.admin.web.mvc.governance;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.governance.service.RouteService;
+import org.apache.dubbo.admin.registry.common.domain.Access;
+import org.apache.dubbo.admin.registry.common.domain.Route;
+import org.apache.dubbo.admin.registry.common.route.RouteRule;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -48,6 +30,16 @@ import org.springframework.validation.support.BindingAwareModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.text.ParseException;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+
/**
* ProvidersController. URI: /services/$service/accesses
*
@@ -88,13 +80,13 @@ public class AccessesController extends BaseController {
return "governance/screen/accesses/index";
}
for (Route route : routes) {
- Map<String, MatchPair> rule = null;
+ Map<String, RouteRule.MatchPair> rule = null;
try {
rule = RouteRule.parseRule(route.getMatchRule());
} catch (ParseException e) {
logger.error("parse rule error", e);
}
- MatchPair pair = rule.get("consumer.host");
+ RouteRule.MatchPair pair = rule.get("consumer.host");
if (pair != null) {
for (String host : pair.getMatches()) {
Access access = new Access();
@@ -146,11 +138,11 @@ public class AccessesController extends BaseController {
} else {
route = routes.get(0);
}
- Map<String, MatchPair> when = null;
- MatchPair matchPair = null;
+ Map<String, RouteRule.MatchPair> when = null;
+ RouteRule.MatchPair matchPair = null;
if (isFirst) {
- when = new HashMap<String, MatchPair>();
- matchPair = new MatchPair(new HashSet<String>(), new HashSet<String>());
+ when = new HashMap<String, RouteRule.MatchPair>();
+ matchPair = new RouteRule.MatchPair(new HashSet<String>(), new HashSet<String>());
when.put("consumer.host", matchPair);
} else {
when = RouteRule.parseRule(route.getMatchRule());
@@ -251,7 +243,7 @@ public class AccessesController extends BaseController {
continue;
}
for (Route blackwhitelist : routes) {
- MatchPair pairs = RouteRule.parseRule(blackwhitelist.getMatchRule()).get("consumer.host");
+ RouteRule.MatchPair pairs = RouteRule.parseRule(blackwhitelist.getMatchRule()).get("consumer.host");
Set<String> matches = new HashSet<String>();
matches.addAll(pairs.getMatches());
Set<String> unmatches = new HashSet<String>();
@@ -275,8 +267,8 @@ public class AccessesController extends BaseController {
if (matches.size() == 0 && unmatches.size() == 0) {
routeService.deleteRoute(blackwhitelist.getId());
} else {
- Map<String, MatchPair> condition = new HashMap<String, MatchPair>();
- condition.put("consumer.host", new MatchPair(matches, unmatches));
+ Map<String, RouteRule.MatchPair> condition = new HashMap<String, RouteRule.MatchPair>();
+ condition.put("consumer.host", new RouteRule.MatchPair(matches, unmatches));
StringBuilder sb = new StringBuilder();
RouteRule.contidionToString(sb, condition);
blackwhitelist.setMatchRule(sb.toString());
@@ -289,15 +281,4 @@ public class AccessesController extends BaseController {
model.addAttribute("redirect", "../accesses");
return "governance/screen/redirect";
}
-
- public void show(Map<String, Object> context) {
- }
-
- public void edit(Map<String, Object> context) {
- }
-
- public String update(Map<String, Object> context) {
- return null;
- }
-
}
diff --git a/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AddressesController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AddressesController.java
new file mode 100644
index 0000000..38f0c82
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AddressesController.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.admin.web.mvc.governance;
+
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * ProvidersController.
+ * URI: /services/$service/providers
+ *
+ */
+@Controller
+@RequestMapping("/governance/addresses")
+public class AddressesController extends BaseController {
+
+ @Autowired
+ private ProviderService providerService;
+
+ @Autowired
+ private ConsumerService consumerService;
+
+ @Autowired
+ ServicesController servicesController;
+
+
+ @RequestMapping("")
+ public String index(@RequestParam String ip, HttpServletRequest request, HttpServletResponse response, Model model) {
+ prepare(request, response, model, "index", "addresses");
+ List<Provider> providers = null;
+ List<Consumer> consumers = null;
+ providers = providerService.findByAddress(ip);
+ consumers = consumerService.findByAddress(ip);
+
+ model.addAttribute("providers", providers);
+ model.addAttribute("consumers", consumers);
+ return "";
+ }
+
+}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/LoadbalancesController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/LoadbalancesController.java
similarity index 90%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/LoadbalancesController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/LoadbalancesController.java
index 7b19aa8..96771c8 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/LoadbalancesController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/LoadbalancesController.java
@@ -14,30 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.governance;
import com.alibaba.dubbo.common.utils.CollectionUtils;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.LoadBalance;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.util.OverrideUtils;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
-
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.LoadBalance;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.registry.common.util.OverrideUtils;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.support.BindingAwareModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
/**
* ProvidersController.
@@ -71,8 +69,8 @@ public class LoadbalancesController extends BaseController {
return "governance/screen/loadbalances/index";
}
- @RequestMapping("/{id}")
- public String show(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/detail")
+ public String show(@RequestParam("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "show", "loadbalances");
LoadBalance loadbalance = OverrideUtils.overrideToLoadBalance(overrideService.findById(id));
model.addAttribute("loadbalance", loadbalance);
@@ -102,8 +100,8 @@ public class LoadbalancesController extends BaseController {
return "governance/screen/loadbalances/add";
}
- @RequestMapping("/{id}/edit")
- public String edit(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/edit")
+ public String edit(@RequestParam("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "edit", "loadbalances");
String service = request.getParameter("service");
String input = request.getParameter("input");
@@ -165,8 +163,8 @@ public class LoadbalancesController extends BaseController {
* @param ids
* @return
*/
- @RequestMapping("/{ids}/delete")
- public String delete(@PathVariable("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/delete")
+ public String delete(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "delete", "loadbalances");
boolean success = true;
for (Long id : ids) {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OverridesController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OverridesController.java
similarity index 94%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OverridesController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OverridesController.java
index da7ead3..2f96c3f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OverridesController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OverridesController.java
@@ -14,36 +14,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.governance;
+import org.apache.dubbo.admin.registry.common.domain.Override;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.CollectionUtils;
import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.web.mvc.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.support.BindingAwareModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
@Controller
@RequestMapping("/governance/overrides")
@@ -107,9 +100,9 @@ public class OverridesController extends BaseController {
return "governance/screen/overrides/index";
}
- @RequestMapping("/{id}")
- public String show(@PathVariable Long id, HttpServletRequest request, HttpServletResponse response,
- Model model) {
+ @RequestMapping("/detail")
+ public String show(@RequestParam Long id, HttpServletRequest request, HttpServletResponse response,
+ Model model) {
prepare(request, response, model, "show", "overrides");
Override override = overrideService.findById(id);
@@ -174,8 +167,8 @@ public class OverridesController extends BaseController {
return "governance/screen/overrides/add";
}
- @RequestMapping("/{id}/edit")
- public String edit(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response,
+ @RequestMapping("/edit")
+ public String edit(@RequestParam("id") Long id, HttpServletRequest request, HttpServletResponse response,
Model model) {
prepare(request, response, model, "edit", "overrides");
Override override = overrideService.findById(id);
@@ -360,8 +353,8 @@ public class OverridesController extends BaseController {
}
- @RequestMapping("/{ids}/delete")
- public String delete(@PathVariable("ids") Long[] ids, HttpServletRequest request,
+ @RequestMapping("/delete")
+ public String delete(@RequestParam("ids") Long[] ids, HttpServletRequest request,
HttpServletResponse response, Model model) {
prepare(request, response, model, "delete", "overrides");
for (Long id : ids) {
@@ -373,8 +366,8 @@ public class OverridesController extends BaseController {
return "governance/screen/redirect";
}
- @RequestMapping("/{ids}/enable")
- public String enable(@PathVariable("ids") Long[] ids, HttpServletRequest request,
+ @RequestMapping("/enable")
+ public String enable(@RequestParam("ids") Long[] ids, HttpServletRequest request,
HttpServletResponse response, Model model) {
prepare(request, response, model, "enable", "overrides");
boolean success = true;
@@ -406,8 +399,8 @@ public class OverridesController extends BaseController {
return "governance/screen/redirect";
}
- @RequestMapping("/{ids}/disable")
- public String disable(@PathVariable("ids") Long[] ids, HttpServletRequest request,
+ @RequestMapping("/disable")
+ public String disable(@RequestParam("ids") Long[] ids, HttpServletRequest request,
HttpServletResponse response, Model model) {
prepare(request, response, model, "disable", "overrides");
boolean success = true;
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OwnersController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OwnersController.java
similarity index 91%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OwnersController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OwnersController.java
index 0bd75a0..083269e 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/OwnersController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OwnersController.java
@@ -14,27 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.dubboadmin.governance.service.OwnerService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.Owner;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
+package org.apache.dubbo.admin.web.mvc.governance;
+import org.apache.dubbo.admin.governance.service.OwnerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.Owner;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.support.BindingAwareModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
/**
* ProvidersController. URI: /services/$service/owners
@@ -101,8 +99,8 @@ public class OwnersController extends BaseController {
return "governance/screen/redirect";
}
- @RequestMapping("/{ids}/delete")
- public String delete(@PathVariable("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/delete")
+ public String delete(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "delete", "owners");
String service = request.getParameter("service");
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/RoutesController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/RoutesController.java
similarity index 81%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/RoutesController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/RoutesController.java
index 0f95a3e..d29dcf4 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/RoutesController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/RoutesController.java
@@ -14,34 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.governance;
import com.alibaba.dubbo.common.utils.CollectionUtils;
import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.service.OwnerService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.governance.service.RouteService;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
-import com.alibaba.dubboadmin.registry.common.route.ParseUtils;
-import com.alibaba.dubboadmin.registry.common.route.RouteRule;
-import com.alibaba.dubboadmin.registry.common.route.RouteUtils;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
-
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.OwnerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.governance.service.RouteService;
+import org.apache.dubbo.admin.registry.common.domain.Route;
+import org.apache.dubbo.admin.registry.common.route.ParseUtils;
+import org.apache.dubbo.admin.registry.common.route.RouteRule;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -50,13 +35,18 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
+import java.util.*;
+
/**
* ProvidersController.
* URI: /services/$service/routes
*
*/
@Controller
-@RequestMapping("/governance/routes")
+@RequestMapping("/routing")
public class RoutesController extends BaseController {
private static final int MAX_RULE_LENGTH = 1000;
@@ -137,33 +127,26 @@ public class RoutesController extends BaseController {
*
*/
@RequestMapping("")
- public String index(HttpServletRequest request, HttpServletResponse response, Model model) {
- prepare(request, response, model, "index", "routes");
- BindingAwareModelMap newModel = (BindingAwareModelMap)model;
- String address = (String)newModel.get("address");
- String service = (String)newModel.get("service");
- address = Tool.getIP(address);
- List<Route> routes;
- if (service != null && service.length() > 0
- && address != null && address.length() > 0) {
- routes = routeService.findByServiceAndAddress(service, address);
- } else if (service != null && service.length() > 0) {
- routes = routeService.findByService(service);
- } else if (address != null && address.length() > 0) {
- routes = routeService.findByAddress(address);
- } else {
- routes = routeService.findAll();
+ public String index(@RequestParam(required = false) String service,
+ @RequestParam(required = false) String app,
+ HttpServletRequest request, HttpServletResponse response, Model model) {
+ model.addAttribute("service", service);
+ model.addAttribute("app", app);
+ if (service != null) {
+ model.addAttribute("methods", CollectionUtils.sort(new ArrayList<String>(providerService.findMethodsByService(service))));
+ } else {
+ List<String> serviceList = Tool.sortSimpleName(new ArrayList<String>(providerService.findServices()));
+ model.addAttribute("serviceList", serviceList);
}
- model.addAttribute("routes", routes);
- return "governance/screen/routes/index";
+ return "routingRules";
}
/**
* Display routing details
*
*/
- @RequestMapping("/{id}")
- public String show(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/detail")
+ public String show(@RequestParam("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
try {
prepare(request, response, model, "show", "routes");
Route route = routeService.findRoute(id);
@@ -235,8 +218,8 @@ public class RoutesController extends BaseController {
*
*/
- @RequestMapping("/{id}/edit")
- public String edit(@PathVariable("id") Long id, @RequestParam(required = false) String service,
+ @RequestMapping("/edit")
+ public String edit(@RequestParam("id") Long id, @RequestParam(required = false) String service,
@RequestParam(required = false) String input,
HttpServletRequest request, HttpServletResponse response, Model model) {
@@ -377,8 +360,8 @@ public class RoutesController extends BaseController {
*
* @return
*/
- @RequestMapping("/{id}/update")
- public String update(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/update")
+ public String update(@RequestParam("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "update", "routes");
boolean success = true;
String idStr = String.valueOf(id);
@@ -569,76 +552,4 @@ public class RoutesController extends BaseController {
return "governance/screen/redirect";
}
- /**
- * Choose consumers
- *
- * @param context
- */
- public void routeselect(Map<String, Object> context) {
- long rid = Long.valueOf((String) context.get("id"));
- context.put("id", rid);
-
- Route route = routeService.findRoute(rid);
- if (route == null) {
- throw new IllegalStateException("Route(id=" + rid + ") is not existed!");
- }
-
- context.put("route", route);
- // retrieve data
- List<Consumer> consumers = consumerService.findByService(route.getService());
- context.put("consumers", consumers);
-
- Map<String, Boolean> matchRoute = new HashMap<String, Boolean>();
- for (Consumer c : consumers) {
- matchRoute.put(c.getAddress(), RouteUtils.matchRoute(c.getAddress(), null, route, null));
- }
- context.put("matchRoute", matchRoute);
- }
-
- public void preview(Map<String, Object> context) throws Exception {
- String rid = (String) context.get("id");
- String consumerid = (String) context.get("cid");
-
-
- if (StringUtils.isEmpty(rid)) {
- context.put("message", getMessage("MissRequestParameters", "id"));
- }
-
- Map<String, String> serviceUrls = new HashMap<String, String>();
- Route route = routeService.findRoute(Long.valueOf(rid));
- if (null == route) {
- context.put("message", getMessage("NoSuchRecord"));
- }
- List<Provider> providers = providerService.findByService(route.getService());
- if (providers != null) {
- for (Provider p : providers) {
- serviceUrls.put(p.getUrl(), p.getParameters());
- }
- }
- if (StringUtils.isNotEmpty(consumerid)) {
- Consumer consumer = consumerService.findConsumer(Long.valueOf(consumerid));
- if (null == consumer) {
- context.put("message", getMessage("NoSuchRecord"));
- }
- Map<String, String> result = RouteUtils.previewRoute(consumer.getService(), consumer.getAddress(), consumer.getParameters(), serviceUrls,
- route, null, null);
- context.put("route", route);
- context.put("consumer", consumer);
- context.put("result", result);
- } else {
- String address = (String) context.get("address");
- String service = (String) context.get("service");
-
- Map<String, String> result = RouteUtils.previewRoute(service, address, null, serviceUrls,
- route, null, null);
- context.put("route", route);
-
- Consumer consumer = new Consumer();
- consumer.setService(service);
- consumer.setAddress(address);
- context.put("consumer", consumer);
- context.put("result", result);
- }
-
- }
}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ConsumersController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServiceDetailController.java
similarity index 54%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ConsumersController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServiceDetailController.java
index 7fa1675..e5cc04e 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ConsumersController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServiceDetailController.java
@@ -1,65 +1,31 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.governance;
+import org.apache.dubbo.admin.registry.common.domain.Override;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.governance.service.RouteService;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
-import com.alibaba.dubboadmin.registry.common.route.OverrideUtils;
-import com.alibaba.dubboadmin.registry.common.route.RouteRule;
-import com.alibaba.dubboadmin.registry.common.route.RouteRule.MatchPair;
-import com.alibaba.dubboadmin.registry.common.route.RouteUtils;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
-
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.governance.service.RouteService;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.registry.common.domain.Route;
+import org.apache.dubbo.admin.registry.common.route.OverrideUtils;
+import org.apache.dubbo.admin.registry.common.route.RouteRule;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
-import org.springframework.validation.support.BindingAwareModelMap;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
-/**
- * ConsumersController. URI: /services/$service/consumers
- *
- */
@Controller
-@RequestMapping("/governance/consumers")
-public class ConsumersController extends BaseController {
+public class ServiceDetailController extends BaseController{
@Autowired
private ProviderService providerService;
@@ -73,190 +39,205 @@ public class ConsumersController extends BaseController {
@Autowired
private RouteService routeService;
- @RequestMapping("")
- public String index(HttpServletRequest request, HttpServletResponse response,
- Model model) {
- prepare(request, response, model, "index", "consumers");
- List<Consumer> consumers;
- List<Override> overrides;
- List<Provider> providers = null;
- List<Route> routes = null;
- BindingAwareModelMap newModel = (BindingAwareModelMap)model;
- String service = (String)newModel.get("service");
- String address = (String)newModel.get("address");
- String application = (String)newModel.get("app");
- // service
- if (service != null && service.length() > 0) {
- consumers = consumerService.findByService(service);
- overrides = overrideService.findByService(service);
- providers = providerService.findByService(service);
- routes = routeService.findByService(service);
- }
- // address
- else if (address != null && address.length() > 0) {
- consumers = consumerService.findByAddress(address);
- overrides = overrideService.findByAddress(Tool.getIP(address));
- }
- // application
- else if (application != null && application.length() > 0) {
- consumers = consumerService.findByApplication(application);
- overrides = overrideService.findByApplication(application);
- }
- // all
- else {
- consumers = consumerService.findAll();
- overrides = overrideService.findAll();
+ @RequestMapping("/serviceDetail")
+ public String serviceDetail(@RequestParam(required = false) String app,
+ @RequestParam(required = false) String service,
+ HttpServletRequest request,
+ HttpServletResponse response, Model model) {
+ model.addAttribute("service", service);
+ model.addAttribute("app", app);
+ return "serviceDetail";
+ }
+
+
+ @RequestMapping(value = "/create", method = RequestMethod.POST) //post
+ public boolean create(@RequestParam String service, @ModelAttribute Provider provider,
+ HttpServletRequest request, HttpServletResponse response,
+ Model model) {
+ prepare(request, response, model,"create" ,"providers");
+ boolean success = true;
+ if (provider.getService() == null) {
+ provider.setService(service);
}
- if (consumers != null && consumers.size() > 0) {
- for (Consumer consumer : consumers) {
- if (service == null || service.length() == 0) {
- providers = providerService.findByService(consumer.getService());
- routes = routeService.findByService(consumer.getService());
+ if (provider.getParameters() == null) {
+ String url = provider.getUrl();
+ if (url != null) {
+ int i = url.indexOf('?');
+ if (i > 0) {
+ provider.setUrl(url.substring(0, i));
+ provider.setParameters(url.substring(i + 1));
}
- List<Route> routed = new ArrayList<Route>();
- consumer.setProviders(RouteUtils
- .route(consumer.getService(), consumer.getAddress(), consumer.getParameters(), providers, overrides, routes, null, routed));
- consumer.setRoutes(routed);
- OverrideUtils.setConsumerOverrides(consumer, overrides);
}
}
- model.addAttribute("consumers", consumers);
- return "governance/screen/consumers/index";
- }
-
- @RequestMapping("/{id}")
- public String show(@PathVariable("id") Long id,
- HttpServletRequest request, HttpServletResponse response, Model model) {
- prepare(request, response, model, "show", "consumers");
- Consumer consumer = consumerService.findConsumer(id);
- List<Provider> providers = providerService.findByService(consumer.getService());
- List<Route> routes = routeService.findByService(consumer.getService());
- List<Override> overrides = overrideService.findByService(consumer.getService());
- List<Route> routed = new ArrayList<Route>();
- consumer.setProviders(RouteUtils.route(consumer.getService(), consumer.getAddress(), consumer.getParameters(), providers, overrides, routes, null, routed));
- consumer.setRoutes(routed);
- OverrideUtils.setConsumerOverrides(consumer, overrides);
- model.addAttribute("consumer", consumer);
- model.addAttribute("providers", consumer.getProviders());
- model.addAttribute("routes", consumer.getRoutes());
- model.addAttribute("overrides", consumer.getOverrides());
- return "governance/screen/consumers/show";
- }
-
- @RequestMapping("/{id}/edit")
- public String edit(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
- prepare(request, response, model, "edit", "consumers");
- Consumer consumer = consumerService.findConsumer(id);
- List<Provider> providers = providerService.findByService(consumer.getService());
- List<Route> routes = routeService.findByService(consumer.getService());
- List<Override> overrides = overrideService.findByService(consumer.getService());
- List<Route> routed = new ArrayList<Route>();
- consumer.setProviders(RouteUtils.route(consumer.getService(), consumer.getAddress(), consumer.getParameters(), providers, overrides, routes, null, routed));
- consumer.setRoutes(routed);
- OverrideUtils.setConsumerOverrides(consumer, overrides);
- model.addAttribute("consumer", consumer);
- model.addAttribute("providers", consumer.getProviders());
- model.addAttribute("routes", consumer.getRoutes());
- model.addAttribute("overrides", consumer.getOverrides());
- return "governance/screen/consumers/edit";
+ provider.setDynamic(false); // Provider add through web page must be static
+ providerService.create(provider);
+ return true;
}
@RequestMapping(value = "/update", method = RequestMethod.POST) //post
- public String update(@ModelAttribute Consumer newConsumer, HttpServletRequest request, HttpServletResponse response, Model model) {
- prepare(request, response, model, "update", "consumers");
+ public boolean update(@ModelAttribute Provider newProvider, HttpServletRequest request, HttpServletResponse response, Model model) {
boolean success = true;
- Long id = newConsumer.getId();
- String parameters = newConsumer.getParameters();
- Consumer consumer = consumerService.findConsumer(id);
- if (consumer == null) {
- model.addAttribute("message", getMessage("NoSuchOperationData", id));
- success = false;
- model.addAttribute("success", success);
- model.addAttribute("redirect", "governance/consumers");
- return "governance/screen/redirect";
- }
- String service = consumer.getService();
- if (!super.currentUser.hasServicePrivilege(service)) {
- model.addAttribute("message", getMessage("HaveNoServicePrivilege", service));
- success = false;
- model.addAttribute("success", success);
- model.addAttribute("redirect", "governance/consumers");
- return "governance/screen/redirect";
+ Long id = newProvider.getId();
+ String parameters = newProvider.getParameters();
+ Provider provider = providerService.findProvider(id);
+ if (provider == null) {
+ return false;
}
- Map<String, String> oldMap = StringUtils.parseQueryString(consumer.getParameters());
+ String service = provider.getService();
+ Map<String, String> oldMap = StringUtils.parseQueryString(provider.getParameters());
Map<String, String> newMap = StringUtils.parseQueryString(parameters);
for (Map.Entry<String, String> entry : oldMap.entrySet()) {
if (entry.getValue().equals(newMap.get(entry.getKey()))) {
newMap.remove(entry.getKey());
}
}
- String address = consumer.getAddress();
- List<Override> overrides = overrideService.findByServiceAndAddress(consumer.getService(), consumer.getAddress());
- OverrideUtils.setConsumerOverrides(consumer, overrides);
- Override override = consumer.getOverride();
- if (override != null) {
- if (newMap.size() > 0) {
+ if (provider.isDynamic()) {
+ String address = provider.getAddress();
+ List<Override> overrides = overrideService.findByServiceAndAddress(provider.getService(), provider.getAddress());
+ OverrideUtils.setProviderOverrides(provider, overrides);
+ Override override = provider.getOverride();
+ if (override != null) {
+ if (newMap.size() > 0) {
+ override.setParams(StringUtils.toQueryString(newMap));
+ override.setEnabled(true);
+ override.setOperator(operator);
+ override.setOperatorAddress(operatorAddress);
+ overrideService.updateOverride(override);
+ } else {
+ overrideService.deleteOverride(override.getId());
+ }
+ } else {
+ override = new Override();
+ override.setService(service);
+ override.setAddress(address);
override.setParams(StringUtils.toQueryString(newMap));
override.setEnabled(true);
override.setOperator(operator);
override.setOperatorAddress(operatorAddress);
- overrideService.updateOverride(override);
- } else {
- overrideService.deleteOverride(override.getId());
+ overrideService.saveOverride(override);
}
} else {
- override = new Override();
- override.setService(service);
- override.setAddress(address);
- override.setParams(StringUtils.toQueryString(newMap));
- override.setEnabled(true);
- override.setOperator(operator);
- override.setOperatorAddress(operatorAddress);
- overrideService.saveOverride(override);
+ provider.setParameters(parameters);
+ providerService.updateProvider(provider);
}
model.addAttribute("success", success);
- model.addAttribute("redirect", "governance/consumers");
- return "governance/screen/redirect";
+ model.addAttribute("redirect", "../providers");
+ return true;
}
- @RequestMapping("/{id}/routed")
- public String routed(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
- prepare(request, response, model, "routed", "consumers");
- showDetail(id, request, response, model);
- return "governance/screen/consumers/routed";
+ @RequestMapping("/delete")
+ public String delete(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
+ //prepare(request, response, model, "delete", "providers");
+ boolean success = true;
+ for (Long id : ids) {
+ Provider provider = providerService.findProvider(id);
+ if (provider == null) {
+ model.addAttribute("message", getMessage("NoSuchOperationData", id));
+ success = false;
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
+ } else if (provider.isDynamic()) {
+ model.addAttribute("message", getMessage("CanNotDeleteDynamicData", id));
+ success = false;
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
+ }
+ else if (!super.currentUser.hasServicePrivilege(provider.getService())) {
+ model.addAttribute("message", getMessage("HaveNoServicePrivilege", provider.getService()));
+ success = false;
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
+ }
+ }
+ for (Long id : ids) {
+ providerService.deleteStaticProvider(id);
+ }
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
}
- @RequestMapping("/{id}/notified")
- public String notified(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
- prepare(request, response, model, "notified", "consumers");
- showDetail(id, request, response, model);
- return "governance/screen/consumers/notified";
+ @RequestMapping("/enable")
+ public String enable(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
+ prepare(request, response, model, "enable", "providers");
+ boolean success = true;
+ Map<Long, Provider> id2Provider = new HashMap<Long, Provider>();
+ for (Long id : ids) {
+ Provider provider = providerService.findProvider(id);
+ if (provider == null) {
+ model.addAttribute("message", getMessage("NoSuchOperationData", id));
+ success = false;
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
+ }
+ else if (!super.currentUser.hasServicePrivilege(provider.getService())) {
+ model.addAttribute("message", getMessage("HaveNoServicePrivilege", provider.getService()));
+ success = false;
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
+ }
+ id2Provider.put(id, provider);
+ }
+ for (Long id : ids) {
+ providerService.enableProvider(id);
+ }
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
}
- @RequestMapping("/{id}/overrided")
- public String overrided(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
- prepare(request, response, model, "overrided", "consumers");
- showDetail(id, request, response, model);
- return "governance/screen/consumers/overrided";
+
+ @RequestMapping("/disable")
+ public String disable(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
+ //prepare(request, response, model, "disable", "providers");
+ boolean success = true;
+ for (Long id : ids) {
+ Provider provider = providerService.findProvider(id);
+ if (provider == null) {
+ model.addAttribute("message", getMessage("NoSuchOperationData", id));
+ success = false;
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
+ }
+ else if (!super.currentUser.hasServicePrivilege(provider.getService())) {
+ success = false;
+ model.addAttribute("message", getMessage("HaveNoServicePrivilege", provider.getService()));
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
+ }
+ }
+ for (Long id : ids) {
+ providerService.disableProvider(id);
+ }
+ model.addAttribute("success", success);
+ model.addAttribute("redirect", "../../providers");
+ return "governance/screen/redirect";
}
- @RequestMapping("/{ids}/shield")
- public String shield(@PathVariable("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
+ @RequestMapping("/shield")
+ public String shield(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
return mock(ids, "force:return null", "shield", request, response, model);
}
- @RequestMapping("/{ids}/tolerant")
- public String tolerant(@PathVariable("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
+ @RequestMapping("/tolerant")
+ public String tolerant(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
return mock(ids, "fail:return null", "tolerant", request, response, model);
}
- @RequestMapping("/{ids}/recover")
- public String recover(@PathVariable("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
+ @RequestMapping("/recover")
+ public String recover(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
return mock(ids, "", "recover", request, response, model);
}
private String mock(Long[] ids, String mock, String methodName, HttpServletRequest request,
- HttpServletResponse response, Model model) throws Exception {
+ HttpServletResponse response, Model model) throws Exception {
prepare(request, response, model, methodName, "consumers");
boolean success = true;
if (ids == null || ids.length == 0) {
@@ -295,7 +276,7 @@ public class ConsumersController extends BaseController {
if (map.size() > 0) {
override.setParams(StringUtils.toQueryString(map));
override.setEnabled(true);
- override.setOperator(operator);
+ //override.setOperator(operator);
override.setOperatorAddress(operatorAddress);
overrideService.updateOverride(override);
} else {
@@ -318,41 +299,26 @@ public class ConsumersController extends BaseController {
return "governance/screen/redirect";
}
- private void showDetail( Long id,
- HttpServletRequest request, HttpServletResponse response, Model model) {
- Consumer consumer = consumerService.findConsumer(id);
- List<Provider> providers = providerService.findByService(consumer.getService());
- List<Route> routes = routeService.findByService(consumer.getService());
- List<Override> overrides = overrideService.findByService(consumer.getService());
- List<Route> routed = new ArrayList<Route>();
- consumer.setProviders(RouteUtils.route(consumer.getService(), consumer.getAddress(), consumer.getParameters(), providers, overrides, routes, null, routed));
- consumer.setRoutes(routed);
- OverrideUtils.setConsumerOverrides(consumer, overrides);
- model.addAttribute("consumer", consumer);
- model.addAttribute("providers", consumer.getProviders());
- model.addAttribute("routes", consumer.getRoutes());
- model.addAttribute("overrides", consumer.getOverrides());
- }
-
@RequestMapping("/allshield")
public String allshield(@RequestParam(required = false) String service, HttpServletRequest request,
- HttpServletResponse response, Model model) throws Exception {
+ HttpServletResponse response, Model model) throws Exception {
return allmock(service, "force:return null", "allshield",request, response, model);
}
@RequestMapping("/alltolerant")
public String alltolerant(@RequestParam(required = false) String service, HttpServletRequest request,
- HttpServletResponse response, Model model) throws Exception {
+ HttpServletResponse response, Model model) throws Exception {
return allmock(service, "fail:return null", "alltolerant", request, response, model);
}
@RequestMapping("/allrecover")
public String allrecover(@RequestParam(required = false) String service, HttpServletRequest request,
- HttpServletResponse response, Model model) throws Exception {
+ HttpServletResponse response, Model model) throws Exception {
return allmock(service, "", "allrecover", request, response, model);
}
private String allmock(String service, String mock, String methodName, HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
+ String operatorAddress = request.getRemoteAddr();
prepare(request, response, model, methodName,"consumers");
boolean success = true;
if (service == null || service.length() == 0) {
@@ -389,7 +355,7 @@ public class ConsumersController extends BaseController {
if (map.size() > 0) {
allOverride.setParams(StringUtils.toQueryString(map));
allOverride.setEnabled(true);
- allOverride.setOperator(operator);
+ //allOverride.setOperator(operator);
allOverride.setOperatorAddress(operatorAddress);
overrideService.updateOverride(allOverride);
} else {
@@ -430,7 +396,7 @@ public class ConsumersController extends BaseController {
}
private String access(HttpServletRequest request, HttpServletResponse response, Long[] ids,
- Model model, boolean allow, boolean only, String methodName) throws Exception {
+ Model model, boolean allow, boolean only, String methodName) throws Exception {
prepare(request, response, model, methodName, "consumers");
boolean success = true;
if (ids == null || ids.length == 0) {
@@ -481,11 +447,11 @@ public class ConsumersController extends BaseController {
} else {
route = routes.get(0);
}
- Map<String, MatchPair> when = null;
- MatchPair matchPair = null;
+ Map<String, RouteRule.MatchPair> when = null;
+ RouteRule.MatchPair matchPair = null;
if (isFirst) {
- when = new HashMap<String, MatchPair>();
- matchPair = new MatchPair(new HashSet<String>(), new HashSet<String>());
+ when = new HashMap<String, RouteRule.MatchPair>();
+ matchPair = new RouteRule.MatchPair(new HashSet<String>(), new HashSet<String>());
when.put("consumer.host", matchPair);
} else {
when = RouteRule.parseRule(route.getMatchRule());
@@ -535,4 +501,10 @@ public class ConsumersController extends BaseController {
model.addAttribute("redirect", "../../consumers");
return "governance/screen/redirect";
}
+
+ @RequestMapping("/metaData")
+ public List<String> metaData(@RequestParam String app, @RequestParam String service) {
+ return null;
+ }
+
}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ServicesController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServicesController.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ServicesController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServicesController.java
index 8d3f181..755d86f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/ServicesController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServicesController.java
@@ -14,30 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.governance;
+import org.apache.dubbo.admin.registry.common.domain.Override;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.route.OverrideUtils;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
-
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.route.OverrideUtils;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -45,6 +32,10 @@ import org.springframework.validation.support.BindingAwareModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
/**
* ProvidersController. URI: /services/$service/providers /addresses/$address/services /application/$application/services
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/WeightsController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/WeightsController.java
similarity index 90%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/WeightsController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/WeightsController.java
index d94428a..86163bd 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/governance/WeightsController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/WeightsController.java
@@ -14,38 +14,35 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.governance;
-
-import java.io.BufferedReader;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.governance;
import com.alibaba.dubbo.common.utils.CollectionUtils;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.domain.Weight;
-import com.alibaba.dubboadmin.registry.common.util.OverrideUtils;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-import com.alibaba.dubboadmin.web.pulltool.Tool;
-
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.registry.common.domain.Weight;
+import org.apache.dubbo.admin.registry.common.util.OverrideUtils;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.apache.dubbo.admin.web.pulltool.Tool;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.support.BindingAwareModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Pattern;
/**
* ProvidersController.
@@ -111,15 +108,6 @@ public class WeightsController extends BaseController {
return "governance/screen/weights/add";
}
- /**
- * load page for the multi adding
- *
- * @param context
- */
- public void multiadd(Map<String, Object> context) {
- List<String> serviceList = Tool.sortSimpleName(providerService.findServices());
- context.put("serviceList", serviceList);
- }
@RequestMapping("/create")
public String create(HttpServletRequest request, HttpServletResponse response, Model model) throws Exception {
@@ -212,8 +200,8 @@ public class WeightsController extends BaseController {
return "governance/screen/redirect";
}
- @RequestMapping("/{id}/edit")
- public String edit(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/edit")
+ public String edit(@RequestParam("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "edit", "weights");
String service = request.getParameter("service");
String input = request.getParameter("input");
@@ -238,19 +226,14 @@ public class WeightsController extends BaseController {
return "governance/screen/weights/edit";
}
- //public void sameSeviceEdit(Long id, Map<String, Object> context) {
- // add(context);
- // show(id, context);
- //}
-
/**
* load weight for editing
*
* @param id
*/
- @RequestMapping("/{id}")
- public String show(@PathVariable("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/detail")
+ public String show(@RequestParam("id") Long id, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "show", "weights");
Weight weight = OverrideUtils.overrideToWeight(overrideService.findById(id));
model.addAttribute("weight", weight);
@@ -279,8 +262,8 @@ public class WeightsController extends BaseController {
* @param ids
* @return
*/
- @RequestMapping("/{ids}/delete")
- public String delete(@PathVariable("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
+ @RequestMapping("/delete")
+ public String delete(@RequestParam("ids") Long[] ids, HttpServletRequest request, HttpServletResponse response, Model model) {
prepare(request, response, model, "delete", "weights");
boolean success = true;
for (Long id : ids) {
diff --git a/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/home/IndexController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/home/IndexController.java
new file mode 100644
index 0000000..5c83a0a
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/home/IndexController.java
@@ -0,0 +1,48 @@
+//package org.apache.dubbo.admin.web.mvc.home;
+//
+//import org.apache.dubbo.admin.governance.service.ConsumerService;
+//import org.apache.dubbo.admin.governance.service.ProviderService;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Controller;
+//import org.springframework.ui.Model;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RequestParam;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//
+///**
+// * @author zmx ON 2018/7/20
+// */
+//
+//@Controller
+//public class IndexController {
+//
+// @Autowired
+// private ProviderService providerService;
+//
+// @Autowired
+// private ConsumerService consumerService;
+//
+// @RequestMapping("/")
+// public String search(@RequestParam(required = false) String filter,
+// @RequestParam(required = false, defaultValue = "") String pattern,
+// HttpServletRequest request,
+// HttpServletResponse response, Model model) {
+// if ("app".equals(pattern)) {
+// model.addAttribute("active", "app");
+// } else if ("ip".equals(pattern)) {
+// model.addAttribute("active", "ip");
+// } else {
+// model.addAttribute("active", "service");
+// }
+//
+// return "serviceSearch";
+//
+// }
+//
+// @RequestMapping("/index")
+// public String index() {
+// return "index";
+// }
+//}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpController.java
similarity index 91%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpController.java
index 64cfae3..fb1433f 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpController.java
@@ -14,34 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.sysinfo;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.sysinfo;
import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.web.mvc.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.*;
+
@Controller
@RequestMapping("/sysinfo/dump")
public class DumpController extends BaseController {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpsController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpsController.java
similarity index 91%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpsController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpsController.java
index d7b4ff0..2357c81 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/DumpsController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpsController.java
@@ -14,23 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.sysinfo;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
+package org.apache.dubbo.admin.web.mvc.sysinfo;
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.web.mvc.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+
@Controller
@RequestMapping("/sysinfo/dumps")
public class DumpsController extends BaseController {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/EnvsController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/EnvsController.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/EnvsController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/EnvsController.java
index 839b413..840c610 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/EnvsController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/EnvsController.java
@@ -14,8 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.sysinfo;
+package org.apache.dubbo.admin.web.mvc.sysinfo;
+import com.alibaba.dubbo.common.Version;
+import com.alibaba.dubbo.common.utils.NetUtils;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.lang.management.ManagementFactory;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -23,17 +32,6 @@ import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.dubbo.common.Version;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-
@Controller
@RequestMapping("/sysinfo/envs")
public class EnvsController extends BaseController {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/LogsController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/LogsController.java
similarity index 77%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/LogsController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/LogsController.java
index 0e24af4..34c2034 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/LogsController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/LogsController.java
@@ -14,27 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.sysinfo;
+package org.apache.dubbo.admin.web.mvc.sysinfo;
+import com.alibaba.dubbo.common.logger.Level;
+import com.alibaba.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.admin.web.mvc.BaseController;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.text.SimpleDateFormat;
import java.util.Date;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.alibaba.dubbo.common.logger.Level;
-import com.alibaba.dubbo.common.logger.LoggerFactory;
-import com.alibaba.dubboadmin.registry.common.domain.User;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/sysinfo/logs")
@@ -78,22 +74,4 @@ public class LogsController extends BaseController {
model.addAttribute("content", content);
return "sysinfo/screen/logs/index";
}
-
- public boolean change(Map<String, Object> context) throws Exception {
- String contextLevel = (String) context.get("level");
- if (contextLevel == null || contextLevel.length() == 0) {
- context.put("message", getMessage("MissRequestParameters", "level"));
- return false;
- }
- if (!User.ROOT.equals(role)) {
- context.put("message", getMessage("HaveNoRootPrivilege"));
- return false;
- }
- Level level = Level.valueOf(contextLevel);
- if (level != LoggerFactory.getLevel()) {
- LoggerFactory.setLevel(level);
- }
- context.put("redirect", "/sysinfo/logs");
- return true;
- }
}
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/StatusesController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/StatusesController.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/StatusesController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/StatusesController.java
index ad2b2fb..de98ce9 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/StatusesController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/StatusesController.java
@@ -14,24 +14,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.sysinfo;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.sysinfo;
import com.alibaba.dubbo.common.extension.ExtensionLoader;
import com.alibaba.dubbo.common.status.Status;
import com.alibaba.dubbo.common.status.StatusChecker;
-import com.alibaba.dubboadmin.registry.common.StatusManager;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-
+import org.apache.dubbo.admin.registry.common.StatusManager;
+import org.apache.dubbo.admin.web.mvc.BaseController;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
@Controller
@RequestMapping("/sysinfo/statuses")
public class StatusesController extends BaseController {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/VersionsController.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/VersionsController.java
similarity index 89%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/VersionsController.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/VersionsController.java
index 711d2ff..6a601f9 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/mvc/sysinfo/VersionsController.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/VersionsController.java
@@ -14,31 +14,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.mvc.sysinfo;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+package org.apache.dubbo.admin.web.mvc.sysinfo;
import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.ConsumerService;
-import com.alibaba.dubboadmin.governance.service.ProviderService;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.web.mvc.BaseController;
-
+import org.apache.dubbo.admin.governance.service.ConsumerService;
+import org.apache.dubbo.admin.governance.service.ProviderService;
+import org.apache.dubbo.admin.registry.common.domain.Consumer;
+import org.apache.dubbo.admin.registry.common.domain.Provider;
+import org.apache.dubbo.admin.web.mvc.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
@Controller
@RequestMapping("/sysinfo")
public class VersionsController extends BaseController {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/DateFormatUtil.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/DateFormatUtil.java
similarity index 97%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/DateFormatUtil.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/DateFormatUtil.java
index caa6819..ba35bea 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/DateFormatUtil.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/DateFormatUtil.java
@@ -16,15 +16,15 @@
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.pulltool;
+package org.apache.dubbo.admin.web.pulltool;
+
+import org.apache.commons.lang3.StringUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
-import org.apache.commons.lang3.StringUtils;
-
/**
* DateFormat Utility
*
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/RootContextPath.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/RootContextPath.java
similarity index 96%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/RootContextPath.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/RootContextPath.java
index 827c58b..2e9ed1d 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/RootContextPath.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/RootContextPath.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.pulltool;
+package org.apache.dubbo.admin.web.pulltool;
public class RootContextPath {
diff --git a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/Tool.java b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/Tool.java
similarity index 93%
rename from dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/Tool.java
rename to dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/Tool.java
index fd58f37..0678476 100644
--- a/dubbo-admin/src/main/java/com/alibaba/dubboadmin/web/pulltool/Tool.java
+++ b/dubbo-admin/dubbo-ops-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/Tool.java
@@ -14,7 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.alibaba.dubboadmin.web.pulltool;
+package org.apache.dubbo.admin.web.pulltool;
+
+import org.apache.dubbo.admin.governance.service.OverrideService;
+import org.apache.dubbo.admin.governance.service.RouteService;
+import org.apache.dubbo.admin.registry.common.domain.*;
+import org.apache.dubbo.admin.registry.common.domain.Override;
+import org.apache.dubbo.admin.registry.common.route.ParseUtils;
+import org.apache.dubbo.admin.registry.common.route.RouteRule;
+import org.apache.dubbo.admin.registry.common.util.StringEscapeUtils;
+import com.alibaba.dubbo.common.Constants;
+import com.alibaba.dubbo.common.URL;
+import com.alibaba.dubbo.common.utils.NetUtils;
+import com.alibaba.dubbo.common.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
import java.io.PrintWriter;
import java.io.StringWriter;
@@ -24,31 +38,7 @@ import java.net.InetAddress;
import java.net.URLEncoder;
import java.net.UnknownHostException;
import java.text.ParseException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubboadmin.governance.service.OverrideService;
-import com.alibaba.dubboadmin.governance.service.RouteService;
-import com.alibaba.dubboadmin.registry.common.domain.Consumer;
-import com.alibaba.dubboadmin.registry.common.domain.Override;
-import com.alibaba.dubboadmin.registry.common.domain.Provider;
-import com.alibaba.dubboadmin.registry.common.domain.Route;
-import com.alibaba.dubboadmin.registry.common.domain.User;
-import com.alibaba.dubboadmin.registry.common.route.ParseUtils;
-import com.alibaba.dubboadmin.registry.common.route.RouteRule;
-import com.alibaba.dubboadmin.registry.common.route.RouteRule.MatchPair;
-import com.alibaba.dubboadmin.registry.common.util.StringEscapeUtils;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
+import java.util.*;
/**
* Tool
@@ -402,8 +392,8 @@ public class Tool {
}
String filterRule = route.getFilterRule();
if (filterRule == null || filterRule.length() == 0 || "false".equals(filterRule)) {
- Map<String, MatchPair> rule = RouteRule.parseRule(route.getMatchRule());
- MatchPair pair = rule.get("consumer.host");
+ Map<String, RouteRule.MatchPair> rule = RouteRule.parseRule(route.getMatchRule());
+ RouteRule.MatchPair pair = rule.get("consumer.host");
if (pair == null) {
pair = rule.get("host");
}
diff --git a/dubbo-admin/dubbo-ops-backend/src/main/resources/application.properties b/dubbo-admin/dubbo-ops-backend/src/main/resources/application.properties
new file mode 100644
index 0000000..c8af9a9
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-backend/src/main/resources/application.properties
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# he License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+dubbo.registry.address=zookeeper://127.0.0.1:2181
+spring.root.password=root
+spring.guest.password=guest
diff --git a/dubbo-admin/src/main/resources/dubbo-admin.xml b/dubbo-admin/dubbo-ops-backend/src/main/resources/dubbo-admin.xml
similarity index 99%
rename from dubbo-admin/src/main/resources/dubbo-admin.xml
rename to dubbo-admin/dubbo-ops-backend/src/main/resources/dubbo-admin.xml
index f32036c..2be19dc 100644
--- a/dubbo-admin/src/main/resources/dubbo-admin.xml
+++ b/dubbo-admin/dubbo-ops-backend/src/main/resources/dubbo-admin.xml
@@ -25,5 +25,4 @@
<dubbo:application name="dubbo-admin"/>
<dubbo:registry address="${dubbo.registry.address}"/>
<dubbo:reference id="registryService" interface="com.alibaba.dubbo.registry.RegistryService" check="false"/>
-
</beans>
\ No newline at end of file
diff --git a/dubbo-admin/src/main/resources/log4j.properties b/dubbo-admin/dubbo-ops-backend/src/main/resources/log4j.properties
similarity index 100%
rename from dubbo-admin/src/main/resources/log4j.properties
rename to dubbo-admin/dubbo-ops-backend/src/main/resources/log4j.properties
diff --git a/dubbo-admin/dubbo-ops-frontend/.babelrc b/dubbo-admin/dubbo-ops-frontend/.babelrc
new file mode 100644
index 0000000..3a280ba
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ ["env", {
+ "modules": false,
+ "targets": {
+ "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+ }
+ }],
+ "stage-2"
+ ],
+ "plugins": ["transform-vue-jsx", "transform-runtime"]
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/.editorconfig b/dubbo-admin/dubbo-ops-frontend/.editorconfig
new file mode 100644
index 0000000..9d08a1a
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/.editorconfig
@@ -0,0 +1,9 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
diff --git a/dubbo-admin/dubbo-ops-frontend/.eslintignore b/dubbo-admin/dubbo-ops-frontend/.eslintignore
new file mode 100644
index 0000000..e1fcc9c
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/.eslintignore
@@ -0,0 +1,4 @@
+/build/
+/config/
+/dist/
+/*.js
diff --git a/dubbo-admin/dubbo-ops-frontend/.eslintrc.js b/dubbo-admin/dubbo-ops-frontend/.eslintrc.js
new file mode 100644
index 0000000..2e2e211
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/.eslintrc.js
@@ -0,0 +1,25 @@
+// https://eslint.org/docs/user-guide/configuring
+
+module.exports = {
+ root: true,
+ parser: 'babel-eslint',
+ parserOptions: {
+ sourceType: 'module'
+ },
+ env: {
+ browser: true,
+ },
+ // https://github.com/standard/standard/blob/master/docs/RULES-en.md
+ extends: 'standard',
+ // required to lint *.vue files
+ plugins: [
+ 'html'
+ ],
+ // add your custom rules here
+ rules: {
+ // allow async-await
+ 'generator-star-spacing': 'off',
+ // allow debugger during development
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/.gitignore b/dubbo-admin/dubbo-ops-frontend/.gitignore
new file mode 100644
index 0000000..541a820
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/.gitignore
@@ -0,0 +1,14 @@
+.DS_Store
+node_modules/
+/dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
diff --git a/dubbo-admin/dubbo-ops-frontend/.postcssrc.js b/dubbo-admin/dubbo-ops-frontend/.postcssrc.js
new file mode 100644
index 0000000..eee3e92
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/.postcssrc.js
@@ -0,0 +1,10 @@
+// https://github.com/michael-ciniawsky/postcss-load-config
+
+module.exports = {
+ "plugins": {
+ "postcss-import": {},
+ "postcss-url": {},
+ // to edit target browsers: use "browserslist" field in package.json
+ "autoprefixer": {}
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/README.md b/dubbo-admin/dubbo-ops-frontend/README.md
new file mode 100644
index 0000000..5280df3
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/README.md
@@ -0,0 +1,21 @@
+# dubbo-ops-frontend
+
+> dubbo ops frontend based on vuetify
+
+## Build Setup
+
+``` bash
+# install dependencies
+npm install
+
+# serve with hot reload at localhost:8080
+npm run dev
+
+# build for production with minification
+npm run build
+
+# build for production and view the bundle analyzer report
+npm run build --report
+```
+
+For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
diff --git a/dubbo-admin/dubbo-ops-frontend/build/build.js b/dubbo-admin/dubbo-ops-frontend/build/build.js
new file mode 100644
index 0000000..8f2ad8a
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/build/build.js
@@ -0,0 +1,41 @@
+'use strict'
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+const ora = require('ora')
+const rm = require('rimraf')
+const path = require('path')
+const chalk = require('chalk')
+const webpack = require('webpack')
+const config = require('../config')
+const webpackConfig = require('./webpack.prod.conf')
+
+const spinner = ora('building for production...')
+spinner.start()
+
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
+ if (err) throw err
+ webpack(webpackConfig, (err, stats) => {
+ spinner.stop()
+ if (err) throw err
+ process.stdout.write(stats.toString({
+ colors: true,
+ modules: false,
+ children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
+ chunks: false,
+ chunkModules: false
+ }) + '\n\n')
+
+ if (stats.hasErrors()) {
+ console.log(chalk.red(' Build failed with errors.\n'))
+ process.exit(1)
+ }
+
+ console.log(chalk.cyan(' Build complete.\n'))
+ console.log(chalk.yellow(
+ ' Tip: built files are meant to be served over an HTTP server.\n' +
+ ' Opening index.html over file:// won\'t work.\n'
+ ))
+ })
+})
diff --git a/dubbo-admin/dubbo-ops-frontend/build/check-versions.js b/dubbo-admin/dubbo-ops-frontend/build/check-versions.js
new file mode 100644
index 0000000..3ef972a
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/build/check-versions.js
@@ -0,0 +1,54 @@
+'use strict'
+const chalk = require('chalk')
+const semver = require('semver')
+const packageConfig = require('../package.json')
+const shell = require('shelljs')
+
+function exec (cmd) {
+ return require('child_process').execSync(cmd).toString().trim()
+}
+
+const versionRequirements = [
+ {
+ name: 'node',
+ currentVersion: semver.clean(process.version),
+ versionRequirement: packageConfig.engines.node
+ }
+]
+
+if (shell.which('npm')) {
+ versionRequirements.push({
+ name: 'npm',
+ currentVersion: exec('npm --version'),
+ versionRequirement: packageConfig.engines.npm
+ })
+}
+
+module.exports = function () {
+ const warnings = []
+
+ for (let i = 0; i < versionRequirements.length; i++) {
+ const mod = versionRequirements[i]
+
+ if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
+ warnings.push(mod.name + ': ' +
+ chalk.red(mod.currentVersion) + ' should be ' +
+ chalk.green(mod.versionRequirement)
+ )
+ }
+ }
+
+ if (warnings.length) {
+ console.log('')
+ console.log(chalk.yellow('To use this template, you must update following to modules:'))
+ console.log()
+
+ for (let i = 0; i < warnings.length; i++) {
+ const warning = warnings[i]
+ console.log(' ' + warning)
+ }
+
+ console.log()
+ process.exit(1)
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/build/logo.png b/dubbo-admin/dubbo-ops-frontend/build/logo.png
new file mode 100644
index 0000000..f3d2503
Binary files /dev/null and b/dubbo-admin/dubbo-ops-frontend/build/logo.png differ
diff --git a/dubbo-admin/dubbo-ops-frontend/build/utils.js b/dubbo-admin/dubbo-ops-frontend/build/utils.js
new file mode 100644
index 0000000..e534fb0
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/build/utils.js
@@ -0,0 +1,101 @@
+'use strict'
+const path = require('path')
+const config = require('../config')
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const packageConfig = require('../package.json')
+
+exports.assetsPath = function (_path) {
+ const assetsSubDirectory = process.env.NODE_ENV === 'production'
+ ? config.build.assetsSubDirectory
+ : config.dev.assetsSubDirectory
+
+ return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function (options) {
+ options = options || {}
+
+ const cssLoader = {
+ loader: 'css-loader',
+ options: {
+ sourceMap: options.sourceMap
+ }
+ }
+
+ const postcssLoader = {
+ loader: 'postcss-loader',
+ options: {
+ sourceMap: options.sourceMap
+ }
+ }
+
+ // generate loader string to be used with extract text plugin
+ function generateLoaders (loader, loaderOptions) {
+ const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
+
+ if (loader) {
+ loaders.push({
+ loader: loader + '-loader',
+ options: Object.assign({}, loaderOptions, {
+ sourceMap: options.sourceMap
+ })
+ })
+ }
+
+ // Extract CSS when that option is specified
+ // (which is the case during production build)
+ if (options.extract) {
+ return ExtractTextPlugin.extract({
+ use: loaders,
+ fallback: 'vue-style-loader'
+ })
+ } else {
+ return ['vue-style-loader'].concat(loaders)
+ }
+ }
+
+ // https://vue-loader.vuejs.org/en/configurations/extract-css.html
+ return {
+ css: generateLoaders(),
+ postcss: generateLoaders(),
+ less: generateLoaders('less'),
+ sass: generateLoaders('sass', { indentedSyntax: true }),
+ scss: generateLoaders('sass'),
+ stylus: generateLoaders('stylus'),
+ styl: generateLoaders('stylus')
+ }
+}
+
+// Generate loaders for standalone style files (outside of .vue)
+exports.styleLoaders = function (options) {
+ const output = []
+ const loaders = exports.cssLoaders(options)
+
+ for (const extension in loaders) {
+ const loader = loaders[extension]
+ output.push({
+ test: new RegExp('\\.' + extension + '$'),
+ use: loader
+ })
+ }
+
+ return output
+}
+
+exports.createNotifierCallback = () => {
+ const notifier = require('node-notifier')
+
+ return (severity, errors) => {
+ if (severity !== 'error') return
+
+ const error = errors[0]
+ const filename = error.file && error.file.split('!').pop()
+
+ notifier.notify({
+ title: packageConfig.name,
+ message: severity + ': ' + error.name,
+ subtitle: filename || '',
+ icon: path.join(__dirname, 'logo.png')
+ })
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/build/vue-loader.conf.js b/dubbo-admin/dubbo-ops-frontend/build/vue-loader.conf.js
new file mode 100644
index 0000000..33ed58b
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/build/vue-loader.conf.js
@@ -0,0 +1,22 @@
+'use strict'
+const utils = require('./utils')
+const config = require('../config')
+const isProduction = process.env.NODE_ENV === 'production'
+const sourceMapEnabled = isProduction
+ ? config.build.productionSourceMap
+ : config.dev.cssSourceMap
+
+module.exports = {
+ loaders: utils.cssLoaders({
+ sourceMap: sourceMapEnabled,
+ extract: isProduction
+ }),
+ cssSourceMap: sourceMapEnabled,
+ cacheBusting: config.dev.cacheBusting,
+ transformToRequire: {
+ video: ['src', 'poster'],
+ source: 'src',
+ img: 'src',
+ image: 'xlink:href'
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/build/webpack.base.conf.js b/dubbo-admin/dubbo-ops-frontend/build/webpack.base.conf.js
new file mode 100644
index 0000000..1f4f47e
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/build/webpack.base.conf.js
@@ -0,0 +1,92 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const config = require('../config')
+const vueLoaderConfig = require('./vue-loader.conf')
+
+function resolve (dir) {
+ return path.join(__dirname, '..', dir)
+}
+
+const createLintingRule = () => ({
+ test: /\.(js|vue)$/,
+ loader: 'eslint-loader',
+ enforce: 'pre',
+ include: [resolve('src'), resolve('test')],
+ options: {
+ formatter: require('eslint-friendly-formatter'),
+ emitWarning: !config.dev.showEslintErrorsInOverlay
+ }
+})
+
+module.exports = {
+ context: path.resolve(__dirname, '../'),
+ entry: {
+ app: './src/main.js'
+ },
+ output: {
+ path: config.build.assetsRoot,
+ filename: '[name].js',
+ publicPath: process.env.NODE_ENV === 'production'
+ ? config.build.assetsPublicPath
+ : config.dev.assetsPublicPath
+ },
+ resolve: {
+ extensions: ['.js', '.vue', '.json'],
+ alias: {
+ 'vue$': 'vue/dist/vue.esm.js',
+ '@': resolve('src'),
+ }
+ },
+ module: {
+ rules: [
+ ...(config.dev.useEslint ? [createLintingRule()] : []),
+ {
+ test: /\.vue$/,
+ loader: 'vue-loader',
+ options: vueLoaderConfig
+ },
+ {
+ test: /\.js$/,
+ loader: 'babel-loader',
+ include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
+ },
+ {
+ test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+ loader: 'url-loader',
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('img/[name].[hash:7].[ext]')
+ }
+ },
+ {
+ test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
+ loader: 'url-loader',
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('media/[name].[hash:7].[ext]')
+ }
+ },
+ {
+ test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+ loader: 'url-loader',
+ options: {
+ limit: 10000,
+ name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+ }
+ }
+ ]
+ },
+ node: {
+ // prevent webpack from injecting useless setImmediate polyfill because Vue
+ // source contains it (although only uses it if it's native).
+ setImmediate: false,
+ // prevent webpack from injecting mocks to Node native modules
+ // that does not make sense for the client
+ dgram: 'empty',
+ fs: 'empty',
+ net: 'empty',
+ tls: 'empty',
+ child_process: 'empty'
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/build/webpack.dev.conf.js b/dubbo-admin/dubbo-ops-frontend/build/webpack.dev.conf.js
new file mode 100755
index 0000000..070ae22
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/build/webpack.dev.conf.js
@@ -0,0 +1,95 @@
+'use strict'
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const path = require('path')
+const baseWebpackConfig = require('./webpack.base.conf')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+const portfinder = require('portfinder')
+
+const HOST = process.env.HOST
+const PORT = process.env.PORT && Number(process.env.PORT)
+
+const devWebpackConfig = merge(baseWebpackConfig, {
+ module: {
+ rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
+ },
+ // cheap-module-eval-source-map is faster for development
+ devtool: config.dev.devtool,
+
+ // these devServer options should be customized in /config/index.js
+ devServer: {
+ clientLogLevel: 'warning',
+ historyApiFallback: {
+ rewrites: [
+ { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
+ ],
+ },
+ hot: true,
+ contentBase: false, // since we use CopyWebpackPlugin.
+ compress: true,
+ host: HOST || config.dev.host,
+ port: PORT || config.dev.port,
+ open: config.dev.autoOpenBrowser,
+ overlay: config.dev.errorOverlay
+ ? { warnings: false, errors: true }
+ : false,
+ publicPath: config.dev.assetsPublicPath,
+ proxy: config.dev.proxyTable,
+ quiet: true, // necessary for FriendlyErrorsPlugin
+ watchOptions: {
+ poll: config.dev.poll,
+ }
+ },
+ plugins: [
+ new webpack.DefinePlugin({
+ 'process.env': require('../config/dev.env')
+ }),
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
+ new webpack.NoEmitOnErrorsPlugin(),
+ // https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: 'index.html',
+ template: 'index.html',
+ inject: true
+ }),
+ // copy custom static assets
+ new CopyWebpackPlugin([
+ {
+ from: path.resolve(__dirname, '../static'),
+ to: config.dev.assetsSubDirectory,
+ ignore: ['.*']
+ }
+ ])
+ ]
+})
+
+module.exports = new Promise((resolve, reject) => {
+ portfinder.basePort = process.env.PORT || config.dev.port
+ portfinder.getPort((err, port) => {
+ if (err) {
+ reject(err)
+ } else {
+ // publish the new Port, necessary for e2e tests
+ process.env.PORT = port
+ // add port to devServer config
+ devWebpackConfig.devServer.port = port
+
+ // Add FriendlyErrorsPlugin
+ devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
+ compilationSuccessInfo: {
+ messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
+ },
+ onErrors: config.dev.notifyOnErrors
+ ? utils.createNotifierCallback()
+ : undefined
+ }))
+
+ resolve(devWebpackConfig)
+ }
+ })
+})
diff --git a/dubbo-admin/dubbo-ops-frontend/build/webpack.prod.conf.js b/dubbo-admin/dubbo-ops-frontend/build/webpack.prod.conf.js
new file mode 100644
index 0000000..d9f99f6
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/build/webpack.prod.conf.js
@@ -0,0 +1,145 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const baseWebpackConfig = require('./webpack.base.conf')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
+
+const env = require('../config/prod.env')
+
+const webpackConfig = merge(baseWebpackConfig, {
+ module: {
+ rules: utils.styleLoaders({
+ sourceMap: config.build.productionSourceMap,
+ extract: true,
+ usePostCSS: true
+ })
+ },
+ devtool: config.build.productionSourceMap ? config.build.devtool : false,
+ output: {
+ path: config.build.assetsRoot,
+ filename: utils.assetsPath('js/[name].[chunkhash].js'),
+ chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
+ },
+ plugins: [
+ // http://vuejs.github.io/vue-loader/en/workflow/production.html
+ new webpack.DefinePlugin({
+ 'process.env': env
+ }),
+ new UglifyJsPlugin({
+ uglifyOptions: {
+ compress: {
+ warnings: false
+ }
+ },
+ sourceMap: config.build.productionSourceMap,
+ parallel: true
+ }),
+ // extract css into its own file
+ new ExtractTextPlugin({
+ filename: utils.assetsPath('css/[name].[contenthash].css'),
+ // Setting the following option to `false` will not extract CSS from codesplit chunks.
+ // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
+ // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
+ // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
+ allChunks: true,
+ }),
+ // Compress extracted CSS. We are using this plugin so that possible
+ // duplicated CSS from different components can be deduped.
+ new OptimizeCSSPlugin({
+ cssProcessorOptions: config.build.productionSourceMap
+ ? { safe: true, map: { inline: false } }
+ : { safe: true }
+ }),
+ // generate dist index.html with correct asset hash for caching.
+ // you can customize output by editing /index.html
+ // see https://github.com/ampedandwired/html-webpack-plugin
+ new HtmlWebpackPlugin({
+ filename: config.build.index,
+ template: 'index.html',
+ inject: true,
+ minify: {
+ removeComments: true,
+ collapseWhitespace: true,
+ removeAttributeQuotes: true
+ // more options:
+ // https://github.com/kangax/html-minifier#options-quick-reference
+ },
+ // necessary to consistently work with multiple chunks via CommonsChunkPlugin
+ chunksSortMode: 'dependency'
+ }),
+ // keep module.id stable when vendor modules does not change
+ new webpack.HashedModuleIdsPlugin(),
+ // enable scope hoisting
+ new webpack.optimize.ModuleConcatenationPlugin(),
+ // split vendor js into its own file
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'vendor',
+ minChunks (module) {
+ // any required modules inside node_modules are extracted to vendor
+ return (
+ module.resource &&
+ /\.js$/.test(module.resource) &&
+ module.resource.indexOf(
+ path.join(__dirname, '../node_modules')
+ ) === 0
+ )
+ }
+ }),
+ // extract webpack runtime and module manifest to its own file in order to
+ // prevent vendor hash from being updated whenever app bundle is updated
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'manifest',
+ minChunks: Infinity
+ }),
+ // This instance extracts shared chunks from code splitted chunks and bundles them
+ // in a separate chunk, similar to the vendor chunk
+ // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'app',
+ async: 'vendor-async',
+ children: true,
+ minChunks: 3
+ }),
+
+ // copy custom static assets
+ new CopyWebpackPlugin([
+ {
+ from: path.resolve(__dirname, '../static'),
+ to: config.build.assetsSubDirectory,
+ ignore: ['.*']
+ }
+ ])
+ ]
+})
+
+if (config.build.productionGzip) {
+ const CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+ webpackConfig.plugins.push(
+ new CompressionWebpackPlugin({
+ asset: '[path].gz[query]',
+ algorithm: 'gzip',
+ test: new RegExp(
+ '\\.(' +
+ config.build.productionGzipExtensions.join('|') +
+ ')$'
+ ),
+ threshold: 10240,
+ minRatio: 0.8
+ })
+ )
+}
+
+if (config.build.bundleAnalyzerReport) {
+ const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
+ webpackConfig.plugins.push(new BundleAnalyzerPlugin())
+}
+
+module.exports = webpackConfig
diff --git a/dubbo-admin/dubbo-ops-frontend/config/dev.env.js b/dubbo-admin/dubbo-ops-frontend/config/dev.env.js
new file mode 100644
index 0000000..1e22973
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/config/dev.env.js
@@ -0,0 +1,7 @@
+'use strict'
+const merge = require('webpack-merge')
+const prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+ NODE_ENV: '"development"'
+})
diff --git a/dubbo-admin/dubbo-ops-frontend/config/index.js b/dubbo-admin/dubbo-ops-frontend/config/index.js
new file mode 100644
index 0000000..6f3f8f3
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/config/index.js
@@ -0,0 +1,76 @@
+'use strict'
+// Template version: 1.2.8
+// see http://vuejs-templates.github.io/webpack for documentation.
+
+const path = require('path')
+
+module.exports = {
+ dev: {
+
+ // Paths
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/',
+ proxyTable: {},
+
+ // Various Dev Server settings
+ host: 'localhost', // can be overwritten by process.env.HOST
+ port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
+ autoOpenBrowser: false,
+ errorOverlay: true,
+ notifyOnErrors: true,
+ poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
+
+ // Use Eslint Loader?
+ // If true, your code will be linted during bundling and
+ // linting errors and warnings will be shown in the console.
+ useEslint: true,
+ // If true, eslint errors and warnings will also be shown in the error overlay
+ // in the browser.
+ showEslintErrorsInOverlay: false,
+
+ /**
+ * Source Maps
+ */
+
+ // https://webpack.js.org/configuration/devtool/#development
+ devtool: 'cheap-module-eval-source-map',
+
+ // If you have problems debugging vue-files in devtools,
+ // set this to false - it *may* help
+ // https://vue-loader.vuejs.org/en/options.html#cachebusting
+ cacheBusting: true,
+
+ cssSourceMap: true,
+ },
+
+ build: {
+ // Template for index.html
+ index: path.resolve(__dirname, '../target/dist/index.html'),
+
+ // Paths
+ assetsRoot: path.resolve(__dirname, '../target/dist'),
+ assetsSubDirectory: 'static',
+ assetsPublicPath: '/',
+
+ /**
+ * Source Maps
+ */
+
+ productionSourceMap: true,
+ // https://webpack.js.org/configuration/devtool/#production
+ devtool: '#source-map',
+
+ // Gzip off by default as many popular static hosts such as
+ // Surge or Netlify already gzip all static assets for you.
+ // Before setting to `true`, make sure to:
+ // npm install --save-dev compression-webpack-plugin
+ productionGzip: false,
+ productionGzipExtensions: ['js', 'css'],
+
+ // Run the build command with an extra argument to
+ // View the bundle analyzer report after build finishes:
+ // `npm run build --report`
+ // Set to `true` or `false` to always turn it on or off
+ bundleAnalyzerReport: process.env.npm_config_report
+ }
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/config/prod.env.js b/dubbo-admin/dubbo-ops-frontend/config/prod.env.js
new file mode 100644
index 0000000..a6f9976
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/config/prod.env.js
@@ -0,0 +1,4 @@
+'use strict'
+module.exports = {
+ NODE_ENV: '"production"'
+}
diff --git a/dubbo-admin/dubbo-ops-frontend/index.html b/dubbo-admin/dubbo-ops-frontend/index.html
new file mode 100644
index 0000000..29fd150
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/index.html
@@ -0,0 +1,30 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ he License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width,initial-scale=1.0">
+ <title>Dubbo ops</title>
+ <link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons' rel="stylesheet">
+ </head>
+ <body>
+ <div id="app"></div>
+ <!-- built files will be auto injected -->
+ </body>
+</html>
diff --git a/dubbo-admin/dubbo-ops-frontend/package-lock.json b/dubbo-admin/dubbo-ops-frontend/package-lock.json
new file mode 100644
index 0000000..c234976
--- /dev/null
+++ b/dubbo-admin/dubbo-ops-frontend/package-lock.json
@@ -0,0 +1,11910 @@
+{
+ "name": "dubbo-ops-frontend",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
+ "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
+ "dev": true,
+ "requires": {
+ "mime-types": "2.1.19",
+ "negotiator": "0.6.1"
+ }
+ },
+ "acorn": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
+ "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
+ "dev": true
+ },
+ "acorn-dynamic-import": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz",
+ "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
+ "dev": true,
+ "requires": {
+ "acorn": "4.0.13"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
+ "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+ "dev": true
+ }
+ }
+ },
+ "acorn-jsx": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
+ "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
+ "dev": true,
+ "requires": {
+ "acorn": "3.3.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
+ "dev": true
+ }
+ }
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+ "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+ "dev": true,
+ "requires": {
+ "co": "4.6.0",
+ "json-stable-stringify": "1.0.1"
+ }
+ },
+ "ajv-keywords": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
+ "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
+ "dev": true
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
+ "dev": true
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "1.9.2"
+ }
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "3.1.10",
+ "normalize-path": "2.1.1"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+ "dev": true
+ },
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.3",
+ "es-abstract": "1.12.0"
+ }
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "1.0.3"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
+ }
+ },
+ "assert": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz",
+ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
+ "dev": true,
+ "requires": {
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.10"
+ }
+ },
+ "async-each": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
+ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "dev": true
+ },
+ "async-limiter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
+ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz",
+ "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "7.2.6",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz",
+ "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==",
+ "dev": true,
+ "requires": {
+ "browserslist": "2.11.3",
+ "caniuse-lite": "1.0.30000877",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "6.0.23",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "axios": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
+ "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
+ "requires": {
+ "follow-redirects": "1.5.5",
+ "is-buffer": "1.1.6"
+ }
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "babel-core": {
+ "version": "6.26.3",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz",
+ "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-generator": "6.26.1",
+ "babel-helpers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-register": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "convert-source-map": "1.5.1",
+ "debug": "2.6.9",
+ "json5": "0.5.1",
+ "lodash": "4.17.10",
+ "minimatch": "3.0.4",
+ "path-is-absolute": "1.0.1",
+ "private": "0.1.8",
+ "slash": "1.0.0",
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "babel-eslint": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz",
+ "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0"
+ }
+ },
+ "babel-generator": {
+ "version": "6.26.1",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz",
+ "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==",
+ "dev": true,
+ "requires": {
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "detect-indent": "4.0.0",
+ "jsesc": "1.3.0",
+ "lodash": "4.17.10",
+ "source-map": "0.5.7",
+ "trim-right": "1.0.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "babel-helper-bindify-decorators": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz",
+ "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-builder-binary-assignment-operator-visitor": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz",
+ "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=",
+ "dev": true,
+ "requires": {
+ "babel-helper-explode-assignable-expression": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-call-delegate": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz",
+ "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-define-map": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
+ "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.10"
+ }
+ },
+ "babel-helper-explode-assignable-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz",
+ "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-explode-class": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz",
+ "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=",
+ "dev": true,
+ "requires": {
+ "babel-helper-bindify-decorators": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
+ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
+ "dev": true,
+ "requires": {
+ "babel-helper-get-function-arity": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-get-function-arity": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
+ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-hoist-variables": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz",
+ "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-optimise-call-expression": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz",
+ "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-regex": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
+ "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.10"
+ }
+ },
+ "babel-helper-remap-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-replace-supers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz",
+ "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=",
+ "dev": true,
+ "requires": {
+ "babel-helper-optimise-call-expression": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-helper-vue-jsx-merge-props": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+ "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==",
+ "dev": true
+ },
+ "babel-helpers": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz",
+ "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-loader": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz",
+ "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "1.0.0",
+ "loader-utils": "1.1.0",
+ "mkdirp": "0.5.1"
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-check-es2015-constants": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz",
+ "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-syntax-async-functions": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz",
+ "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=",
+ "dev": true
+ },
+ "babel-plugin-syntax-async-generators": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz",
+ "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=",
+ "dev": true
+ },
+ "babel-plugin-syntax-class-properties": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
+ "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=",
+ "dev": true
+ },
+ "babel-plugin-syntax-decorators": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz",
+ "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=",
+ "dev": true
+ },
+ "babel-plugin-syntax-dynamic-import": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
+ "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=",
+ "dev": true
+ },
+ "babel-plugin-syntax-exponentiation-operator": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz",
+ "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=",
+ "dev": true
+ },
+ "babel-plugin-syntax-jsx": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
+ "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=",
+ "dev": true
+ },
+ "babel-plugin-syntax-object-rest-spread": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz",
+ "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=",
+ "dev": true
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz",
+ "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=",
+ "dev": true
+ },
+ "babel-plugin-transform-async-generator-functions": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz",
+ "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=",
+ "dev": true,
+ "requires": {
+ "babel-helper-remap-async-to-generator": "6.24.1",
+ "babel-plugin-syntax-async-generators": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-async-to-generator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz",
+ "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=",
+ "dev": true,
+ "requires": {
+ "babel-helper-remap-async-to-generator": "6.24.1",
+ "babel-plugin-syntax-async-functions": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-class-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz",
+ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-plugin-syntax-class-properties": "6.13.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-decorators": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz",
+ "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=",
+ "dev": true,
+ "requires": {
+ "babel-helper-explode-class": "6.24.1",
+ "babel-plugin-syntax-decorators": "6.13.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-arrow-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
+ "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoped-functions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz",
+ "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-block-scoping": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
+ "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "lodash": "4.17.10"
+ }
+ },
+ "babel-plugin-transform-es2015-classes": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz",
+ "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
+ "dev": true,
+ "requires": {
+ "babel-helper-define-map": "6.26.0",
+ "babel-helper-function-name": "6.24.1",
+ "babel-helper-optimise-call-expression": "6.24.1",
+ "babel-helper-replace-supers": "6.24.1",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-computed-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz",
+ "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-destructuring": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz",
+ "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-duplicate-keys": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz",
+ "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-for-of": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz",
+ "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz",
+ "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz",
+ "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-amd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz",
+ "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.26.2",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz",
+ "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-strict-mode": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-systemjs": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz",
+ "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=",
+ "dev": true,
+ "requires": {
+ "babel-helper-hoist-variables": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-modules-umd": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz",
+ "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-transform-es2015-modules-amd": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-object-super": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz",
+ "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=",
+ "dev": true,
+ "requires": {
+ "babel-helper-replace-supers": "6.24.1",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-parameters": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz",
+ "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=",
+ "dev": true,
+ "requires": {
+ "babel-helper-call-delegate": "6.24.1",
+ "babel-helper-get-function-arity": "6.24.1",
+ "babel-runtime": "6.26.0",
+ "babel-template": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-shorthand-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz",
+ "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-spread": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz",
+ "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-sticky-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz",
+ "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-template-literals": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz",
+ "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-typeof-symbol": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz",
+ "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-es2015-unicode-regex": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz",
+ "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
+ "dev": true,
+ "requires": {
+ "babel-helper-regex": "6.26.0",
+ "babel-runtime": "6.26.0",
+ "regexpu-core": "2.0.0"
+ }
+ },
+ "babel-plugin-transform-exponentiation-operator": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz",
+ "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=",
+ "dev": true,
+ "requires": {
+ "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1",
+ "babel-plugin-syntax-exponentiation-operator": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-object-rest-spread": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz",
+ "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-object-rest-spread": "6.13.0",
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-regenerator": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
+ "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "0.10.1"
+ }
+ },
+ "babel-plugin-transform-runtime": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz",
+ "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-strict-mode": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz",
+ "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0"
+ }
+ },
+ "babel-plugin-transform-vue-jsx": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-3.7.0.tgz",
+ "integrity": "sha512-W39X07/n3oJMQd8tALBO+440NraGSF//Lo1ydd/9Nme3+QiRGFBb1Q39T9iixh0jZPPbfv3so18tNoIgLatymw==",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2"
+ }
+ },
+ "babel-preset-env": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
+ "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-check-es2015-constants": "6.22.0",
+ "babel-plugin-syntax-trailing-function-commas": "6.22.0",
+ "babel-plugin-transform-async-to-generator": "6.24.1",
+ "babel-plugin-transform-es2015-arrow-functions": "6.22.0",
+ "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
+ "babel-plugin-transform-es2015-block-scoping": "6.26.0",
+ "babel-plugin-transform-es2015-classes": "6.24.1",
+ "babel-plugin-transform-es2015-computed-properties": "6.24.1",
+ "babel-plugin-transform-es2015-destructuring": "6.23.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
+ "babel-plugin-transform-es2015-for-of": "6.23.0",
+ "babel-plugin-transform-es2015-function-name": "6.24.1",
+ "babel-plugin-transform-es2015-literals": "6.22.0",
+ "babel-plugin-transform-es2015-modules-amd": "6.24.1",
+ "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
+ "babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
+ "babel-plugin-transform-es2015-modules-umd": "6.24.1",
+ "babel-plugin-transform-es2015-object-super": "6.24.1",
+ "babel-plugin-transform-es2015-parameters": "6.24.1",
+ "babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
+ "babel-plugin-transform-es2015-spread": "6.22.0",
+ "babel-plugin-transform-es2015-sticky-regex": "6.24.1",
+ "babel-plugin-transform-es2015-template-literals": "6.22.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
+ "babel-plugin-transform-es2015-unicode-regex": "6.24.1",
+ "babel-plugin-transform-exponentiation-operator": "6.24.1",
+ "babel-plugin-transform-regenerator": "6.26.0",
+ "browserslist": "3.2.8",
+ "invariant": "2.2.4",
+ "semver": "5.5.0"
+ },
+ "dependencies": {
+ "browserslist": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz",
+ "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "1.0.30000877",
+ "electron-to-chromium": "1.3.58"
+ }
+ }
+ }
+ },
+ "babel-preset-stage-2": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz",
+ "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-dynamic-import": "6.18.0",
+ "babel-plugin-transform-class-properties": "6.24.1",
+ "babel-plugin-transform-decorators": "6.24.1",
+ "babel-preset-stage-3": "6.24.1"
+ }
+ },
+ "babel-preset-stage-3": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz",
+ "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-trailing-function-commas": "6.22.0",
+ "babel-plugin-transform-async-generator-functions": "6.24.1",
+ "babel-plugin-transform-async-to-generator": "6.24.1",
+ "babel-plugin-transform-exponentiation-operator": "6.24.1",
+ "babel-plugin-transform-object-rest-spread": "6.26.0"
+ }
+ },
+ "babel-register": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
+ "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.3",
+ "babel-runtime": "6.26.0",
+ "core-js": "2.5.7",
+ "home-or-tmp": "2.0.0",
+ "lodash": "4.17.10",
+ "mkdirp": "0.5.1",
+ "source-map-support": "0.4.18"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "2.5.7",
+ "regenerator-runtime": "0.11.1"
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "babel-traverse": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "lodash": "4.17.10"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "babel-messages": "6.23.0",
+ "babel-runtime": "6.26.0",
+ "babel-types": "6.26.0",
+ "babylon": "6.18.0",
+ "debug": "2.6.9",
+ "globals": "9.18.0",
+ "invariant": "2.2.4",
+ "lodash": "4.17.10"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "esutils": "2.0.2",
+ "lodash": "4.17.10",
+ "to-fast-properties": "1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "1.0.1",
+ "class-utils": "0.3.6",
+ "component-emitter": "1.2.1",
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "mixin-deep": "1.3.1",
+ "pascalcase": "0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
+ "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
+ "dev": true
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+ "dev": true
+ },
+ "bfj-node4": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz",
+ "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.5.1",
+ "check-types": "7.4.0",
+ "tryer": "1.0.1"
+ }
+ },
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
+ "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.18.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
+ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "content-type": "1.0.4",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "http-errors": "1.6.3",
+ "iconv-lite": "0.4.19",
+ "on-finished": "2.3.0",
+ "qs": "6.5.1",
+ "raw-body": "2.3.2",
+ "type-is": "1.6.16"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "dev": true,
+ "requires": {
+ "array-flatten": "2.1.1",
+ "deep-equal": "1.0.1",
+ "dns-equal": "1.0.0",
+ "dns-txt": "2.0.2",
+ "multicast-dns": "6.2.3",
+ "multicast-dns-service-types": "1.1.0"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
+ "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=",
+ "dev": true
+ }
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "1.1.0",
+ "array-unique": "0.3.2",
+ "extend-shallow": "2.0.1",
+ "fill-range": "4.0.0",
+ "isobject": "3.0.1",
+ "repeat-element": "1.1.2",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "1.0.3",
+ "cipher-base": "1.0.4",
+ "create-hash": "1.2.0",
+ "evp_bytestokey": "1.0.3",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "1.2.0",
+ "browserify-des": "1.0.2",
+ "evp_bytestokey": "1.0.3"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "des.js": "1.0.0",
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "randombytes": "2.0.6"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "browserify-rsa": "4.0.1",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "elliptic": "6.4.1",
+ "inherits": "2.0.3",
+ "parse-asn1": "5.1.1"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "1.0.6"
+ }
+ },
+ "browserslist": {
+ "version": "2.11.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
+ "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "1.0.30000877",
+ "electron-to-chromium": "1.3.58"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "1.3.0",
+ "ieee754": "1.1.12",
+ "isarray": "1.0.0"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "cacache": {
+ "version": "10.0.4",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz",
+ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.5.1",
+ "chownr": "1.0.1",
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "lru-cache": "4.1.3",
+ "mississippi": "2.0.0",
+ "mkdirp": "0.5.1",
+ "move-concurrently": "1.0.1",
+ "promise-inflight": "1.0.1",
+ "rimraf": "2.6.2",
+ "ssri": "5.3.0",
+ "unique-filename": "1.1.0",
+ "y18n": "4.0.0"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "1.0.0",
+ "component-emitter": "1.2.1",
+ "get-value": "2.0.6",
+ "has-value": "1.0.0",
+ "isobject": "3.0.1",
+ "set-value": "2.0.0",
+ "to-object-path": "0.3.0",
+ "union-value": "1.0.0",
+ "unset-value": "1.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
+ "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
+ "dev": true,
+ "requires": {
+ "callsites": "0.2.0"
+ }
+ },
+ "callsites": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
+ "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
+ "dev": true
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "2.3.2",
+ "upper-case": "1.1.3"
+ }
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
+ "caniuse-api": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
+ "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-db": "1.0.30000877",
+ "lodash.memoize": "4.1.2",
+ "lodash.uniq": "4.5.0"
+ },
+ "dependencies": {
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000877",
+ "electron-to-chromium": "1.3.58"
+ }
+ }
+ }
+ },
+ "caniuse-db": {
+ "version": "1.0.30000877",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000877.tgz",
+ "integrity": "sha512-9RcqvE8HYgdZZzFW6xBmj/CeCaTyCJdUhgkueBCq47AK//w/Yzlg0zcfV1GTlh3jyYEbresGfY2vDEG/AaK/dQ==",
+ "dev": true
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000877",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000877.tgz",
+ "integrity": "sha512-h04kV/lcuhItU1CZTJOxUEk/9R+1XeJqgc67E+XC8J9TjPM8kzVgOn27ZtRdDUo8O5F8U4QRCzDWJrVym3w3Cg==",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "dev": true,
+ "requires": {
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.1",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "5.4.0"
+ }
+ },
+ "check-types": {
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz",
+ "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz",
+ "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==",
+ "dev": true,
+ "requires": {
+ "anymatch": "2.0.0",
+ "async-each": "1.0.1",
+ "braces": "2.3.2",
+ "fsevents": "1.2.4",
+ "glob-parent": "3.1.0",
+ "inherits": "2.0.3",
+ "is-binary-path": "1.0.1",
+ "is-glob": "4.0.0",
+ "lodash.debounce": "4.0.8",
+ "normalize-path": "2.1.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.1.0",
+ "upath": "1.1.0"
+ }
+ },
+ "chownr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
+ "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
+ "dev": true
+ },
+ "clap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
+ "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "3.1.0",
+ "define-property": "0.2.5",
+ "isobject": "3.0.1",
+ "static-extend": "0.1.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ }
+ }
+ },
+ "clean-css": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz",
+ "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=",
+ "dev": true,
+ "requires": {
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "1.0.1"
+ }
+ },
+ "cli-spinners": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz",
+ "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "dev": true,
+ "requires": {
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
+ "wordwrap": "0.0.2"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+ "dev": true
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+ "dev": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+ "dev": true
+ },
+ "coa": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
+ "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
+ "dev": true,
+ "requires": {
+ "q": "1.5.1"
+ }
+ },
+ "coalescy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/coalescy/-/coalescy-1.0.0.tgz",
+ "integrity": "sha1-SwZYRrg2NhrabEtKSr9LwcrDG/E=",
+ "dev": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "1.0.0",
+ "object-visit": "1.0.1"
+ }
+ },
+ "color": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+ "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.4",
+ "color-convert": "1.9.2",
+ "color-string": "0.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
+ "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.1"
+ }
+ },
+ "color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=",
+ "dev": true
+ },
+ "color-string": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+ "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.1"
+ }
+ },
+ "colormin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
+ "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
+ "dev": true,
+ "requires": {
+ "color": "0.11.4",
+ "css-color-names": "0.0.4",
+ "has": "1.0.3"
+ }
+ },
+ "colors": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
+ "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.14.tgz",
+ "integrity": "sha1-MmxfUH+7BV9UEWeCuWmoG2einac=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.35.0"
+ }
+ },
+ "compression": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+ "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "2.0.14",
+ "debug": "2.6.9",
+ "on-headers": "1.0.1",
+ "safe-buffer": "5.1.2",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "1.1.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "typedarray": "0.0.6"
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
+ "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "0.1.4"
+ }
+ },
+ "consolidate": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz",
+ "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=",
+ "dev": true,
+ "requires": {
+ "bluebird": "3.5.1"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+ "dev": true
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz",
+ "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+ "dev": true
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "1.2.0",
+ "fs-write-stream-atomic": "1.0.10",
+ "iferr": "0.1.5",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.2",
+ "run-queue": "1.0.3"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "copy-webpack-plugin": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz",
+ "integrity": "sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ==",
+ "dev": true,
+ "requires": {
+ "cacache": "10.0.4",
+ "find-cache-dir": "1.0.0",
+ "globby": "7.1.1",
+ "is-glob": "4.0.0",
+ "loader-utils": "1.1.0",
+ "minimatch": "3.0.4",
+ "p-limit": "1.3.0",
+ "serialize-javascript": "1.5.0"
+ }
+ },
+ "core-js": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
+ "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz",
+ "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==",
+ "dev": true,
+ "requires": {
+ "is-directory": "0.3.1",
+ "js-yaml": "3.12.0",
+ "parse-json": "4.0.0",
+ "require-from-string": "2.0.2"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.10",
+ "esprima": "4.0.1"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.2",
+ "json-parse-better-errors": "1.0.2"
+ }
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "elliptic": "6.4.1"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "inherits": "2.0.3",
+ "md5.js": "1.3.4",
+ "ripemd160": "2.0.2",
+ "sha.js": "2.4.11"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "1.0.4",
+ "create-hash": "1.2.0",
+ "inherits": "2.0.3",
+ "ripemd160": "2.0.2",
+ "safe-buffer": "5.1.2",
+ "sha.js": "2.4.11"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.3",
+ "shebang-command": "1.2.0",
+ "which": "1.3.1"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "1.0.1",
+ "browserify-sign": "4.0.4",
+ "create-ecdh": "4.0.3",
+ "create-hash": "1.2.0",
+ "create-hmac": "1.1.7",
+ "diffie-hellman": "5.0.3",
+ "inherits": "2.0.3",
+ "pbkdf2": "3.0.16",
+ "public-encrypt": "4.0.2",
+ "randombytes": "2.0.6",
+ "randomfill": "1.0.4"
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+ "dev": true
+ },
+ "css-loader": {
+ "version": "0.28.11",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz",
+ "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "css-selector-tokenizer": "0.7.0",
+ "cssnano": "3.10.0",
+ "icss-utils": "2.1.0",
+ "loader-utils": "1.1.0",
+ "lodash.camelcase": "4.3.0",
+ "object-assign": "4.1.1",
+ "postcss": "5.2.18",
+ "postcss-modules-extract-imports": "1.2.0",
+ "postcss-modules-local-by-default": "1.2.0",
+ "postcss-modules-scope": "1.1.0",
+ "postcss-modules-values": "1.3.0",
+ "postcss-value-parser": "3.3.0",
+ "source-list-map": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "js-base64": "2.4.8",
+ "source-map": "0.5.7",
+ "supports-color": "3.2.3"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "css-select": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+ "dev": true,
+ "requires": {
+ "boolbase": "1.0.0",
+ "css-what": "2.1.0",
+ "domutils": "1.5.1",
+ "nth-check": "1.0.1"
+ },
+ "dependencies": {
+ "domutils": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
+ }
+ }
+ }
+ },
+ "css-selector-tokenizer": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz",
+ "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=",
+ "dev": true,
+ "requires": {
+ "cssesc": "0.1.0",
+ "fastparse": "1.1.1",
+ "regexpu-core": "1.0.0"
+ },
+ "dependencies": {
+ "regexpu-core": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz",
+ "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=",
+ "dev": true,
+ "requires": {
+ "regenerate": "1.4.0",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
+ }
+ }
+ }
+ },
+ "css-what": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz",
+ "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=",
+ "dev": true
+ },
+ "cssesc": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz",
+ "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
+ "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
+ "dev": true,
+ "requires": {
+ "autoprefixer": "6.7.7",
+ "decamelize": "1.2.0",
+ "defined": "1.0.0",
+ "has": "1.0.3",
+ "object-assign": "4.1.1",
+ "postcss": "5.2.18",
+ "postcss-calc": "5.3.1",
+ "postcss-colormin": "2.2.2",
+ "postcss-convert-values": "2.6.1",
+ "postcss-discard-comments": "2.0.4",
+ "postcss-discard-duplicates": "2.1.0",
+ "postcss-discard-empty": "2.1.0",
+ "postcss-discard-overridden": "0.1.1",
+ "postcss-discard-unused": "2.2.3",
+ "postcss-filter-plugins": "2.0.3",
+ "postcss-merge-idents": "2.1.7",
+ "postcss-merge-longhand": "2.0.2",
+ "postcss-merge-rules": "2.1.2",
+ "postcss-minify-font-values": "1.0.5",
+ "postcss-minify-gradients": "1.0.5",
+ "postcss-minify-params": "1.2.2",
+ "postcss-minify-selectors": "2.1.1",
+ "postcss-normalize-charset": "1.1.1",
+ "postcss-normalize-url": "3.0.8",
+ "postcss-ordered-values": "2.2.3",
+ "postcss-reduce-idents": "2.4.0",
+ "postcss-reduce-initial": "1.0.1",
+ "postcss-reduce-transforms": "1.0.4",
+ "postcss-svgo": "2.1.6",
+ "postcss-unique-selectors": "2.0.2",
+ "postcss-value-parser": "3.3.0",
+ "postcss-zindex": "2.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "6.7.7",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
+ "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+ "dev": true,
+ "requires": {
+ "browserslist": "1.7.7",
+ "caniuse-db": "1.0.30000877",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "5.2.18",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "browserslist": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+ "dev": true,
+ "requires": {
+ "caniuse-db": "1.0.30000877",
+ "electron-to-chromium": "1.3.58"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "js-base64": "2.4.8",
+ "source-map": "0.5.7",
+ "supports-color": "3.2.3"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ }
+ }
+ },
+ "csso": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
+ "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
+ "dev": true,
+ "requires": {
+ "clap": "1.2.3",
+ "source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
+ }
+ },
+ "cuint": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz",
+ "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=",
+ "dev": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "1.0.2"
+ }
+ },
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
+ "d": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+ "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
+ "dev": true,
+ "requires": {
+ "es5-ext": "0.10.46"
+ }
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+ "dev": true
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2",
+ "isobject": "3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+ "dev": true
+ },
+ "del": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
+ "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
+ "dev": true,
+ "requires": {
+ "globby": "5.0.0",
+ "is-path-cwd": "1.0.0",
+ "is-path-in-cwd": "1.0.1",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "rimraf": "2.6.2"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
+ "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
+ "dev": true,
+ "requires": {
+ "array-union": "1.0.2",
+ "arrify": "1.0.1",
+ "glob": "7.1.2",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-indent": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz",
+ "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
+ "dev": true,
+ "requires": {
+ "repeating": "2.0.1"
+ }
+ },
+ "detect-node": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
+ "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "miller-rabin": "4.0.1",
+ "randombytes": "2.0.6"
+ }
+ },
+ "dir-glob": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
+ "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
+ "dev": true,
+ "requires": {
+ "arrify": "1.0.1",
+ "path-type": "3.0.0"
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+ "dev": true
+ },
+ "dns-packet": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+ "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+ "dev": true,
+ "requires": {
+ "ip": "1.1.5",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "dev": true,
+ "requires": {
+ "buffer-indexof": "1.1.1"
+ }
+ },
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2"
+ }
+ },
+ "dom-converter": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz",
+ "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=",
+ "dev": true,
+ "requires": {
+ "utila": "0.3.3"
+ },
+ "dependencies": {
+ "utila": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz",
+ "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=",
+ "dev": true
+ }
+ }
+ },
+ "dom-serializer": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
+ "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.1.3",
+ "entities": "1.1.1"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
+ "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
+ "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0"
+ }
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0.1.0",
+ "domelementtype": "1.3.0"
+ }
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
+ "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "1.4.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6",
+ "stream-shift": "1.0.0"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "ejs": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz",
+ "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.3.58",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.58.tgz",
+ "integrity": "sha512-AGJxlBEn2wOohxqWZkISVsOjZueKTQljfEODTDSEiMqSpH0S+xzV+/5oEM9AGaqhu7DzrpKOgU7ocQRjj0nJmg==",
+ "dev": true
+ },
+ "elliptic": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
+ "dev": true,
+ "requires": {
+ "bn.js": "4.11.8",
+ "brorand": "1.1.0",
+ "hash.js": "1.1.5",
+ "hmac-drbg": "1.0.1",
+ "inherits": "2.0.3",
+ "minimalistic-assert": "1.0.1",
+ "minimalistic-crypto-utils": "1.0.1"
+ }
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
+ "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "memory-fs": "0.4.1",
+ "object-assign": "4.1.1",
+ "tapable": "0.2.8"
+ }
+ },
+ "entities": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
+ "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "0.2.1"
+ }
+ },
+ "error-stack-parser": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.2.tgz",
+ "integrity": "sha512-E1fPutRDdIj/hohG0UpT5mayXNCxXP9d+snxFsPU9X0XgccOumKraa3juDMwTUyi7+Bu5+mCGagjg4IYeNbOdw==",
+ "dev": true,
+ "requires": {
+ "stackframe": "1.0.4"
+ }
+ },
+ "es-abstract": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz",
+ "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "1.1.1",
+ "function-bind": "1.1.1",
+ "has": "1.0.3",
+ "is-callable": "1.1.4",
+ "is-regex": "1.0.4"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
+ "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
+ "dev": true,
+ "requires": {
+ "is-callable": "1.1.4",
+ "is-date-object": "1.0.1",
+ "is-symbol": "1.0.1"
+ }
+ },
+ "es5-ext": {
+ "version": "0.10.46",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
+ "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
+ "dev": true,
+ "requires": {
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1",
+ "next-tick": "1.0.0"
+ }
+ },
+ "es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.46",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "es6-map": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+ "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.46",
+ "es6-iterator": "2.0.3",
+ "es6-set": "0.1.5",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "0.3.5"
+ }
+ },
+ "es6-set": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+ "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.46",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1",
+ "event-emitter": "0.3.5"
+ }
+ },
+ "es6-symbol": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+ "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.46"
+ }
+ },
+ "es6-weak-map": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
+ "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.46",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.1"
+ }
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "escope": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+ "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+ "dev": true,
+ "requires": {
+ "es6-map": "0.1.5",
+ "es6-weak-map": "2.0.2",
+ "esrecurse": "4.2.1",
+ "estraverse": "4.2.0"
+ }
+ },
+ "eslint": {
+ "version": "3.19.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
+ "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "6.26.0",
+ "chalk": "1.1.3",
+ "concat-stream": "1.6.2",
+ "debug": "2.6.9",
+ "doctrine": "2.1.0",
+ "escope": "3.6.0",
+ "espree": "3.5.4",
+ "esquery": "1.0.1",
+ "estraverse": "4.2.0",
+ "esutils": "2.0.2",
+ "file-entry-cache": "2.0.0",
+ "glob": "7.1.2",
+ "globals": "9.18.0",
+ "ignore": "3.3.10",
+ "imurmurhash": "0.1.4",
+ "inquirer": "0.12.0",
+ "is-my-json-valid": "2.19.0",
+ "is-resolvable": "1.1.0",
+ "js-yaml": "3.7.0",
+ "json-stable-stringify": "1.0.1",
+ "levn": "0.3.0",
+ "lodash": "4.17.10",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "optionator": "0.8.2",
+ "path-is-inside": "1.0.2",
+ "pluralize": "1.2.1",
+ "progress": "1.1.8",
+ "require-uncached": "1.0.3",
+ "shelljs": "0.7.8",
+ "strip-bom": "3.0.0",
+ "strip-json-comments": "2.0.1",
+ "table": "3.8.3",
+ "text-table": "0.2.0",
+ "user-home": "2.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-config-standard": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz",
+ "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=",
+ "dev": true
+ },
+ "eslint-friendly-formatter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-friendly-formatter/-/eslint-friendly-formatter-3.0.0.tgz",
+ "integrity": "sha1-J4h0Q1psRuwdlPoLH/SU4w7wQpA=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "coalescy": "1.0.0",
+ "extend": "3.0.2",
+ "minimist": "1.2.0",
+ "text-table": "0.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "resolve": "1.8.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-loader": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz",
+ "integrity": "sha512-40aN976qSNPyb9ejTqjEthZITpls1SVKtwguahmH1dzGCwQU/vySE+xX33VZmD8csU0ahVNCtFlsPgKqRBiqgg==",
+ "dev": true,
+ "requires": {
+ "loader-fs-cache": "1.0.1",
+ "loader-utils": "1.1.0",
+ "object-assign": "4.1.1",
+ "object-hash": "1.3.0",
+ "rimraf": "2.6.2"
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
+ "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "pkg-dir": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "1.1.2"
+ }
+ }
+ }
+ },
+ "eslint-plugin-html": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-3.2.2.tgz",
+ "integrity": "sha512-sSuafathF6ImPrzF2vUKEJY6Llq06d/riMTMzlsruDRDhNsQMYp2viUKo+jx+JRr1QevskeUpQcuptp2gN1XVQ==",
+ "dev": true,
+ "requires": {
+ "htmlparser2": "3.9.2",
+ "semver": "5.5.0"
+ }
+ },
+ "eslint-plugin-import": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz",
+ "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==",
+ "dev": true,
+ "requires": {
+ "contains-path": "0.1.0",
+ "debug": "2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "0.3.2",
+ "eslint-module-utils": "2.2.0",
+ "has": "1.0.3",
+ "lodash": "4.17.10",
+ "minimatch": "3.0.4",
+ "read-pkg-up": "2.0.0",
+ "resolve": "1.8.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "2.0.2",
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "eslint-plugin-node": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz",
+ "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==",
+ "dev": true,
+ "requires": {
+ "ignore": "3.3.10",
+ "minimatch": "3.0.4",
+ "resolve": "1.8.1",
+ "semver": "5.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-plugin-promise": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.8.0.tgz",
+ "integrity": "sha512-JiFL9UFR15NKpHyGii1ZcvmtIqa3UTwiDAGb8atSffe43qJ3+1czVGN6UtkklpcJ2DVnqvTMzEKRaJdBkAL2aQ==",
+ "dev": true
+ },
+ "eslint-plugin-standard": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz",
+ "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==",
+ "dev": true
+ },
+ "espree": {
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
+ "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
+ "dev": true,
+ "requires": {
+ "acorn": "5.7.1",
+ "acorn-jsx": "3.0.1"
+ }
+ },
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "4.2.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
+ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+ "dev": true,
+ "requires": {
+ "d": "1.0.0",
+ "es5-ext": "0.10.46"
+ }
+ },
+ "eventemitter3": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz",
+ "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==",
+ "dev": true
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=",
+ "dev": true
+ },
+ "eventsource": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
+ "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+ "dev": true,
+ "requires": {
+ "original": "1.0.2"
+ }
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "1.3.4",
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "5.1.0",
+ "get-stream": "3.0.0",
+ "is-stream": "1.1.0",
+ "npm-run-path": "2.0.2",
+ "p-finally": "1.0.0",
+ "signal-exit": "3.0.2",
+ "strip-eof": "1.0.0"
+ }
+ },
+ "exit-hook": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "0.1.6"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "2.2.4"
+ },
+ "dependencies": {
+ "fill-range": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+ "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
+ "dev": true,
+ "requires": {
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "3.1.0",
+ "repeat-element": "1.1.2",
+ "repeat-string": "1.6.1"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "dev": true,
+ "requires": {
+ "kind-of": "3.2.2"
+ }
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "express": {
+ "version": "4.16.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
+ "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
+ "dev": true,
+ "requires": {
+ "accepts": "1.3.5",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.18.2",
+ "content-disposition": "0.5.2",
+ "content-type": "1.0.4",
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "finalhandler": "1.1.1",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "1.1.2",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "2.0.4",
+ "qs": "6.5.1",
+ "range-parser": "1.2.0",
+ "safe-buffer": "5.1.1",
+ "send": "0.16.2",
+ "serve-static": "1.13.2",
+ "setprototypeof": "1.1.0",
+ "statuses": "1.4.0",
+ "type-is": "1.6.16",
+ "utils-merge": "1.0.1",
+ "vary": "1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
+ "dev": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "0.3.2",
+ "define-property": "1.0.0",
+ "expand-brackets": "2.1.4",
+ "extend-shallow": "2.0.1",
+ "fragment-cache": "0.2.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "1.0.2"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "6.0.2"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ }
+ }
+ },
+ "extract-text-webpack-plugin": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz",
+ "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==",
+ "dev": true,
+ "requires": {
+ "async": "2.6.1",
+ "loader-utils": "1.1.0",
+ "schema-utils": "0.3.0",
+ "webpack-sources": "1.1.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "fastparse": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz",
+ "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=",
+ "dev": true
+ },
+ "faye-websocket": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+ "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": "0.7.0"
+ }
+ },
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5",
+ "object-assign": "4.1.1"
+ }
+ },
+ "file-entry-cache": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
+ "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "1.3.0",
+ "object-assign": "4.1.1"
+ }
+ },
+ "file-loader": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz",
+ "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "1.1.0",
+ "schema-utils": "0.4.7"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.2.tgz",
+ "integrity": "sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "2.0.1",
+ "fast-json-stable-stringify": "2.0.0",
+ "json-schema-traverse": "0.4.1",
+ "uri-js": "4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
+ "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz",
+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "dev": true,
+ "requires": {
+ "ajv": "6.5.2",
+ "ajv-keywords": "3.2.0"
+ }
+ }
+ }
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=",
+ "dev": true
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "0.1.1"
+ }
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
+ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.2",
+ "statuses": "1.4.0",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+ "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=",
+ "dev": true,
+ "requires": {
+ "commondir": "1.0.1",
+ "make-dir": "1.3.0",
+ "pkg-dir": "2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+ "dev": true,
+ "requires": {
+ "locate-path": "2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
+ "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
+ "dev": true,
+ "requires": {
+ "circular-json": "0.3.3",
+ "del": "2.2.2",
+ "graceful-fs": "4.1.11",
+ "write": "0.2.1"
+ }
+ },
+ "flatten": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+ "dev": true
+ },
+ "flush-write-stream": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz",
+ "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.5.tgz",
+ "integrity": "sha512-GHjtHDlY/ehslqv0Gr5N0PUJppgg/q0rOBvX0na1s7y1A3LWxPqCYU76s3Z1bM4+UZB4QF0usaXLT5wFpof5PA==",
+ "requires": {
+ "debug": "3.1.0"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "dev": true,
+ "requires": {
+ "for-in": "1.0.2"
+ }
+ },
+ "forwarded": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "friendly-errors-webpack-plugin": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz",
+ "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "error-stack-parser": "2.0.2",
+ "string-width": "2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "iferr": "0.1.5",
+ "imurmurhash": "0.1.4",
+ "readable-stream": "2.3.6"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.2.4",
... 25735 lines suppressed ...