#48 First types

This commit is contained in:
Serraniel 2020-12-28 22:08:50 +01:00
parent 598f456f1b
commit 43e6cfc8f3
Signed by: Serraniel
GPG key ID: 3690B4E7364525D3
4 changed files with 65 additions and 13 deletions

37
package-lock.json generated
View file

@ -1488,12 +1488,37 @@
"dev": true, "dev": true,
"optional": 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": { "@types/color-name": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
"dev": true "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": { "@types/glob": {
"version": "7.1.3", "version": "7.1.3",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
@ -1504,6 +1529,12 @@
"@types/node": "*" "@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": { "@types/minimatch": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
@ -13115,6 +13146,12 @@
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
"dev": true "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": { "which": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",

View file

@ -44,6 +44,7 @@
"@babel/plugin-proposal-private-methods": "^7.12.1", "@babel/plugin-proposal-private-methods": "^7.12.1",
"@babel/preset-env": "^7.12.11", "@babel/preset-env": "^7.12.11",
"@babel/register": "^7.12.10", "@babel/register": "^7.12.10",
"@types/chrome": "0.0.127",
"babelify": "^10.0.0", "babelify": "^10.0.0",
"browserify": "^17.0.0", "browserify": "^17.0.0",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
@ -74,6 +75,7 @@
"tsify": "^5.0.2", "tsify": "^5.0.2",
"typescript": "^4.1.3", "typescript": "^4.1.3",
"vinyl-buffer": "^1.0.1", "vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0" "vinyl-source-stream": "^2.0.0",
"web-ext-types": "^3.2.1"
} }
} }

View file

@ -1,15 +1,20 @@
const { assigned } = require("../utils/helpers") 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 = {}; let obj = {};
obj[key] = value; obj[key] = value;
this.getStorage().set(obj); this.getStorage().set(obj);
} }
getData(key, defaultValue, callback) { getData(key: string, defaultValue: string, callback: (x: string) => void): void {
this.getStorage().get(key, items => { this.getStorage().get(key, items => {
if (assigned(items) && assigned(items[key])) { if (assigned(items) && assigned(items[key])) {
callback(items[key]); callback(items[key]);
@ -20,7 +25,7 @@ class StorageProviderChromium {
}) })
} }
getStorage() { private getStorage(): chrome.storage.StorageArea {
if (assigned(chrome.storage.sync)) { if (assigned(chrome.storage.sync)) {
return 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 = {}; let obj = {};
obj[key] = value; obj[key] = value;
this.getStorage().set(obj); this.getStorage().set(obj);
} }
getData(key, defaultValue, callback) { getData(key: string, defaultValue: string, callback: (x: string) => void): void {
let promise = this.getStorage().get(key); let promise = this.getStorage().get(key);
promise.then(items => { promise.then(items => {
if (assigned(items) && assigned(items[key])) { if (assigned(items) && assigned(items[key])) {
callback(items[key]); callback(items[key] as string);
} }
else { else {
callback(defaultValue); callback(defaultValue);
@ -52,7 +57,7 @@ class StorageProviderFirefox {
}); });
} }
getStorage() { private getStorage(): browser.storage.StorageArea {
if (assigned(browser.storage.sync)) { if (assigned(browser.storage.sync)) {
return browser.storage.sync; return browser.storage.sync;
} }
@ -61,11 +66,13 @@ class StorageProviderFirefox {
} }
} }
let __storageProvieder; let __storageProvieder: ICustomBrowserStorageProvider;
function createStorageProvider() { function createStorageProvider() {
// chrome based browser // chrome based browser
if (assigned(chrome?.app)) { // TODO: chrome.app?
// if (assigned(chrome?.app)) {
if (true) {
__storageProvieder = new StorageProviderChromium(); __storageProvieder = new StorageProviderChromium();
} }
// firefox // firefox
@ -75,7 +82,7 @@ function createStorageProvider() {
} }
export function getGlobalStorageProvider() { export function getGlobalStorageProvider(): ICustomBrowserStorageProvider {
if (!assigned(__storageProvieder)) { if (!assigned(__storageProvieder)) {
createStorageProvider(); createStorageProvider();
} }

6
tsconfig.json Normal file
View 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"]
}
}