#48 First types
This commit is contained in:
parent
598f456f1b
commit
43e6cfc8f3
37
package-lock.json
generated
37
package-lock.json
generated
|
@ -1488,12 +1488,37 @@
|
|||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"@types/chrome": {
|
||||
"version": "0.0.127",
|
||||
"resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.127.tgz",
|
||||
"integrity": "sha512-hBB9EApLYKKn2GvklVkTxVP6vZvxsH9okyIRUinNtMzZHIgIKWQk/ESbX+O5g4Bihfy38+aFGn7Kl7Cxou5JUg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/filesystem": "*",
|
||||
"@types/har-format": "*"
|
||||
}
|
||||
},
|
||||
"@types/color-name": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
|
||||
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/filesystem": {
|
||||
"version": "0.0.29",
|
||||
"resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.29.tgz",
|
||||
"integrity": "sha512-85/1KfRedmfPGsbK8YzeaQUyV1FQAvMPMTuWFQ5EkLd2w7szhNO96bk3Rh/SKmOfd9co2rCLf0Voy4o7ECBOvw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/filewriter": "*"
|
||||
}
|
||||
},
|
||||
"@types/filewriter": {
|
||||
"version": "0.0.28",
|
||||
"resolved": "https://registry.npmjs.org/@types/filewriter/-/filewriter-0.0.28.tgz",
|
||||
"integrity": "sha1-wFTor02d11205jq8dviFFocU1LM=",
|
||||
"dev": true
|
||||
},
|
||||
"@types/glob": {
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
|
||||
|
@ -1504,6 +1529,12 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/har-format": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.5.tgz",
|
||||
"integrity": "sha512-IG8AE1m2pWtPqQ7wXhFhy6Q59bwwnLwO36v5Rit2FrbXCIp8Sk8E2PfUCreyrdo17STwFSKDAkitVuVYbpEHvQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/minimatch": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
|
||||
|
@ -13115,6 +13146,12 @@
|
|||
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
|
||||
"dev": true
|
||||
},
|
||||
"web-ext-types": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/web-ext-types/-/web-ext-types-3.2.1.tgz",
|
||||
"integrity": "sha512-oQZYDU3W8X867h8Jmt3129kRVKklz70db40Y6OzoTTuzOJpF/dB2KULJUf0txVPyUUXuyzV8GmT3nVvRHoG+Ew==",
|
||||
"dev": true
|
||||
},
|
||||
"which": {
|
||||
"version": "1.3.1",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
"@babel/plugin-proposal-private-methods": "^7.12.1",
|
||||
"@babel/preset-env": "^7.12.11",
|
||||
"@babel/register": "^7.12.10",
|
||||
"@types/chrome": "0.0.127",
|
||||
"babelify": "^10.0.0",
|
||||
"browserify": "^17.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
|
@ -74,6 +75,7 @@
|
|||
"tsify": "^5.0.2",
|
||||
"typescript": "^4.1.3",
|
||||
"vinyl-buffer": "^1.0.1",
|
||||
"vinyl-source-stream": "^2.0.0"
|
||||
"vinyl-source-stream": "^2.0.0",
|
||||
"web-ext-types": "^3.2.1"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,15 +1,20 @@
|
|||
const { assigned } = require("../utils/helpers")
|
||||
|
||||
class StorageProviderChromium {
|
||||
export interface ICustomBrowserStorageProvider {
|
||||
setData(key: string, value: string): void;
|
||||
getData(key: string, defaultValue: string, callback: (x: string) => void): void;
|
||||
}
|
||||
|
||||
setData(key, value) {
|
||||
class StorageProviderChromium implements ICustomBrowserStorageProvider {
|
||||
|
||||
setData(key: string, value: string): void {
|
||||
let obj = {};
|
||||
obj[key] = value;
|
||||
|
||||
this.getStorage().set(obj);
|
||||
}
|
||||
|
||||
getData(key, defaultValue, callback) {
|
||||
getData(key: string, defaultValue: string, callback: (x: string) => void): void {
|
||||
this.getStorage().get(key, items => {
|
||||
if (assigned(items) && assigned(items[key])) {
|
||||
callback(items[key]);
|
||||
|
@ -20,7 +25,7 @@ class StorageProviderChromium {
|
|||
})
|
||||
}
|
||||
|
||||
getStorage() {
|
||||
private getStorage(): chrome.storage.StorageArea {
|
||||
if (assigned(chrome.storage.sync)) {
|
||||
return chrome.storage.sync;
|
||||
}
|
||||
|
@ -30,21 +35,21 @@ class StorageProviderChromium {
|
|||
}
|
||||
|
||||
|
||||
class StorageProviderFirefox {
|
||||
class StorageProviderFirefox implements ICustomBrowserStorageProvider {
|
||||
|
||||
setData(key, value) {
|
||||
setData(key: string, value: string): void {
|
||||
let obj = {};
|
||||
obj[key] = value;
|
||||
|
||||
this.getStorage().set(obj);
|
||||
}
|
||||
|
||||
getData(key, defaultValue, callback) {
|
||||
getData(key: string, defaultValue: string, callback: (x: string) => void): void {
|
||||
let promise = this.getStorage().get(key);
|
||||
|
||||
promise.then(items => {
|
||||
if (assigned(items) && assigned(items[key])) {
|
||||
callback(items[key]);
|
||||
callback(items[key] as string);
|
||||
}
|
||||
else {
|
||||
callback(defaultValue);
|
||||
|
@ -52,7 +57,7 @@ class StorageProviderFirefox {
|
|||
});
|
||||
}
|
||||
|
||||
getStorage() {
|
||||
private getStorage(): browser.storage.StorageArea {
|
||||
if (assigned(browser.storage.sync)) {
|
||||
return browser.storage.sync;
|
||||
}
|
||||
|
@ -61,11 +66,13 @@ class StorageProviderFirefox {
|
|||
}
|
||||
}
|
||||
|
||||
let __storageProvieder;
|
||||
let __storageProvieder: ICustomBrowserStorageProvider;
|
||||
|
||||
function createStorageProvider() {
|
||||
// chrome based browser
|
||||
if (assigned(chrome?.app)) {
|
||||
// TODO: chrome.app?
|
||||
// if (assigned(chrome?.app)) {
|
||||
if (true) {
|
||||
__storageProvieder = new StorageProviderChromium();
|
||||
}
|
||||
// firefox
|
||||
|
@ -75,7 +82,7 @@ function createStorageProvider() {
|
|||
|
||||
}
|
||||
|
||||
export function getGlobalStorageProvider() {
|
||||
export function getGlobalStorageProvider(): ICustomBrowserStorageProvider {
|
||||
if (!assigned(__storageProvieder)) {
|
||||
createStorageProvider();
|
||||
}
|
||||
|
|
6
tsconfig.json
Normal file
6
tsconfig.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
// You have to explicitly set @types to get DefinitelyTyped type definitions
|
||||
"typeRoots": ["node_modules/@types", "node_modules/web-ext-types"]
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue