From 8dd2337c2d65e29034950940a239d0c73540f92a Mon Sep 17 00:00:00 2001
From: 沈斌 <bluelazysb@hotmail.com>
Date: Thu, 14 Dec 2017 22:58:52 +0800
Subject: [PATCH] updates
---
src/app/layout/fullscreen/fullscreen.component.ts | 9
src/tsconfig.spec.json | 8
package-lock.json | 3162 ++++++++++++++++++++++++++++++++++++
src/assets/i18n/en.json | 94 +
src/app/core/core.module.ts | 19
src/app/layout/header/components/langs.component.ts | 40
src/assets/i18n/zh-CN.json | 94 +
src/app/layout/fullscreen/fullscreen.component.html | 1
src/app/layout/header/components/search.component.ts | 49
src/app/layout/header/header.component.ts | 21
src/app/layout/pro/user/user.component.html | 17
src/app/layout/header/components/notify.component.ts | 163 +
src/app/layout/layout.component.spec.ts | 17
src/app/layout/layout.module.ts | 56
src/environments/environment.prod.ts | 1
src/environments/environment.ts | 1
src/app/layout/pro/user/user.component.ts | 23
src/app/layout/header/components/icon.component.ts | 59
src/app/layout/header/components/fullscreen.component.ts | 22
src/tsconfig.app.json | 8
src/app/routes/routes.module.ts | 10
src/app/layout/header/index.md | 20
src/app/layout/layout.component.html | 6
src/app/app.module.ts | 75
src/app/layout/header/components/theme.component.ts | 44
src/app/layout/header/components/user.component.ts | 46
src/app/shared/shared.module.ts | 211 ++
src/app/core/i18n/i18n.service.ts | 47
src/testing/common.spec.ts | 66
src/app/layout/header/components/task.component.ts | 80
src/app/layout/header/header.component.spec.ts | 17
src/app/layout/sidebar/sidebar.component.spec.ts | 16
src/app/layout/pro/user/user.component.less | 58
src/app/core/services/startup.service.ts | 48
/dev/null | 20
src/app/core/module-import-guard.ts | 6
src/app/layout/sidebar/sidebar.component.html | 17
src/app/core/i18n/i18n.service.spec.ts | 31
tsconfig.json | 9
src/app/layout/sidebar/sidebar.component.ts | 12
src/app/app.component.spec.ts | 45
src/app/core/net/default.interceptor.ts | 70
package.json | 67
src/app/layout/header/header.component.html | 74
src/app/layout/layout.component.ts | 38
src/app/app.component.ts | 32
src/app/layout/header/components/storage.component.ts | 28
47 files changed, 4,952 insertions(+), 105 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index a6f3768..0a9a570 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -54,6 +54,14 @@
"tslib": "1.8.1"
}
},
+ "@angular/cdk": {
+ "version": "5.0.0",
+ "resolved": "http://registry.npm.taobao.org/@angular/cdk/download/@angular/cdk-5.0.0.tgz",
+ "integrity": "sha1-18sylMnjzDfT1Bwz5r6wROhGNsM=",
+ "requires": {
+ "tslib": "1.8.1"
+ }
+ },
"@angular/cli": {
"version": "1.6.0",
"resolved": "http://registry.npm.taobao.org/@angular/cli/download/@angular/cli-1.6.0.tgz",
@@ -202,6 +210,92 @@
"tslib": "1.8.1"
}
},
+ "@angularclass/hmr": {
+ "version": "2.1.3",
+ "resolved": "http://registry.npm.taobao.org/@angularclass/hmr/download/@angularclass/hmr-2.1.3.tgz",
+ "integrity": "sha1-NOZY7T2jfyOwogDi2lqJvpK7IJ8=",
+ "dev": true
+ },
+ "@angularclass/hmr-loader": {
+ "version": "3.0.4",
+ "resolved": "http://registry.npm.taobao.org/@angularclass/hmr-loader/download/@angularclass/hmr-loader-3.0.4.tgz",
+ "integrity": "sha1-PjoHuoNWUMkBVim44Yf+jc1VJ7g=",
+ "dev": true,
+ "requires": {
+ "loader-utils": "1.1.0"
+ }
+ },
+ "@antv/data-set": {
+ "version": "0.7.0",
+ "resolved": "http://registry.npm.taobao.org/@antv/data-set/download/@antv/data-set-0.7.0.tgz",
+ "integrity": "sha1-DhqzyIq+g61mhgDeThixY3wGIaM=",
+ "requires": {
+ "d3-array": "1.2.1",
+ "d3-composite-projections": "1.2.0",
+ "d3-dsv": "1.0.8",
+ "d3-geo": "1.9.1",
+ "d3-geo-projection": "2.3.2",
+ "d3-hierarchy": "1.1.5",
+ "d3-sankey": "0.7.1",
+ "d3-voronoi": "1.1.2",
+ "lodash": "4.17.4",
+ "point-at-length": "1.1.0",
+ "regression": "2.0.1",
+ "simple-statistics": "4.1.1",
+ "topojson-client": "3.0.0",
+ "wolfy87-eventemitter": "5.2.4"
+ }
+ },
+ "@antv/g": {
+ "version": "2.0.2",
+ "resolved": "http://registry.npm.taobao.org/@antv/g/download/@antv/g-2.0.2.tgz",
+ "integrity": "sha1-z87alIq1lfZMkKUl8wp+TOSi4+I=",
+ "requires": {
+ "d3-ease": "1.0.3",
+ "d3-interpolate": "1.1.6",
+ "d3-timer": "1.0.7",
+ "gl-matrix": "2.4.0",
+ "lodash": "4.17.4",
+ "wolfy87-eventemitter": "5.2.4"
+ }
+ },
+ "@antv/g2": {
+ "version": "3.0.2",
+ "resolved": "http://registry.npm.taobao.org/@antv/g2/download/@antv/g2-3.0.2.tgz",
+ "integrity": "sha1-LerE+l1I42g4ZlF1FmpIEr9nTl4=",
+ "requires": {
+ "@antv/g": "2.0.2",
+ "fecha": "2.3.2",
+ "gl-matrix": "2.4.0",
+ "lodash": "4.17.4",
+ "wolfy87-eventemitter": "5.2.4"
+ }
+ },
+ "@antv/g2-plugin-slider": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/@antv/g2-plugin-slider/download/@antv/g2-plugin-slider-2.0.0.tgz",
+ "integrity": "sha1-OY7D2LhpExBB+Hj6+EXnaoS6+VQ="
+ },
+ "@delon/abc": {
+ "version": "0.3.0",
+ "resolved": "http://registry.npm.taobao.org/@delon/abc/download/@delon/abc-0.3.0.tgz",
+ "integrity": "sha1-3z61AAo9cSv1bUdGGA49vYIsYoA="
+ },
+ "@delon/acl": {
+ "version": "0.3.0",
+ "resolved": "http://registry.npm.taobao.org/@delon/acl/download/@delon/acl-0.3.0.tgz",
+ "integrity": "sha1-vp2hDXRCVcA0QYeTAHbsgz6VIp8="
+ },
+ "@delon/auth": {
+ "version": "0.3.0",
+ "resolved": "http://registry.npm.taobao.org/@delon/auth/download/@delon/auth-0.3.0.tgz",
+ "integrity": "sha1-x7Knv2yrueOlC/Cc98CdFjd/aYw="
+ },
+ "@delon/theme": {
+ "version": "0.3.0",
+ "resolved": "http://registry.npm.taobao.org/@delon/theme/download/@delon/theme-0.3.0.tgz",
+ "integrity": "sha1-GnkzMaXe3KFyxmJ8Qu7acLV1/og="
+ },
"@ngtools/json-schema": {
"version": "1.1.0",
"resolved": "http://registry.npm.taobao.org/@ngtools/json-schema/download/@ngtools/json-schema-1.1.0.tgz",
@@ -223,6 +317,16 @@
"tree-kill": "1.2.0"
}
},
+ "@ngx-translate/core": {
+ "version": "9.0.1",
+ "resolved": "http://registry.npm.taobao.org/@ngx-translate/core/download/@ngx-translate/core-9.0.1.tgz",
+ "integrity": "sha1-AA8thjxMlMgY4UFu9DzKLFwMWEg="
+ },
+ "@ngx-translate/http-loader": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/@ngx-translate/http-loader/download/@ngx-translate/http-loader-2.0.0.tgz",
+ "integrity": "sha1-nBbQfNBwxnraJwoulAKB64JrP0M="
+ },
"@schematics/angular": {
"version": "0.1.11",
"resolved": "http://registry.npm.taobao.org/@schematics/angular/download/@schematics/angular-0.1.11.tgz",
@@ -239,9 +343,9 @@
"dev": true
},
"@types/jasmine": {
- "version": "2.5.54",
- "resolved": "http://registry.npm.taobao.org/@types/jasmine/download/@types/jasmine-2.5.54.tgz",
- "integrity": "sha1-prXyrir7bgMHd06MfGCOA31JHGM=",
+ "version": "2.6.3",
+ "resolved": "http://registry.npm.taobao.org/@types/jasmine/download/@types/jasmine-2.6.3.tgz",
+ "integrity": "sha1-WGljv901448koKC2OkOM9SEpLtk=",
"dev": true
},
"@types/jasminewd2": {
@@ -250,7 +354,7 @@
"integrity": "sha1-DSiGsMva5MDuulXjB5L1hL8ECpU=",
"dev": true,
"requires": {
- "@types/jasmine": "2.5.54"
+ "@types/jasmine": "2.6.3"
}
},
"@types/node": {
@@ -276,6 +380,11 @@
"resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
"integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
"dev": true
+ },
+ "abs-svg-path": {
+ "version": "0.1.1",
+ "resolved": "http://registry.npm.taobao.org/abs-svg-path/download/abs-svg-path-0.1.1.tgz",
+ "integrity": "sha1-32Acjo0roQ1KdtYl4japo5wnI78="
},
"accepts": {
"version": "1.3.4",
@@ -381,6 +490,41 @@
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
},
+ "angular-baidu-maps": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/angular-baidu-maps/download/angular-baidu-maps-1.0.1.tgz",
+ "integrity": "sha1-AA8gaxmSM2uspCzHpK6FdXJqlrk="
+ },
+ "angular-qq-maps": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/angular-qq-maps/download/angular-qq-maps-1.0.1.tgz",
+ "integrity": "sha1-uk8xL1AbsgiDcIHtndfllbpTyBA="
+ },
+ "angular-tree-component": {
+ "version": "6.1.0",
+ "resolved": "http://registry.npm.taobao.org/angular-tree-component/download/angular-tree-component-6.1.0.tgz",
+ "integrity": "sha1-nZprKKaIHCByzWMGtVIpV56JQHE=",
+ "requires": {
+ "lodash": "4.17.4",
+ "mobx": "3.4.1",
+ "mobx-angular": "2.0.1"
+ }
+ },
+ "ansi-escapes": {
+ "version": "1.4.0",
+ "resolved": "http://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
+ "dev": true
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-gray/download/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "dev": true,
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
"ansi-html": {
"version": "0.0.7",
"resolved": "http://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz",
@@ -401,6 +545,18 @@
"requires": {
"color-convert": "1.9.1"
}
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "http://registry.npm.taobao.org/ansi-wrap/download/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=",
+ "dev": true
+ },
+ "any-observable": {
+ "version": "0.2.0",
+ "resolved": "http://registry.npm.taobao.org/any-observable/download/any-observable-0.2.0.tgz",
+ "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=",
+ "dev": true
},
"anymatch": {
"version": "1.3.2",
@@ -433,6 +589,37 @@
"integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
"dev": true
},
+ "archiver": {
+ "version": "1.3.0",
+ "resolved": "http://registry.npm.taobao.org/archiver/download/archiver-1.3.0.tgz",
+ "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "async": "2.6.0",
+ "buffer-crc32": "0.2.13",
+ "glob": "7.1.2",
+ "lodash": "4.17.4",
+ "readable-stream": "2.3.3",
+ "tar-stream": "1.5.5",
+ "walkdir": "0.0.11",
+ "zip-stream": "1.2.0"
+ }
+ },
+ "archiver-utils": {
+ "version": "1.3.0",
+ "resolved": "http://registry.npm.taobao.org/archiver-utils/download/archiver-utils-1.3.0.tgz",
+ "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=",
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2",
+ "graceful-fs": "4.1.11",
+ "lazystream": "1.0.0",
+ "lodash": "4.17.4",
+ "normalize-path": "2.1.1",
+ "readable-stream": "2.3.3"
+ }
+ },
"are-we-there-yet": {
"version": "1.1.4",
"resolved": "http://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.4.tgz",
@@ -452,6 +639,12 @@
"sprintf-js": "1.0.3"
}
},
+ "argv": {
+ "version": "0.0.2",
+ "resolved": "http://registry.npm.taobao.org/argv/download/argv-0.0.2.tgz",
+ "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=",
+ "dev": true
+ },
"arr-diff": {
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz",
@@ -465,6 +658,18 @@
"version": "1.1.0",
"resolved": "http://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz",
"integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+ "dev": true
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/array-differ/download/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "http://registry.npm.taobao.org/array-filter/download/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
"dev": true
},
"array-find-index": {
@@ -488,6 +693,24 @@
"define-properties": "1.1.2",
"es-abstract": "1.10.0"
}
+ },
+ "array-iterate": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/array-iterate/download/array-iterate-1.1.1.tgz",
+ "integrity": "sha1-hlv3+K851rCYLGCQKRSsdrwBCPY=",
+ "dev": true
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "http://registry.npm.taobao.org/array-map/download/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "http://registry.npm.taobao.org/array-reduce/download/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
},
"array-slice": {
"version": "0.2.3",
@@ -588,6 +811,12 @@
"integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
"dev": true,
"optional": true
+ },
+ "async-limiter": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.0.tgz",
+ "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=",
+ "dev": true
},
"asynckit": {
"version": "0.4.0",
@@ -756,6 +985,12 @@
"integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
"dev": true
},
+ "bail": {
+ "version": "1.0.2",
+ "resolved": "http://registry.npm.taobao.org/bail/download/bail-1.0.2.tgz",
+ "integrity": "sha1-99bBcxYwqfnw1NNe0fli4gdKF2Q=",
+ "dev": true
+ },
"balanced-match": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
@@ -796,6 +1031,12 @@
"tweetnacl": "0.14.5"
}
},
+ "beeper": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/beeper/download/beeper-1.1.1.tgz",
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
+ "dev": true
+ },
"better-assert": {
"version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/better-assert/download/better-assert-1.0.2.tgz",
@@ -816,6 +1057,15 @@
"resolved": "http://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.11.0.tgz",
"integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
"dev": true
+ },
+ "bl": {
+ "version": "1.2.1",
+ "resolved": "http://registry.npm.taobao.org/bl/download/bl-1.2.1.tgz",
+ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
},
"blob": {
"version": "0.0.4",
@@ -1027,6 +1277,12 @@
"isarray": "1.0.0"
}
},
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "http://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
"buffer-indexof": {
"version": "1.1.1",
"resolved": "http://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz",
@@ -1128,10 +1384,22 @@
"integrity": "sha1-FrMNRyZqT1FcxprgMWtnDJYDzb4=",
"dev": true
},
+ "caniuse-lite": {
+ "version": "1.0.30000783",
+ "resolved": "http://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30000783.tgz",
+ "integrity": "sha1-m1SZ+xtQPSNF0SqmuGEoUvQnb/0=",
+ "dev": true
+ },
"caseless": {
"version": "0.12.0",
"resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "ccount": {
+ "version": "1.0.2",
+ "resolved": "http://registry.npm.taobao.org/ccount/download/ccount-1.0.2.tgz",
+ "integrity": "sha1-U7ai+BW7d7nChx97mnLDol8djok=",
"dev": true
},
"center-align": {
@@ -1162,6 +1430,30 @@
"escape-string-regexp": "1.0.5",
"supports-color": "4.5.0"
}
+ },
+ "character-entities": {
+ "version": "1.2.1",
+ "resolved": "http://registry.npm.taobao.org/character-entities/download/character-entities-1.2.1.tgz",
+ "integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco=",
+ "dev": true
+ },
+ "character-entities-html4": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/character-entities-html4/download/character-entities-html4-1.1.1.tgz",
+ "integrity": "sha1-NZoqSg9+KdPcKsmb2+Ie45Q46lA=",
+ "dev": true
+ },
+ "character-entities-legacy": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/character-entities-legacy/download/character-entities-legacy-1.1.1.tgz",
+ "integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8=",
+ "dev": true
+ },
+ "character-reference-invalid": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/character-reference-invalid/download/character-reference-invalid-1.1.1.tgz",
+ "integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=",
+ "dev": true
},
"charenc": {
"version": "0.0.2",
@@ -1225,6 +1517,12 @@
"integrity": "sha1-KhKCTlhFRuGu6lhlt78jShHEppU=",
"dev": true
},
+ "circular-json": {
+ "version": "0.3.3",
+ "resolved": "http://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz",
+ "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=",
+ "dev": true
+ },
"clap": {
"version": "1.2.3",
"resolved": "http://registry.npm.taobao.org/clap/download/clap-1.2.3.tgz",
@@ -1270,6 +1568,31 @@
"source-map": "0.5.7"
}
},
+ "cli-cursor": {
+ "version": "1.0.2",
+ "resolved": "http://registry.npm.taobao.org/cli-cursor/download/cli-cursor-1.0.2.tgz",
+ "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "1.0.1"
+ }
+ },
+ "cli-spinners": {
+ "version": "0.1.2",
+ "resolved": "http://registry.npm.taobao.org/cli-spinners/download/cli-spinners-0.1.2.tgz",
+ "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=",
+ "dev": true
+ },
+ "cli-truncate": {
+ "version": "0.2.1",
+ "resolved": "http://registry.npm.taobao.org/cli-truncate/download/cli-truncate-0.2.1.tgz",
+ "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
+ "dev": true,
+ "requires": {
+ "slice-ansi": "0.0.4",
+ "string-width": "1.0.2"
+ }
+ },
"cliui": {
"version": "3.2.0",
"resolved": "http://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz",
@@ -1299,6 +1622,22 @@
"shallow-clone": "0.1.2"
}
},
+ "clone-regexp": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/clone-regexp/download/clone-regexp-1.0.0.tgz",
+ "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=",
+ "dev": true,
+ "requires": {
+ "is-regexp": "1.0.0",
+ "is-supported-regexp-flag": "1.0.0"
+ }
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "http://registry.npm.taobao.org/clone-stats/download/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
+ "dev": true
+ },
"co": {
"version": "4.6.0",
"resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
@@ -1320,6 +1659,17 @@
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
+ "codecov": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/codecov/download/codecov-3.0.0.tgz",
+ "integrity": "sha1-wnO4xPEpRXI+jcnSWAPYk0Pl8o4=",
+ "dev": true,
+ "requires": {
+ "argv": "0.0.2",
+ "request": "2.81.0",
+ "urlgrey": "0.4.4"
+ }
+ },
"codelyzer": {
"version": "4.0.2",
"resolved": "http://registry.npm.taobao.org/codelyzer/download/codelyzer-4.0.2.tgz",
@@ -1333,6 +1683,12 @@
"source-map": "0.5.7",
"sprintf-js": "1.0.3"
}
+ },
+ "collapse-white-space": {
+ "version": "1.0.3",
+ "resolved": "http://registry.npm.taobao.org/collapse-white-space/download/collapse-white-space-1.0.3.tgz",
+ "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=",
+ "dev": true
},
"color": {
"version": "0.11.4",
@@ -1368,6 +1724,12 @@
"requires": {
"color-name": "1.1.3"
}
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/color-support/download/color-support-1.1.3.tgz",
+ "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=",
+ "dev": true
},
"colormin": {
"version": "1.1.2",
@@ -1407,8 +1769,7 @@
"commander": {
"version": "2.12.2",
"resolved": "http://registry.npm.taobao.org/commander/download/commander-2.12.2.tgz",
- "integrity": "sha1-D1lGxCftnsDZGka7ne9T5UZQ5VU=",
- "dev": true
+ "integrity": "sha1-D1lGxCftnsDZGka7ne9T5UZQ5VU="
},
"common-tags": {
"version": "1.5.1",
@@ -1442,6 +1803,18 @@
"resolved": "http://registry.npm.taobao.org/component-inherit/download/component-inherit-0.0.3.tgz",
"integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=",
"dev": true
+ },
+ "compress-commons": {
+ "version": "1.2.2",
+ "resolved": "http://registry.npm.taobao.org/compress-commons/download/compress-commons-1.2.2.tgz",
+ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=",
+ "dev": true,
+ "requires": {
+ "buffer-crc32": "0.2.13",
+ "crc32-stream": "2.0.0",
+ "normalize-path": "2.1.1",
+ "readable-stream": "2.3.3"
+ }
},
"compressible": {
"version": "2.0.12",
@@ -1649,6 +2022,22 @@
"os-homedir": "1.0.2",
"parse-json": "2.2.0",
"require-from-string": "1.2.1"
+ }
+ },
+ "crc": {
+ "version": "3.5.0",
+ "resolved": "http://registry.npm.taobao.org/crc/download/crc-3.5.0.tgz",
+ "integrity": "sha1-mLi6fUiWZbo5efWbITgTdBAaGWQ=",
+ "dev": true
+ },
+ "crc32-stream": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/crc32-stream/download/crc32-stream-2.0.0.tgz",
+ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=",
+ "dev": true,
+ "requires": {
+ "crc": "3.5.0",
+ "readable-stream": "2.3.3"
}
},
"create-ecdh": {
@@ -1896,6 +2285,119 @@
"es5-ext": "0.10.37"
}
},
+ "d3-array": {
+ "version": "1.2.1",
+ "resolved": "http://registry.npm.taobao.org/d3-array/download/d3-array-1.2.1.tgz",
+ "integrity": "sha1-0coz3i9qwx76244FCgIdfiOW1dw="
+ },
+ "d3-collection": {
+ "version": "1.0.4",
+ "resolved": "http://registry.npm.taobao.org/d3-collection/download/d3-collection-1.0.4.tgz",
+ "integrity": "sha1-NC39EoN8kJdPM/HMCnha6lcNzcI="
+ },
+ "d3-color": {
+ "version": "1.0.3",
+ "resolved": "http://registry.npm.taobao.org/d3-color/download/d3-color-1.0.3.tgz",
+ "integrity": "sha1-vHZD/KjlOoNH4vva/6I2eWtYUJs="
+ },
+ "d3-composite-projections": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npm.taobao.org/d3-composite-projections/download/d3-composite-projections-1.2.0.tgz",
+ "integrity": "sha1-+g5vFELxfQRkOEOjqIPH2U4MJ8A=",
+ "requires": {
+ "d3-geo": "1.2.4",
+ "d3-path": "1.0.5"
+ },
+ "dependencies": {
+ "d3-geo": {
+ "version": "1.2.4",
+ "resolved": "http://registry.npm.taobao.org/d3-geo/download/d3-geo-1.2.4.tgz",
+ "integrity": "sha1-0XnzuqduYj7x4Ng2k9twW3xZkAY=",
+ "requires": {
+ "d3-array": "1.2.1"
+ }
+ }
+ }
+ },
+ "d3-dsv": {
+ "version": "1.0.8",
+ "resolved": "http://registry.npm.taobao.org/d3-dsv/download/d3-dsv-1.0.8.tgz",
+ "integrity": "sha1-kH4kDVezhmGNxWRous/na/GXZK4=",
+ "requires": {
+ "commander": "2.12.2",
+ "iconv-lite": "0.4.19",
+ "rw": "1.3.3"
+ }
+ },
+ "d3-ease": {
+ "version": "1.0.3",
+ "resolved": "http://registry.npm.taobao.org/d3-ease/download/d3-ease-1.0.3.tgz",
+ "integrity": "sha1-aL+8NJM4o4DETYrMT7wzBKotjA4="
+ },
+ "d3-geo": {
+ "version": "1.9.1",
+ "resolved": "http://registry.npm.taobao.org/d3-geo/download/d3-geo-1.9.1.tgz",
+ "integrity": "sha1-FX47D5FzedD3O+v/875Tf0n6c1Y=",
+ "requires": {
+ "d3-array": "1.2.1"
+ }
+ },
+ "d3-geo-projection": {
+ "version": "2.3.2",
+ "resolved": "http://registry.npm.taobao.org/d3-geo-projection/download/d3-geo-projection-2.3.2.tgz",
+ "integrity": "sha1-cuVZ3AXZf6nyGMzJxTfTKfTPxHQ=",
+ "requires": {
+ "commander": "2.12.2",
+ "d3-array": "1.2.1",
+ "d3-geo": "1.9.1"
+ }
+ },
+ "d3-hierarchy": {
+ "version": "1.1.5",
+ "resolved": "http://registry.npm.taobao.org/d3-hierarchy/download/d3-hierarchy-1.1.5.tgz",
+ "integrity": "sha1-ochFxC+Eoga88cAcAQmOpN2qeiY="
+ },
+ "d3-interpolate": {
+ "version": "1.1.6",
+ "resolved": "http://registry.npm.taobao.org/d3-interpolate/download/d3-interpolate-1.1.6.tgz",
+ "integrity": "sha1-LPOVriOBgE3wiqG/dmt/l7X2j7Y=",
+ "requires": {
+ "d3-color": "1.0.3"
+ }
+ },
+ "d3-path": {
+ "version": "1.0.5",
+ "resolved": "http://registry.npm.taobao.org/d3-path/download/d3-path-1.0.5.tgz",
+ "integrity": "sha1-JB6xhJvZ6egCHA0KeZ+KDo5EF2Q="
+ },
+ "d3-sankey": {
+ "version": "0.7.1",
+ "resolved": "http://registry.npm.taobao.org/d3-sankey/download/d3-sankey-0.7.1.tgz",
+ "integrity": "sha1-0imDImj8aaf+yEgD6WwiVqYUxSE=",
+ "requires": {
+ "d3-array": "1.2.1",
+ "d3-collection": "1.0.4",
+ "d3-shape": "1.2.0"
+ }
+ },
+ "d3-shape": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npm.taobao.org/d3-shape/download/d3-shape-1.2.0.tgz",
+ "integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=",
+ "requires": {
+ "d3-path": "1.0.5"
+ }
+ },
+ "d3-timer": {
+ "version": "1.0.7",
+ "resolved": "http://registry.npm.taobao.org/d3-timer/download/d3-timer-1.0.7.tgz",
+ "integrity": "sha1-35ZQylh/bJZgf/TmDMOCKejdhTE="
+ },
+ "d3-voronoi": {
+ "version": "1.1.2",
+ "resolved": "http://registry.npm.taobao.org/d3-voronoi/download/d3-voronoi-1.1.2.tgz",
+ "integrity": "sha1-Fodmfo8TotFYyAwUgMWinLDYlzw="
+ },
"dashdash": {
"version": "1.14.1",
"resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
@@ -1913,11 +2415,27 @@
}
}
},
+ "date-fns": {
+ "version": "1.29.0",
+ "resolved": "http://registry.npm.taobao.org/date-fns/download/date-fns-1.29.0.tgz",
+ "integrity": "sha1-EuYJzcuTUScxHQTTMzTilgoqVOY=",
+ "dev": true
+ },
"date-now": {
"version": "0.1.4",
"resolved": "http://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz",
"integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
"dev": true
+ },
+ "dateformat": {
+ "version": "1.0.12",
+ "resolved": "http://registry.npm.taobao.org/dateformat/download/dateformat-1.0.12.tgz",
+ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "4.0.1",
+ "meow": "3.7.0"
+ }
},
"debug": {
"version": "2.6.9",
@@ -1934,10 +2452,22 @@
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
+ "dedent": {
+ "version": "0.7.0",
+ "resolved": "http://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz",
+ "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
+ "dev": true
+ },
"deep-equal": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz",
"integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=",
+ "dev": true
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "http://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
"default-require-extensions": {
@@ -2193,6 +2723,56 @@
"domelementtype": "1.3.0"
}
},
+ "dot-prop": {
+ "version": "4.2.0",
+ "resolved": "http://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz",
+ "integrity": "sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc=",
+ "dev": true,
+ "requires": {
+ "is-obj": "1.0.1"
+ }
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "http://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "http://registry.npm.taobao.org/duplexer2/download/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "1.1.14"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "0.0.1",
+ "string_decoder": "0.10.31"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ }
+ }
+ },
"duplexify": {
"version": "3.5.1",
"resolved": "http://registry.npm.taobao.org/duplexify/download/duplexify-3.5.1.tgz",
@@ -2231,6 +2811,12 @@
"version": "1.3.28",
"resolved": "http://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.28.tgz",
"integrity": "sha1-jdTmRYCGZE6fnwoc8y4qH53/2e4=",
+ "dev": true
+ },
+ "elegant-spinner": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz",
+ "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
"dev": true
},
"elliptic": {
@@ -2521,6 +3107,37 @@
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
+ "escodegen": {
+ "version": "1.8.1",
+ "resolved": "http://registry.npm.taobao.org/escodegen/download/escodegen-1.8.1.tgz",
+ "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
+ "dev": true,
+ "requires": {
+ "esprima": "2.7.3",
+ "estraverse": "1.9.3",
+ "esutils": "2.0.2",
+ "optionator": "0.8.2",
+ "source-map": "0.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "1.9.3",
+ "resolved": "http://registry.npm.taobao.org/estraverse/download/estraverse-1.9.3.tgz",
+ "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.2.0",
+ "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.2.0.tgz",
+ "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "amdefine": "1.0.1"
+ }
+ }
+ }
+ },
"escope": {
"version": "3.6.0",
"resolved": "http://registry.npm.taobao.org/escope/download/escope-3.6.0.tgz",
@@ -2575,6 +3192,21 @@
"requires": {
"d": "1.0.0",
"es5-ext": "0.10.37"
+ }
+ },
+ "event-stream": {
+ "version": "3.3.4",
+ "resolved": "http://registry.npm.taobao.org/event-stream/download/event-stream-3.3.4.tgz",
+ "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.1.0",
+ "pause-stream": "0.0.11",
+ "split": "0.3.3",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
}
},
"eventemitter3": {
@@ -2636,10 +3268,25 @@
}
}
},
+ "execall": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/execall/download/execall-1.0.0.tgz",
+ "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=",
+ "dev": true,
+ "requires": {
+ "clone-regexp": "1.0.0"
+ }
+ },
"exit": {
"version": "0.1.2",
"resolved": "http://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz",
"integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
+ "dev": true
+ },
+ "exit-hook": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/exit-hook/download/exit-hook-1.1.1.tgz",
+ "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=",
"dev": true
},
"expand-braces": {
@@ -2807,6 +3454,25 @@
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
+ "fancy-log": {
+ "version": "1.3.2",
+ "resolved": "http://registry.npm.taobao.org/fancy-log/download/fancy-log-1.3.2.tgz",
+ "integrity": "sha1-9BEl49hPLn2JpD0G2VjI94vha+E=",
+ "dev": true,
+ "requires": {
+ "ansi-gray": "0.1.1",
+ "color-support": "1.1.3",
+ "time-stamp": "1.1.0"
+ },
+ "dependencies": {
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npm.taobao.org/time-stamp/download/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
+ "dev": true
+ }
+ }
+ },
"fast-deep-equal": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.0.0.tgz",
@@ -2817,6 +3483,12 @@
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "http://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"fastparse": {
@@ -2834,6 +3506,31 @@
"websocket-driver": "0.7.0"
}
},
+ "fecha": {
+ "version": "2.3.2",
+ "resolved": "http://registry.npm.taobao.org/fecha/download/fecha-2.3.2.tgz",
+ "integrity": "sha1-Ng8DXdbt2VS8lYH5XypKfyo1BcE="
+ },
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "http://registry.npm.taobao.org/figures/download/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": "http://registry.npm.taobao.org/file-entry-cache/download/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.5",
"resolved": "http://registry.npm.taobao.org/file-loader/download/file-loader-1.1.5.tgz",
@@ -2843,6 +3540,11 @@
"loader-utils": "1.1.0",
"schema-utils": "0.3.0"
}
+ },
+ "file-saver": {
+ "version": "1.3.3",
+ "resolved": "http://registry.npm.taobao.org/file-saver/download/file-saver-1.3.3.tgz",
+ "integrity": "sha1-zdTETTqiZOrC9o7BZbx5HDSvEjI="
},
"filename-regex": {
"version": "2.0.1",
@@ -2859,6 +3561,12 @@
"glob": "7.1.2",
"minimatch": "3.0.4"
}
+ },
+ "filesize": {
+ "version": "3.5.11",
+ "resolved": "http://registry.npm.taobao.org/filesize/download/filesize-3.5.11.tgz",
+ "integrity": "sha1-GRkyZ0lDO7PPdzaL0VjKq8wZ6e4=",
+ "dev": true
},
"fill-range": {
"version": "2.2.3",
@@ -2910,6 +3618,12 @@
"pkg-dir": "2.0.0"
}
},
+ "find-parent-dir": {
+ "version": "0.3.0",
+ "resolved": "http://registry.npm.taobao.org/find-parent-dir/download/find-parent-dir-0.3.0.tgz",
+ "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=",
+ "dev": true
+ },
"find-up": {
"version": "2.1.0",
"resolved": "http://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
@@ -2917,6 +3631,55 @@
"dev": true,
"requires": {
"locate-path": "2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "1.3.0",
+ "resolved": "http://registry.npm.taobao.org/flat-cache/download/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"
+ },
+ "dependencies": {
+ "del": {
+ "version": "2.2.2",
+ "resolved": "http://registry.npm.taobao.org/del/download/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.0",
+ "object-assign": "4.1.1",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "rimraf": "2.6.2"
+ }
+ },
+ "globby": {
+ "version": "5.0.0",
+ "resolved": "http://registry.npm.taobao.org/globby/download/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": "http://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
}
},
"flatten": {
@@ -2934,6 +3697,11 @@
"inherits": "2.0.3",
"readable-stream": "2.3.3"
}
+ },
+ "font-awesome": {
+ "version": "4.7.0",
+ "resolved": "http://registry.npm.taobao.org/font-awesome/download/font-awesome-4.7.0.tgz",
+ "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
},
"for-in": {
"version": "1.0.2",
@@ -2983,6 +3751,12 @@
"version": "0.5.2",
"resolved": "http://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "from": {
+ "version": "0.1.7",
+ "resolved": "http://registry.npm.taobao.org/from/download/from-0.1.7.tgz",
+ "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=",
"dev": true
},
"from2": {
@@ -3985,15 +4759,13 @@
"version": "2.0.0",
"resolved": "http://registry.npm.taobao.org/generate-function/download/generate-function-2.0.0.tgz",
"integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
- "dev": true,
- "optional": true
+ "dev": true
},
"generate-object-property": {
"version": "1.2.0",
"resolved": "http://registry.npm.taobao.org/generate-object-property/download/generate-object-property-1.2.0.tgz",
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"dev": true,
- "optional": true,
"requires": {
"is-property": "1.0.2"
}
@@ -4002,6 +4774,12 @@
"version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.2.tgz",
"integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "dev": true
+ },
+ "get-own-enumerable-property-symbols": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-2.0.1.tgz",
+ "integrity": "sha1-XErYfyg0xLm06EVJ3B4GUPs4wks=",
"dev": true
},
"get-stdin": {
@@ -4032,6 +4810,11 @@
"dev": true
}
}
+ },
+ "gl-matrix": {
+ "version": "2.4.0",
+ "resolved": "http://registry.npm.taobao.org/gl-matrix/download/gl-matrix-2.4.0.tgz",
+ "integrity": "sha1-IImxMwGinuyCLZ2Z3/wfeO6aPFA="
},
"glob": {
"version": "7.1.2",
@@ -4120,6 +4903,12 @@
"slash": "1.0.0"
}
},
+ "globjoin": {
+ "version": "0.1.4",
+ "resolved": "http://registry.npm.taobao.org/globjoin/download/globjoin-0.1.4.tgz",
+ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=",
+ "dev": true
+ },
"globule": {
"version": "1.2.0",
"resolved": "http://registry.npm.taobao.org/globule/download/globule-1.2.0.tgz",
@@ -4132,11 +4921,97 @@
"minimatch": "3.0.4"
}
},
+ "glogg": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/glogg/download/glogg-1.0.0.tgz",
+ "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
+ "dev": true,
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
"graceful-fs": {
"version": "4.1.11",
"resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
+ },
+ "gulp-util": {
+ "version": "3.0.7",
+ "resolved": "http://registry.npm.taobao.org/gulp-util/download/gulp-util-3.0.7.tgz",
+ "integrity": "sha1-eJJcS4+LSQBawBoBHFV+YhiUHLs=",
+ "dev": true,
+ "requires": {
+ "array-differ": "1.0.0",
+ "array-uniq": "1.0.3",
+ "beeper": "1.1.1",
+ "chalk": "1.1.3",
+ "dateformat": "1.0.12",
+ "fancy-log": "1.3.2",
+ "gulplog": "1.0.0",
+ "has-gulplog": "0.1.0",
+ "lodash._reescape": "3.0.0",
+ "lodash._reevaluate": "3.0.0",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.template": "3.6.2",
+ "minimist": "1.2.0",
+ "multipipe": "0.1.2",
+ "object-assign": "3.0.0",
+ "replace-ext": "0.0.1",
+ "through2": "2.0.3",
+ "vinyl": "0.5.3"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/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"
+ }
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/object-assign/download/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/gulplog/download/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "dev": true,
+ "requires": {
+ "glogg": "1.0.0"
+ }
+ },
+ "gzip-size": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/gzip-size/download/gzip-size-3.0.0.tgz",
+ "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1"
+ }
},
"handle-thing": {
"version": "1.2.5",
@@ -4301,6 +5176,15 @@
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
"dev": true
},
+ "has-gulplog": {
+ "version": "0.1.0",
+ "resolved": "http://registry.npm.taobao.org/has-gulplog/download/has-gulplog-0.1.0.tgz",
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+ "dev": true,
+ "requires": {
+ "sparkles": "1.0.0"
+ }
+ },
"has-unicode": {
"version": "2.0.1",
"resolved": "http://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz",
@@ -4415,6 +5299,12 @@
"relateurl": "0.2.7",
"uglify-js": "3.2.2"
}
+ },
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz",
+ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+ "dev": true
},
"html-webpack-plugin": {
"version": "2.30.1",
@@ -4587,8 +5477,7 @@
"iconv-lite": {
"version": "0.4.19",
"resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.19.tgz",
- "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=",
- "dev": true
+ "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs="
},
"icss-replace-symbols": {
"version": "1.1.0",
@@ -4774,6 +5663,28 @@
"integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
"dev": true
},
+ "is-alphabetical": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/is-alphabetical/download/is-alphabetical-1.0.1.tgz",
+ "integrity": "sha1-x3B5zJHU76x3W+EDS/LSQ/lebwg=",
+ "dev": true
+ },
+ "is-alphanumeric": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/is-alphanumeric/download/is-alphanumeric-1.0.0.tgz",
+ "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=",
+ "dev": true
+ },
+ "is-alphanumerical": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/is-alphanumerical/download/is-alphanumerical-1.0.1.tgz",
+ "integrity": "sha1-37SqTRCF4zvbYcLe6cgOnGwZ9Ts=",
+ "dev": true,
+ "requires": {
+ "is-alphabetical": "1.0.1",
+ "is-decimal": "1.0.1"
+ }
+ },
"is-arrayish": {
"version": "0.2.1",
"resolved": "http://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
@@ -4814,6 +5725,12 @@
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz",
"integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-decimal": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/is-decimal/download/is-decimal-1.0.1.tgz",
+ "integrity": "sha1-9ftqlJlq2ejjdh+/vQkfH8qMToI=",
"dev": true
},
"is-directory": {
@@ -4876,12 +5793,17 @@
"is-extglob": "2.1.1"
}
},
+ "is-hexadecimal": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/is-hexadecimal/download/is-hexadecimal-1.0.1.tgz",
+ "integrity": "sha1-bghLvJIGH7sJcexYts5tQE4k2mk=",
+ "dev": true
+ },
"is-my-json-valid": {
"version": "2.16.1",
"resolved": "http://registry.npm.taobao.org/is-my-json-valid/download/is-my-json-valid-2.16.1.tgz",
"integrity": "sha1-WoRnd+LCYg0eaRBOXToDsfYIjxE=",
"dev": true,
- "optional": true,
"requires": {
"generate-function": "2.0.0",
"generate-object-property": "1.2.0",
@@ -4896,6 +5818,29 @@
"dev": true,
"requires": {
"kind-of": "3.2.2"
+ }
+ },
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ },
+ "is-observable": {
+ "version": "0.2.0",
+ "resolved": "http://registry.npm.taobao.org/is-observable/download/is-observable-0.2.0.tgz",
+ "integrity": "sha1-s2ExHYPG5dcmyr9eJQsCNxBvWuI=",
+ "dev": true,
+ "requires": {
+ "symbol-observable": "0.2.4"
+ },
+ "dependencies": {
+ "symbol-observable": {
+ "version": "0.2.4",
+ "resolved": "http://registry.npm.taobao.org/symbol-observable/download/symbol-observable-0.2.4.tgz",
+ "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=",
+ "dev": true
+ }
}
},
"is-path-cwd": {
@@ -4949,12 +5894,17 @@
"integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=",
"dev": true
},
+ "is-promise": {
+ "version": "2.1.0",
+ "resolved": "http://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz",
+ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+ "dev": true
+ },
"is-property": {
"version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/is-property/download/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
- "dev": true,
- "optional": true
+ "dev": true
},
"is-regex": {
"version": "1.0.4",
@@ -4965,10 +5915,22 @@
"has": "1.0.1"
}
},
+ "is-regexp": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/is-regexp/download/is-regexp-1.0.0.tgz",
+ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+ "dev": true
+ },
"is-stream": {
"version": "1.1.0",
"resolved": "http://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-supported-regexp-flag": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/is-supported-regexp-flag/download/is-supported-regexp-flag-1.0.0.tgz",
+ "integrity": "sha1-i1IMhfrnolM4LUsCZS4EVXbhO7g=",
"dev": true
},
"is-svg": {
@@ -4996,6 +5958,18 @@
"version": "0.2.1",
"resolved": "http://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz",
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+ "dev": true
+ },
+ "is-whitespace-character": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/is-whitespace-character/download/is-whitespace-character-1.0.1.tgz",
+ "integrity": "sha1-muAXbzKCtlRXoZks2whPil+DPjs=",
+ "dev": true
+ },
+ "is-word-character": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/is-word-character/download/is-word-character-1.0.1.tgz",
+ "integrity": "sha1-WgP6HqkazopusMfNdw64bWXIvvs=",
"dev": true
},
"is-wsl": {
@@ -5033,6 +6007,91 @@
"resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
+ },
+ "istanbul": {
+ "version": "0.4.5",
+ "resolved": "http://registry.npm.taobao.org/istanbul/download/istanbul-0.4.5.tgz",
+ "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.0.9",
+ "async": "1.5.2",
+ "escodegen": "1.8.1",
+ "esprima": "2.7.3",
+ "glob": "5.0.15",
+ "handlebars": "4.0.11",
+ "js-yaml": "3.7.0",
+ "mkdirp": "0.5.1",
+ "nopt": "3.0.6",
+ "once": "1.4.0",
+ "resolve": "1.1.7",
+ "supports-color": "3.2.3",
+ "which": "1.3.0",
+ "wordwrap": "1.0.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.0.9",
+ "resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.0.9.tgz",
+ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+ "dev": true
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "http://registry.npm.taobao.org/async/download/async-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
+ "dev": true
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "http://registry.npm.taobao.org/glob/download/glob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "dev": true,
+ "requires": {
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "http://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.0.9"
+ }
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "http://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "1.0.0"
+ }
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ }
+ }
},
"istanbul-api": {
"version": "1.2.1",
@@ -5191,15 +6250,15 @@
}
},
"jasmine-core": {
- "version": "2.6.4",
- "resolved": "http://registry.npm.taobao.org/jasmine-core/download/jasmine-core-2.6.4.tgz",
- "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=",
+ "version": "2.8.0",
+ "resolved": "http://registry.npm.taobao.org/jasmine-core/download/jasmine-core-2.8.0.tgz",
+ "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=",
"dev": true
},
"jasmine-spec-reporter": {
- "version": "4.1.1",
- "resolved": "http://registry.npm.taobao.org/jasmine-spec-reporter/download/jasmine-spec-reporter-4.1.1.tgz",
- "integrity": "sha1-Wm1Yq11hvqcwn7wnkjlRF1axtYg=",
+ "version": "4.2.1",
+ "resolved": "http://registry.npm.taobao.org/jasmine-spec-reporter/download/jasmine-spec-reporter-4.2.1.tgz",
+ "integrity": "sha1-HWMq7ANBZwrTJPkrqEtLMrNeniI=",
"dev": true,
"requires": {
"colors": "1.1.2"
@@ -5210,6 +6269,24 @@
"resolved": "http://registry.npm.taobao.org/jasminewd2/download/jasminewd2-2.2.0.tgz",
"integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=",
"dev": true
+ },
+ "jest-get-type": {
+ "version": "21.2.0",
+ "resolved": "http://registry.npm.taobao.org/jest-get-type/download/jest-get-type-21.2.0.tgz",
+ "integrity": "sha1-9jdqudtLYNgeOfMHScbEZvQNSiM=",
+ "dev": true
+ },
+ "jest-validate": {
+ "version": "21.2.1",
+ "resolved": "http://registry.npm.taobao.org/jest-validate/download/jest-validate-21.2.1.tgz",
+ "integrity": "sha1-zAy8plPNVJN7pPKhEXlndFMN08c=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.2.2",
+ "jest-get-type": "21.2.0",
+ "leven": "2.1.0",
+ "pretty-format": "21.2.1"
+ }
},
"js-base64": {
"version": "2.4.0",
@@ -5250,6 +6327,12 @@
"version": "0.5.7",
"resolved": "http://registry.npm.taobao.org/json-loader/download/json-loader-0.5.7.tgz",
"integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.1.tgz",
+ "integrity": "sha1-UBg80bLSUnXeBp6ecbRnrJ6rlzo=",
"dev": true
},
"json-schema": {
@@ -5310,8 +6393,7 @@
"version": "4.0.1",
"resolved": "http://registry.npm.taobao.org/jsonpointer/download/jsonpointer-4.0.1.tgz",
"integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
- "dev": true,
- "optional": true
+ "dev": true
},
"jsprim": {
"version": "1.4.1",
@@ -5377,9 +6459,9 @@
}
},
"karma-chrome-launcher": {
- "version": "2.1.1",
- "resolved": "http://registry.npm.taobao.org/karma-chrome-launcher/download/karma-chrome-launcher-2.1.1.tgz",
- "integrity": "sha1-IWh5xorATY1RQOmWGboEtZr9Rs8=",
+ "version": "2.2.0",
+ "resolved": "http://registry.npm.taobao.org/karma-chrome-launcher/download/karma-chrome-launcher-2.2.0.tgz",
+ "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=",
"dev": true,
"requires": {
"fs-access": "1.0.1",
@@ -5420,6 +6502,39 @@
"karma-jasmine": "1.1.1"
}
},
+ "karma-remap-istanbul": {
+ "version": "0.6.0",
+ "resolved": "http://registry.npm.taobao.org/karma-remap-istanbul/download/karma-remap-istanbul-0.6.0.tgz",
+ "integrity": "sha1-l/O3cAZSVPm0ck8tm+SjouG69vw=",
+ "dev": true,
+ "requires": {
+ "istanbul": "0.4.5",
+ "remap-istanbul": "0.9.5"
+ }
+ },
+ "karma-sauce-launcher": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npm.taobao.org/karma-sauce-launcher/download/karma-sauce-launcher-1.2.0.tgz",
+ "integrity": "sha1-byVY3e889Wh5+idUDIrp+L/Ra8o=",
+ "dev": true,
+ "requires": {
+ "q": "1.5.1",
+ "sauce-connect-launcher": "1.2.3",
+ "saucelabs": "1.4.0",
+ "wd": "1.5.0"
+ },
+ "dependencies": {
+ "saucelabs": {
+ "version": "1.4.0",
+ "resolved": "http://registry.npm.taobao.org/saucelabs/download/saucelabs-1.4.0.tgz",
+ "integrity": "sha1-uTSpr52ih0s/QKrh/N5QpEZvXzg=",
+ "dev": true,
+ "requires": {
+ "https-proxy-agent": "1.0.0"
+ }
+ }
+ }
+ },
"karma-source-map-support": {
"version": "1.2.0",
"resolved": "http://registry.npm.taobao.org/karma-source-map-support/download/karma-source-map-support-1.2.0.tgz",
@@ -5444,11 +6559,26 @@
"is-buffer": "1.1.6"
}
},
+ "known-css-properties": {
+ "version": "0.4.1",
+ "resolved": "http://registry.npm.taobao.org/known-css-properties/download/known-css-properties-0.4.1.tgz",
+ "integrity": "sha1-uqr3BOX4pfEODiISEqrj6nOOo3I=",
+ "dev": true
+ },
"lazy-cache": {
"version": "0.2.7",
"resolved": "http://registry.npm.taobao.org/lazy-cache/download/lazy-cache-0.2.7.tgz",
"integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=",
"dev": true
+ },
+ "lazystream": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/lazystream/download/lazystream-1.0.0.tgz",
+ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.3.3"
+ }
},
"lcid": {
"version": "1.0.0",
@@ -5500,6 +6630,22 @@
}
}
},
+ "leven": {
+ "version": "2.1.0",
+ "resolved": "http://registry.npm.taobao.org/leven/download/leven-2.1.0.tgz",
+ "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
+ "dev": true
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
+ }
+ },
"license-webpack-plugin": {
"version": "1.1.1",
"resolved": "http://registry.npm.taobao.org/license-webpack-plugin/download/license-webpack-plugin-1.1.1.tgz",
@@ -5507,6 +6653,268 @@
"dev": true,
"requires": {
"ejs": "2.5.7"
+ }
+ },
+ "lint-staged": {
+ "version": "5.0.0",
+ "resolved": "http://registry.npm.taobao.org/lint-staged/download/lint-staged-5.0.0.tgz",
+ "integrity": "sha1-8cZw4D4v3z89DrgfctO89lh3DlQ=",
+ "dev": true,
+ "requires": {
+ "app-root-path": "2.0.1",
+ "chalk": "2.2.2",
+ "commander": "2.12.2",
+ "cosmiconfig": "3.1.0",
+ "dedent": "0.7.0",
+ "execa": "0.8.0",
+ "find-parent-dir": "0.3.0",
+ "is-glob": "4.0.0",
+ "jest-validate": "21.2.1",
+ "listr": "0.13.0",
+ "lodash": "4.17.4",
+ "log-symbols": "2.1.0",
+ "minimatch": "3.0.4",
+ "npm-which": "3.0.1",
+ "p-map": "1.2.0",
+ "path-is-inside": "1.0.2",
+ "pify": "3.0.0",
+ "staged-git-files": "0.0.4",
+ "stringify-object": "3.2.1"
+ },
+ "dependencies": {
+ "cosmiconfig": {
+ "version": "3.1.0",
+ "resolved": "http://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-3.1.0.tgz",
+ "integrity": "sha1-ZAqUv5hH8yGABAPNJzr2BmXHM5c=",
+ "dev": true,
+ "requires": {
+ "is-directory": "0.3.1",
+ "js-yaml": "3.10.0",
+ "parse-json": "3.0.0",
+ "require-from-string": "2.0.1"
+ }
+ },
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.0.tgz",
+ "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+ "dev": true
+ },
+ "execa": {
+ "version": "0.8.0",
+ "resolved": "http://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz",
+ "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+ "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"
+ }
+ },
+ "js-yaml": {
+ "version": "3.10.0",
+ "resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.10.0.tgz",
+ "integrity": "sha1-LnhEFka9RoLpY/IrbpKCPDCcYtw=",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.9",
+ "esprima": "4.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-3.0.0.tgz",
+ "integrity": "sha1-+m9HsY4jgm6tMvJj50TQ4ehH+xM=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "require-from-string": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/require-from-string/download/require-from-string-2.0.1.tgz",
+ "integrity": "sha1-xUUjPp19pmFunVmt+zn8n1iGdv8=",
+ "dev": true
+ }
+ }
+ },
+ "listr": {
+ "version": "0.13.0",
+ "resolved": "http://registry.npm.taobao.org/listr/download/listr-0.13.0.tgz",
+ "integrity": "sha1-ILsLowuuZg7oTMBQPfS+PVYjiH0=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "cli-truncate": "0.2.1",
+ "figures": "1.7.0",
+ "indent-string": "2.1.0",
+ "is-observable": "0.2.0",
+ "is-promise": "2.1.0",
+ "is-stream": "1.1.0",
+ "listr-silent-renderer": "1.1.1",
+ "listr-update-renderer": "0.4.0",
+ "listr-verbose-renderer": "0.4.1",
+ "log-symbols": "1.0.2",
+ "log-update": "1.0.2",
+ "ora": "0.2.3",
+ "p-map": "1.2.0",
+ "rxjs": "5.5.5",
+ "stream-to-observable": "0.2.0",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/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"
+ }
+ },
+ "log-symbols": {
+ "version": "1.0.2",
+ "resolved": "http://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz",
+ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "listr-silent-renderer": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/listr-silent-renderer/download/listr-silent-renderer-1.1.1.tgz",
+ "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
+ "dev": true
+ },
+ "listr-update-renderer": {
+ "version": "0.4.0",
+ "resolved": "http://registry.npm.taobao.org/listr-update-renderer/download/listr-update-renderer-0.4.0.tgz",
+ "integrity": "sha1-NE2YDaLKLosUW6MFkI8yrj9MyKc=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "cli-truncate": "0.2.1",
+ "elegant-spinner": "1.0.1",
+ "figures": "1.7.0",
+ "indent-string": "3.2.0",
+ "log-symbols": "1.0.2",
+ "log-update": "1.0.2",
+ "strip-ansi": "3.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/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"
+ }
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "http://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz",
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "1.0.2",
+ "resolved": "http://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz",
+ "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "listr-verbose-renderer": {
+ "version": "0.4.1",
+ "resolved": "http://registry.npm.taobao.org/listr-verbose-renderer/download/listr-verbose-renderer-0.4.1.tgz",
+ "integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "cli-cursor": "1.0.2",
+ "date-fns": "1.29.0",
+ "figures": "1.7.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/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": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
}
},
"load-json-file": {
@@ -5560,7 +6968,60 @@
"lodash": {
"version": "4.17.4",
"resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.17.4.tgz",
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
+ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4="
+ },
+ "lodash._basecopy": {
+ "version": "3.0.1",
+ "resolved": "http://registry.npm.taobao.org/lodash._basecopy/download/lodash._basecopy-3.0.1.tgz",
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
+ "dev": true
+ },
+ "lodash._basetostring": {
+ "version": "3.0.1",
+ "resolved": "http://registry.npm.taobao.org/lodash._basetostring/download/lodash._basetostring-3.0.1.tgz",
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
+ "dev": true
+ },
+ "lodash._basevalues": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/lodash._basevalues/download/lodash._basevalues-3.0.0.tgz",
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
+ "dev": true
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "resolved": "http://registry.npm.taobao.org/lodash._getnative/download/lodash._getnative-3.9.1.tgz",
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
+ "dev": true
+ },
+ "lodash._isiterateecall": {
+ "version": "3.0.9",
+ "resolved": "http://registry.npm.taobao.org/lodash._isiterateecall/download/lodash._isiterateecall-3.0.9.tgz",
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
+ "dev": true
+ },
+ "lodash._reescape": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/lodash._reescape/download/lodash._reescape-3.0.0.tgz",
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
+ "dev": true
+ },
+ "lodash._reevaluate": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/lodash._reevaluate/download/lodash._reevaluate-3.0.0.tgz",
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
+ "dev": true
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/lodash._reinterpolate/download/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
+ "dev": true
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "resolved": "http://registry.npm.taobao.org/lodash._root/download/lodash._root-3.0.1.tgz",
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
"dev": true
},
"lodash.assign": {
@@ -5582,6 +7043,38 @@
"integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
"dev": true
},
+ "lodash.escape": {
+ "version": "3.2.0",
+ "resolved": "http://registry.npm.taobao.org/lodash.escape/download/lodash.escape-3.2.0.tgz",
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+ "dev": true,
+ "requires": {
+ "lodash._root": "3.0.1"
+ }
+ },
+ "lodash.isarguments": {
+ "version": "3.1.0",
+ "resolved": "http://registry.npm.taobao.org/lodash.isarguments/download/lodash.isarguments-3.1.0.tgz",
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
+ "dev": true
+ },
+ "lodash.isarray": {
+ "version": "3.0.4",
+ "resolved": "http://registry.npm.taobao.org/lodash.isarray/download/lodash.isarray-3.0.4.tgz",
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
+ "dev": true
+ },
+ "lodash.keys": {
+ "version": "3.1.2",
+ "resolved": "http://registry.npm.taobao.org/lodash.keys/download/lodash.keys-3.1.2.tgz",
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+ "dev": true,
+ "requires": {
+ "lodash._getnative": "3.9.1",
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
+ }
+ },
"lodash.memoize": {
"version": "4.1.2",
"resolved": "http://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz",
@@ -5595,17 +7088,69 @@
"dev": true,
"optional": true
},
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "resolved": "http://registry.npm.taobao.org/lodash.restparam/download/lodash.restparam-3.6.1.tgz",
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
+ "dev": true
+ },
"lodash.tail": {
"version": "4.1.1",
"resolved": "http://registry.npm.taobao.org/lodash.tail/download/lodash.tail-4.1.1.tgz",
"integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=",
"dev": true
},
+ "lodash.template": {
+ "version": "3.6.2",
+ "resolved": "http://registry.npm.taobao.org/lodash.template/download/lodash.template-3.6.2.tgz",
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
+ "dev": true,
+ "requires": {
+ "lodash._basecopy": "3.0.1",
+ "lodash._basetostring": "3.0.1",
+ "lodash._basevalues": "3.0.0",
+ "lodash._isiterateecall": "3.0.9",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0",
+ "lodash.keys": "3.1.2",
+ "lodash.restparam": "3.6.1",
+ "lodash.templatesettings": "3.1.1"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "3.1.1",
+ "resolved": "http://registry.npm.taobao.org/lodash.templatesettings/download/lodash.templatesettings-3.1.1.tgz",
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+ "dev": true,
+ "requires": {
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0"
+ }
+ },
"lodash.uniq": {
"version": "4.5.0",
"resolved": "http://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz",
"integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
"dev": true
+ },
+ "log-symbols": {
+ "version": "2.1.0",
+ "resolved": "http://registry.npm.taobao.org/log-symbols/download/log-symbols-2.1.0.tgz",
+ "integrity": "sha1-81+mDieIMrU43E3dy7R4pF0+O+Y=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.2.2"
+ }
+ },
+ "log-update": {
+ "version": "1.0.2",
+ "resolved": "http://registry.npm.taobao.org/log-update/download/log-update-1.0.2.tgz",
+ "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "1.4.0",
+ "cli-cursor": "1.0.2"
+ }
},
"log4js": {
"version": "0.6.38",
@@ -5659,6 +7204,12 @@
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz",
"integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+ "dev": true
+ },
+ "longest-streak": {
+ "version": "2.0.2",
+ "resolved": "http://registry.npm.taobao.org/longest-streak/download/longest-streak-2.0.2.tgz",
+ "integrity": "sha1-JCG2upOaRDu5/+v1llhaULTDji4=",
"dev": true
},
"loose-envify": {
@@ -5732,10 +7283,34 @@
"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
"dev": true
},
+ "map-stream": {
+ "version": "0.1.0",
+ "resolved": "http://registry.npm.taobao.org/map-stream/download/map-stream-0.1.0.tgz",
+ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+ "dev": true
+ },
+ "markdown-escapes": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/markdown-escapes/download/markdown-escapes-1.0.1.tgz",
+ "integrity": "sha1-GZTfLTr0gR3lmmcUk0wrIpJzRRg=",
+ "dev": true
+ },
+ "markdown-table": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/markdown-table/download/markdown-table-1.1.1.tgz",
+ "integrity": "sha1-Sz3ToTPRUYuO8NvHCb8qG0gkvIw=",
+ "dev": true
+ },
"math-expression-evaluator": {
"version": "1.2.17",
"resolved": "http://registry.npm.taobao.org/math-expression-evaluator/download/math-expression-evaluator-1.2.17.tgz",
"integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
+ "dev": true
+ },
+ "mathml-tag-names": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/mathml-tag-names/download/mathml-tag-names-2.0.1.tgz",
+ "integrity": "sha1-jUEmgWi/htEQK5gQnijlMeejRXg=",
"dev": true
},
"md5": {
@@ -5771,6 +7346,16 @@
}
}
},
+ "mdast-util-compact": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/mdast-util-compact/download/mdast-util-compact-1.0.1.tgz",
+ "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=",
+ "dev": true,
+ "requires": {
+ "unist-util-modify-children": "1.1.1",
+ "unist-util-visit": "1.3.0"
+ }
+ },
"media-typer": {
"version": "0.3.0",
"resolved": "http://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
@@ -5795,6 +7380,12 @@
"errno": "0.1.6",
"readable-stream": "2.3.3"
}
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "http://registry.npm.taobao.org/memorystream/download/memorystream-0.3.1.tgz",
+ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+ "dev": true
},
"meow": {
"version": "3.7.0",
@@ -5981,6 +7572,21 @@
}
}
},
+ "mobx": {
+ "version": "3.4.1",
+ "resolved": "http://registry.npm.taobao.org/mobx/download/mobx-3.4.1.tgz",
+ "integrity": "sha1-N6vl7ogtQBgo2fJsbBovR2FLu+8="
+ },
+ "mobx-angular": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/mobx-angular/download/mobx-angular-2.0.1.tgz",
+ "integrity": "sha1-JjjQkWGAgGk7vtAsXfjNcUtSwWc="
+ },
+ "moment": {
+ "version": "2.19.4",
+ "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.19.4.tgz",
+ "integrity": "sha1-F+XixurYgZyOz62DoKzMsxLpRoI="
+ },
"move-concurrently": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
@@ -6017,6 +7623,15 @@
"integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
"dev": true
},
+ "multipipe": {
+ "version": "0.1.2",
+ "resolved": "http://registry.npm.taobao.org/multipipe/download/multipipe-0.1.2.tgz",
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+ "dev": true,
+ "requires": {
+ "duplexer2": "0.0.2"
+ }
+ },
"nan": {
"version": "2.8.0",
"resolved": "http://registry.npm.taobao.org/nan/download/nan-2.8.0.tgz",
@@ -6038,6 +7653,54 @@
"resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz",
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
"dev": true
+ },
+ "ng-tree-antd": {
+ "version": "2.0.4",
+ "resolved": "http://registry.npm.taobao.org/ng-tree-antd/download/ng-tree-antd-2.0.4.tgz",
+ "integrity": "sha1-pegPPbuRulfHnKYi8OsBA+xYhN4=",
+ "requires": {
+ "angular-tree-component": "6.1.0"
+ }
+ },
+ "ng-zorro-antd": {
+ "version": "0.6.6",
+ "resolved": "http://registry.npm.taobao.org/ng-zorro-antd/download/ng-zorro-antd-0.6.6.tgz",
+ "integrity": "sha1-M+kqIcXkArZjibMPSexq3tyPpdQ=",
+ "requires": {
+ "@angular/cdk": "5.0.0",
+ "moment": "2.19.4",
+ "tslib": "1.8.1"
+ }
+ },
+ "ng-zorro-antd-extra": {
+ "version": "1.1.4",
+ "resolved": "http://registry.npm.taobao.org/ng-zorro-antd-extra/download/ng-zorro-antd-extra-1.1.4.tgz",
+ "integrity": "sha1-K3jTYVZ3tIgJD3SZiEFSl20ygu4="
+ },
+ "ng2-dnd": {
+ "version": "5.0.2",
+ "resolved": "http://registry.npm.taobao.org/ng2-dnd/download/ng2-dnd-5.0.2.tgz",
+ "integrity": "sha1-hiJ4rH3t+hT1eDu/NAFNXXPf77Q="
+ },
+ "ng2-file-upload": {
+ "version": "1.3.0",
+ "resolved": "http://registry.npm.taobao.org/ng2-file-upload/download/ng2-file-upload-1.3.0.tgz",
+ "integrity": "sha1-2Q+PVo9iODRiF1+L36AJaxMfJ3o="
+ },
+ "ng2-img-cropper": {
+ "version": "0.9.0",
+ "resolved": "http://registry.npm.taobao.org/ng2-img-cropper/download/ng2-img-cropper-0.9.0.tgz",
+ "integrity": "sha1-MFM35mnE5a3IdtYo3K4Lyk0Q0cM="
+ },
+ "ngx-color-picker": {
+ "version": "5.2.0",
+ "resolved": "http://registry.npm.taobao.org/ngx-color-picker/download/ngx-color-picker-5.2.0.tgz",
+ "integrity": "sha1-hDOTPteF4OXTKFVXdLIMI+NJhgY="
+ },
+ "ngx-countdown": {
+ "version": "2.0.2",
+ "resolved": "http://registry.npm.taobao.org/ngx-countdown/download/ngx-countdown-2.0.2.tgz",
+ "integrity": "sha1-+q905dlnCQYvf7A18QW1+Pdr6S0="
},
"no-case": {
"version": "2.3.2",
@@ -6287,6 +7950,12 @@
"integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
"dev": true
},
+ "normalize-selector": {
+ "version": "0.2.0",
+ "resolved": "http://registry.npm.taobao.org/normalize-selector/download/normalize-selector-0.2.0.tgz",
+ "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=",
+ "dev": true
+ },
"normalize-url": {
"version": "1.9.1",
"resolved": "http://registry.npm.taobao.org/normalize-url/download/normalize-url-1.9.1.tgz",
@@ -6299,6 +7968,84 @@
"sort-keys": "1.1.2"
}
},
+ "npm-path": {
+ "version": "2.0.3",
+ "resolved": "http://registry.npm.taobao.org/npm-path/download/npm-path-2.0.3.tgz",
+ "integrity": "sha1-Fc/04ciaONp39W9gVbJPl137K74=",
+ "dev": true,
+ "requires": {
+ "which": "1.3.0"
+ }
+ },
+ "npm-run-all": {
+ "version": "4.1.2",
+ "resolved": "http://registry.npm.taobao.org/npm-run-all/download/npm-run-all-4.1.2.tgz",
+ "integrity": "sha1-kNYtB4eS0gZpE55xhiEYZlbOoFY=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "chalk": "2.2.2",
+ "cross-spawn": "5.1.0",
+ "memorystream": "0.3.1",
+ "minimatch": "3.0.4",
+ "ps-tree": "1.1.0",
+ "read-pkg": "3.0.0",
+ "shell-quote": "1.6.1",
+ "string.prototype.padend": "3.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "4.1.1",
+ "shebang-command": "1.2.0",
+ "which": "1.3.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "parse-json": "4.0.0",
+ "pify": "3.0.0",
+ "strip-bom": "3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1",
+ "json-parse-better-errors": "1.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "4.0.0",
+ "normalize-package-data": "2.4.0",
+ "path-type": "3.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ }
+ }
+ },
"npm-run-path": {
"version": "2.0.2",
"resolved": "http://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
@@ -6306,6 +8053,17 @@
"dev": true,
"requires": {
"path-key": "2.0.1"
+ }
+ },
+ "npm-which": {
+ "version": "3.0.1",
+ "resolved": "http://registry.npm.taobao.org/npm-which/download/npm-which-3.0.1.tgz",
+ "integrity": "sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo=",
+ "dev": true,
+ "requires": {
+ "commander": "2.12.2",
+ "npm-path": "2.0.3",
+ "which": "1.3.0"
}
},
"npmlog": {
@@ -6422,6 +8180,18 @@
"wrappy": "1.0.2"
}
},
+ "onetime": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npm.taobao.org/onetime/download/onetime-1.1.0.tgz",
+ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
+ "dev": true
+ },
+ "opener": {
+ "version": "1.4.3",
+ "resolved": "http://registry.npm.taobao.org/opener/download/opener-1.4.3.tgz",
+ "integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=",
+ "dev": true
+ },
"opn": {
"version": "5.1.0",
"resolved": "http://registry.npm.taobao.org/opn/download/opn-5.1.0.tgz",
@@ -6449,11 +8219,72 @@
}
}
},
+ "optionator": {
+ "version": "0.8.2",
+ "resolved": "http://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz",
+ "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+ "dev": true,
+ "requires": {
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "wordwrap": "1.0.0"
+ },
+ "dependencies": {
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ }
+ }
+ },
"options": {
"version": "0.0.6",
"resolved": "http://registry.npm.taobao.org/options/download/options-0.0.6.tgz",
"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=",
"dev": true
+ },
+ "ora": {
+ "version": "0.2.3",
+ "resolved": "http://registry.npm.taobao.org/ora/download/ora-0.2.3.tgz",
+ "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "cli-cursor": "1.0.2",
+ "cli-spinners": "0.1.2",
+ "object-assign": "4.1.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/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": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
},
"original": {
"version": "1.0.0",
@@ -6579,6 +8410,20 @@
"pbkdf2": "3.0.14"
}
},
+ "parse-entities": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/parse-entities/download/parse-entities-1.1.1.tgz",
+ "integrity": "sha1-gRLYhHExnyerrk1klksSL+ThuJA=",
+ "dev": true,
+ "requires": {
+ "character-entities": "1.2.1",
+ "character-entities-legacy": "1.1.1",
+ "character-reference-invalid": "1.1.1",
+ "is-alphanumerical": "1.0.1",
+ "is-decimal": "1.0.1",
+ "is-hexadecimal": "1.0.1"
+ }
+ },
"parse-glob": {
"version": "3.0.4",
"resolved": "http://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz",
@@ -6622,6 +8467,11 @@
"resolved": "http://registry.npm.taobao.org/parse-passwd/download/parse-passwd-1.0.0.tgz",
"integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
"dev": true
+ },
+ "parse-svg-path": {
+ "version": "0.1.2",
+ "resolved": "http://registry.npm.taobao.org/parse-svg-path/download/parse-svg-path-0.1.2.tgz",
+ "integrity": "sha1-en7A0esG+lMlx9PgCbhZoJtdSes="
},
"parsejson": {
"version": "0.0.3",
@@ -6707,6 +8557,15 @@
"pify": "3.0.0"
}
},
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "http://registry.npm.taobao.org/pause-stream/download/pause-stream-0.0.11.tgz",
+ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
"pbkdf2": {
"version": "3.0.14",
"resolved": "http://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.14.tgz",
@@ -6754,6 +8613,23 @@
"dev": true,
"requires": {
"find-up": "2.1.0"
+ }
+ },
+ "point-at-length": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npm.taobao.org/point-at-length/download/point-at-length-1.1.0.tgz",
+ "integrity": "sha1-CtcuvQmA1/WhqxIpbAVfnrazDlc=",
+ "requires": {
+ "abs-svg-path": "0.1.1",
+ "isarray": "0.0.1",
+ "parse-svg-path": "0.1.2"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ }
}
},
"portfinder": {
@@ -6959,6 +8835,51 @@
"uniqid": "4.1.1"
}
},
+ "postcss-html": {
+ "version": "0.11.0",
+ "resolved": "http://registry.npm.taobao.org/postcss-html/download/postcss-html-0.11.0.tgz",
+ "integrity": "sha1-A6P/MRb4oP4NRjFuohiT1NtLY68=",
+ "dev": true,
+ "requires": {
+ "htmlparser2": "3.9.2",
+ "remark": "8.0.0",
+ "unist-util-find-all-after": "1.0.1"
+ },
+ "dependencies": {
+ "domhandler": {
+ "version": "2.4.1",
+ "resolved": "http://registry.npm.taobao.org/domhandler/download/domhandler-2.4.1.tgz",
+ "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0"
+ }
+ },
+ "htmlparser2": {
+ "version": "3.9.2",
+ "resolved": "http://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.9.2.tgz",
+ "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1.3.0",
+ "domhandler": "2.4.1",
+ "domutils": "1.5.1",
+ "entities": "1.1.1",
+ "inherits": "2.0.3",
+ "readable-stream": "2.3.3"
+ }
+ }
+ }
+ },
+ "postcss-less": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/postcss-less/download/postcss-less-1.1.3.tgz",
+ "integrity": "sha1-aTBSUnG/441Xk9M6wJwaVGuHu1E=",
+ "dev": true,
+ "requires": {
+ "postcss": "5.2.18"
+ }
+ },
"postcss-load-config": {
"version": "1.2.0",
"resolved": "http://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-1.2.0.tgz",
@@ -7032,6 +8953,12 @@
"dev": true
}
}
+ },
+ "postcss-media-query-parser": {
+ "version": "0.2.3",
+ "resolved": "http://registry.npm.taobao.org/postcss-media-query-parser/download/postcss-media-query-parser-0.2.3.tgz",
+ "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=",
+ "dev": true
},
"postcss-merge-idents": {
"version": "2.1.7",
@@ -7337,6 +9264,134 @@
"postcss-value-parser": "3.3.0"
}
},
+ "postcss-reporter": {
+ "version": "5.0.0",
+ "resolved": "http://registry.npm.taobao.org/postcss-reporter/download/postcss-reporter-5.0.0.tgz",
+ "integrity": "sha1-oUF3/RNCgp0pFlPyeG79ZxEDMsM=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.2.2",
+ "lodash": "4.17.4",
+ "log-symbols": "2.1.0",
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "http://registry.npm.taobao.org/postcss/download/postcss-6.0.14.tgz",
+ "integrity": "sha1-VTTHIRRznnXQr88BfbhTCZ9WKIU=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.3.0.tgz",
+ "integrity": "sha1-tepI78nBeT3MybR2fJORTT8tUro=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-resolve-nested-selector": {
+ "version": "0.1.1",
+ "resolved": "http://registry.npm.taobao.org/postcss-resolve-nested-selector/download/postcss-resolve-nested-selector-0.1.1.tgz",
+ "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=",
+ "dev": true
+ },
+ "postcss-safe-parser": {
+ "version": "3.0.1",
+ "resolved": "http://registry.npm.taobao.org/postcss-safe-parser/download/postcss-safe-parser-3.0.1.tgz",
+ "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.3.0.tgz",
+ "integrity": "sha1-tepI78nBeT3MybR2fJORTT8tUro=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "http://registry.npm.taobao.org/postcss/download/postcss-6.0.14.tgz",
+ "integrity": "sha1-VTTHIRRznnXQr88BfbhTCZ9WKIU=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-scss": {
+ "version": "1.0.2",
+ "resolved": "http://registry.npm.taobao.org/postcss-scss/download/postcss-scss-1.0.2.tgz",
+ "integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.3.0.tgz",
+ "integrity": "sha1-tepI78nBeT3MybR2fJORTT8tUro=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "http://registry.npm.taobao.org/postcss/download/postcss-6.0.14.tgz",
+ "integrity": "sha1-VTTHIRRznnXQr88BfbhTCZ9WKIU=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
"postcss-selector-parser": {
"version": "2.2.3",
"resolved": "http://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-2.2.3.tgz",
@@ -7431,6 +9486,12 @@
"uniqs": "2.0.0"
}
},
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "http://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
"prepend-http": {
"version": "1.0.4",
"resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
@@ -7451,6 +9512,24 @@
"requires": {
"renderkid": "2.0.1",
"utila": "0.4.0"
+ }
+ },
+ "pretty-format": {
+ "version": "21.2.1",
+ "resolved": "http://registry.npm.taobao.org/pretty-format/download/pretty-format-21.2.1.tgz",
+ "integrity": "sha1-rlQH888hBmzQEaobpfzntqLt2zY=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0",
+ "ansi-styles": "3.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ }
}
},
"process": {
@@ -7606,6 +9685,15 @@
"resolved": "http://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
+ },
+ "ps-tree": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npm.taobao.org/ps-tree/download/ps-tree-1.1.0.tgz",
+ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=",
+ "dev": true,
+ "requires": {
+ "event-stream": "3.3.4"
+ }
},
"pseudomap": {
"version": "1.0.2",
@@ -7970,11 +10058,118 @@
"jsesc": "0.5.0"
}
},
+ "regression": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/regression/download/regression-2.0.1.tgz",
+ "integrity": "sha1-jSnD6CJKEIUMNeM36FqLL6w7DIc="
+ },
"relateurl": {
"version": "0.2.7",
"resolved": "http://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz",
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
"dev": true
+ },
+ "remap-istanbul": {
+ "version": "0.9.5",
+ "resolved": "http://registry.npm.taobao.org/remap-istanbul/download/remap-istanbul-0.9.5.tgz",
+ "integrity": "sha1-oYYXsfMe7Fp9vud1OCmLd1YGqqg=",
+ "dev": true,
+ "requires": {
+ "amdefine": "1.0.1",
+ "gulp-util": "3.0.7",
+ "istanbul": "0.4.5",
+ "minimatch": "3.0.4",
+ "source-map": "0.5.7",
+ "through2": "2.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.0.6",
+ "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.0.6.tgz",
+ "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
+ "dev": true,
+ "requires": {
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "0.10.31",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/through2/download/through2-2.0.1.tgz",
+ "integrity": "sha1-OE51MU1J8y3hLuu4E2uOtrXVnak=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "2.0.6",
+ "xtend": "4.0.1"
+ }
+ }
+ }
+ },
+ "remark": {
+ "version": "8.0.0",
+ "resolved": "http://registry.npm.taobao.org/remark/download/remark-8.0.0.tgz",
+ "integrity": "sha1-KHtt8v4RkOJjwdFeSG0/qDVZTW0=",
+ "dev": true,
+ "requires": {
+ "remark-parse": "4.0.0",
+ "remark-stringify": "4.0.0",
+ "unified": "6.1.6"
+ }
+ },
+ "remark-parse": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/remark-parse/download/remark-parse-4.0.0.tgz",
+ "integrity": "sha1-mfHwSa+sgDgjZuLg0L1VQp3UXYs=",
+ "dev": true,
+ "requires": {
+ "collapse-white-space": "1.0.3",
+ "is-alphabetical": "1.0.1",
+ "is-decimal": "1.0.1",
+ "is-whitespace-character": "1.0.1",
+ "is-word-character": "1.0.1",
+ "markdown-escapes": "1.0.1",
+ "parse-entities": "1.1.1",
+ "repeat-string": "1.6.1",
+ "state-toggle": "1.0.0",
+ "trim": "0.0.1",
+ "trim-trailing-lines": "1.1.0",
+ "unherit": "1.1.0",
+ "unist-util-remove-position": "1.1.1",
+ "vfile-location": "2.0.2",
+ "xtend": "4.0.1"
+ }
+ },
+ "remark-stringify": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/remark-stringify/download/remark-stringify-4.0.0.tgz",
+ "integrity": "sha1-RDGITAQY8RLaRJkbTjVs/jf6zYc=",
+ "dev": true,
+ "requires": {
+ "ccount": "1.0.2",
+ "is-alphanumeric": "1.0.0",
+ "is-decimal": "1.0.1",
+ "is-whitespace-character": "1.0.1",
+ "longest-streak": "2.0.2",
+ "markdown-escapes": "1.0.1",
+ "markdown-table": "1.1.1",
+ "mdast-util-compact": "1.0.1",
+ "parse-entities": "1.1.1",
+ "repeat-string": "1.6.1",
+ "state-toggle": "1.0.0",
+ "stringify-entities": "1.3.1",
+ "unherit": "1.1.0",
+ "xtend": "4.0.1"
+ }
},
"remove-trailing-separator": {
"version": "1.1.0",
@@ -8023,6 +10218,12 @@
"requires": {
"is-finite": "1.0.2"
}
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
+ "dev": true
},
"request": {
"version": "2.81.0",
@@ -8102,6 +10303,16 @@
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
"dev": true
},
+ "restore-cursor": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/restore-cursor/download/restore-cursor-1.0.1.tgz",
+ "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+ "dev": true,
+ "requires": {
+ "exit-hook": "1.1.1",
+ "onetime": "1.1.0"
+ }
+ },
"right-align": {
"version": "0.1.3",
"resolved": "http://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz",
@@ -8138,6 +10349,11 @@
"requires": {
"aproba": "1.2.0"
}
+ },
+ "rw": {
+ "version": "1.3.3",
+ "resolved": "http://registry.npm.taobao.org/rw/download/rw-1.3.3.tgz",
+ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
},
"rxjs": {
"version": "5.5.5",
@@ -8179,6 +10395,19 @@
"pify": "3.0.0"
}
},
+ "sauce-connect-launcher": {
+ "version": "1.2.3",
+ "resolved": "http://registry.npm.taobao.org/sauce-connect-launcher/download/sauce-connect-launcher-1.2.3.tgz",
+ "integrity": "sha1-0vkxrXro/avxlopEDnsgQXrKf4Y=",
+ "dev": true,
+ "requires": {
+ "adm-zip": "0.4.7",
+ "async": "2.6.0",
+ "https-proxy-agent": "1.0.0",
+ "lodash": "4.17.4",
+ "rimraf": "2.6.2"
+ }
+ },
"saucelabs": {
"version": "1.3.0",
"resolved": "http://registry.npm.taobao.org/saucelabs/download/saucelabs-1.3.0.tgz",
@@ -8202,6 +10431,11 @@
"requires": {
"ajv": "5.5.1"
}
+ },
+ "screenfull": {
+ "version": "3.3.2",
+ "resolved": "http://registry.npm.taobao.org/screenfull/download/screenfull-3.3.2.tgz",
+ "integrity": "sha1-pq3zs/VVbagSclOFiAYA9bOfvyU="
},
"scss-tokenizer": {
"version": "0.2.3",
@@ -8413,6 +10647,18 @@
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "http://registry.npm.taobao.org/shell-quote/download/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "0.0.1",
+ "array-map": "0.0.0",
+ "array-reduce": "0.0.0",
+ "jsonify": "0.0.0"
+ }
+ },
"signal-exit": {
"version": "3.0.2",
"resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz",
@@ -8428,10 +10674,26 @@
"debug": "2.6.9"
}
},
+ "simple-line-icons": {
+ "version": "2.4.1",
+ "resolved": "http://registry.npm.taobao.org/simple-line-icons/download/simple-line-icons-2.4.1.tgz",
+ "integrity": "sha1-t1vFoNh+UwkowszaVzUnS7JW8jQ="
+ },
+ "simple-statistics": {
+ "version": "4.1.1",
+ "resolved": "http://registry.npm.taobao.org/simple-statistics/download/simple-statistics-4.1.1.tgz",
+ "integrity": "sha1-UzxI1IM2uj01DYE18g+nE4rLDH0="
+ },
"slash": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz",
"integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "http://registry.npm.taobao.org/slice-ansi/download/slice-ansi-0.0.4.tgz",
+ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
"dev": true
},
"sntp": {
@@ -8689,6 +10951,12 @@
"source-map": "0.5.7"
}
},
+ "sparkles": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/sparkles/download/sparkles-1.0.0.tgz",
+ "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
+ "dev": true
+ },
"spdx-correct": {
"version": "1.0.2",
"resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-1.0.2.tgz",
@@ -8739,6 +11007,21 @@
"wbuf": "1.7.2"
}
},
+ "specificity": {
+ "version": "0.3.2",
+ "resolved": "http://registry.npm.taobao.org/specificity/download/specificity-0.3.2.tgz",
+ "integrity": "sha1-meZRHs7vD42bV5JJN6rCyxPRPEI=",
+ "dev": true
+ },
+ "split": {
+ "version": "0.3.3",
+ "resolved": "http://registry.npm.taobao.org/split/download/split-0.3.3.tgz",
+ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
+ "dev": true,
+ "requires": {
+ "through": "2.3.8"
+ }
+ },
"sprintf-js": {
"version": "1.0.3",
"resolved": "http://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
@@ -8778,6 +11061,18 @@
"safe-buffer": "5.1.1"
}
},
+ "staged-git-files": {
+ "version": "0.0.4",
+ "resolved": "http://registry.npm.taobao.org/staged-git-files/download/staged-git-files-0.0.4.tgz",
+ "integrity": "sha1-15fhtVHKemOd7AI33G60u5vhfTU=",
+ "dev": true
+ },
+ "state-toggle": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/state-toggle/download/state-toggle-1.0.0.tgz",
+ "integrity": "sha1-0g+aYWu08MO5i5GSLSW2QKorxCU=",
+ "dev": true
+ },
"statuses": {
"version": "1.3.1",
"resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.3.1.tgz",
@@ -8802,6 +11097,15 @@
"requires": {
"inherits": "2.0.3",
"readable-stream": "2.3.3"
+ }
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "http://registry.npm.taobao.org/stream-combiner/download/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "0.1.1"
}
},
"stream-each": {
@@ -8833,6 +11137,15 @@
"integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
"dev": true
},
+ "stream-to-observable": {
+ "version": "0.2.0",
+ "resolved": "http://registry.npm.taobao.org/stream-to-observable/download/stream-to-observable-0.2.0.tgz",
+ "integrity": "sha1-WdbqOT2HwsDdrBCqDVYbxrpvDhA=",
+ "dev": true,
+ "requires": {
+ "any-observable": "0.2.0"
+ }
+ },
"strict-uri-encode": {
"version": "1.1.0",
"resolved": "http://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz",
@@ -8850,6 +11163,17 @@
"strip-ansi": "3.0.1"
}
},
+ "string.prototype.padend": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/string.prototype.padend/download/string.prototype.padend-3.0.0.tgz",
+ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.2",
+ "es-abstract": "1.10.0",
+ "function-bind": "1.1.1"
+ }
+ },
"string_decoder": {
"version": "1.0.3",
"resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.0.3.tgz",
@@ -8857,6 +11181,29 @@
"dev": true,
"requires": {
"safe-buffer": "5.1.1"
+ }
+ },
+ "stringify-entities": {
+ "version": "1.3.1",
+ "resolved": "http://registry.npm.taobao.org/stringify-entities/download/stringify-entities-1.3.1.tgz",
+ "integrity": "sha1-sVDsLXKsTBtfMktR+2soyc3/BYw=",
+ "dev": true,
+ "requires": {
+ "character-entities-html4": "1.1.1",
+ "character-entities-legacy": "1.1.1",
+ "is-alphanumerical": "1.0.1",
+ "is-hexadecimal": "1.0.1"
+ }
+ },
+ "stringify-object": {
+ "version": "3.2.1",
+ "resolved": "http://registry.npm.taobao.org/stringify-object/download/stringify-object-3.2.1.tgz",
+ "integrity": "sha1-JyDC7/lAhUyBn27iUqrrWB8wYk0=",
+ "dev": true,
+ "requires": {
+ "get-own-enumerable-property-symbols": "2.0.1",
+ "is-obj": "1.0.1",
+ "is-regexp": "1.0.0"
}
},
"stringstream": {
@@ -8911,6 +11258,235 @@
"dev": true,
"requires": {
"loader-utils": "1.1.0"
+ }
+ },
+ "style-search": {
+ "version": "0.1.0",
+ "resolved": "http://registry.npm.taobao.org/style-search/download/style-search-0.1.0.tgz",
+ "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=",
+ "dev": true
+ },
+ "stylelint": {
+ "version": "8.3.1",
+ "resolved": "http://registry.npm.taobao.org/stylelint/download/stylelint-8.3.1.tgz",
+ "integrity": "sha1-QkyCLzLIjoUCW1XXLHuYNV4/pt4=",
+ "dev": true,
+ "requires": {
+ "autoprefixer": "7.2.3",
+ "balanced-match": "1.0.0",
+ "chalk": "2.2.2",
+ "cosmiconfig": "3.1.0",
+ "debug": "3.1.0",
+ "execall": "1.0.0",
+ "file-entry-cache": "2.0.0",
+ "get-stdin": "5.0.1",
+ "globby": "7.1.1",
+ "globjoin": "0.1.4",
+ "html-tags": "2.0.0",
+ "ignore": "3.3.7",
+ "imurmurhash": "0.1.4",
+ "known-css-properties": "0.4.1",
+ "lodash": "4.17.4",
+ "log-symbols": "2.1.0",
+ "mathml-tag-names": "2.0.1",
+ "meow": "3.7.0",
+ "micromatch": "2.3.11",
+ "normalize-selector": "0.2.0",
+ "pify": "3.0.0",
+ "postcss": "6.0.14",
+ "postcss-html": "0.11.0",
+ "postcss-less": "1.1.3",
+ "postcss-media-query-parser": "0.2.3",
+ "postcss-reporter": "5.0.0",
+ "postcss-resolve-nested-selector": "0.1.1",
+ "postcss-safe-parser": "3.0.1",
+ "postcss-scss": "1.0.2",
+ "postcss-selector-parser": "3.1.1",
+ "postcss-value-parser": "3.3.0",
+ "resolve-from": "4.0.0",
+ "specificity": "0.3.2",
+ "string-width": "2.1.1",
+ "style-search": "0.1.0",
+ "sugarss": "1.0.1",
+ "svg-tags": "1.0.0",
+ "table": "4.0.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "7.2.3",
+ "resolved": "http://registry.npm.taobao.org/autoprefixer/download/autoprefixer-7.2.3.tgz",
+ "integrity": "sha1-woQeOLeUDC0Km7/9csdfM2N4VPg=",
+ "dev": true,
+ "requires": {
+ "browserslist": "2.10.0",
+ "caniuse-lite": "1.0.30000783",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "6.0.14",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "browserslist": {
+ "version": "2.10.0",
+ "resolved": "http://registry.npm.taobao.org/browserslist/download/browserslist-2.10.0.tgz",
+ "integrity": "sha1-usXuHMacqdlkA/+4o6vcW2rtY0Y=",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "1.0.30000783",
+ "electron-to-chromium": "1.3.28"
+ }
+ },
+ "cosmiconfig": {
+ "version": "3.1.0",
+ "resolved": "http://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-3.1.0.tgz",
+ "integrity": "sha1-ZAqUv5hH8yGABAPNJzr2BmXHM5c=",
+ "dev": true,
+ "requires": {
+ "is-directory": "0.3.1",
+ "js-yaml": "3.10.0",
+ "parse-json": "3.0.0",
+ "require-from-string": "2.0.1"
+ }
+ },
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+ "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "esprima": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/esprima/download/esprima-4.0.0.tgz",
+ "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "5.0.1",
+ "resolved": "http://registry.npm.taobao.org/get-stdin/download/get-stdin-5.0.1.tgz",
+ "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.10.0",
+ "resolved": "http://registry.npm.taobao.org/js-yaml/download/js-yaml-3.10.0.tgz",
+ "integrity": "sha1-LnhEFka9RoLpY/IrbpKCPDCcYtw=",
+ "dev": true,
+ "requires": {
+ "argparse": "1.0.9",
+ "esprima": "4.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-3.0.0.tgz",
+ "integrity": "sha1-+m9HsY4jgm6tMvJj50TQ4ehH+xM=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "http://registry.npm.taobao.org/postcss/download/postcss-6.0.14.tgz",
+ "integrity": "sha1-VTTHIRRznnXQr88BfbhTCZ9WKIU=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.3.0.tgz",
+ "integrity": "sha1-tepI78nBeT3MybR2fJORTT8tUro=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ }
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.1",
+ "resolved": "http://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz",
+ "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+ "dev": true,
+ "requires": {
+ "dot-prop": "4.2.0",
+ "indexes-of": "1.0.1",
+ "uniq": "1.0.1"
+ }
+ },
+ "require-from-string": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/require-from-string/download/require-from-string-2.0.1.tgz",
+ "integrity": "sha1-xUUjPp19pmFunVmt+zn8n1iGdv8=",
+ "dev": true
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz",
+ "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
+ },
+ "stylelint-config-recommended": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/stylelint-config-recommended/download/stylelint-config-recommended-1.0.0.tgz",
+ "integrity": "sha1-dSwX/Gj6ZM1edYniT25G534UpzU=",
+ "dev": true
+ },
+ "stylelint-config-standard": {
+ "version": "17.0.0",
+ "resolved": "http://registry.npm.taobao.org/stylelint-config-standard/download/stylelint-config-standard-17.0.0.tgz",
+ "integrity": "sha1-QhA6CQBU7io93p7K7VXl1NnQWfw=",
+ "dev": true,
+ "requires": {
+ "stylelint-config-recommended": "1.0.0"
}
},
"stylus": {
@@ -8969,6 +11545,45 @@
"when": "3.6.4"
}
},
+ "sugarss": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/sugarss/download/sugarss-1.0.1.tgz",
+ "integrity": "sha1-voJtkAPg8kdzX5I2XcP9fxuunkQ=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.14"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.3.0.tgz",
+ "integrity": "sha1-tepI78nBeT3MybR2fJORTT8tUro=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "escape-string-regexp": "1.0.5",
+ "supports-color": "4.5.0"
+ }
+ },
+ "postcss": {
+ "version": "6.0.14",
+ "resolved": "http://registry.npm.taobao.org/postcss/download/postcss-6.0.14.tgz",
+ "integrity": "sha1-VTTHIRRznnXQr88BfbhTCZ9WKIU=",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "source-map": "0.6.1",
+ "supports-color": "4.5.0"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
"supports-color": {
"version": "4.5.0",
"resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-4.5.0.tgz",
@@ -8977,6 +11592,12 @@
"requires": {
"has-flag": "2.0.0"
}
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz",
+ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+ "dev": true
},
"svgo": {
"version": "0.7.2",
@@ -8993,10 +11614,71 @@
"whet.extend": "0.9.9"
}
},
+ "sweetalert2": {
+ "version": "7.0.10",
+ "resolved": "http://registry.npm.taobao.org/sweetalert2/download/sweetalert2-7.0.10.tgz",
+ "integrity": "sha1-FcdrgPto6YfgB6WF3Th6mwVY7Bo="
+ },
"symbol-observable": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.0.1.tgz",
"integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ="
+ },
+ "table": {
+ "version": "4.0.2",
+ "resolved": "http://registry.npm.taobao.org/table/download/table-4.0.2.tgz",
+ "integrity": "sha1-ozRHN1OR52atNNNIbm4q7chNLjY=",
+ "dev": true,
+ "requires": {
+ "ajv": "5.5.1",
+ "ajv-keywords": "2.1.1",
+ "chalk": "2.2.2",
+ "lodash": "4.17.4",
+ "slice-ansi": "1.0.0",
+ "string-width": "2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/slice-ansi/download/slice-ansi-1.0.0.tgz",
+ "integrity": "sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0"
+ }
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
+ }
},
"tapable": {
"version": "0.2.8",
@@ -9014,6 +11696,18 @@
"block-stream": "0.0.9",
"fstream": "1.0.11",
"inherits": "2.0.3"
+ }
+ },
+ "tar-stream": {
+ "version": "1.5.5",
+ "resolved": "http://registry.npm.taobao.org/tar-stream/download/tar-stream-1.5.5.tgz",
+ "integrity": "sha1-XK2Ed59FyDsfJQjZawnYjHIYr1U=",
+ "dev": true,
+ "requires": {
+ "bl": "1.2.1",
+ "end-of-stream": "1.4.0",
+ "readable-stream": "2.3.3",
+ "xtend": "4.0.1"
}
},
"through": {
@@ -9080,6 +11774,14 @@
"integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
"dev": true
},
+ "topojson-client": {
+ "version": "3.0.0",
+ "resolved": "http://registry.npm.taobao.org/topojson-client/download/topojson-client-3.0.0.tgz",
+ "integrity": "sha1-H5kpOnfvQqRI0DKoGqmCtz82DS8=",
+ "requires": {
+ "commander": "2.12.2"
+ }
+ },
"toposort": {
"version": "1.0.6",
"resolved": "http://registry.npm.taobao.org/toposort/download/toposort-1.0.6.tgz",
@@ -9101,6 +11803,12 @@
"integrity": "sha1-WEZ4Yje0I5AU8F2xVrZDIS1MbzY=",
"dev": true
},
+ "trim": {
+ "version": "0.0.1",
+ "resolved": "http://registry.npm.taobao.org/trim/download/trim-0.0.1.tgz",
+ "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=",
+ "dev": true
+ },
"trim-newlines": {
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz",
@@ -9111,6 +11819,18 @@
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz",
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+ "dev": true
+ },
+ "trim-trailing-lines": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npm.taobao.org/trim-trailing-lines/download/trim-trailing-lines-1.1.0.tgz",
+ "integrity": "sha1-eu+7eAjfnWafbaLkOMrIxGradoQ=",
+ "dev": true
+ },
+ "trough": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/trough/download/trough-1.0.1.tgz",
+ "integrity": "sha1-qf2LA5Swro//guBjOgo2zK1bX4Y=",
"dev": true
},
"true-case-path": {
@@ -9241,6 +11961,15 @@
"dev": true,
"optional": true
},
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "http://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "1.1.2"
+ }
+ },
"type-is": {
"version": "1.6.15",
"resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.15.tgz",
@@ -9258,9 +11987,9 @@
"dev": true
},
"typescript": {
- "version": "2.4.2",
- "resolved": "http://registry.npm.taobao.org/typescript/download/typescript-2.4.2.tgz",
- "integrity": "sha1-+DlfhdRZJ2BnyYiqQYN6j4KHCEQ=",
+ "version": "2.5.3",
+ "resolved": "http://registry.npm.taobao.org/typescript/download/typescript-2.5.3.tgz",
+ "integrity": "sha1-3z3Nw48764ANS8MiZGsEo/bKfw0=",
"dev": true
},
"uglify-js": {
@@ -9328,6 +12057,41 @@
"integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=",
"dev": true
},
+ "underscore.string": {
+ "version": "3.3.4",
+ "resolved": "http://registry.npm.taobao.org/underscore.string/download/underscore.string-3.3.4.tgz",
+ "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "1.0.3",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "unherit": {
+ "version": "1.1.0",
+ "resolved": "http://registry.npm.taobao.org/unherit/download/unherit-1.1.0.tgz",
+ "integrity": "sha1-a5qu379z3xdWrZ4xbdmBiFhAzX0=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3",
+ "xtend": "4.0.1"
+ }
+ },
+ "unified": {
+ "version": "6.1.6",
+ "resolved": "http://registry.npm.taobao.org/unified/download/unified-6.1.6.tgz",
+ "integrity": "sha1-Xqf4B6CJjx+Kze7+XyX6oBDMQrE=",
+ "dev": true,
+ "requires": {
+ "bail": "1.0.2",
+ "extend": "3.0.1",
+ "is-plain-obj": "1.1.0",
+ "trough": "1.0.1",
+ "vfile": "2.3.0",
+ "x-is-function": "1.0.4",
+ "x-is-string": "0.1.0"
+ }
+ },
"uniq": {
"version": "1.0.1",
"resolved": "http://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz",
@@ -9365,6 +12129,54 @@
"dev": true,
"requires": {
"imurmurhash": "0.1.4"
+ }
+ },
+ "unist-util-find-all-after": {
+ "version": "1.0.1",
+ "resolved": "http://registry.npm.taobao.org/unist-util-find-all-after/download/unist-util-find-all-after-1.0.1.tgz",
+ "integrity": "sha1-TlUSq/734GFnga7Pex7XUcAK+Qg=",
+ "dev": true,
+ "requires": {
+ "unist-util-is": "2.1.1"
+ }
+ },
+ "unist-util-is": {
+ "version": "2.1.1",
+ "resolved": "http://registry.npm.taobao.org/unist-util-is/download/unist-util-is-2.1.1.tgz",
+ "integrity": "sha1-DDEmKeP5YMZukx6BLT2A53AQlHs=",
+ "dev": true
+ },
+ "unist-util-modify-children": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/unist-util-modify-children/download/unist-util-modify-children-1.1.1.tgz",
+ "integrity": "sha1-ZtfmpEnm9nIguXarPLi166w55R0=",
+ "dev": true,
+ "requires": {
+ "array-iterate": "1.1.1"
+ }
+ },
+ "unist-util-remove-position": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/unist-util-remove-position/download/unist-util-remove-position-1.1.1.tgz",
+ "integrity": "sha1-WoXBVV/BugwQG4ZwfRXlD6TIcbs=",
+ "dev": true,
+ "requires": {
+ "unist-util-visit": "1.3.0"
+ }
+ },
+ "unist-util-stringify-position": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/unist-util-stringify-position/download/unist-util-stringify-position-1.1.1.tgz",
+ "integrity": "sha1-PMvcU2ee7W7PN3fdf14yKcG2qjw=",
+ "dev": true
+ },
+ "unist-util-visit": {
+ "version": "1.3.0",
+ "resolved": "http://registry.npm.taobao.org/unist-util-visit/download/unist-util-visit-1.3.0.tgz",
+ "integrity": "sha1-Qcp8gpgf0c5sdiqsOX/CTjVxFEQ=",
+ "dev": true,
+ "requires": {
+ "unist-util-is": "2.1.1"
}
},
"universalify": {
@@ -9431,6 +12243,12 @@
"dev": true
}
}
+ },
+ "urlgrey": {
+ "version": "0.4.4",
+ "resolved": "http://registry.npm.taobao.org/urlgrey/download/urlgrey-0.4.4.tgz",
+ "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=",
+ "dev": true
},
"useragent": {
"version": "2.2.1",
@@ -9510,6 +12328,12 @@
"spdx-expression-parse": "1.0.4"
}
},
+ "vargs": {
+ "version": "0.1.0",
+ "resolved": "http://registry.npm.taobao.org/vargs/download/vargs-0.1.0.tgz",
+ "integrity": "sha1-a2GE2mUgzDIEzhtAfKwm2SYJ6/8=",
+ "dev": true
+ },
"vary": {
"version": "1.1.2",
"resolved": "http://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
@@ -9541,6 +12365,52 @@
}
}
},
+ "vfile": {
+ "version": "2.3.0",
+ "resolved": "http://registry.npm.taobao.org/vfile/download/vfile-2.3.0.tgz",
+ "integrity": "sha1-5i2OcrIOg8MkvGxnJ47ickiL+Eo=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "1.1.6",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "1.1.1",
+ "vfile-message": "1.0.0"
+ },
+ "dependencies": {
+ "replace-ext": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/replace-ext/download/replace-ext-1.0.0.tgz",
+ "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=",
+ "dev": true
+ }
+ }
+ },
+ "vfile-location": {
+ "version": "2.0.2",
+ "resolved": "http://registry.npm.taobao.org/vfile-location/download/vfile-location-2.0.2.tgz",
+ "integrity": "sha1-02dcWch3SY5JK0dW/2Xkrxp1IlU=",
+ "dev": true
+ },
+ "vfile-message": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/vfile-message/download/vfile-message-1.0.0.tgz",
+ "integrity": "sha1-pq2wR06kAPol2Snx1nOr6moX41k=",
+ "dev": true,
+ "requires": {
+ "unist-util-stringify-position": "1.1.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "http://registry.npm.taobao.org/vinyl/download/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "dev": true,
+ "requires": {
+ "clone": "1.0.3",
+ "clone-stats": "0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ },
"vlq": {
"version": "0.2.3",
"resolved": "http://registry.npm.taobao.org/vlq/download/vlq-0.2.3.tgz",
@@ -9562,6 +12432,12 @@
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=",
"dev": true
},
+ "walkdir": {
+ "version": "0.0.11",
+ "resolved": "http://registry.npm.taobao.org/walkdir/download/walkdir-0.0.11.tgz",
+ "integrity": "sha1-oW0CXrkxvQO1LzCMrtD0D86+lTI=",
+ "dev": true
+ },
"watchpack": {
"version": "1.4.0",
"resolved": "http://registry.npm.taobao.org/watchpack/download/watchpack-1.4.0.tgz",
@@ -9581,6 +12457,133 @@
"requires": {
"minimalistic-assert": "1.0.0"
}
+ },
+ "wd": {
+ "version": "1.5.0",
+ "resolved": "http://registry.npm.taobao.org/wd/download/wd-1.5.0.tgz",
+ "integrity": "sha1-RclqFv+fjA+efKkPgGqLSL0ANNY=",
+ "dev": true,
+ "requires": {
+ "archiver": "1.3.0",
+ "async": "2.0.1",
+ "lodash": "4.16.2",
+ "mkdirp": "0.5.1",
+ "q": "1.4.1",
+ "request": "2.79.0",
+ "underscore.string": "3.3.4",
+ "vargs": "0.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "async": {
+ "version": "2.0.1",
+ "resolved": "http://registry.npm.taobao.org/async/download/async-2.0.1.tgz",
+ "integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=",
+ "dev": true,
+ "requires": {
+ "lodash": "4.16.2"
+ }
+ },
+ "caseless": {
+ "version": "0.11.0",
+ "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.11.0.tgz",
+ "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/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"
+ }
+ },
+ "har-validator": {
+ "version": "2.0.6",
+ "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-2.0.6.tgz",
+ "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "dev": true,
+ "requires": {
+ "chalk": "1.1.3",
+ "commander": "2.12.2",
+ "is-my-json-valid": "2.16.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
+ "lodash": {
+ "version": "4.16.2",
+ "resolved": "http://registry.npm.taobao.org/lodash/download/lodash-4.16.2.tgz",
+ "integrity": "sha1-PmJtuCcEimmSgaihJSJjJs/A5lI=",
+ "dev": true
+ },
+ "q": {
+ "version": "1.4.1",
+ "resolved": "http://registry.npm.taobao.org/q/download/q-1.4.1.tgz",
+ "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.3.2",
+ "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.3.2.tgz",
+ "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
+ "dev": true
+ },
+ "request": {
+ "version": "2.79.0",
+ "resolved": "http://registry.npm.taobao.org/request/download/request-2.79.0.tgz",
+ "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.11.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "2.0.6",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.17",
+ "oauth-sign": "0.8.2",
+ "qs": "6.3.2",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.3",
+ "tunnel-agent": "0.4.3",
+ "uuid": "3.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
+ "dev": true
+ }
+ }
+ },
+ "weather-icons": {
+ "version": "1.3.2",
+ "resolved": "http://registry.npm.taobao.org/weather-icons/download/weather-icons-1.3.2.tgz",
+ "integrity": "sha1-isAA+ShYQnJSuAzFega/qCeQCsA="
},
"webdriver-js-extender": {
"version": "1.0.0",
@@ -9894,6 +12897,69 @@
}
}
},
+ "webpack-bundle-analyzer": {
+ "version": "2.9.1",
+ "resolved": "http://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-2.9.1.tgz",
+ "integrity": "sha1-wsjgPo5XaO0oizmunieouNe51HY=",
+ "dev": true,
+ "requires": {
+ "acorn": "5.2.1",
+ "chalk": "1.1.3",
+ "commander": "2.12.2",
+ "ejs": "2.5.7",
+ "express": "4.16.2",
+ "filesize": "3.5.11",
+ "gzip-size": "3.0.0",
+ "lodash": "4.17.4",
+ "mkdirp": "0.5.1",
+ "opener": "1.4.3",
+ "ws": "3.3.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "http://registry.npm.taobao.org/chalk/download/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": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "ultron": {
+ "version": "1.1.1",
+ "resolved": "http://registry.npm.taobao.org/ultron/download/ultron-1.1.1.tgz",
+ "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=",
+ "dev": true
+ },
+ "ws": {
+ "version": "3.3.2",
+ "resolved": "http://registry.npm.taobao.org/ws/download/ws-3.3.2.tgz",
+ "integrity": "sha1-lsHQiz/v2h1cHjNwDTv6qb4tVgg=",
+ "dev": true,
+ "requires": {
+ "async-limiter": "1.0.0",
+ "safe-buffer": "5.1.1",
+ "ultron": "1.1.1"
+ }
+ }
+ }
+ },
"webpack-concat-plugin": {
"version": "1.4.2",
"resolved": "http://registry.npm.taobao.org/webpack-concat-plugin/download/webpack-concat-plugin-1.4.2.tgz",
@@ -10162,6 +13228,11 @@
"integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
"dev": true
},
+ "wolfy87-eventemitter": {
+ "version": "5.2.4",
+ "resolved": "http://registry.npm.taobao.org/wolfy87-eventemitter/download/wolfy87-eventemitter-5.2.4.tgz",
+ "integrity": "sha1-UCHSlS02EcvNGVFJcR2bWVzRHUg="
+ },
"wordwrap": {
"version": "0.0.2",
"resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz",
@@ -10194,6 +13265,15 @@
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
+ "write": {
+ "version": "0.2.1",
+ "resolved": "http://registry.npm.taobao.org/write/download/write-0.2.1.tgz",
+ "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "0.5.1"
+ }
+ },
"ws": {
"version": "1.1.2",
"resolved": "http://registry.npm.taobao.org/ws/download/ws-1.1.2.tgz",
@@ -10208,6 +13288,18 @@
"version": "1.0.0",
"resolved": "http://registry.npm.taobao.org/wtf-8/download/wtf-8-1.0.0.tgz",
"integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=",
+ "dev": true
+ },
+ "x-is-function": {
+ "version": "1.0.4",
+ "resolved": "http://registry.npm.taobao.org/x-is-function/download/x-is-function-1.0.4.tgz",
+ "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4=",
+ "dev": true
+ },
+ "x-is-string": {
+ "version": "0.1.0",
+ "resolved": "http://registry.npm.taobao.org/x-is-string/download/x-is-string-0.1.0.tgz",
+ "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=",
"dev": true
},
"xml-char-classes": {
@@ -10327,6 +13419,18 @@
"integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=",
"dev": true
},
+ "zip-stream": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npm.taobao.org/zip-stream/download/zip-stream-1.2.0.tgz",
+ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=",
+ "dev": true,
+ "requires": {
+ "archiver-utils": "1.3.0",
+ "compress-commons": "1.2.2",
+ "lodash": "4.17.4",
+ "readable-stream": "2.3.3"
+ }
+ },
"zone.js": {
"version": "0.8.18",
"resolved": "http://registry.npm.taobao.org/zone.js/download/zone.js-0.8.18.tgz",
diff --git a/package.json b/package.json
index 6c7333a..bc25aac 100644
--- a/package.json
+++ b/package.json
@@ -21,29 +21,70 @@
"@angular/platform-browser": "^5.0.0",
"@angular/platform-browser-dynamic": "^5.0.0",
"@angular/router": "^5.0.0",
- "core-js": "^2.4.1",
- "rxjs": "^5.5.2",
- "zone.js": "^0.8.14"
+ "@antv/data-set": "^0.7.0",
+ "@antv/g2": "^3.0.1",
+ "@antv/g2-plugin-slider": "^2.0.0",
+ "@delon/abc": "^0.3.0-rc.1",
+ "@delon/acl": "^0.3.0-rc.1",
+ "@delon/theme": "^0.3.0-rc.1",
+ "@delon/auth": "^0.3.0-rc.1",
+ "@ngx-translate/core": "^9.0.0",
+ "@ngx-translate/http-loader": "^2.0.0",
+ "angular-baidu-maps": "^1.0.1",
+ "angular-qq-maps": "^1.0.1",
+ "angular-tree-component": "^6.1.0",
+ "core-js": "^2.5.1",
+ "file-saver": "^1.3.3",
+ "font-awesome": "^4.7.0",
+ "moment": "^2.19.3",
+ "ng-tree-antd": "^2.0.0",
+ "ng-zorro-antd": "^0.6.5",
+ "ng-zorro-antd-extra": "^1.1.3",
+ "ng2-dnd": "^5.0.0",
+ "ng2-file-upload": "^1.2.1",
+ "ng2-img-cropper": "^0.9.0",
+ "ngx-color-picker": "^5.0.0",
+ "ngx-countdown": "^2.0.0",
+ "rxjs": "^5.5.5",
+ "screenfull": "^3.3.1",
+ "simple-line-icons": "^2.4.1",
+ "sweetalert2": "^7.0.0",
+ "weather-icons": "^1.3.2",
+ "zone.js": "^0.8.18"
},
"devDependencies": {
- "@angular/cli": "1.6.0",
+ "@angular/cli": "^1.5.2",
"@angular/compiler-cli": "^5.0.0",
"@angular/language-service": "^5.0.0",
- "@types/jasmine": "~2.5.53",
- "@types/jasminewd2": "~2.0.2",
+ "@angularclass/hmr": "^2.1.3",
+ "@angularclass/hmr-loader": "^3.0.4",
+ "@types/jasmine": "~2.6.0",
+ "@types/jasminewd2": "~2.0.3",
"@types/node": "~6.0.60",
- "codelyzer": "^4.0.1",
- "jasmine-core": "~2.6.2",
- "jasmine-spec-reporter": "~4.1.0",
- "karma": "~1.7.0",
- "karma-chrome-launcher": "~2.1.1",
+ "codecov": "^3.0.0",
+ "codelyzer": "~4.0.1",
+ "jasmine-core": "~2.8.0",
+ "jasmine-spec-reporter": "~4.2.1",
+ "karma": "~1.7.1",
+ "karma-chrome-launcher": "~2.2.0",
"karma-cli": "~1.0.1",
- "karma-coverage-istanbul-reporter": "^1.2.1",
+ "karma-coverage-istanbul-reporter": "^1.3.0",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
+ "karma-remap-istanbul": "^0.6.0",
+ "karma-sauce-launcher": "^1.2.0",
+ "lint-staged": "^5.0.0",
+ "npm-run-all": "^4.1.1",
"protractor": "~5.1.2",
+ "stylelint": "^8.2.0",
+ "stylelint-config-standard": "^17.0.0",
"ts-node": "~3.2.0",
"tslint": "~5.7.0",
- "typescript": "~2.4.2"
+ "typescript": "~2.5.0",
+ "webpack-bundle-analyzer": "^2.9.0"
+ },
+ "lint-staged": {
+ "src/**/*.ts": "lint:ts",
+ "src/**/*.less": "lint:style"
}
}
diff --git a/src/app/app.component.css b/src/app/app.component.css
deleted file mode 100644
index e69de29..0000000
--- a/src/app/app.component.css
+++ /dev/null
diff --git a/src/app/app.component.html b/src/app/app.component.html
deleted file mode 100644
index fa2706a..0000000
--- a/src/app/app.component.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--The content below is only a placeholder and can be replaced.-->
-<div style="text-align:center">
- <h1>
- Welcome to {{ title }}!
- </h1>
- <img width="300" alt="Angular Logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTAgMjUwIj4KICAgIDxwYXRoIGZpbGw9IiNERDAwMzEiIGQ9Ik0xMjUgMzBMMzEuOSA2My4ybDE0LjIgMTIzLjFMMTI1IDIzMGw3OC45LTQzLjcgMTQuMi0xMjMuMXoiIC8+CiAgICA8cGF0aCBmaWxsPSIjQzMwMDJGIiBkPSJNMTI1IDMwdjIyLjItLjFWMjMwbDc4LjktNDMuNyAxNC4yLTEyMy4xTDEyNSAzMHoiIC8+CiAgICA8cGF0aCAgZmlsbD0iI0ZGRkZGRiIgZD0iTTEyNSA1Mi4xTDY2LjggMTgyLjZoMjEuN2wxMS43LTI5LjJoNDkuNGwxMS43IDI5LjJIMTgzTDEyNSA1Mi4xem0xNyA4My4zaC0zNGwxNy00MC45IDE3IDQwLjl6IiAvPgogIDwvc3ZnPg==">
-</div>
-<h2>Here are some links to help you start: </h2>
-<ul>
- <li>
- <h2><a target="_blank" rel="noopener" href="https://angular.io/tutorial">Tour of Heroes</a></h2>
- </li>
- <li>
- <h2><a target="_blank" rel="noopener" href="https://github.com/angular/angular-cli/wiki">CLI Documentation</a></h2>
- </li>
- <li>
- <h2><a target="_blank" rel="noopener" href="https://blog.angular.io/">Angular blog</a></h2>
- </li>
-</ul>
-
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
index bcbdf36..213e0e0 100644
--- a/src/app/app.component.spec.ts
+++ b/src/app/app.component.spec.ts
@@ -1,27 +1,22 @@
-import { TestBed, async } from '@angular/core/testing';
+import { TestBed, TestModuleMetadata } from '@angular/core/testing';
+import { setUpTestBed } from '../testing/common.spec';
+
import { AppComponent } from './app.component';
-describe('AppComponent', () => {
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- declarations: [
- AppComponent
- ],
- }).compileComponents();
- }));
- it('should create the app', async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.debugElement.componentInstance;
- expect(app).toBeTruthy();
- }));
- it(`should have as title 'app'`, async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.debugElement.componentInstance;
- expect(app.title).toEqual('app');
- }));
- it('should render title in a h1 tag', async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- fixture.detectChanges();
- const compiled = fixture.debugElement.nativeElement;
- expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!');
- }));
+import { APP_BASE_HREF } from '@angular/common';
+import { ThemesService, TitleService } from '@delon/theme';
+
+describe('Component: App', () => {
+ setUpTestBed(<TestModuleMetadata>{
+ declarations: [ AppComponent ],
+ providers: [
+ ThemesService, TitleService,
+ { provide: APP_BASE_HREF, useValue: '/' }
+ ]
+ });
+
+ it('should create the app', () => {
+ const fixture = TestBed.createComponent(AppComponent);
+ const comp = fixture.debugElement.componentInstance;
+ expect(comp).toBeTruthy();
+ });
});
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 7b0f672..c1ba478 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,10 +1,32 @@
-import { Component } from '@angular/core';
+import { Component, HostBinding, OnInit } from '@angular/core';
+import { Router, NavigationEnd } from '@angular/router';
+import { ThemesService, SettingsService, TitleService } from '@delon/theme';
+import { filter, map } from 'rxjs/operators';
@Component({
selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
+ template: `<router-outlet></router-outlet>`
})
-export class AppComponent {
- title = 'app';
+export class AppComponent implements OnInit {
+
+ @HostBinding('class.layout-fixed') get isFixed() { return this.settings.layout.fixed; }
+ @HostBinding('class.layout-boxed') get isBoxed() { return this.settings.layout.boxed; }
+ @HostBinding('class.aside-collapsed') get isCollapsed() { return this.settings.layout.collapsed; }
+
+ constructor(
+ private theme: ThemesService,
+ private settings: SettingsService,
+ private router: Router,
+ private titleSrv: TitleService) {
+ }
+
+ ngOnInit() {
+ this.router.events.pipe(
+ filter(evt => evt instanceof NavigationEnd),
+ map(() => this.router.url)
+ )
+ .subscribe(url => {
+ this.titleSrv.setTitleByUrl(url);
+ });
+ }
}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 926975a..84691c5 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -1,18 +1,73 @@
import { BrowserModule } from '@angular/platform-browser';
-import { NgModule } from '@angular/core';
+import { NgModule, LOCALE_ID, APP_INITIALIZER, Injector } from '@angular/core';
+import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
+import { TranslateModule, TranslateLoader, TranslateService } from '@ngx-translate/core';
+import { TranslateHttpLoader } from '@ngx-translate/http-loader';
+import { HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http';
-
+import { CoreModule } from './core/core.module';
+import { SharedModule } from './shared/shared.module';
import { AppComponent } from './app.component';
+import { RoutesModule } from './routes/routes.module';
+import { LayoutModule } from './layout/layout.module';
+import { StartupService } from './core/services/startup.service';
+import { DefaultInterceptor } from '@core/net/default.interceptor';
+import { AlainAuthModule, SimpleInterceptor } from '@delon/auth';
+// i18n
+import { I18NService } from './core/i18n/i18n.service';
+import { ALAIN_I18N_TOKEN } from '@delon/theme';
+
+import { registerLocaleData } from '@angular/common';
+import localeZhHans from '@angular/common/locales/zh-Hans';
+registerLocaleData(localeZhHans);
+
+// AoT requires an exported function for factories
+export function HttpLoaderFactory(http: HttpClient) {
+ return new TranslateHttpLoader(http, `assets/i18n/`, '.json');
+}
+
+export function StartupServiceFactory(startupService: StartupService): Function {
+ return () => startupService.load();
+}
@NgModule({
- declarations: [
- AppComponent
- ],
- imports: [
- BrowserModule
- ],
- providers: [],
- bootstrap: [AppComponent]
+ declarations: [
+ AppComponent
+ ],
+ imports: [
+ BrowserModule,
+ BrowserAnimationsModule,
+ SharedModule.forRoot(),
+ CoreModule,
+ LayoutModule,
+ RoutesModule,
+ // auth
+ AlainAuthModule.forRoot({
+ login_url: `/pro/user/login`
+ }),
+ // i18n
+ TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useFactory: HttpLoaderFactory,
+ deps: [HttpClient]
+ }
+ })
+ ],
+ providers: [
+ { provide: LOCALE_ID, useValue: 'zh-Hans' },
+ { provide: HTTP_INTERCEPTORS, useClass: SimpleInterceptor, multi: true},
+ { provide: HTTP_INTERCEPTORS, useClass: DefaultInterceptor, multi: true},
+ { provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false },
+ StartupService,
+ {
+ provide: APP_INITIALIZER,
+ useFactory: StartupServiceFactory,
+ deps: [StartupService],
+ multi: true
+ }
+ ],
+ bootstrap: [AppComponent]
})
export class AppModule { }
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
new file mode 100644
index 0000000..80ceb6c
--- /dev/null
+++ b/src/app/core/core.module.ts
@@ -0,0 +1,19 @@
+import { NgModule, Optional, SkipSelf } from '@angular/core';
+import { throwIfAlreadyLoaded } from './module-import-guard';
+import { AlainThemeModule } from '@delon/theme';
+
+import { I18NService } from './i18n/i18n.service';
+
+@NgModule({
+ imports: [
+ AlainThemeModule.forRoot()
+ ],
+ providers: [
+ I18NService
+ ]
+})
+export class CoreModule {
+ constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
+ throwIfAlreadyLoaded(parentModule, 'CoreModule');
+ }
+}
diff --git a/src/app/core/i18n/i18n.service.spec.ts b/src/app/core/i18n/i18n.service.spec.ts
new file mode 100644
index 0000000..926da94
--- /dev/null
+++ b/src/app/core/i18n/i18n.service.spec.ts
@@ -0,0 +1,31 @@
+import { SharedModule } from '@shared/shared.module';
+import { TestBed, async, inject } from '@angular/core/testing';
+import { TranslateService, TranslateModule, TranslateLoader } from '@ngx-translate/core';
+import { HttpClient, HttpClientModule } from '@angular/common/http';
+
+import { I18NService } from './i18n.service';
+import { HttpLoaderFactory } from '../../app.module';
+import { SettingsService } from '@delon/theme';
+
+describe('Service: I18n', () => {
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ imports: [
+ HttpClientModule,
+ SharedModule.forRoot(),
+ TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useFactory: (HttpLoaderFactory),
+ deps: [HttpClient]
+ }
+ })
+ ],
+ providers: [I18NService, SettingsService]
+ });
+ });
+
+ it('should create an instance', inject([I18NService], (service: I18NService) => {
+ expect(service).toBeTruthy();
+ }));
+});
diff --git a/src/app/core/i18n/i18n.service.ts b/src/app/core/i18n/i18n.service.ts
new file mode 100644
index 0000000..e046d53
--- /dev/null
+++ b/src/app/core/i18n/i18n.service.ts
@@ -0,0 +1,47 @@
+import { Injectable, Inject, Injector } from '@angular/core';
+import { Router } from '@angular/router';
+import { zhCN, enUS, NzLocaleService } from 'ng-zorro-antd';
+import { TranslateService } from '@ngx-translate/core';
+import { SettingsService, AlainI18NService } from '@delon/theme';
+import { Observable } from 'rxjs/Observable';
+
+@Injectable()
+export class I18NService implements AlainI18NService {
+
+ private _default = 'en';
+
+ private _langs = [
+ { code: 'en', text: 'English' },
+ { code: 'zh-CN', text: '������' }
+ ];
+
+ constructor(settings: SettingsService,
+ private nzLocalService: NzLocaleService,
+ private translate: TranslateService,
+ private injector: Injector) {
+ this._default = settings.layout.lang || translate.getBrowserLang();
+ const lans = this._langs.map(item => item.code);
+ if (!lans.includes(this._default)) {
+ this._default = lans[0];
+ }
+ translate.addLangs(lans);
+ translate.setDefaultLang(this._default);
+ }
+
+ use(lang: string = null, firstLoad = true): Observable<any> {
+ lang = lang || this.translate.getDefaultLang();
+ this.nzLocalService.setLocale(lang === 'en' ? enUS : zhCN);
+ // need reload router because of ng-zorro-antd local system
+ if (!firstLoad) this.injector.get(Router).navigate([ '/' ]);
+ return this.translate.use(lang);
+ }
+
+ getLangs() {
+ return this._langs;
+ }
+
+ fanyi(key: string) {
+ return this.translate.instant(key);
+ }
+
+}
diff --git a/src/app/core/module-import-guard.ts b/src/app/core/module-import-guard.ts
new file mode 100644
index 0000000..62acb0c
--- /dev/null
+++ b/src/app/core/module-import-guard.ts
@@ -0,0 +1,6 @@
+// https://angular.io/guide/styleguide#style-04-12
+export function throwIfAlreadyLoaded(parentModule: any, moduleName: string) {
+ if (parentModule) {
+ throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`);
+ }
+}
diff --git a/src/app/core/net/default.interceptor.ts b/src/app/core/net/default.interceptor.ts
new file mode 100644
index 0000000..646fd59
--- /dev/null
+++ b/src/app/core/net/default.interceptor.ts
@@ -0,0 +1,70 @@
+import { Injectable, Injector } from '@angular/core';
+import { Router } from '@angular/router';
+import { HttpInterceptor, HttpRequest, HttpHandler,
+ HttpSentEvent, HttpHeaderResponse, HttpProgressEvent, HttpResponse, HttpUserEvent,
+ } from '@angular/common/http';
+import { Observable } from 'rxjs/Observable';
+import { ErrorObservable } from 'rxjs/observable/ErrorObservable';
+import { catchError } from 'rxjs/operators';
+import { map, mergeMap } from 'rxjs/operators';
+
+import { environment } from '../../../environments/environment';
+
+/**
+ * ������HTTP������������������������������ `app.module.ts`
+ */
+@Injectable()
+export class DefaultInterceptor implements HttpInterceptor {
+ constructor(private injector: Injector) {}
+
+ private goLogin() {
+ const router = this.injector.get(Router);
+ this.injector.get(Router).navigate([ '/login' ]);
+ }
+
+ intercept(req: HttpRequest<any>, next: HttpHandler):
+ Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
+
+ // TIPS������TOKEN��������������� `@delon/auth` ������
+ // Document: http://ng-alain.com/docs/auth
+
+ // ���������������������������
+ let url = req.url;
+ if (!url.startsWith('https://') && !url.startsWith('http://')) {
+ url = environment.SERVER_URL + url;
+ }
+
+ const newReq = req.clone({
+ url: url
+ });
+
+ return next.handle(newReq).pipe(
+ mergeMap((event: any) => {
+ // ������������������������������������������������������������������������������������������������HTTP������������������200������������������
+ if (event instanceof HttpResponse && event.status !== 200) {
+ // ���������������observer.error ��������������������� `catch`
+ // return ErrorObservable.create(event);
+ }
+ // ������������������������������������
+ return Observable.create(observer => observer.next(event));
+ }),
+ catchError((res: HttpResponse<any>) => {
+ // ���������������������������������
+ switch (res.status) {
+ case 401: // ������������������
+ this.goLogin();
+ break;
+ case 200:
+ // ������������������������
+ console.log('������������');
+ break;
+ case 404:
+ // 404
+ break;
+ }
+ // ������������������������������������
+ return ErrorObservable.create(event);
+ })
+ );
+ }
+}
diff --git a/src/app/core/services/startup.service.ts b/src/app/core/services/startup.service.ts
new file mode 100644
index 0000000..f5e4bb7
--- /dev/null
+++ b/src/app/core/services/startup.service.ts
@@ -0,0 +1,48 @@
+import { Router } from '@angular/router';
+import { Injectable, Injector } from '@angular/core';
+import { HttpClient, HttpErrorResponse } from '@angular/common/http';
+import { MenuService, SettingsService, TitleService } from '@delon/theme';
+import { ACLService } from '@delon/acl';
+import { I18NService } from '../i18n/i18n.service';
+
+/**
+ * ���������������������
+ * ���������������������������������������������������
+ */
+@Injectable()
+export class StartupService {
+ constructor(
+ private menuService: MenuService,
+ private i18n: I18NService,
+ private settingService: SettingsService,
+ private aclService: ACLService,
+ private titleService: TitleService,
+ private httpClient: HttpClient,
+ private injector: Injector) { }
+
+ load(): Promise<any> {
+ // only works with promises
+ // https://github.com/angular/angular/issues/15088
+ return new Promise((resolve, reject) => {
+ this.httpClient.get('assets/app-data.json')
+ .subscribe((res: any) => {
+ // ������������������������������������������������
+ this.settingService.setApp(res.app);
+ // ���������������������������������������������������
+ this.settingService.setUser(res.user);
+ // ACL������������������������
+ this.aclService.setFull(true);
+ // ���������������
+ this.menuService.add(res.menu);
+ // i18n���������������������
+ this.i18n.use(this.settingService.layout.lang);
+ // ���������������������������
+ this.titleService.suffix = res.app.name;
+
+ resolve(res);
+ }, (err: HttpErrorResponse) => {
+ resolve(null);
+ });
+ });
+ }
+}
diff --git a/src/app/layout/fullscreen/fullscreen.component.html b/src/app/layout/fullscreen/fullscreen.component.html
new file mode 100644
index 0000000..0680b43
--- /dev/null
+++ b/src/app/layout/fullscreen/fullscreen.component.html
@@ -0,0 +1 @@
+<router-outlet></router-outlet>
diff --git a/src/app/layout/fullscreen/fullscreen.component.ts b/src/app/layout/fullscreen/fullscreen.component.ts
new file mode 100644
index 0000000..bae241a
--- /dev/null
+++ b/src/app/layout/fullscreen/fullscreen.component.ts
@@ -0,0 +1,9 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'app-layout-fullscreen',
+ templateUrl: './fullscreen.component.html'
+})
+export class LayoutFullScreenComponent {
+
+}
diff --git a/src/app/layout/header/components/fullscreen.component.ts b/src/app/layout/header/components/fullscreen.component.ts
new file mode 100644
index 0000000..4a0d8c4
--- /dev/null
+++ b/src/app/layout/header/components/fullscreen.component.ts
@@ -0,0 +1,22 @@
+import { Component, HostListener } from '@angular/core';
+import * as screenfull from 'screenfull';
+
+@Component({
+ selector: 'header-fullscreen',
+ template: `
+ <i class="anticon anticon-{{status ? 'shrink' : 'arrows-alt'}}"></i>
+ {{status ? 'fullscreen-exit' : 'fullscreen' | translate }}
+ `
+})
+export class HeaderFullScreenComponent {
+
+ status = false;
+
+ @HostListener('click')
+ _click() {
+ if (screenfull.enabled) {
+ screenfull.toggle();
+ }
+ this.status = !screenfull.isFullscreen;
+ }
+}
diff --git a/src/app/layout/header/components/icon.component.ts b/src/app/layout/header/components/icon.component.ts
new file mode 100644
index 0000000..e56b58a
--- /dev/null
+++ b/src/app/layout/header/components/icon.component.ts
@@ -0,0 +1,59 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'header-icon',
+ template: `
+ <nz-dropdown nzTrigger="click" nzPlacement="bottomRight" (nzVisibleChange)="change()">
+ <div class="item" nz-dropdown>
+ <i class="anticon anticon-appstore-o"></i>
+ </div>
+ <div nz-menu class="wd-xl animated jello">
+ <nz-spin [nzSpinning]="loading" [nzTip]="'������������������...'">
+ <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="app-icons">
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-calendar bg-error text-white"></i>
+ <small>Calendar</small>
+ </div>
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-file bg-teal text-white"></i>
+ <small>Files</small>
+ </div>
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-cloud bg-success text-white"></i>
+ <small>Cloud</small>
+ </div>
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-star-o bg-pink text-white"></i>
+ <small>Star</small>
+ </div>
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-team bg-purple text-white"></i>
+ <small>Team</small>
+ </div>
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-scan bg-warning text-white"></i>
+ <small>QR</small>
+ </div>
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-pay-circle-o bg-cyan text-white"></i>
+ <small>Pay</small>
+ </div>
+ <div nz-col [nzSpan]="6">
+ <i class="anticon anticon-printer bg-grey text-white"></i>
+ <small>Print</small>
+ </div>
+ </div>
+ </nz-spin>
+ </div>
+ </nz-dropdown>
+ `
+})
+export class HeaderIconComponent {
+
+ loading = true;
+
+ change() {
+ setTimeout(() => this.loading = false, 500);
+ }
+
+}
diff --git a/src/app/layout/header/components/langs.component.ts b/src/app/layout/header/components/langs.component.ts
new file mode 100644
index 0000000..59cd4a4
--- /dev/null
+++ b/src/app/layout/header/components/langs.component.ts
@@ -0,0 +1,40 @@
+import { Component } from '@angular/core';
+import { SettingsService, MenuService } from '@delon/theme';
+import { I18NService } from '@core/i18n/i18n.service';
+
+@Component({
+ selector: 'header-langs',
+ template: `
+ <nz-dropdown>
+ <div nz-dropdown>
+ <i class="anticon anticon-edit"></i>
+ {{ 'language' | translate}}
+ <i class="anticon anticon-down"></i>
+ </div>
+ <ul nz-menu>
+ <li nz-menu-item *ngFor="let item of langs"
+ [nzSelected]="item.code === settings.layout.lang"
+ (click)="change(item.code)">{{item.text}}</li>
+ </ul>
+ </nz-dropdown>
+ `
+})
+export class HeaderLangsComponent {
+
+ langs: any[];
+
+ constructor(
+ private menuService: MenuService,
+ public settings: SettingsService,
+ public tsServ: I18NService
+ ) {
+ this.langs = this.tsServ.getLangs();
+ }
+
+ change(lang: string) {
+ this.tsServ.use(lang, false).subscribe(() => {
+ this.menuService.resume();
+ });
+ this.settings.setLayout('lang', lang);
+ }
+}
diff --git a/src/app/layout/header/components/notify.component.ts b/src/app/layout/header/components/notify.component.ts
new file mode 100644
index 0000000..54cec04
--- /dev/null
+++ b/src/app/layout/header/components/notify.component.ts
@@ -0,0 +1,163 @@
+import { NzMessageService } from 'ng-zorro-antd';
+import { Component, OnInit, Input } from '@angular/core';
+import { Observable } from 'rxjs/Observable';
+import { ArrayObservable } from 'rxjs/observable/ArrayObservable';
+import { map, groupBy, concatMap, mergeMap, flatMap, delay, tap, toArray } from 'rxjs/operators';
+import * as moment from 'moment';
+import { NoticeItem } from '@delon/abc';
+import { SettingsService } from '@delon/theme';
+
+/**
+ * ������������
+ */
+@Component({
+ selector: 'header-notify',
+ template: `
+ <notice-icon
+ [data]="data"
+ [count]="count"
+ [loading]="loading"
+ (select)="select($event)"
+ (clear)="clear($event)"
+ (popupVisibleChange)="loadData($event)"></notice-icon>
+ `
+})
+export class HeaderNotifyComponent implements OnInit {
+
+ data: NoticeItem[] = [
+ { title: '������', list: [], emptyText: '������������������������', emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/wAhyIChODzsoKIOBHcBk.svg' },
+ { title: '������', list: [], emptyText: '������������������������', emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/sAuJeJzSKbUmHfBQRzmZ.svg' },
+ { title: '������', list: [], emptyText: '������������������������', emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/HsIsxMZiWKrNUavQUXqx.svg' }
+ ];
+ count = 0;
+ loading = false;
+
+ constructor(private msg: NzMessageService, private settings: SettingsService) {}
+
+ ngOnInit() {
+ // mock data
+ this.count = this.settings.user.notifyCount || 12;
+ }
+
+ private parseGroup(data: Observable<any[]>) {
+ console.log('parseGroup');
+ data.pipe(
+ concatMap((i: any) => i),
+ map((i: any) => {
+ if (i.datetime) i.datetime = moment(i.datetime).fromNow();
+ // change to color
+ if (i.status) {
+ i.color = ({
+ todo: '',
+ processing: 'blue',
+ urgent: 'red',
+ doing: 'gold',
+ })[i.status];
+ }
+ return i;
+ }),
+ groupBy((x: any) => x.type),
+ mergeMap(g => g.pipe(toArray())),
+ tap((ls: any) => {
+ this.data.find(w => w.title === ls[0].type).list = ls;
+ })
+ ).subscribe(res => this.loading = false);
+ }
+
+ loadData(res) {
+ if (!res || this.loading) return;
+ this.loading = true;
+ // region: mock http request
+ this.parseGroup(ArrayObservable.of([{
+ id: '000000001',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
+ title: '������������ 14 ������������',
+ datetime: '2017-08-09',
+ type: '������',
+ }, {
+ id: '000000002',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
+ title: '������������ ��������� ������������������������',
+ datetime: '2017-08-08',
+ type: '������',
+ }, {
+ id: '000000003',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
+ title: '������������������������������������������',
+ datetime: '2017-08-07',
+ read: true,
+ type: '������',
+ }, {
+ id: '000000004',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title: '���������������������������������������',
+ datetime: '2017-08-07',
+ type: '������',
+ }, {
+ id: '000000005',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
+ title: '���������������������������������������������������',
+ datetime: '2017-08-07',
+ type: '������',
+ }, {
+ id: '000000006',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
+ title: '��������� ������������',
+ description: '������������������������������������',
+ datetime: '2017-08-07',
+ type: '������',
+ }, {
+ id: '000000007',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
+ title: '��������� ������������',
+ description: '������������������������������������������������������������������������������',
+ datetime: '2017-08-07',
+ type: '������',
+ }, {
+ id: '000000008',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
+ title: '������',
+ description: '������������������������������������������������������������������������������',
+ datetime: '2017-08-07',
+ type: '������',
+ }, {
+ id: '000000009',
+ title: '������������',
+ description: '��������������� 2017-01-12 20:00 ���������',
+ extra: '���������',
+ status: 'todo',
+ type: '������',
+ }, {
+ id: '000000010',
+ title: '���������������������������',
+ description: '��������������� 2017-01-06��������� 2017-01-07 ���������������������������',
+ extra: '������������',
+ status: 'urgent',
+ type: '������',
+ }, {
+ id: '000000011',
+ title: '������������������',
+ description: '��������������� 2017-01-09 ������������������������',
+ extra: '��������� 8 ���',
+ status: 'doing',
+ type: '������',
+ }, {
+ id: '000000012',
+ title: 'ABCD ������������',
+ description: '��������������� 2017-01-06��������� 2017-01-07 ���������������������������',
+ extra: '���������',
+ status: 'processing',
+ type: '������',
+ }
+ ]).pipe(delay(1000)));
+ // endregion
+ }
+
+ clear(type: string) {
+ this.msg.success(`��������� ${type}`);
+ }
+
+ select(res: any) {
+ this.msg.success(`��������� ${res.title} ��� ${res.item.title}`);
+ }
+}
diff --git a/src/app/layout/header/components/search.component.ts b/src/app/layout/header/components/search.component.ts
new file mode 100644
index 0000000..179bb6c
--- /dev/null
+++ b/src/app/layout/header/components/search.component.ts
@@ -0,0 +1,49 @@
+import { Component, HostBinding, ViewChild, Input, OnInit, ElementRef, AfterViewInit } from '@angular/core';
+
+@Component({
+ selector: 'header-search',
+ template: `
+ <nz-input nzPlaceHolder='{{ "top-search-ph" | translate}}' [(ngModel)]="q"
+ (nzFocus)="qFocus()" (nzBlur)="qBlur()">
+ <ng-template #prefix>
+ <i class="anticon anticon-search"></i>
+ </ng-template>
+ </nz-input>
+ `
+})
+export class HeaderSearchComponent implements AfterViewInit {
+
+ q: string;
+
+ qIpt: HTMLInputElement;
+
+ @HostBinding('class.header-search__focus')
+ focus = false;
+
+ @HostBinding('class.header-search__toggled')
+ searchToggled = false;
+
+ @Input()
+ set toggleChange(value: boolean) {
+ if (typeof value === 'undefined') return;
+ console.log('toggleChange', value);
+ this.searchToggled = true;
+ this.focus = true;
+ setTimeout(() => this.qIpt.focus(), 300);
+ }
+
+ constructor(private el: ElementRef) {}
+
+ ngAfterViewInit() {
+ this.qIpt = (this.el.nativeElement as HTMLElement).querySelector('.ant-input') as HTMLInputElement;
+ }
+
+ qFocus() {
+ this.focus = true;
+ }
+
+ qBlur() {
+ this.focus = false;
+ this.searchToggled = false;
+ }
+}
diff --git a/src/app/layout/header/components/storage.component.ts b/src/app/layout/header/components/storage.component.ts
new file mode 100644
index 0000000..26dfc8f
--- /dev/null
+++ b/src/app/layout/header/components/storage.component.ts
@@ -0,0 +1,28 @@
+import { Component, HostListener } from '@angular/core';
+import { NzModalService, NzMessageService } from 'ng-zorro-antd';
+
+@Component({
+ selector: 'header-storage',
+ template: `
+ <i class="anticon anticon-tool"></i>
+ {{ 'clear-local-storage' | translate}}`
+})
+export class HeaderStorageComponent {
+
+ constructor(
+ private confirmServ: NzModalService,
+ private messageServ: NzMessageService
+ ) {
+ }
+
+ @HostListener('click')
+ _click() {
+ this.confirmServ.confirm({
+ title: 'Make sure clear all local storage?',
+ onOk: () => {
+ localStorage.clear();
+ this.messageServ.success('Clear Finished!');
+ }
+ });
+ }
+}
diff --git a/src/app/layout/header/components/task.component.ts b/src/app/layout/header/components/task.component.ts
new file mode 100644
index 0000000..507c0ff
--- /dev/null
+++ b/src/app/layout/header/components/task.component.ts
@@ -0,0 +1,80 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'header-task',
+ template: `
+ <nz-dropdown nzTrigger="click" nzPlacement="bottomRight" (nzVisibleChange)="change()">
+ <div class="item" nz-dropdown>
+ <nz-badge [nzDot]="true">
+ <ng-template #content>
+ <i class="anticon anticon-bell"></i>
+ </ng-template>
+ </nz-badge>
+ </div>
+ <div nz-menu class="wd-lg">
+ <nz-card nzTitle="Notifications" [nzLoading]="loading" class="ant-card__body-nopadding">
+ <ng-template #extra><i class="anticon anticon-plus"></i></ng-template>
+ <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
+ <div nz-col [nzSpan]="4" class="text-center">
+ <nz-avatar [nzSrc]="'./assets/img/1.png'" [nzSize]="'large'"></nz-avatar>
+ </div>
+ <div nz-col [nzSpan]="20">
+ <strong>cipchk</strong>
+ <p>Please tell me what happened in a few words, don't go into details.</p>
+ </div>
+ </div>
+ <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
+ <div nz-col [nzSpan]="4" class="text-center">
+ <nz-avatar [nzSrc]="'./assets/img/2.png'" [nzSize]="'large'"></nz-avatar>
+ </div>
+ <div nz-col [nzSpan]="20">
+ <strong>������������</strong>
+ <p>��������������������������������������� </p>
+ </div>
+ </div>
+ <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
+ <div nz-col [nzSpan]="4" class="text-center">
+ <nz-avatar [nzSrc]="'./assets/img/3.png'" [nzSize]="'large'"></nz-avatar>
+ </div>
+ <div nz-col [nzSpan]="20">
+ <strong>���������</strong>
+ <p>������������������������������������������</p>
+ </div>
+ </div>
+ <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
+ <div nz-col [nzSpan]="4" class="text-center">
+ <nz-avatar [nzSrc]="'./assets/img/4.png'" [nzSize]="'large'"></nz-avatar>
+ </div>
+ <div nz-col [nzSpan]="20">
+ <strong>Kent</strong>
+ <p>Please tell me what happened in a few words, don't go into details.</p>
+ </div>
+ </div>
+ <div nz-row [nzType]="'flex'" [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm bg-grey-lighter-h point">
+ <div nz-col [nzSpan]="4" class="text-center">
+ <nz-avatar [nzSrc]="'./assets/img/5.png'" [nzSize]="'large'"></nz-avatar>
+ </div>
+ <div nz-col [nzSpan]="20">
+ <strong>Jefferson</strong>
+ <p>Please tell me what happened in a few words, don't go into details.</p>
+ </div>
+ </div>
+ <div nz-row class="pt-lg pb-lg">
+ <div nz-col [nzSpan]="24" class="text-center text-grey point">
+ See All
+ </div>
+ </div>
+ </nz-card>
+ </div>
+ </nz-dropdown>
+ `
+})
+export class HeaderTaskComponent {
+
+ loading = true;
+
+ change() {
+ setTimeout(() => this.loading = false, 500);
+ }
+
+}
diff --git a/src/app/layout/header/components/theme.component.ts b/src/app/layout/header/components/theme.component.ts
new file mode 100644
index 0000000..e11833f
--- /dev/null
+++ b/src/app/layout/header/components/theme.component.ts
@@ -0,0 +1,44 @@
+import { Component } from '@angular/core';
+import { SettingsService, ThemesService, ThemeType } from '@delon/theme';
+
+@Component({
+ selector: 'header-theme',
+ template: `
+ <strong>{{ 'theme-switch' | translate}}</strong>
+ <div class="theme-icons">
+ <label *ngFor="let item of themes" (click)="changeTheme(item.l)" [style.background]="item.bg">
+ <i class="anticon anticon-check" *ngIf="item.l == settings.layout.theme"></i>
+ <div class="areas">
+ <span class="nav" [style.background]="item.nav"></span>
+ <span class="con" [style.background]="item.con"></span>
+ </div>
+ </label>
+ </div>
+ `
+})
+export class HeaderThemeComponent {
+
+ themes: { l: ThemeType, bg: string, nav: string, con: string }[] = [
+ { l: 'A', bg: '#108ee9', nav: '#fff', con: '#f5f7fa' },
+ { l: 'B', bg: '#00a2ae', nav: '#fff', con: '#f5f7fa' },
+ { l: 'C', bg: '#00a854', nav: '#fff', con: '#f5f7fa' },
+ { l: 'D', bg: '#f04134', nav: '#fff', con: '#f5f7fa' },
+ { l: 'E', bg: '#373d41', nav: '#fff', con: '#f5f7fa' },
+ { l: 'F', bg: '#108ee9', nav: '#404040', con: '#f5f7fa' },
+ { l: 'G', bg: '#00a2ae', nav: '#404040', con: '#f5f7fa' },
+ { l: 'H', bg: '#00a854', nav: '#404040', con: '#f5f7fa' },
+ { l: 'I', bg: '#f04134', nav: '#404040', con: '#f5f7fa' },
+ { l: 'J', bg: '#373d41', nav: '#404040', con: '#f5f7fa' }
+ ];
+
+ constructor(
+ public settings: SettingsService,
+ private themeServ: ThemesService
+ ) {
+ }
+
+ changeTheme(theme: ThemeType) {
+ this.themeServ.setTheme(theme);
+ this.settings.setLayout('theme', theme);
+ }
+}
diff --git a/src/app/layout/header/components/user.component.ts b/src/app/layout/header/components/user.component.ts
new file mode 100644
index 0000000..f8a2271
--- /dev/null
+++ b/src/app/layout/header/components/user.component.ts
@@ -0,0 +1,46 @@
+import { Component, OnInit, Inject } from '@angular/core';
+import { Router } from '@angular/router';
+import { SettingsService } from '@delon/theme';
+import { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';
+
+@Component({
+ selector: 'header-user',
+ template: `
+ <nz-dropdown nzPlacement="bottomRight">
+ <div class="item d-flex align-items-center px-sm" nz-dropdown>
+ <nz-avatar [nzSrc]="settings.user.avatar" nzSize="small" class="mr-sm"></nz-avatar>
+ {{settings.user.name}}
+ </div>
+ <div nz-menu class="width-sm">
+ <div nz-menu-item [nzDisable]="true"><i class="anticon anticon-user mr-sm"></i>������������</div>
+ <div nz-menu-item [nzDisable]="true"><i class="anticon anticon-setting mr-sm"></i>������</div>
+ <li nz-menu-divider></li>
+ <div nz-menu-item (click)="logout()"><i class="anticon anticon-setting mr-sm"></i>������������</div>
+ </div>
+ </nz-dropdown>
+ `
+})
+export class HeaderUserComponent implements OnInit {
+ constructor(
+ public settings: SettingsService,
+ private router: Router,
+ @Inject(DA_SERVICE_TOKEN) private tokenService: ITokenService) {}
+
+ ngOnInit(): void {
+ this.tokenService.change().subscribe((res: any) => {
+ this.settings.setUser(res);
+ });
+ const token = this.tokenService.get() || {
+ token: 'nothing',
+ name: 'Admin',
+ avatar: './assets/img/zorro.svg',
+ email: 'cipchk@qq.com'
+ };
+ this.tokenService.set(token);
+ }
+
+ logout() {
+ this.tokenService.clear();
+ this.router.navigateByUrl('/pro/user/login');
+ }
+}
diff --git a/src/app/layout/header/header.component.html b/src/app/layout/header/header.component.html
new file mode 100644
index 0000000..a738920
--- /dev/null
+++ b/src/app/layout/header/header.component.html
@@ -0,0 +1,74 @@
+<div class="logo">
+ <a [routerLink]="['/']">
+ <img class="expanded" src="./assets/img/logo-full.svg" alt="{{settings.app.name}}" style="max-height:40px;" />
+ <img class="collapsed" src="./assets/img/logo.svg" alt="{{settings.app.name}}" style="max-height:30px;" />
+ </a>
+</div>
+<div class="top-nav-wrap">
+ <ul class="top-nav">
+ <!-- Menu -->
+ <li>
+ <div class="item" (click)="toggleCollapsedSideabar()">
+ <i class="anticon anticon-menu-{{settings.layout.collapsed ? 'unfold' : 'fold'}}"></i>
+ </div>
+ </li>
+ <!-- Github Page -->
+ <li>
+ <a class="item" href="//github.com/cipchk/ng-alain" target="_blank">
+ <i class="anticon anticon-github"></i>
+ </a>
+ </li>
+ <!-- Lock Page -->
+ <li class="hidden-xs">
+ <div class="item" [routerLink]="['/lock']">
+ <i class="anticon anticon-lock"></i>
+ </div>
+ </li>
+ <!-- Search Button -->
+ <li class="header-search__btn" (click)="searchToggleChange()">
+ <div class="item">
+ <i class="anticon anticon-search"></i>
+ </div>
+ </li>
+ </ul>
+ <header-search class="header-search" [toggleChange]="searchToggleStatus"></header-search>
+ <ul class="top-nav">
+ <!-- Notify -->
+ <li>
+ <header-notify></header-notify>
+ </li>
+ <!-- Task -->
+ <li class="hidden-xs">
+ <header-task></header-task>
+ </li>
+ <!-- App Icons -->
+ <li class="hidden-xs">
+ <header-icon></header-icon>
+ </li>
+ <!-- Settings -->
+ <li class="hidden-xs">
+ <nz-dropdown nzTrigger="click" nzPlacement="bottomRight">
+ <div class="item" nz-dropdown>
+ <i class="anticon anticon-setting"></i>
+ </div>
+ <div nz-menu style="width:200px">
+ <div nz-menu-item class="theme-switch">
+ <header-theme></header-theme>
+ </div>
+ <div nz-menu-item>
+ <header-fullscreen></header-fullscreen>
+ </div>
+ <div nz-menu-item>
+ <header-storage></header-storage>
+ </div>
+ <div nz-menu-item>
+ <header-langs></header-langs>
+ </div>
+ </div>
+ </nz-dropdown>
+ </li>
+ <li class="hidden-xs">
+ <header-user></header-user>
+ </li>
+ </ul>
+</div>
diff --git a/src/app/layout/header/header.component.spec.ts b/src/app/layout/header/header.component.spec.ts
new file mode 100644
index 0000000..5999222
--- /dev/null
+++ b/src/app/layout/header/header.component.spec.ts
@@ -0,0 +1,17 @@
+import { TestBed, TestModuleMetadata } from '@angular/core/testing';
+
+import { setUpTestBed } from 'testing/common.spec';
+
+import { HeaderComponent } from './header.component';
+
+describe('Layout: Header', () => {
+ setUpTestBed(<TestModuleMetadata>{
+ declarations: [ HeaderComponent ]
+ });
+
+ it('should create an instance', () => {
+ const fixture = TestBed.createComponent(HeaderComponent);
+ const comp = fixture.debugElement.componentInstance;
+ expect(comp).toBeTruthy();
+ });
+});
diff --git a/src/app/layout/header/header.component.ts b/src/app/layout/header/header.component.ts
new file mode 100644
index 0000000..0a759e8
--- /dev/null
+++ b/src/app/layout/header/header.component.ts
@@ -0,0 +1,21 @@
+import { Component, ViewChild } from '@angular/core';
+import { SettingsService } from '@delon/theme';
+
+@Component({
+ selector: 'app-header',
+ templateUrl: './header.component.html'
+})
+export class HeaderComponent {
+ searchToggleStatus: boolean;
+
+ constructor(public settings: SettingsService) { }
+
+ toggleCollapsedSideabar() {
+ this.settings.setLayout('collapsed', !this.settings.layout.collapsed);
+ }
+
+ searchToggleChange() {
+ this.searchToggleStatus = !this.searchToggleStatus;
+ }
+
+}
diff --git a/src/app/layout/header/index.md b/src/app/layout/header/index.md
new file mode 100644
index 0000000..aead1c5
--- /dev/null
+++ b/src/app/layout/header/index.md
@@ -0,0 +1,20 @@
+---
+component: app-header
+title: ������������
+---
+
+������������������������������ `components` ���������������������������������������
+
+## ������������
+
+��������� | ������
+----|------
+`header-fullscreen` | ������������
+`header-icon` | ������������
+`header-langs` | ������������
+`header-notify` | ������������
+`header-search` | ���������
+`header-storage` | ������ LocalStorage ������
+`header-task` | ������������
+`header-theme` | ������������
+`header-user` | ������������
diff --git a/src/app/layout/layout.component.html b/src/app/layout/layout.component.html
new file mode 100644
index 0000000..796d712
--- /dev/null
+++ b/src/app/layout/layout.component.html
@@ -0,0 +1,6 @@
+<div class="wrapper">
+ <div class="router-progress-bar" *ngIf="isFetching"></div>
+ <app-header class="header"></app-header>
+ <app-sidebar class="aside"></app-sidebar>
+ <section class="content"><router-outlet></router-outlet></section>
+</div>
diff --git a/src/app/layout/layout.component.spec.ts b/src/app/layout/layout.component.spec.ts
new file mode 100644
index 0000000..03facd8
--- /dev/null
+++ b/src/app/layout/layout.component.spec.ts
@@ -0,0 +1,17 @@
+import { TestBed, TestModuleMetadata } from '@angular/core/testing';
+
+import { setUpTestBed } from 'testing/common.spec';
+
+import { LayoutComponent } from './layout.component';
+
+describe('Layout', () => {
+ setUpTestBed(<TestModuleMetadata>{
+ declarations: [LayoutComponent]
+ });
+
+ it('should create an instance', () => {
+ const fixture = TestBed.createComponent(LayoutComponent);
+ const comp = fixture.debugElement.componentInstance;
+ expect(comp).toBeTruthy();
+ });
+});
diff --git a/src/app/layout/layout.component.ts b/src/app/layout/layout.component.ts
new file mode 100644
index 0000000..79c0624
--- /dev/null
+++ b/src/app/layout/layout.component.ts
@@ -0,0 +1,38 @@
+import { Component } from '@angular/core';
+import { Router, NavigationEnd, RouteConfigLoadStart, NavigationError } from '@angular/router';
+import { NzMessageService } from 'ng-zorro-antd';
+import { ScrollService, MenuService, SettingsService } from '@delon/theme';
+
+@Component({
+ selector: 'app-layout',
+ templateUrl: './layout.component.html'
+})
+export class LayoutComponent {
+ isFetching = false;
+
+ constructor(
+ router: Router,
+ scroll: ScrollService,
+ private _message: NzMessageService,
+ public menuSrv: MenuService,
+ public settings: SettingsService) {
+ // scroll to top in change page
+ router.events.subscribe(evt => {
+ if (!this.isFetching && evt instanceof RouteConfigLoadStart) {
+ this.isFetching = true;
+ }
+ if (evt instanceof NavigationError) {
+ this.isFetching = false;
+ _message.error(`������������${evt.url}������`, { nzDuration: 1000 * 3 });
+ return;
+ }
+ if (!(evt instanceof NavigationEnd)) {
+ return;
+ }
+ setTimeout(() => {
+ scroll.scrollToTop();
+ this.isFetching = false;
+ }, 100);
+ });
+ }
+}
diff --git a/src/app/layout/layout.module.ts b/src/app/layout/layout.module.ts
new file mode 100644
index 0000000..5c6b9c6
--- /dev/null
+++ b/src/app/layout/layout.module.ts
@@ -0,0 +1,56 @@
+import { NgModule } from '@angular/core';
+
+import { SharedModule } from '@shared/shared.module';
+import { LayoutComponent } from './layout.component';
+import { LayoutFullScreenComponent } from './fullscreen/fullscreen.component';
+import { HeaderComponent } from './header/header.component';
+import { SidebarComponent } from './sidebar/sidebar.component';
+import { HeaderSearchComponent } from './header/components/search.component';
+import { HeaderThemeComponent } from './header/components/theme.component';
+import { HeaderNotifyComponent } from './header/components/notify.component';
+import { HeaderTaskComponent } from './header/components/task.component';
+import { HeaderIconComponent } from './header/components/icon.component';
+import { HeaderFullScreenComponent } from './header/components/fullscreen.component';
+import { HeaderLangsComponent } from './header/components/langs.component';
+import { HeaderStorageComponent } from './header/components/storage.component';
+import { HeaderUserComponent } from './header/components/user.component';
+
+const COMPONENTS = [
+ LayoutComponent,
+ LayoutFullScreenComponent,
+ HeaderComponent,
+ SidebarComponent
+];
+
+const HEADERCOMPONENTS = [
+ HeaderSearchComponent,
+ HeaderNotifyComponent,
+ HeaderTaskComponent,
+ HeaderIconComponent,
+ HeaderFullScreenComponent,
+ HeaderThemeComponent,
+ HeaderLangsComponent,
+ HeaderStorageComponent,
+ HeaderUserComponent
+];
+
+// pro
+import { ProUserLayoutComponent } from './pro/user/user.component';
+const PRO = [
+ ProUserLayoutComponent
+];
+
+@NgModule({
+ imports: [SharedModule],
+ providers: [],
+ declarations: [
+ ...COMPONENTS,
+ ...HEADERCOMPONENTS,
+ ...PRO
+ ],
+ exports: [
+ ...COMPONENTS,
+ ...PRO
+ ]
+})
+export class LayoutModule { }
diff --git a/src/app/layout/pro/user/user.component.html b/src/app/layout/pro/user/user.component.html
new file mode 100644
index 0000000..187cf13
--- /dev/null
+++ b/src/app/layout/pro/user/user.component.html
@@ -0,0 +1,17 @@
+<div class="container">
+ <div class="top">
+ <div class="head">
+ <a [routerLink]="['/']">
+ <img class="logo" src="./assets/img/logo-color.svg">
+ <span class="title">ng-alain</span>
+ </a>
+ </div>
+ <p class="desc">���������������������������������������������������������������������������</p>
+ </div>
+ <router-outlet></router-outlet>
+ <global-footer [links]="links">
+ <ng-template #copyright>
+ Copyright <nz-icon nzType="copyright"></nz-icon> 2017 <a href="//github.com/cipchk" target="_blank">������</a>������
+ </ng-template>
+ </global-footer>
+</div>
diff --git a/src/app/layout/pro/user/user.component.less b/src/app/layout/pro/user/user.component.less
new file mode 100644
index 0000000..b3dc2f6
--- /dev/null
+++ b/src/app/layout/pro/user/user.component.less
@@ -0,0 +1,58 @@
+@import '~@delon/theme/styles/antd/themes/default.less';
+
+:host {
+ ::ng-deep {
+
+ .container {
+ background: #f0f2f5;
+ background-image: url("https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg");
+ width: 100%;
+ min-height: 100%;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 100%;
+ padding: 110px 0 144px;
+ position: relative;
+ }
+
+ .top {
+ text-align: center;
+ }
+
+ .head {
+ height: 44px;
+ line-height: 44px;
+ a {
+ text-decoration: none;
+ }
+ }
+
+ .logo {
+ height: 44px;
+ vertical-align: top;
+ margin-right: 16px;
+ }
+
+ .title {
+ font-size: 33px;
+ color: @heading-color;
+ font-family: "Myriad Pro", "Helvetica Neue", Arial, Helvetica, sans-serif;
+ font-weight: 600;
+ position: relative;
+ top: 2px;
+ }
+
+ .desc {
+ font-size: @font-size-base;
+ color: @text-color-secondary;
+ margin-top: 12px;
+ margin-bottom: 40px;
+ }
+
+ .footer {
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ }
+ }
+}
diff --git a/src/app/layout/pro/user/user.component.ts b/src/app/layout/pro/user/user.component.ts
new file mode 100644
index 0000000..46819db
--- /dev/null
+++ b/src/app/layout/pro/user/user.component.ts
@@ -0,0 +1,23 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'pro-user-layout',
+ templateUrl: './user.component.html',
+ styleUrls: ['./user.component.less']
+})
+export class ProUserLayoutComponent {
+ links = [
+ {
+ title: '������',
+ href: ''
+ },
+ {
+ title: '������',
+ href: ''
+ },
+ {
+ title: '������',
+ href: ''
+ }
+ ];
+}
diff --git a/src/app/layout/sidebar/sidebar.component.html b/src/app/layout/sidebar/sidebar.component.html
new file mode 100644
index 0000000..f66e350
--- /dev/null
+++ b/src/app/layout/sidebar/sidebar.component.html
@@ -0,0 +1,17 @@
+<div class="aside-inner">
+ <nz-dropdown nzTrigger="click" class="user-block clearfix">
+ <div nz-dropdown class="user-block-dropdown">
+ <nz-avatar class="avatar" [nzIcon]="'user'" [nzSize]="'large'"></nz-avatar>
+ <div class="info">
+ <strong>{{settings.user.name}}</strong>
+ <p class="text-truncate">{{settings.user.email}}</p>
+ </div>
+ </div>
+ <ul nz-menu>
+ <li nz-menu-item (click)="msgSrv.success('profile')">{{ 'profile' | translate }}</li>
+ <li nz-menu-item (click)="msgSrv.success('settings')">{{ 'settings' | translate }}</li>
+ <li nz-menu-item (click)="msgSrv.success('logout')">{{ 'logout' | translate }}</li>
+ </ul>
+ </nz-dropdown>
+ <sidebar-nav class="d-block py-lg"></sidebar-nav>
+</div>
diff --git a/src/app/layout/sidebar/sidebar.component.spec.ts b/src/app/layout/sidebar/sidebar.component.spec.ts
new file mode 100644
index 0000000..0f07032
--- /dev/null
+++ b/src/app/layout/sidebar/sidebar.component.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed, TestModuleMetadata } from '@angular/core/testing';
+import { setUpTestBed } from '../../../testing/common.spec';
+
+import { SidebarComponent } from './sidebar.component';
+
+describe('Layout: Sidebar', () => {
+ setUpTestBed(<TestModuleMetadata>{
+ declarations: [ SidebarComponent ]
+ });
+
+ it('should create an instance', () => {
+ const fixture = TestBed.createComponent(SidebarComponent);
+ const comp = fixture.debugElement.componentInstance;
+ expect(comp).toBeTruthy();
+ });
+});
diff --git a/src/app/layout/sidebar/sidebar.component.ts b/src/app/layout/sidebar/sidebar.component.ts
new file mode 100644
index 0000000..92182e9
--- /dev/null
+++ b/src/app/layout/sidebar/sidebar.component.ts
@@ -0,0 +1,12 @@
+import { Component } from '@angular/core';
+import { NzMessageService } from 'ng-zorro-antd';
+import { SettingsService } from '@delon/theme';
+
+@Component({
+ selector : 'app-sidebar',
+ templateUrl: './sidebar.component.html'
+})
+export class SidebarComponent {
+ constructor(public settings: SettingsService, public msgSrv: NzMessageService) {
+ }
+}
diff --git a/src/app/routes/routes.module.ts b/src/app/routes/routes.module.ts
new file mode 100644
index 0000000..a621ee2
--- /dev/null
+++ b/src/app/routes/routes.module.ts
@@ -0,0 +1,10 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+@NgModule({
+ imports: [
+ CommonModule
+ ],
+ declarations: []
+})
+export class RoutesModule { }
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
new file mode 100644
index 0000000..a3c06a1
--- /dev/null
+++ b/src/app/shared/shared.module.ts
@@ -0,0 +1,211 @@
+import { NgModule, ModuleWithProviders } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ReactiveFormsModule, FormsModule } from '@angular/forms';
+import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
+import { RouterModule } from '@angular/router';
+
+import { NgZorroAntdExtraModule } from 'ng-zorro-antd-extra';
+import { AlainThemeModule } from '@delon/theme';
+import { AlainABCModule } from '@delon/abc';
+import { AlainACLModule } from '@delon/acl';
+
+// third libs
+import { CountdownModule } from 'ngx-countdown';
+
+// i18n
+import { TranslateModule } from '@ngx-translate/core';
+import { I18NService } from '@core/i18n/i18n.service';
+
+// region: zorro modules
+
+import {
+ // LoggerModule,
+ // NzLocaleModule,
+ NzButtonModule,
+ NzAlertModule,
+ NzBadgeModule,
+ // NzCalendarModule,
+ NzCascaderModule,
+ NzCheckboxModule,
+ NzDatePickerModule,
+ NzFormModule,
+ NzInputModule,
+ NzInputNumberModule,
+ NzGridModule,
+ NzMessageModule,
+ NzModalModule,
+ NzNotificationModule,
+ NzPaginationModule,
+ NzPopconfirmModule,
+ NzPopoverModule,
+ NzRadioModule,
+ NzRateModule,
+ NzSelectModule,
+ NzSpinModule,
+ NzSliderModule,
+ NzSwitchModule,
+ NzProgressModule,
+ NzTableModule,
+ NzTabsModule,
+ NzTagModule,
+ NzTimePickerModule,
+ NzUtilModule,
+ NzStepsModule,
+ NzDropDownModule,
+ NzMenuModule,
+ NzBreadCrumbModule,
+ NzLayoutModule,
+ NzRootModule,
+ NzCarouselModule,
+ // NzCardModule,
+ NzCollapseModule,
+ NzTimelineModule,
+ NzToolTipModule,
+ // NzBackTopModule,
+ // NzAffixModule,
+ // NzAnchorModule,
+ NzAvatarModule,
+ // SERVICES
+ NzNotificationService,
+ NzMessageService
+} from 'ng-zorro-antd';
+const ZORROMODULES = [
+ // LoggerModule,
+ // NzLocaleModule,
+ NzButtonModule,
+ NzAlertModule,
+ NzBadgeModule,
+ // NzCalendarModule,
+ NzCascaderModule,
+ NzCheckboxModule,
+ NzDatePickerModule,
+ NzFormModule,
+ NzInputModule,
+ NzInputNumberModule,
+ NzGridModule,
+ NzMessageModule,
+ NzModalModule,
+ NzNotificationModule,
+ NzPaginationModule,
+ NzPopconfirmModule,
+ NzPopoverModule,
+ NzRadioModule,
+ NzRateModule,
+ NzSelectModule,
+ NzSpinModule,
+ NzSliderModule,
+ NzSwitchModule,
+ NzProgressModule,
+ NzTableModule,
+ NzTabsModule,
+ NzTagModule,
+ NzTimePickerModule,
+ NzUtilModule,
+ NzStepsModule,
+ NzDropDownModule,
+ NzMenuModule,
+ NzBreadCrumbModule,
+ NzLayoutModule,
+ NzRootModule,
+ NzCarouselModule,
+ // NzCardModule,
+ NzCollapseModule,
+ NzTimelineModule,
+ NzToolTipModule,
+ // NzBackTopModule,
+ // NzAffixModule,
+ // NzAnchorModule,
+ NzAvatarModule
+];
+// endregion
+
+// region: @delon/abc modules
+import {
+ AdAvatarListModule,
+ AdChartsModule,
+ AdCountDownModule,
+ AdDescListModule,
+ AdEllipsisModule,
+ AdErrorCollectModule,
+ AdExceptionModule,
+ AdFooterToolbarModule,
+ AdGlobalFooterModule,
+ AdNoticeIconModule,
+ AdNumberInfoModule,
+ AdProHeaderModule,
+ AdResultModule,
+ AdSidebarNavModule,
+ AdStandardFormRowModule,
+ AdTagSelectModule,
+ AdTrendModule,
+ AdDownFileModule,
+ AdImageModule,
+ AdUtilsModule
+} from '@delon/abc';
+const ABCMODULES = [
+ AdAvatarListModule,
+ AdChartsModule,
+ AdCountDownModule,
+ AdDescListModule,
+ AdEllipsisModule,
+ AdErrorCollectModule,
+ AdExceptionModule,
+ AdFooterToolbarModule,
+ AdGlobalFooterModule,
+ AdNoticeIconModule,
+ AdNumberInfoModule,
+ AdProHeaderModule,
+ AdResultModule,
+ AdSidebarNavModule,
+ AdStandardFormRowModule,
+ AdTagSelectModule,
+ AdTrendModule,
+ AdDownFileModule,
+ AdImageModule,
+ AdUtilsModule
+];
+// endregion
+
+@NgModule({
+ imports: [
+ CommonModule,
+ FormsModule,
+ RouterModule,
+ ReactiveFormsModule,
+ HttpClientModule,
+ ...ZORROMODULES,
+ NgZorroAntdExtraModule.forRoot(),
+ AlainThemeModule.forChild(),
+ ...ABCMODULES,
+ AlainACLModule.forRoot(),
+ // third libs
+ CountdownModule
+ ],
+ exports: [
+ CommonModule,
+ FormsModule,
+ ReactiveFormsModule,
+ RouterModule,
+ ...ZORROMODULES,
+ NgZorroAntdExtraModule,
+ AlainThemeModule,
+ ...ABCMODULES,
+ AlainACLModule,
+ // i18n
+ TranslateModule,
+ // third libs
+ CountdownModule
+ ]
+})
+export class SharedModule {
+ static forRoot(): ModuleWithProviders {
+ return {
+ ngModule: SharedModule,
+ providers: [
+ // ng-zorro-antd Services
+ NzNotificationService,
+ NzMessageService
+ ]
+ };
+ }
+}
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
new file mode 100644
index 0000000..262c53d
--- /dev/null
+++ b/src/assets/i18n/en.json
@@ -0,0 +1,94 @@
+{
+ "home": "Home",
+ "settings": "Settings",
+ "profile": "Profile",
+ "login": "Login",
+ "logout": "Logout",
+ "more": "More",
+ "full": "Full",
+ "top-search-ph": "Search for people, file, photos...",
+ "theme": "Theme",
+ "theme-switch": "Theme Switch",
+ "light": "Light",
+ "dark": "Dark",
+ "fullscreen": "Fullscreen",
+ "fullscreen-exit": "Exit Fullscreen",
+ "clear-local-storage": "Clear Local Storage",
+ "language": "Language",
+ "shortcut": "Shortcut",
+ "dashboard": "Dashboard",
+ "dashboard_v1": "Dashboard",
+ "dashboard_analysis": "Analysis",
+ "dashboard_monitor": "Monitor",
+ "dashboard_workplace": "Workplace",
+ "widgets": "Widgets",
+ "main_navigation": "Main Navigation",
+ "component": "Component",
+ "elements": "Elements",
+ "buttons": "Buttons",
+ "notification": "Notification",
+ "modal": "Modal",
+ "sweetalert": "SweetAlert",
+ "spin": "Loading Spin",
+ "dropdown": "Dropdown",
+ "tree-antd": "Tree",
+ "sortable": "Sortable",
+ "grid": "Grid",
+ "gridmasonry": "Grid Masonry",
+ "typography": "Typography",
+ "iconsfont": "Iconsfont",
+ "colors": "Colors",
+ "forms": "Forms",
+ "extended": "Extended",
+ "standard": "Standard",
+ "validation": "Validation",
+ "upload": "Upload",
+ "cropper": "Image Crop",
+ "charts": "Charts",
+ "tables": "Tables",
+ "maps": "Maps",
+ "qq": "QQ",
+ "baidu": "Baidu",
+ "logics": "Logics",
+ "guard": "Route Guard",
+ "acl": "ACL",
+ "downfile": "Down File",
+ "report": "Report",
+ "relation": "Relation",
+ "pages": "Pages",
+ "m-login": "Login",
+ "m-register": "Register",
+ "m-forget": "Forget",
+ "m-lock": "Lock",
+ "m-maintenance": "Maintenance",
+ "extras": "Extras",
+ "blog": "Blog",
+ "list": "List",
+ "comment": "Comment",
+ "post": "Post",
+ "website": "Web Site (external)",
+ "helpcenter": "Help Center",
+ "poi": "Poi",
+ "pro": "Ant Design Pro",
+ "form": "Form Page",
+ "step-form": "Step Form",
+ "advanced-form": "Advanced Form",
+ "pro-list": "List Page",
+ "pro-table-list": "Table List",
+ "pro-basic-list": "Basic List",
+ "pro-card-list": "Card List",
+ "pro-cover-card-list": "Cover Card List",
+ "pro-filter-card-list": "Filter Card List",
+ "pro-search": "Search���Article���",
+ "pro-profile": "Profile Page",
+ "pro-profile-basic": "Basic",
+ "pro-profile-advanced": "Advanced",
+ "pro-result": "Result Page",
+ "pro-result-success": "Success",
+ "pro-result-fail": "Fail",
+ "pro-exception": "Exception",
+ "pro-user": "Account",
+ "pro-login": "Login",
+ "pro-register": "Register",
+ "pro-register-result": "Register Result"
+}
diff --git a/src/assets/i18n/zh-CN.json b/src/assets/i18n/zh-CN.json
new file mode 100644
index 0000000..2488a5e
--- /dev/null
+++ b/src/assets/i18n/zh-CN.json
@@ -0,0 +1,94 @@
+{
+ "home": "������",
+ "settings": "������",
+ "profile": "������������",
+ "login": "������",
+ "logout": "������",
+ "more": "������",
+ "full": "������",
+ "top-search-ph": "������������������������������������",
+ "theme": "������",
+ "theme-switch": "������������",
+ "light": "���",
+ "dark": "���",
+ "fullscreen": "������",
+ "fullscreen-exit": "������������",
+ "clear-local-storage": "������������������",
+ "language": "������",
+ "shortcut": "������������",
+ "dashboard": "���������",
+ "dashboard_v1": "���������",
+ "dashboard_analysis": "���������",
+ "dashboard_monitor": "���������",
+ "dashboard_workplace": "���������",
+ "widgets": "���������",
+ "main_navigation": "���������",
+ "component": "������",
+ "elements": "������������",
+ "buttons": "������",
+ "notification": "������",
+ "modal": "���������",
+ "sweetalert": "SweetAlert",
+ "spin": "���������",
+ "dropdown": "������������",
+ "tree-antd": "������������",
+ "sortable": "������",
+ "grid": "������������",
+ "gridmasonry": "���������",
+ "typography": "������������",
+ "iconsfont": "icon������",
+ "colors": "������",
+ "forms": "������",
+ "standard": "������",
+ "extended": "������",
+ "validation": "������",
+ "upload": "������",
+ "cropper": "������������",
+ "charts": "������",
+ "tables": "������",
+ "maps": "������",
+ "qq": "QQ",
+ "baidu": "������",
+ "logics": "������������",
+ "guard": "������������",
+ "acl": "������������������������",
+ "downfile": "������������",
+ "report": "������",
+ "relation": "���������������",
+ "pages": "������",
+ "m-login": "���������",
+ "m-register": "���������",
+ "m-forget": "���������������",
+ "m-lock": "���������",
+ "m-maintenance": "���������",
+ "extras": "������",
+ "blog": "������",
+ "list": "������",
+ "comment": "������",
+ "post": "������",
+ "website": "������������������",
+ "helpcenter": "������������",
+ "poi": "������",
+ "pro": "Ant Design Pro",
+ "form": "���������",
+ "step-form": "������������",
+ "advanced-form": "������������",
+ "pro-list": "���������",
+ "pro-table-list": "������������",
+ "pro-basic-list": "������������",
+ "pro-card-list": "������������",
+ "pro-cover-card-list": "������������������������",
+ "pro-filter-card-list": "������������������������",
+ "pro-search": "������������������������",
+ "pro-profile": "���������",
+ "pro-profile-basic": "���������������",
+ "pro-profile-advanced": "���������������",
+ "pro-result": "������",
+ "pro-result-success": "������",
+ "pro-result-fail": "������",
+ "pro-exception": "������",
+ "pro-user": "������",
+ "pro-login": "������",
+ "pro-register": "������",
+ "pro-register-result": "������������"
+}
diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts
index 3612073..ab89b16 100644
--- a/src/environments/environment.prod.ts
+++ b/src/environments/environment.prod.ts
@@ -1,3 +1,4 @@
export const environment = {
+ SERVER_URL: `./`,
production: true
};
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index b7f639a..a94cd62 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -4,5 +4,6 @@
// The list of which env maps to which file can be found in `.angular-cli.json`.
export const environment = {
+ SERVER_URL: `./`,
production: false
};
diff --git a/src/testing/common.spec.ts b/src/testing/common.spec.ts
new file mode 100644
index 0000000..7aed99b
--- /dev/null
+++ b/src/testing/common.spec.ts
@@ -0,0 +1,66 @@
+// from: https://github.com/angular/angular/issues/12409
+
+import { TestBed, async, TestModuleMetadata } from '@angular/core/testing';
+import { Type, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+
+import { CoreModule } from '@core/core.module';
+import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
+import { HttpLoaderFactory } from 'app/app.module';
+import { HttpClient } from '@angular/common/http';
+import { ALAIN_I18N_TOKEN, ColorsService, SettingsService, MenuService, ScrollService, _HttpClient, ALAIN_THEME_OPTIONS } from '@delon/theme';
+import { I18NService } from '@core/i18n/i18n.service';
+import { RouterTestingModule } from '@angular/router/testing';
+import { SharedModule } from '@shared/shared.module';
+
+const resetTestingModule = TestBed.resetTestingModule,
+ preventAngularFromResetting = () => TestBed.resetTestingModule = () => TestBed;
+const allowAngularToReset = () => TestBed.resetTestingModule = resetTestingModule;
+
+export const setUpTestBed = (moduleDef: TestModuleMetadata) => {
+ beforeAll(done => (async () => {
+ resetTestingModule();
+ preventAngularFromResetting();
+
+ // region: schemas
+ if (!moduleDef.schemas) moduleDef.schemas = [];
+ moduleDef.schemas.push(CUSTOM_ELEMENTS_SCHEMA);
+ // endregion
+
+ // region: imports
+ if (!moduleDef.imports) moduleDef.imports = [];
+ moduleDef.imports.push(RouterTestingModule);
+ moduleDef.imports.push(SharedModule.forRoot());
+ moduleDef.imports.push(TranslateModule.forRoot({
+ loader: {
+ provide: TranslateLoader,
+ useFactory: (HttpLoaderFactory),
+ deps: [HttpClient]
+ }
+ }));
+ // endregion
+
+ // region: providers
+ if (!moduleDef.providers) moduleDef.providers = [];
+ moduleDef.providers.push({ provide: ALAIN_THEME_OPTIONS, useValue: {} });
+ moduleDef.providers.push({ provide: ALAIN_I18N_TOKEN, useClass: I18NService, multi: false });
+ // load full services
+ [ SettingsService, MenuService, ScrollService, ColorsService, _HttpClient ].forEach((item: any) => {
+ if (moduleDef.providers.includes(item)) return;
+ moduleDef.providers.push(item);
+ });
+ // endregion
+
+ TestBed.configureTestingModule(moduleDef);
+ await TestBed.compileComponents();
+
+ // prevent Angular from resetting testing module
+ TestBed.resetTestingModule = () => TestBed;
+ })().then(done).catch(done.fail));
+
+ afterAll(() => allowAngularToReset());
+};
+
+/**
+ * get service instance
+ */
+export const getService = <T>(type: Type<T>): T => <T>TestBed.get(type);
diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json
index 39ba8db..29f6da9 100644
--- a/src/tsconfig.app.json
+++ b/src/tsconfig.app.json
@@ -4,7 +4,13 @@
"outDir": "../out-tsc/app",
"baseUrl": "./",
"module": "es2015",
- "types": []
+ "types": [],
+ "paths": {
+ "@shared": [ "app/shared" ],
+ "@shared/*": [ "app/shared/*" ],
+ "@core": [ "app/core/" ],
+ "@core/*": [ "app/core/*" ]
+ }
},
"exclude": [
"test.ts",
diff --git a/src/tsconfig.spec.json b/src/tsconfig.spec.json
index 63d89ff..f460cf7 100644
--- a/src/tsconfig.spec.json
+++ b/src/tsconfig.spec.json
@@ -8,7 +8,13 @@
"types": [
"jasmine",
"node"
- ]
+ ],
+ "paths": {
+ "@shared": [ "app/shared" ],
+ "@shared/*": [ "app/shared/*" ],
+ "@core": [ "app/core/" ],
+ "@core/*": [ "app/core/*" ]
+ }
},
"files": [
"test.ts"
diff --git a/tsconfig.json b/tsconfig.json
index a6c016b..0656b07 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -14,6 +14,13 @@
"lib": [
"es2017",
"dom"
- ]
+ ],
+ "baseUrl": "src/",
+ "paths": {
+ "@shared": [ "app/shared" ],
+ "@shared/*": [ "app/shared/*" ],
+ "@core": [ "app/core/" ],
+ "@core/*": [ "app/core/*" ]
+ }
}
}
--
Gitblit v1.8.0