Commit 6758f353 authored by 神楽坂玲奈's avatar 神楽坂玲奈

fix, 优化 service worker

parent cd8508f4
{
"routing": {
"index": "/mobile/index.html",
"routes": {
"/mobile/": {
"match": "exact"
},
"/mobile/?": {
"match": "prefix"
},
"/mobile/ygopro/": {
"match": "prefix"
}
}
}
}
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
"dev": true, "dev": true,
"requires": { "requires": {
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
"source-map": "0.5.6", "source-map": "0.5.7",
"typescript": "2.6.2", "typescript": "2.6.2",
"webpack-sources": "1.1.0" "webpack-sources": "1.1.0"
}, },
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
"ajv": "5.5.2", "ajv": "5.5.2",
"chokidar": "1.7.0", "chokidar": "1.7.0",
"rxjs": "5.5.10", "rxjs": "5.5.10",
"source-map": "0.5.6" "source-map": "0.5.7"
}, },
"dependencies": { "dependencies": {
"ajv": { "ajv": {
...@@ -47,15 +47,6 @@ ...@@ -47,15 +47,6 @@
"fast-json-stable-stringify": "2.0.0", "fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.3.1" "json-schema-traverse": "0.3.1"
} }
},
"rxjs": {
"version": "5.5.10",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz",
"integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
} }
} }
}, },
...@@ -67,17 +58,6 @@ ...@@ -67,17 +58,6 @@
"requires": { "requires": {
"@ngtools/json-schema": "1.2.0", "@ngtools/json-schema": "1.2.0",
"rxjs": "5.5.10" "rxjs": "5.5.10"
},
"dependencies": {
"rxjs": {
"version": "5.5.10",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz",
"integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
}
} }
}, },
"@angular/animations": { "@angular/animations": {
...@@ -147,7 +127,7 @@ ...@@ -147,7 +127,7 @@
"resolve": "1.7.1", "resolve": "1.7.1",
"rxjs": "5.5.10", "rxjs": "5.5.10",
"sass-loader": "6.0.7", "sass-loader": "6.0.7",
"semver": "5.4.1", "semver": "5.5.0",
"silent-error": "1.1.0", "silent-error": "1.1.0",
"source-map-support": "0.4.18", "source-map-support": "0.4.18",
"style-loader": "0.19.1", "style-loader": "0.19.1",
...@@ -161,17 +141,6 @@ ...@@ -161,17 +141,6 @@
"webpack-merge": "4.1.2", "webpack-merge": "4.1.2",
"webpack-sources": "1.1.0", "webpack-sources": "1.1.0",
"webpack-subresource-integrity": "1.0.4" "webpack-subresource-integrity": "1.0.4"
},
"dependencies": {
"rxjs": {
"version": "5.5.10",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz",
"integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
}
} }
}, },
"@angular/common": { "@angular/common": {
...@@ -276,7 +245,6 @@ ...@@ -276,7 +245,6 @@
"version": "5.2.10", "version": "5.2.10",
"resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-5.2.10.tgz", "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-5.2.10.tgz",
"integrity": "sha512-VGfX+S7ewQBYRDB3BB68p+WbAcFmvwzU3PesSqi/N7qSsh2pnxxFne71UoNS5YlJo0Qt2YKIC2bslDBQk7Y2rg==", "integrity": "sha512-VGfX+S7ewQBYRDB3BB68p+WbAcFmvwzU3PesSqi/N7qSsh2pnxxFne71UoNS5YlJo0Qt2YKIC2bslDBQk7Y2rg==",
"dev": true,
"requires": { "requires": {
"tslib": "1.9.0" "tslib": "1.9.0"
} }
...@@ -297,8 +265,8 @@ ...@@ -297,8 +265,8 @@
"enhanced-resolve": "3.4.1", "enhanced-resolve": "3.4.1",
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
"magic-string": "0.22.5", "magic-string": "0.22.5",
"semver": "5.4.1", "semver": "5.5.0",
"source-map": "0.5.6", "source-map": "0.5.7",
"tree-kill": "1.2.0", "tree-kill": "1.2.0",
"webpack-sources": "1.1.0" "webpack-sources": "1.1.0"
} }
...@@ -327,19 +295,8 @@ ...@@ -327,19 +295,8 @@
"dev": true, "dev": true,
"requires": { "requires": {
"rxjs": "5.5.10", "rxjs": "5.5.10",
"semver": "5.4.1", "semver": "5.5.0",
"semver-intersect": "1.3.1" "semver-intersect": "1.3.1"
},
"dependencies": {
"rxjs": {
"version": "5.5.10",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz",
"integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==",
"dev": true,
"requires": {
"symbol-observable": "1.0.1"
}
}
} }
}, },
"@types/lodash": { "@types/lodash": {
...@@ -717,20 +674,6 @@ ...@@ -717,20 +674,6 @@
"lodash": "4.17.10", "lodash": "4.17.10",
"source-map": "0.5.7", "source-map": "0.5.7",
"trim-right": "1.0.1" "trim-right": "1.0.1"
},
"dependencies": {
"jsesc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
"integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true
},
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
}
} }
}, },
"babel-messages": { "babel-messages": {
...@@ -874,9 +817,9 @@ ...@@ -874,9 +817,9 @@
} }
}, },
"base64-js": { "base64-js": {
"version": "1.2.1", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz",
"integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==",
"dev": true "dev": true
}, },
"batch": { "batch": {
...@@ -947,12 +890,6 @@ ...@@ -947,12 +890,6 @@
"type-is": "1.6.16" "type-is": "1.6.16"
}, },
"dependencies": { "dependencies": {
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
"dev": true
},
"qs": { "qs": {
"version": "6.5.1", "version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
...@@ -1103,7 +1040,7 @@ ...@@ -1103,7 +1040,7 @@
"integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
"dev": true, "dev": true,
"requires": { "requires": {
"base64-js": "1.2.1", "base64-js": "1.3.0",
"ieee754": "1.1.11", "ieee754": "1.1.11",
"isarray": "1.0.0" "isarray": "1.0.0"
} }
...@@ -1336,7 +1273,7 @@ ...@@ -1336,7 +1273,7 @@
"integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=", "integrity": "sha1-Ls3xRaujj1R0DybO/Q/z4D4SXWo=",
"dev": true, "dev": true,
"requires": { "requires": {
"source-map": "0.5.6" "source-map": "0.5.7"
} }
}, },
"cliui": { "cliui": {
...@@ -1409,14 +1346,6 @@ ...@@ -1409,14 +1346,6 @@
"semver-dsl": "1.0.1", "semver-dsl": "1.0.1",
"source-map": "0.5.7", "source-map": "0.5.7",
"sprintf-js": "1.0.3" "sprintf-js": "1.0.3"
},
"dependencies": {
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
}
} }
}, },
"collection-visit": { "collection-visit": {
...@@ -3948,6 +3877,12 @@ ...@@ -3948,6 +3877,12 @@
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
"dev": true "dev": true
}, },
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
"dev": true
},
"ieee754": { "ieee754": {
"version": "1.1.11", "version": "1.1.11",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz",
...@@ -4440,7 +4375,7 @@ ...@@ -4440,7 +4375,7 @@
"babel-types": "6.26.0", "babel-types": "6.26.0",
"babylon": "6.18.0", "babylon": "6.18.0",
"istanbul-lib-coverage": "1.2.0", "istanbul-lib-coverage": "1.2.0",
"semver": "5.4.1" "semver": "5.5.0"
} }
}, },
"js-base64": { "js-base64": {
...@@ -4474,9 +4409,9 @@ ...@@ -4474,9 +4409,9 @@
"optional": true "optional": true
}, },
"jsesc": { "jsesc": {
"version": "0.5.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=",
"dev": true "dev": true
}, },
"json-loader": { "json-loader": {
...@@ -4620,7 +4555,7 @@ ...@@ -4620,7 +4555,7 @@
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"promise": "7.3.1", "promise": "7.3.1",
"request": "2.81.0", "request": "2.81.0",
"source-map": "0.5.6" "source-map": "0.5.7"
} }
}, },
"less-loader": { "less-loader": {
...@@ -5385,7 +5320,7 @@ ...@@ -5385,7 +5320,7 @@
"requires": { "requires": {
"hosted-git-info": "2.6.0", "hosted-git-info": "2.6.0",
"is-builtin-module": "1.0.0", "is-builtin-module": "1.0.0",
"semver": "5.4.1", "semver": "5.5.0",
"validate-npm-package-license": "3.0.3" "validate-npm-package-license": "3.0.3"
} }
}, },
...@@ -5993,6 +5928,12 @@ ...@@ -5993,6 +5928,12 @@
"integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=",
"dev": true "dev": true
}, },
"prettier": {
"version": "1.12.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz",
"integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=",
"dev": true
},
"pretty-error": { "pretty-error": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
...@@ -6214,12 +6155,6 @@ ...@@ -6214,12 +6155,6 @@
"statuses": "1.4.0" "statuses": "1.4.0"
} }
}, },
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
"dev": true
},
"setprototypeof": { "setprototypeof": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
...@@ -6410,6 +6345,14 @@ ...@@ -6410,6 +6345,14 @@
"dev": true, "dev": true,
"requires": { "requires": {
"jsesc": "0.5.0" "jsesc": "0.5.0"
},
"dependencies": {
"jsesc": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
}
} }
}, },
"relateurl": { "relateurl": {
...@@ -6643,9 +6586,10 @@ ...@@ -6643,9 +6586,10 @@
} }
}, },
"sax": { "sax": {
"version": "1.2.4", "version": "0.5.8",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
"dev": true
}, },
"schema-utils": { "schema-utils": {
"version": "0.4.5", "version": "0.4.5",
...@@ -6696,9 +6640,9 @@ ...@@ -6696,9 +6640,9 @@
} }
}, },
"semver": { "semver": {
"version": "5.4.1", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
"dev": true "dev": true
}, },
"semver-dsl": { "semver-dsl": {
...@@ -6707,7 +6651,7 @@ ...@@ -6707,7 +6651,7 @@
"integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=",
"dev": true, "dev": true,
"requires": { "requires": {
"semver": "5.4.1" "semver": "5.5.0"
} }
}, },
"semver-intersect": { "semver-intersect": {
...@@ -6716,7 +6660,7 @@ ...@@ -6716,7 +6660,7 @@
"integrity": "sha1-j6hKnhAovSOeRTDRo+GB5pjYhLo=", "integrity": "sha1-j6hKnhAovSOeRTDRo+GB5pjYhLo=",
"dev": true, "dev": true,
"requires": { "requires": {
"semver": "5.4.1" "semver": "5.5.0"
} }
}, },
"send": { "send": {
...@@ -6904,7 +6848,7 @@ ...@@ -6904,7 +6848,7 @@
"define-property": "0.2.5", "define-property": "0.2.5",
"extend-shallow": "2.0.1", "extend-shallow": "2.0.1",
"map-cache": "0.2.2", "map-cache": "0.2.2",
"source-map": "0.5.6", "source-map": "0.5.7",
"source-map-resolve": "0.5.1", "source-map-resolve": "0.5.1",
"use": "3.1.0" "use": "3.1.0"
}, },
...@@ -7031,7 +6975,7 @@ ...@@ -7031,7 +6975,7 @@
"faye-websocket": "0.11.1", "faye-websocket": "0.11.1",
"inherits": "2.0.3", "inherits": "2.0.3",
"json3": "3.3.2", "json3": "3.3.2",
"url-parse": "1.1.9" "url-parse": "1.4.0"
}, },
"dependencies": { "dependencies": {
"faye-websocket": { "faye-websocket": {
...@@ -7052,9 +6996,9 @@ ...@@ -7052,9 +6996,9 @@
"dev": true "dev": true
}, },
"source-map": { "source-map": {
"version": "0.5.6", "version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true "dev": true
}, },
"source-map-resolve": { "source-map-resolve": {
...@@ -7076,7 +7020,7 @@ ...@@ -7076,7 +7020,7 @@
"integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
"dev": true, "dev": true,
"requires": { "requires": {
"source-map": "0.5.6" "source-map": "0.5.7"
} }
}, },
"source-map-url": { "source-map-url": {
...@@ -7390,12 +7334,6 @@ ...@@ -7390,12 +7334,6 @@
"path-is-absolute": "1.0.1" "path-is-absolute": "1.0.1"
} }
}, },
"sax": {
"version": "0.5.8",
"resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz",
"integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=",
"dev": true
},
"source-map": { "source-map": {
"version": "0.1.43", "version": "0.1.43",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
...@@ -7617,7 +7555,7 @@ ...@@ -7617,7 +7555,7 @@
"minimist": "1.2.0", "minimist": "1.2.0",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"source-map": "0.6.1", "source-map": "0.6.1",
"source-map-support": "0.5.4" "source-map-support": "0.5.5"
}, },
"dependencies": { "dependencies": {
"minimist": { "minimist": {
...@@ -7633,11 +7571,12 @@ ...@@ -7633,11 +7571,12 @@
"dev": true "dev": true
}, },
"source-map-support": { "source-map-support": {
"version": "0.5.4", "version": "0.5.5",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.4.tgz", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.5.tgz",
"integrity": "sha512-PETSPG6BjY1AHs2t64vS2aqAgu6dMIMXJULWFBGbh2Gr8nVLbCFDo6i/RMMvviIQ2h1Z8+5gQhVKSn2je9nmdg==", "integrity": "sha512-mR7/Nd5l1z6g99010shcXJiNEaf3fEtmLhRB/sBcQVJGodcHCULPp2y4Sfa43Kv2zq7T+Izmfp/WHCR6dYkQCA==",
"dev": true, "dev": true,
"requires": { "requires": {
"buffer-from": "1.0.0",
"source-map": "0.6.1" "source-map": "0.6.1"
} }
} }
...@@ -7663,7 +7602,7 @@ ...@@ -7663,7 +7602,7 @@
"js-yaml": "3.11.0", "js-yaml": "3.11.0",
"minimatch": "3.0.4", "minimatch": "3.0.4",
"resolve": "1.7.1", "resolve": "1.7.1",
"semver": "5.4.1", "semver": "5.5.0",
"tslib": "1.9.0", "tslib": "1.9.0",
"tsutils": "2.26.1" "tsutils": "2.26.1"
}, },
...@@ -8011,19 +7950,19 @@ ...@@ -8011,19 +7950,19 @@
} }
}, },
"url-parse": { "url-parse": {
"version": "1.1.9", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz",
"integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==",
"dev": true, "dev": true,
"requires": { "requires": {
"querystringify": "1.0.0", "querystringify": "2.0.0",
"requires-port": "1.0.0" "requires-port": "1.0.0"
}, },
"dependencies": { "dependencies": {
"querystringify": { "querystringify": {
"version": "1.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz",
"integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==",
"dev": true "dev": true
} }
} }
...@@ -8547,7 +8486,7 @@ ...@@ -8547,7 +8486,7 @@
"memory-fs": "0.4.1", "memory-fs": "0.4.1",
"mkdirp": "0.5.1", "mkdirp": "0.5.1",
"node-libs-browser": "2.1.0", "node-libs-browser": "2.1.0",
"source-map": "0.5.6", "source-map": "0.5.7",
"supports-color": "4.5.0", "supports-color": "4.5.0",
"tapable": "0.2.8", "tapable": "0.2.8",
"uglifyjs-webpack-plugin": "0.4.6", "uglifyjs-webpack-plugin": "0.4.6",
...@@ -8677,7 +8616,7 @@ ...@@ -8677,7 +8616,7 @@
"integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
"dev": true, "dev": true,
"requires": { "requires": {
"source-map": "0.5.6", "source-map": "0.5.7",
"uglify-to-browserify": "1.0.2", "uglify-to-browserify": "1.0.2",
"yargs": "3.10.0" "yargs": "3.10.0"
}, },
...@@ -8702,7 +8641,7 @@ ...@@ -8702,7 +8641,7 @@
"integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
"dev": true, "dev": true,
"requires": { "requires": {
"source-map": "0.5.6", "source-map": "0.5.7",
"uglify-js": "2.8.29", "uglify-js": "2.8.29",
"webpack-sources": "1.1.0" "webpack-sources": "1.1.0"
} }
...@@ -9409,6 +9348,13 @@ ...@@ -9409,6 +9348,13 @@
"requires": { "requires": {
"sax": "1.2.4", "sax": "1.2.4",
"xmlbuilder": "9.0.7" "xmlbuilder": "9.0.7"
},
"dependencies": {
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
}
} }
}, },
"xmlbuilder": { "xmlbuilder": {
......
...@@ -4,41 +4,44 @@ ...@@ -4,41 +4,44 @@
"license": "UNLISENCED", "license": "UNLISENCED",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve --base-href /mobile/ --deploy-url /mobile/ --locale zh-CN --output-path mobile --open", "start": "ng serve --locale zh-CN --aot",
"build": "ng build --base-href /mobile/ --locale zh-CN --aot --build-optimizer --extract-css --prod", "build": "ng build --locale zh-CN --base-href /mobile/ --prod --build-optimizer",
"build:dev": "ng build --base-href /mobile2/ --locale zh-CN --aot --build-optimizer --extract-css", "build:dev": "ng build --locale zh-CN --base-href /mobile2/ --prod --build-optimizer && npm run fuck",
"lint": "ng lint --type-check --fix" "fuck": "patch dist/ngsw-worker.js service-worker.patch",
"lint": "ng lint"
}, },
"private": true,
"dependencies": { "dependencies": {
"@angular/animations": "5.2.10", "@angular/animations": "^5.2.10",
"@angular/cdk": "^5.2.5", "@angular/cdk": "^5.2.5",
"@angular/common": "5.2.10", "@angular/common": "^5.2.0",
"@angular/compiler": "5.2.10", "@angular/compiler": "^5.2.0",
"@angular/core": "5.2.10", "@angular/core": "^5.2.0",
"@angular/forms": "5.2.10", "@angular/forms": "^5.2.0",
"@angular/http": "5.2.10", "@angular/http": "^5.2.0",
"@angular/material": "^5.2.5", "@angular/material": "^5.2.5",
"@angular/platform-browser": "5.2.10", "@angular/platform-browser": "^5.2.0",
"@angular/platform-browser-dynamic": "5.2.10", "@angular/platform-browser-dynamic": "^5.2.0",
"@angular/router": "5.2.10", "@angular/router": "^5.2.0",
"core-js": "^2.5.5", "@angular/service-worker": "^5.2.0",
"core-js": "^2.4.1",
"font-awesome": "^4.7.0", "font-awesome": "^4.7.0",
"hammerjs": "^2.0.8", "hammerjs": "^2.0.8",
"lodash": "^4.17.10", "lodash": "^4.17.10",
"material-design-icons": "^3.0.1", "material-design-icons": "^3.0.1",
"rxjs": "^5.5.10", "rxjs": "^5.5.6",
"webdav": "^1.5.2", "webdav": "^1.5.2",
"zone.js": "^0.8.26" "zone.js": "^0.8.19"
}, },
"devDependencies": { "devDependencies": {
"@angular/cli": "1.7.4", "@angular/cli": "~1.7.4",
"@angular/compiler-cli": "5.2.10", "@angular/compiler-cli": "^5.2.0",
"@angular/language-service": "5.2.10", "@angular/language-service": "^5.2.0",
"@angular/service-worker": "5.2.10",
"@types/lodash": "^4.14.108", "@types/lodash": "^4.14.108",
"@types/node": "^9.6.6", "@types/node": "^9.6.6",
"codelyzer": "^4.3.0", "codelyzer": "^4.0.1",
"tslint": "^5.9.1", "prettier": "^1.12.1",
"typescript": "2.6.2" "tslint": "~5.9.1",
"typescript": "^2.6.2"
} }
} }
2112c2112
< if (clientId !== null) {
---
> if (clientId) {
...@@ -18,15 +18,14 @@ const routes: Routes = [ ...@@ -18,15 +18,14 @@ const routes: Routes = [
{ path: 'ygopro/rooms', component: RoomListComponent }, { path: 'ygopro/rooms', component: RoomListComponent },
{ path: 'ygopro/lobby', component: LobbyComponent }, { path: 'ygopro/lobby', component: LobbyComponent },
{ path: 'ygopro/windbot', component: WindbotComponent }, { path: 'ygopro/windbot', component: WindbotComponent },
{ path: 'ygopro/watch', component: WatchComponent }, { path: 'ygopro/watch', component: WatchComponent }
] ]
}, }
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes)], imports: [RouterModule.forRoot(routes)],
exports: [RouterModule], exports: [RouterModule],
providers: [AuthGuard, LoginService], providers: [AuthGuard, LoginService]
}) })
export class AppRoutingModule { export class AppRoutingModule {}
}
...@@ -21,9 +21,10 @@ import { ...@@ -21,9 +21,10 @@ import {
} from '@angular/material'; } from '@angular/material';
import { BrowserModule } from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import 'hammerjs'; import { ServiceWorkerModule } from '@angular/service-worker';
import 'rxjs/Rx';
import 'hammerjs';
import { environment } from '../environments/environment';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { LobbyComponent } from './lobby/lobby.component'; import { LobbyComponent } from './lobby/lobby.component';
...@@ -51,6 +52,7 @@ import { YGOProService } from './ygopro.service'; ...@@ -51,6 +52,7 @@ import { YGOProService } from './ygopro.service';
], ],
imports: [ imports: [
BrowserModule, BrowserModule,
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production }),
FormsModule, FormsModule,
HttpModule, HttpModule,
AppRoutingModule, AppRoutingModule,
......
...@@ -7,6 +7,13 @@ import { routerTransition2 } from '../router.animations'; ...@@ -7,6 +7,13 @@ import { routerTransition2 } from '../router.animations';
import { StorageService } from '../storage.service'; import { StorageService } from '../storage.service';
import { YGOProService } from '../ygopro.service'; import { YGOProService } from '../ygopro.service';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
@Component({ @Component({
selector: 'app-lobby', selector: 'app-lobby',
templateUrl: 'lobby.component.html', templateUrl: 'lobby.component.html',
...@@ -22,7 +29,7 @@ export class LobbyComponent { ...@@ -22,7 +29,7 @@ export class LobbyComponent {
build: BuildConfig; build: BuildConfig;
searchCtrl = new FormControl(); searchCtrl = new FormControl();
suggestion = this.searchCtrl.valueChanges.filter(name => name).flatMap(name => this.jsonp.get('http://www.ourocg.cn/Suggest.aspx', { suggestion = this.searchCtrl.valueChanges.filter(name => name).mergeMap(name => this.jsonp.get('http://www.ourocg.cn/Suggest.aspx', {
params: {callback: 'JSONP_CALLBACK', key: name} params: {callback: 'JSONP_CALLBACK', key: name}
}).map(response => response.json().result)); }).map(response => response.json().result));
......
...@@ -4,6 +4,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material'; ...@@ -4,6 +4,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { Subscription } from 'rxjs/Subscription'; import { Subscription } from 'rxjs/Subscription';
import { LoginService } from '../login.service'; import { LoginService } from '../login.service';
import 'rxjs/add/observable/timer';
const second = 1000; const second = 1000;
const offset = new Date().getTimezoneOffset() * 60 * second; const offset = new Date().getTimezoneOffset() * 60 * second;
......
...@@ -26,9 +26,10 @@ ...@@ -26,9 +26,10 @@
flex: 2 flex: 2
} }
mat-table { #container {
flex: 1; flex: 1;
padding-bottom: 36px; padding-bottom: 36px;
position: relative;
} }
form { form {
......
<app-toolbar>房间列表</app-toolbar> <app-toolbar>房间列表</app-toolbar>
<div class="hint" *ngIf="dataSource.loading"><mat-spinner></mat-spinner></div> <div id="container">
<div class="hint" *ngIf="dataSource.empty">现在没有等待中的游戏,可以自行创建一个房间或者去匹配</div>
<div class="hint" *ngIf="dataSource.error">网络错误</div>
<mat-table #table [dataSource]="dataSource"> <div class="hint" *ngIf="dataSource.loading">
<mat-spinner></mat-spinner>
</div>
<div class="hint" *ngIf="dataSource.empty">现在没有等待中的游戏,可以自行创建一个房间或者去匹配</div>
<div class="hint" *ngIf="dataSource.error">网络错误</div>
<mat-table #table [dataSource]="dataSource">
<!--- Note that these columns can be defined in any order. <!--- Note that these columns can be defined in any order.
The actual rendered columns are set as a property on room row definition" --> The actual rendered columns are set as a property on room row definition" -->
...@@ -49,7 +53,9 @@ ...@@ -49,7 +53,9 @@
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let room; columns: displayedColumns;" (click)="ygopro.join_room(room)"></mat-row> <mat-row *matRowDef="let room; columns: displayedColumns;" (click)="ygopro.join_room(room)"></mat-row>
</mat-table> </mat-table>
</div>
<form (submit)="ygopro.join_private(joinPassword.value)" ngNativeValidate> <form (submit)="ygopro.join_private(joinPassword.value)" ngNativeValidate>
<input #joinPassword placeholder="在这输入你朋友的私密房间密码就可以进去了哦!" required> <input #joinPassword placeholder="在这输入你朋友的私密房间密码就可以进去了哦!" required>
......
import { animate, state, style, transition, trigger } from '@angular/animations'; import { animate, state, style, transition, trigger } from '@angular/animations';
export const routerTransition = trigger('routerTransition', [ export const routerTransition = trigger('routerTransition', [
state('void', style({position: 'absolute', width: '100%'})), state('void', style({ position: 'absolute', width: '100%' })),
state('*', style({position: 'absolute', width: '100%'})), state('*', style({ position: 'absolute', width: '100%' })),
transition(':enter', [ // before 2.1: transition('void => *', [ transition(':enter', [
style({transform: 'translateX(100%)'}), // before 2.1: transition('void => *', [
animate('.5s ease-in-out', style({transform: 'translateX(0%)'})) style({ transform: 'translateX(100%)' }),
animate('.4s', style({ transform: 'translateX(0%)' }))
]), ]),
transition(':leave', [ // before 2.1: transition('* => void', [ transition(':leave', [
style({transform: 'translateX(0%)'}), // before 2.1: transition('* => void', [
animate('.5s ease-in-out', style({transform: 'translateX(100%)'})) style({ transform: 'translateX(0%)' }),
animate('.4s', style({ transform: 'translateX(100%)' }))
]) ])
]); ]);
export const routerTransition2 = trigger('routerTransition2', [ export const routerTransition2 = trigger('routerTransition2', [
state('void', style({position: 'absolute', width: '100%'})), state('void', style({ position: 'absolute', width: '100%' })),
state('*', style({position: 'absolute', width: '100%'})), state('*', style({ position: 'absolute', width: '100%' })),
transition(':enter', [ // before 2.1: transition('void => *', [ transition(':enter', [
style({transform: 'translateX(-100%)'}), // before 2.1: transition('void => *', [
animate('.5s ease-in-out', style({transform: 'translateX(0%)'})) style({ transform: 'translateX(-100%)' }),
animate('.4s', style({ transform: 'translateX(0%)' }))
]), ]),
transition(':leave', [ // before 2.1: transition('* => void', [ transition(':leave', [
style({transform: 'translateX(0%)'}), // before 2.1: transition('* => void', [
animate('.5s ease-in-out', style({transform: 'translateX(-100%)'})) style({ transform: 'translateX(0%)' }),
animate('.4s', style({ transform: 'translateX(-100%)' }))
]) ])
]); ]);
...@@ -26,3 +26,6 @@ ...@@ -26,3 +26,6 @@
flex: 2 flex: 2
} }
#container {
position: relative;
}
<app-toolbar>观战</app-toolbar> <app-toolbar>观战</app-toolbar>
<div class="hint" *ngIf="dataSource.loading"><mat-spinner></mat-spinner></div> <div id="container">
<div class="hint" *ngIf="dataSource.empty">现在没有进行中的游戏</div> <div class="hint" *ngIf="dataSource.loading">
<div class="hint" *ngIf="dataSource.error">网络错误</div> <mat-spinner></mat-spinner>
</div>
<div class="hint" *ngIf="dataSource.empty">现在没有进行中的游戏</div>
<div class="hint" *ngIf="dataSource.error">网络错误</div>
<mat-table #table [dataSource]="dataSource"> <mat-table #table [dataSource]="dataSource">
<!--- Note that these columns can be defined in any order. <!--- Note that these columns can be defined in any order.
The actual rendered columns are set as a property on room row definition" --> The actual rendered columns are set as a property on room row definition" -->
...@@ -56,5 +59,6 @@ ...@@ -56,5 +59,6 @@
<mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row> <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
<mat-row *matRowDef="let room; columns: displayedColumns;" (click)="ygopro.join_room(room)"></mat-row> <mat-row *matRowDef="let room; columns: displayedColumns;" (click)="ygopro.join_room(room)"></mat-row>
</mat-table> </mat-table>
</div>
import { DataSource } from '@angular/cdk/collections';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Http } from '@angular/http'; import { Http } from '@angular/http';
import { MatDialog } from '@angular/material';
import { sortBy } from 'lodash'; import { sortBy } from 'lodash';
import 'rxjs/add/observable/combineLatest';
import 'rxjs/add/observable/dom/webSocket';
import 'rxjs/add/observable/fromEvent';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/scan';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
import { LoginService } from './login.service'; import { LoginService } from './login.service';
import { MatchDialogComponent } from './match/match.component'; import { MatchDialogComponent } from './match/match.component';
import { ResultDialogComponent } from './result/result.dialog'; import { ResultDialogComponent } from './result/result.dialog';
import { StorageService } from './storage.service'; import { StorageService } from './storage.service';
import { MatDialog } from '@angular/material';
import { DataSource } from '@angular/cdk/collections';
export interface User { export interface User {
admin: boolean; admin: boolean;
......
...@@ -3,9 +3,10 @@ ...@@ -3,9 +3,10 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title>MyCard Mobile</title> <title>MyCard Mobile</title>
<base href="/mobile/"> <base href="/">
<meta name="theme-color" content="#673ab7"> <meta name="theme-color" content="#673ab7">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head> </head>
<body> <body>
<app-root> <app-root>
......
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": ["/favicon.ico", "/index.html"],
"versionedFiles": ["/*.bundle.css", "/*.bundle.js", "/*.chunk.js"]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": ["/assets/**"],
"versionedFiles": ["/fontawesome-webfont.*", "/MaterialIcons-Regular.*"]
}
}
],
"dataGroups": [
{
"name": "api-freshness",
"urls": ["https://ygobbs.com/top/quarterly.json", "https://mycard.moe/ygopro/api/history", "https://api.mycard.moe/ygopro/arena/user"],
"cacheConfig": {
"maxSize": 100,
"maxAge": "3d",
"timeout": "1m",
"strategy": "freshness"
}
},
{
"name": "api-performance",
"urls": ["https://api.mycard.moe/apps.json", "https://cdn01.moecube.com/avatars/*", "https://ygobbs.com/user_avatar/*", "https://ygobbs.com/uploads/**"],
"cacheConfig": {
"maxSize": 100,
"maxAge": "3d",
"timeout": "1m",
"strategy": "performance"
}
}
]
}
...@@ -37,22 +37,38 @@ ...@@ -37,22 +37,38 @@
/** IE10 and IE11 requires the following for NgClass support on SVG elements */ /** IE10 and IE11 requires the following for NgClass support on SVG elements */
// import 'classlist.js'; // Run `npm install --save classlist.js`. // import 'classlist.js'; // Run `npm install --save classlist.js`.
/** Evergreen browsers require these. **/ /** IE10 and IE11 requires the following for the Reflect API. */
// import 'core-js/es6/reflect'; // import 'core-js/es6/reflect';
/** Evergreen browsers require these. **/
// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
// import 'core-js/es7/reflect'; // import 'core-js/es7/reflect';
import 'core-js/shim';
/** /**
* Required to support Web Animations `@angular/animation`. * Required to support Web Animations `@angular/platform-browser/animations`.
* Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
**/ **/
// import 'web-animations-js'; // Run `npm install --save web-animations-js`. // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
/**
* By default, zone.js will patch all possible macroTask and DomEvents
* user can disable parts of macroTask/DomEvents patch by setting following flags
*/
// (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
// (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
// (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
/*
* in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
* with the following flag, it will bypass `zone.js` patch for IE/Edge
*/
// (window as any).__Zone_enable_cross_context_check = true;
/*************************************************************************************************** /***************************************************************************************************
* Zone JS is required by Angular itself. * Zone JS is required by default for Angular itself.
*/ */
import 'zone.js/dist/zone'; // Included with Angular CLI. import 'zone.js/dist/zone'; // Included with Angular CLI.
...@@ -61,13 +77,3 @@ import 'zone.js/dist/zone'; // Included with Angular CLI. ...@@ -61,13 +77,3 @@ import 'zone.js/dist/zone'; // Included with Angular CLI.
/*************************************************************************************************** /***************************************************************************************************
* APPLICATION IMPORTS * APPLICATION IMPORTS
*/ */
/**
* Date, curm -rf node_modules/rrency, decimal and percent pipes.
* Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
*/
// import 'intl'; // Run `npm install --save intl`.
/**
* Need to import at least one locale-data with intl.
*/
// import 'intl/locale-data/jsonp/en';
...@@ -4,12 +4,6 @@ ...@@ -4,12 +4,6 @@
"outDir": "../out-tsc/app", "outDir": "../out-tsc/app",
"baseUrl": "./", "baseUrl": "./",
"module": "es2015", "module": "es2015",
"types": [ "types": ["node"]
"node" }
]
},
"exclude": [
"test.ts",
"**/*.spec.ts"
]
} }
...@@ -7,15 +7,10 @@ ...@@ -7,15 +7,10 @@
"moduleResolution": "node", "moduleResolution": "node",
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"experimentalDecorators": true, "experimentalDecorators": true,
"downlevelIteration": true, "target": "es2016",
"target": "es5",
"strict": true,
"suppressImplicitAnyIndexErrors": true,
"noImplicitAny": false,
"typeRoots": [ "typeRoots": [
"node_modules/@types" "node_modules/@types"
], ],
"skipLibCheck": true,
"lib": [ "lib": [
"esnext", "esnext",
"dom.iterable" "dom.iterable"
......
...@@ -11,11 +11,15 @@ ...@@ -11,11 +11,15 @@
"check-space" "check-space"
], ],
"curly": true, "curly": true,
"deprecation": {
"severity": "warn"
},
"eofline": true, "eofline": true,
"forin": true, "forin": true,
"import-blacklist": [ "import-blacklist": [
true, true,
"rxjs" "rxjs",
"rxjs/Rx"
], ],
"import-spacing": true, "import-spacing": true,
"indent": [ "indent": [
...@@ -103,7 +107,6 @@ ...@@ -103,7 +107,6 @@
"variable-declaration": "nospace" "variable-declaration": "nospace"
} }
], ],
"typeof-compare": true,
"unified-signatures": true, "unified-signatures": true,
"variable-name": false, "variable-name": false,
"whitespace": [ "whitespace": [
...@@ -126,6 +129,7 @@ ...@@ -126,6 +129,7 @@
"app", "app",
"kebab-case" "kebab-case"
], ],
"no-output-on-prefix": true,
"use-input-property-decorator": true, "use-input-property-decorator": true,
"use-output-property-decorator": true, "use-output-property-decorator": true,
"use-host-property-decorator": true, "use-host-property-decorator": true,
...@@ -134,9 +138,6 @@ ...@@ -134,9 +138,6 @@
"use-life-cycle-interface": true, "use-life-cycle-interface": true,
"use-pipe-transform-interface": true, "use-pipe-transform-interface": true,
"component-class-suffix": true, "component-class-suffix": true,
"directive-class-suffix": true, "directive-class-suffix": true
"no-access-missing-member": true,
"templates-use-public": true,
"invoke-injectable": true
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment