From 9db4802a0654a81117495c934bc13b4b21593490 Mon Sep 17 00:00:00 2001
From: kPherox
Date: Mon, 8 Apr 2019 05:47:07 +0900
Subject: [PATCH] Use typescript
vue add typescript
---
package-lock.json | 183 ++++++++++++++++++
package.json | 12 +-
src/about/{main.js => main.ts} | 0
src/{background.js => background.ts} | 0
src/components/HelloWorld.vue | 15 +-
src/index/Index.vue | 17 +-
src/index/{main.js => main.ts} | 0
src/shims-tsx.d.ts | 13 ++
src/shims-vue.d.ts | 4 +
.../{loadComponents.js => loadComponents.ts} | 0
tsconfig.json | 39 ++++
vue.config.js | 2 +
12 files changed, 266 insertions(+), 19 deletions(-)
rename src/about/{main.js => main.ts} (100%)
rename src/{background.js => background.ts} (100%)
rename src/index/{main.js => main.ts} (100%)
create mode 100644 src/shims-tsx.d.ts
create mode 100644 src/shims-vue.d.ts
rename src/views/{loadComponents.js => loadComponents.ts} (100%)
create mode 100644 tsconfig.json
diff --git a/package-lock.json b/package-lock.json
index e27091da..fb7953a9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -938,6 +938,64 @@
"integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==",
"dev": true
},
+ "@types/webpack-env": {
+ "version": "1.13.9",
+ "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.9.tgz",
+ "integrity": "sha512-p8zp5xqkly3g4cCmo2mKOHI9+Z/kObmDj0BmjbDDJQlgDTiEGTbm17MEwTAusV6XceCy+bNw9q/ZHXHyKo3zkg==",
+ "dev": true
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.6.0.tgz",
+ "integrity": "sha512-U224c29E2lo861TQZs6GSmyC0OYeRNg6bE9UVIiFBxN2MlA0nq2dCrgIVyyRbC05UOcrgf2Wk/CF2gGOPQKUSQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/parser": "1.6.0",
+ "@typescript-eslint/typescript-estree": "1.6.0",
+ "requireindex": "^1.2.0",
+ "tsutils": "^3.7.0"
+ },
+ "dependencies": {
+ "tsutils": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz",
+ "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.6.0.tgz",
+ "integrity": "sha512-VB9xmSbfafI+/kI4gUK3PfrkGmrJQfh0N4EScT1gZXSZyUxpsBirPL99EWZg9MmPG0pzq/gMtgkk7/rAHj4aQw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/typescript-estree": "1.6.0",
+ "eslint-scope": "^4.0.0",
+ "eslint-visitor-keys": "^1.0.0"
+ }
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz",
+ "integrity": "sha512-A4CanUwfaG4oXobD5y7EXbsOHjCwn8tj1RDd820etpPAjH+Icjc2K9e/DQM1Hac5zH2BSy+u6bjvvF2wwREvYA==",
+ "dev": true,
+ "requires": {
+ "lodash.unescape": "4.0.1",
+ "semver": "5.5.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ }
+ }
+ },
"@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.0.0-beta.3",
"resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0-beta.3.tgz",
@@ -1353,6 +1411,16 @@
}
}
},
+ "@vue/eslint-config-typescript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-4.0.0.tgz",
+ "integrity": "sha512-uSMAMgw4xDgVdZQhpbtJRo8nMV4oOy3Ht8olfOo7xvYFYLMF2JZ1tDRKd9/NSusxA72O2Vma+HzmyzDHg9evcQ==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/eslint-plugin": "^1.1.0",
+ "@typescript-eslint/parser": "^1.1.0"
+ }
+ },
"@vue/preload-webpack-plugin": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.0.tgz",
@@ -2695,6 +2763,12 @@
"sax": "^1.2.4"
}
},
+ "builtin-modules": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
+ "dev": true
+ },
"builtin-status-codes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
@@ -4294,6 +4368,12 @@
"integrity": "sha1-WiBc48Ky73e2I41roXnrdMag6Bg=",
"dev": true
},
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
"diffie-hellman": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
@@ -5900,6 +5980,20 @@
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
+ "fork-ts-checker-webpack-plugin": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.5.2.tgz",
+ "integrity": "sha512-a5IG+xXyKnpruI0CP/anyRLAoxWtp3lzdG6flxicANnoSzz64b12dJ7ASAVRrI2OaWwZR2JyBaMHFQqInhWhIw==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.22.0",
+ "chalk": "^2.4.1",
+ "chokidar": "^2.0.4",
+ "micromatch": "^3.1.10",
+ "minimatch": "^3.0.4",
+ "tapable": "^1.0.0"
+ }
+ },
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
@@ -8367,6 +8461,12 @@
"integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
"dev": true
},
+ "lodash.unescape": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
+ "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
+ "dev": true
+ },
"lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -11003,6 +11103,12 @@
"resolve-from": "^1.0.0"
}
},
+ "requireindex": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz",
+ "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==",
+ "dev": true
+ },
"requires-port": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
@@ -12747,12 +12853,55 @@
"integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
"dev": true
},
+ "ts-loader": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.3.3.tgz",
+ "integrity": "sha512-KwF1SplmOJepnoZ4eRIloH/zXL195F51skt7reEsS6jvDqzgc/YSbz9b8E07GxIUwLXdcD4ssrJu6v8CwaTafA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.0",
+ "enhanced-resolve": "^4.0.0",
+ "loader-utils": "^1.0.2",
+ "micromatch": "^3.1.4",
+ "semver": "^5.0.1"
+ }
+ },
"tslib": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz",
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
"dev": true
},
+ "tslint": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.15.0.tgz",
+ "integrity": "sha512-6bIEujKR21/3nyeoX2uBnE8s+tMXCQXhqMmaIPJpHmXJoBJPTLcI7/VHRtUwMhnLVdwLqqY3zmd8Dxqa5CVdJA==",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.22.0",
+ "builtin-modules": "^1.1.1",
+ "chalk": "^2.3.0",
+ "commander": "^2.12.1",
+ "diff": "^3.2.0",
+ "glob": "^7.1.1",
+ "js-yaml": "^3.13.0",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "resolve": "^1.3.2",
+ "semver": "^5.3.0",
+ "tslib": "^1.8.0",
+ "tsutils": "^2.29.0"
+ }
+ },
+ "tsutils": {
+ "version": "2.29.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
+ "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ }
+ },
"tty-browserify": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
@@ -12799,6 +12948,12 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "typescript": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.2.tgz",
+ "integrity": "sha512-Og2Vn6Mk7JAuWA1hQdDQN/Ekm/SchX80VzLhjKN9ETYrIepBFAd8PkOdOTK2nKt0FCkmMZKBJvQ1dV1gIxPu/A==",
+ "dev": true
+ },
"uglify-js": {
"version": "3.4.10",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
@@ -13235,6 +13390,11 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz",
"integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
},
+ "vue-class-component": {
+ "version": "6.3.2",
+ "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-6.3.2.tgz",
+ "integrity": "sha512-cH208IoM+jgZyEf/g7mnFyofwPDJTM/QvBNhYMjqGB8fCsRyTf68rH2ISw/G20tJv+5mIThQ3upKwoL4jLTr1A=="
+ },
"vue-cli-plugin-electron-builder": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vue-cli-plugin-electron-builder/-/vue-cli-plugin-electron-builder-1.2.0.tgz",
@@ -13336,6 +13496,21 @@
}
}
},
+ "vue-cli-plugin-typescript": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/vue-cli-plugin-typescript/-/vue-cli-plugin-typescript-0.0.1.tgz",
+ "integrity": "sha512-Eocq4g4H1HW9cbl8l6NBFD97rieTte92BWd8sVp8dHpgXao85yf4/iHkEDePWFzcdJZfwFQFerBSLUXfCW9poA==",
+ "dev": true,
+ "requires": {
+ "@types/webpack-env": "^1.13.6",
+ "@vue/cli-shared-utils": "^3.5.1",
+ "fork-ts-checker-webpack-plugin": "^0.5.2",
+ "globby": "^9.0.0",
+ "ts-loader": "^5.3.3",
+ "tslint": "^5.13.0",
+ "webpack": ">=4 < 4.29"
+ }
+ },
"vue-eslint-parser": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
@@ -13393,6 +13568,14 @@
"vue-style-loader": "^4.1.0"
}
},
+ "vue-property-decorator": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-7.3.0.tgz",
+ "integrity": "sha512-HarXfTQ/Nxm4s/APpAaGIGHq5ZzslApImQy8ZrtkfGamw8rUFAVgMS5C50/AQ80+wfw3Wpnf4bNzbmj75m/k2Q==",
+ "requires": {
+ "vue-class-component": "^6.2.0"
+ }
+ },
"vue-style-loader": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",
diff --git a/package.json b/package.json
index 4d481aeb..98875483 100644
--- a/package.json
+++ b/package.json
@@ -21,12 +21,15 @@
"main": "background.js",
"dependencies": {
"core-js": "^2.6.5",
- "vue": "^2.6.6"
+ "vue": "^2.6.6",
+ "vue-class-component": "^6.0.0",
+ "vue-property-decorator": "^7.0.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.5.0",
"@vue/cli-plugin-eslint": "^3.5.0",
"@vue/cli-service": "^3.5.0",
+ "@vue/eslint-config-typescript": "^4.0.0",
"babel-eslint": "^10.0.1",
"csswring": "^7.0.0",
"electron": "^4.0.0",
@@ -36,7 +39,9 @@
"eslint": "^5.8.0",
"eslint-plugin-vue": "^5.0.0",
"postcss-nested": "^4.1.2",
+ "typescript": "^3.2.1",
"vue-cli-plugin-electron-builder": "^1.2.0",
+ "vue-cli-plugin-typescript": "0.0.1",
"vue-template-compiler": "^2.5.21"
},
"eslintConfig": {
@@ -46,11 +51,12 @@
},
"extends": [
"plugin:vue/essential",
- "eslint:recommended"
+ "eslint:recommended",
+ "@vue/typescript"
],
"rules": {},
"parserOptions": {
- "parser": "babel-eslint"
+ "parser": "@typescript-eslint/parser"
}
},
"browserslist": [
diff --git a/src/about/main.js b/src/about/main.ts
similarity index 100%
rename from src/about/main.js
rename to src/about/main.ts
diff --git a/src/background.js b/src/background.ts
similarity index 100%
rename from src/background.js
rename to src/background.ts
diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue
index 879051a2..2a1e1d2e 100644
--- a/src/components/HelloWorld.vue
+++ b/src/components/HelloWorld.vue
@@ -8,8 +8,7 @@
Installed CLI Plugins
Essential Links
@@ -30,12 +29,12 @@
-
diff --git a/src/index/Index.vue b/src/index/Index.vue
index 04064591..b7113570 100644
--- a/src/index/Index.vue
+++ b/src/index/Index.vue
@@ -1,19 +1,20 @@
-
+
-