refs #4191 Use better-sqlite3 instead of node-sqlite3
This commit is contained in:
parent
6b17a25a52
commit
a6a28e52c6
@ -119,6 +119,10 @@ $ sudo apt-get install libfontconfig-dev
|
||||
# install dependencies
|
||||
$ yarn install
|
||||
|
||||
# You need to rebuild because of better-sqlite3
|
||||
# Refs: https://github.com/WiseLibs/better-sqlite3/issues/919
|
||||
$ ./node_modules/.bin/electron-rebuild
|
||||
|
||||
# serve with hot reload at localhost:9080
|
||||
$ yarn run dev
|
||||
```
|
||||
|
@ -82,6 +82,7 @@
|
||||
"animate.css": "^4.1.0",
|
||||
"auto-launch": "^5.0.5",
|
||||
"axios": "1.3.4",
|
||||
"better-sqlite3": "^8.2.0",
|
||||
"blueimp-load-image": "^5.16.0",
|
||||
"electron-context-menu": "^3.6.1",
|
||||
"electron-json-storage": "^4.6.0",
|
||||
@ -99,7 +100,6 @@
|
||||
"parse-link-header": "^2.0.0",
|
||||
"sanitize-html": "^2.10.0",
|
||||
"simplayer": "0.0.8",
|
||||
"sqlite3": "^5.1.4",
|
||||
"system-font-families": "^0.6.0",
|
||||
"unicode-emoji-json": "^0.4.0",
|
||||
"vue": "^3.2.47",
|
||||
@ -120,7 +120,9 @@
|
||||
"@babel/preset-env": "^7.20.2",
|
||||
"@babel/register": "^7.21.0",
|
||||
"@babel/runtime": "7.21.0",
|
||||
"@electron/rebuild": "^3.2.10",
|
||||
"@types/auto-launch": "^5.0.2",
|
||||
"@types/better-sqlite3": "^7.6.3",
|
||||
"@types/electron-json-storage": "^4.5.0",
|
||||
"@types/jest": "27.4.1",
|
||||
"@types/jsdom": "^21.1.0",
|
||||
|
@ -1,11 +1,10 @@
|
||||
import sqlite3 from 'sqlite3'
|
||||
import sqlite, { Database } from 'better-sqlite3'
|
||||
|
||||
const newDB = (file: string): sqlite3.Database => {
|
||||
const db = new sqlite3.Database(file, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE)
|
||||
const newDB = (file: string): Database => {
|
||||
const db = new sqlite(file)
|
||||
|
||||
// migration
|
||||
db.serialize(() => {
|
||||
db.run(
|
||||
db.prepare(
|
||||
'CREATE TABLE IF NOT EXISTS accounts(\
|
||||
id INTEGER PRIMARY KEY, \
|
||||
username TEXT NOT NULL, \
|
||||
@ -15,53 +14,33 @@ client_id TEXT DEFAULT NULL, \
|
||||
client_secret TEXT NOT NULL, \
|
||||
access_token TEXT NOT NULL, \
|
||||
refresh_token TEXT DEFAULT NULL, \
|
||||
sort INTEGER UNIQUE NOT NULL)',
|
||||
err => {
|
||||
if (err) {
|
||||
console.error('failed to create accounts: ', err)
|
||||
}
|
||||
}
|
||||
)
|
||||
db.run(
|
||||
sort INTEGER UNIQUE NOT NULL)'
|
||||
).run()
|
||||
|
||||
db.prepare(
|
||||
'CREATE TABLE IF NOT EXISTS servers(\
|
||||
id INTEGER PRIMARY KEY, \
|
||||
domain TEXT NOT NULL, \
|
||||
base_url TEXT NOT NULL, \
|
||||
sns TEXT NOT NULL, \
|
||||
account_id INTEGER UNIQUE DEFAULT NULL, \
|
||||
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE)',
|
||||
err => {
|
||||
if (err) {
|
||||
console.error('failed to create servers: ', err)
|
||||
}
|
||||
}
|
||||
)
|
||||
db.run(
|
||||
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE)'
|
||||
).run()
|
||||
db.prepare(
|
||||
'CREATE TABLE IF NOT EXISTS hashtags(\
|
||||
id INTEGER PRIMARY KEY, \
|
||||
tag TEXT NOT NULL, \
|
||||
account_id INTEGER UNIQUE NOT NULL, \
|
||||
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE)',
|
||||
err => {
|
||||
if (err) {
|
||||
console.error('failed to create hashtags: ', err)
|
||||
}
|
||||
}
|
||||
)
|
||||
db.run(
|
||||
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE)'
|
||||
).run
|
||||
db.prepare(
|
||||
'CREATE TABLE IF NOT EXISTS settings(\
|
||||
id INTEGER PRIMARY KEY, \
|
||||
account_id INTEGER UNIQUE NOT NULL, \
|
||||
marker_home BOOLEAN NOT NULL DEFAULT false, \
|
||||
marker_notifications BOOLEAN NOT NULL DEFAULT true, \
|
||||
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE)',
|
||||
err => {
|
||||
if (err) {
|
||||
console.error('failed to create settings: ', err)
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
FOREIGN KEY (account_id) REFERENCES accounts(id) ON DELETE CASCADE)'
|
||||
).run()
|
||||
|
||||
return db
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
import sqlite3 from 'sqlite3'
|
||||
import { Database } from 'better-sqlite3'
|
||||
import { LocalAccount } from '~/src/types/localAccount'
|
||||
import { LocalServer } from '~src/types/localServer'
|
||||
|
||||
export const insertAccount = (
|
||||
db: sqlite3.Database,
|
||||
db: Database,
|
||||
username: string,
|
||||
accountId: string,
|
||||
avatar: string,
|
||||
@ -14,33 +14,21 @@ export const insertAccount = (
|
||||
serverId: number
|
||||
): Promise<LocalAccount> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('BEGIN TRANSACTION')
|
||||
|
||||
db.get('SELECT * FROM accounts ORDER BY sort DESC', (err, row) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
const f = db.transaction(() => {
|
||||
const row = db.prepare('SELECT * FROM accounts ORDER BY sort DESC').get()
|
||||
let order = 1
|
||||
if (row) {
|
||||
order = row.sort + 1
|
||||
}
|
||||
db.run(
|
||||
'INSERT INTO accounts(username, account_id, avatar, client_id, client_secret, access_token, refresh_token, sort) VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
|
||||
[username, accountId, avatar, clientId, clientSecret, accessToken, refreshToken, order],
|
||||
function (err) {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
const id = this.lastID
|
||||
|
||||
db.run('UPDATE servers SET account_id = ? WHERE id = ?', [id, serverId], err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
|
||||
db.run('COMMIT')
|
||||
resolve({
|
||||
try {
|
||||
const res = db
|
||||
.prepare(
|
||||
'INSERT INTO accounts(username, account_id, avatar, client_id, client_secret, access_token, refresh_token, sort) VALUES (?, ?, ?, ?, ?, ?, ?, ?)'
|
||||
)
|
||||
.run(username, accountId, avatar, clientId, clientSecret, accessToken, refreshToken, order)
|
||||
const id = res.lastInsertRowid as number
|
||||
db.prepare('UPDATE servers SET account_id = ? WHERE id = ?').run(id, serverId)
|
||||
return resolve({
|
||||
id,
|
||||
username,
|
||||
accountId,
|
||||
@ -51,20 +39,21 @@ export const insertAccount = (
|
||||
refreshToken,
|
||||
order
|
||||
})
|
||||
})
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
}
|
||||
)
|
||||
})
|
||||
})
|
||||
f()
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* List up authenticated accounts.
|
||||
*/
|
||||
export const listAccounts = (db: sqlite3.Database): Promise<Array<[LocalAccount, LocalServer]>> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.all(
|
||||
export const listAccounts = (db: Database): Promise<Array<[LocalAccount, LocalServer]>> => {
|
||||
return new Promise(resolve => {
|
||||
const rows = db
|
||||
.prepare(
|
||||
'SELECT \
|
||||
accounts.id as id, \
|
||||
accounts.username as username, \
|
||||
@ -80,11 +69,10 @@ servers.base_url as base_url, \
|
||||
servers.domain as domain, \
|
||||
servers.sns as sns, \
|
||||
servers.account_id as account_id \
|
||||
FROM accounts INNER JOIN servers ON servers.account_id = accounts.id ORDER BY accounts.sort',
|
||||
(err, rows) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
FROM accounts INNER JOIN servers ON servers.account_id = accounts.id ORDER BY accounts.sort'
|
||||
)
|
||||
.all()
|
||||
|
||||
resolve(
|
||||
rows.map(r => [
|
||||
{
|
||||
@ -107,14 +95,13 @@ FROM accounts INNER JOIN servers ON servers.account_id = accounts.id ORDER BY ac
|
||||
} as LocalServer
|
||||
])
|
||||
)
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
export const getAccount = (db: sqlite3.Database, id: number): Promise<[LocalAccount, LocalServer]> => {
|
||||
export const getAccount = (db: Database, id: number): Promise<[LocalAccount, LocalServer]> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get(
|
||||
const row = db
|
||||
.prepare(
|
||||
'SELECT \
|
||||
accounts.id as id, \
|
||||
accounts.username as username, \
|
||||
@ -130,163 +117,111 @@ servers.base_url as base_url, \
|
||||
servers.domain as domain, \
|
||||
servers.sns as sns, \
|
||||
servers.account_id as account_id \
|
||||
FROM accounts INNER JOIN servers ON servers.account_id = accounts.id WHERE accounts.id = ?',
|
||||
id,
|
||||
(err, r) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
FROM accounts INNER JOIN servers ON servers.account_id = accounts.id WHERE accounts.id = ?'
|
||||
)
|
||||
.get(id)
|
||||
if (row) {
|
||||
resolve([
|
||||
{
|
||||
id: r.id,
|
||||
username: r.username,
|
||||
accountId: r.remote_account_id,
|
||||
avatar: r.avatar,
|
||||
clientId: r.client_id,
|
||||
clientSecret: r.client_secret,
|
||||
accessToken: r.access_token,
|
||||
refreshToken: r.refresh_token,
|
||||
order: r.sort
|
||||
id: row.id,
|
||||
username: row.username,
|
||||
accountId: row.remote_account_id,
|
||||
avatar: row.avatar,
|
||||
clientId: row.client_id,
|
||||
clientSecret: row.client_secret,
|
||||
accessToken: row.access_token,
|
||||
refreshToken: row.refresh_token,
|
||||
order: row.sort
|
||||
} as LocalAccount,
|
||||
{
|
||||
id: r.server_id,
|
||||
baseURL: r.base_url,
|
||||
domain: r.domain,
|
||||
sns: r.sns,
|
||||
accountId: r.account_id
|
||||
id: row.server_id,
|
||||
baseURL: row.base_url,
|
||||
domain: row.domain,
|
||||
sns: row.sns,
|
||||
accountId: row.account_id
|
||||
} as LocalServer
|
||||
])
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
export const removeAccount = (db: sqlite3.Database, id: number): Promise<null> => {
|
||||
export const removeAccount = (db: Database, id: number): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('PRAGMA foreign_keys = ON')
|
||||
db.prepare('PRAGMA foreign_keys = ON').run()
|
||||
|
||||
db.run('DELETE FROM accounts WHERE id = ?', id, err => {
|
||||
if (err) {
|
||||
try {
|
||||
db.prepare('DELETE FROM accounts WHERE id = ?').run(id), resolve(null)
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
}
|
||||
resolve(null)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const removeAllAccounts = (db: sqlite3.Database): Promise<null> => {
|
||||
export const removeAllAccounts = (db: Database): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('PRAGMA foreign_keys = ON')
|
||||
db.prepare('PRAGMA foreign_keys = ON').run()
|
||||
|
||||
db.run('DELETE FROM accounts', err => {
|
||||
if (err) {
|
||||
try {
|
||||
db.prepare('DELETE FROM accounts').run()
|
||||
resolve(null)
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
}
|
||||
resolve(null)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const forwardAccount = (db: sqlite3.Database, id: number): Promise<null> => {
|
||||
export const forwardAccount = (db: Database, id: number): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('BEGIN TRANSACTION')
|
||||
|
||||
db.all('SELECT * FROM accounts ORDER BY sort', (err, rows) => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
const f = db.transaction(() => {
|
||||
const rows = db.prepare('SELECT * FROM accounts ORDER BY sort').all()
|
||||
|
||||
const index = rows.findIndex(r => r.id === id)
|
||||
if (index < 0 || index >= rows.length - 1) {
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
db.prepare('ROLLBACK TRANSACTION').run()
|
||||
return resolve(null)
|
||||
}
|
||||
const target = rows[index + 1]
|
||||
const base = rows[index]
|
||||
|
||||
db.serialize(() => {
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [-100, base.id], err => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [base.sort, target.id], err => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [target.sort, base.id], err => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
db.run('COMMIT')
|
||||
try {
|
||||
db.prepare('UPDATE accounts SET sort = ? WHERE id = ?').run(-100, base.id)
|
||||
db.prepare('UPDATE accounts SET sort = ? WHERE id = ?').run(base.sort, target.id)
|
||||
db.prepare('UPDATE accounts SET sort = ? WHERE id = ?').run(target.sort, base.id)
|
||||
return resolve(null)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
f()
|
||||
})
|
||||
}
|
||||
|
||||
export const backwardAccount = (db: sqlite3.Database, id: number): Promise<null> => {
|
||||
export const backwardAccount = (db: Database, id: number): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('BEGIN TRANSACTION')
|
||||
|
||||
db.all('SELECT * FROM accounts ORDER BY sort', (err, rows) => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
const f = db.transaction(() => {
|
||||
const rows = db.prepare('SELECT * FROM accounts ORDER BY sort').all()
|
||||
|
||||
const index = rows.findIndex(r => r.id === id)
|
||||
if (index < 1) {
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
db.prepare('ROLLBACK TRANSACTION').run()
|
||||
return resolve(null)
|
||||
}
|
||||
const target = rows[index - 1]
|
||||
const base = rows[index]
|
||||
|
||||
db.serialize(() => {
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [-100, base.id], err => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [base.sort, target.id], err => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
db.run('UPDATE accounts SET sort = ? WHERE id = ?', [target.sort, base.id], err => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
db.run('ROLLBACK TRANSACTION')
|
||||
return reject(err)
|
||||
}
|
||||
db.run('COMMIT')
|
||||
try {
|
||||
db.prepare('UPDATE accounts SET sort = ? WHERE id = ?').run(-100, base.id)
|
||||
db.prepare('UPDATE accounts SET sort = ? WHERE id = ?').run(base.sort, target.id)
|
||||
db.prepare('UPDATE accounts SET sort = ? WHERE id = ?').run(target.sort, base.id)
|
||||
return resolve(null)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
return reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
f()
|
||||
})
|
||||
}
|
||||
|
@ -1,12 +1,10 @@
|
||||
import sqlite3 from 'sqlite3'
|
||||
import { Database } from 'better-sqlite3'
|
||||
import { LocalTag } from '~/src/types/localTag'
|
||||
|
||||
export const listTags = (db: sqlite3.Database, accountId: number): Promise<Array<LocalTag>> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.all('SELECT * FROM hashtags WHERE account_id = ?', accountId, (err, rows) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
export const listTags = (db: Database, accountId: number): Promise<Array<LocalTag>> => {
|
||||
return new Promise(resolve => {
|
||||
const rows = db.prepare('SELECT * FROM hashtags WHERE account_id = ?').all(accountId)
|
||||
|
||||
resolve(
|
||||
rows.map(r => ({
|
||||
id: r.id,
|
||||
@ -15,18 +13,13 @@ export const listTags = (db: sqlite3.Database, accountId: number): Promise<Array
|
||||
}))
|
||||
)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const insertTag = (db: sqlite3.Database, accountId: number, tag: string): Promise<LocalTag> => {
|
||||
export const insertTag = (db: Database, accountId: number, tag: string): Promise<LocalTag> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('BEGIN TRANSACTION')
|
||||
const f = db.transaction(() => {
|
||||
const row = db.prepare('SELECT * FROM hashtags WHERE id = ? AND tag = ?').get(accountId, tag)
|
||||
|
||||
db.get('SELECT * FROM hashtags WHERE id = ? AND tag = ?', [accountId, tag], (err, row) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
if (row) {
|
||||
resolve({
|
||||
id: row.id,
|
||||
@ -35,33 +28,32 @@ export const insertTag = (db: sqlite3.Database, accountId: number, tag: string):
|
||||
})
|
||||
}
|
||||
|
||||
db.run('INSERT INTO hashtags(tag, account_id) VALUES (?, ?)', [accountId, tag], function (err) {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
db.run('COMMIT')
|
||||
resolve({
|
||||
id: this.lastID,
|
||||
try {
|
||||
const res = db.prepare('INSERT INTO hashtags(tag, account_id) VALUES (?, ?)').run(accountId, tag)
|
||||
return resolve({
|
||||
id: res.lastInsertRowid as number,
|
||||
tagName: tag,
|
||||
accountId: accountId
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const removeTag = (db: sqlite3.Database, tag: LocalTag): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('PRAGMA foreign_keys = ON')
|
||||
|
||||
db.run('DELETE FROM hashtags WHERE id = ?', tag.id, err => {
|
||||
if (err) {
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
reject(err)
|
||||
}
|
||||
resolve(null)
|
||||
})
|
||||
})
|
||||
f()
|
||||
})
|
||||
}
|
||||
|
||||
export const removeTag = (db: Database, tag: LocalTag): Promise<null> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.prepare('PRAGMA foreign_keys = ON').run()
|
||||
|
||||
try {
|
||||
db.prepare('DELETE FROM hashtags WHERE id = ?').run(tag.id)
|
||||
resolve(null)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -1,44 +1,44 @@
|
||||
import sqlite3 from 'sqlite3'
|
||||
import { Database } from 'better-sqlite3'
|
||||
import { LocalServer } from '~/src/types/localServer'
|
||||
|
||||
export const insertServer = (
|
||||
db: sqlite3.Database,
|
||||
db: Database,
|
||||
baseURL: string,
|
||||
domain: string,
|
||||
sns: 'mastodon' | 'pleroma' | 'misskey',
|
||||
accountId: number | null
|
||||
): Promise<LocalServer> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.serialize(() => {
|
||||
db.run('INSERT INTO servers(domain, base_url, sns, account_id) values (?, ?, ?, ?)', [domain, baseURL, sns, accountId], function (
|
||||
err
|
||||
) {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
try {
|
||||
const res = db
|
||||
.prepare('INSERT INTO servers(domain, base_url, sns, account_id) values (?, ?, ?, ?)')
|
||||
.run(domain, baseURL, sns, accountId)
|
||||
resolve({
|
||||
id: this.lastID,
|
||||
id: res.lastInsertRowid as number,
|
||||
baseURL,
|
||||
domain,
|
||||
sns,
|
||||
accountId
|
||||
})
|
||||
})
|
||||
})
|
||||
} catch (err) {
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const getServer = (db: sqlite3.Database, id: number): Promise<LocalServer> => {
|
||||
export const getServer = (db: Database, id: number): Promise<LocalServer> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get('SELECT id, base_url, domain, sns, account_id FROM servers WHERE id = ?', id, (err, r) => {
|
||||
if (err) reject(err)
|
||||
const row = db.prepare('SELECT id, base_url, domain, sns, account_id FROM servers WHERE id = ?').get(id)
|
||||
if (row) {
|
||||
resolve({
|
||||
id: r.id,
|
||||
baseURL: r.base_url,
|
||||
domain: r.domain,
|
||||
sns: r.sns,
|
||||
accountId: r.account_id
|
||||
id: row.id,
|
||||
baseURL: row.base_url,
|
||||
domain: row.domain,
|
||||
sns: row.sns,
|
||||
accountId: row.account_id
|
||||
} as LocalServer)
|
||||
})
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -1,15 +1,12 @@
|
||||
import sqlite3 from 'sqlite3'
|
||||
import { Database } from 'better-sqlite3'
|
||||
import { Setting } from '~/src/types/setting'
|
||||
import { DefaultSetting } from '~/src/constants/initializer/setting'
|
||||
|
||||
export const getSetting = (db: sqlite3.Database, accountId: number): Promise<Setting> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get('SELECT * FROM settings WHERE account_id = ?', accountId, (err, row) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
export const getSetting = (db: Database, accountId: number): Promise<Setting> => {
|
||||
return new Promise(resolve => {
|
||||
const row = db.prepare('SELECT * FROM settings WHERE account_id = ?').get(accountId)
|
||||
if (row) {
|
||||
resolve({
|
||||
return resolve({
|
||||
accountId: row.account_id,
|
||||
markerHome: Boolean(row.marker_home),
|
||||
markerNotifications: Boolean(row.marker_notifications)
|
||||
@ -17,39 +14,35 @@ export const getSetting = (db: sqlite3.Database, accountId: number): Promise<Set
|
||||
}
|
||||
resolve(DefaultSetting)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export const createOrUpdateSetting = (db: sqlite3.Database, setting: Setting): Promise<Setting> => {
|
||||
export const createOrUpdateSetting = (db: Database, setting: Setting): Promise<Setting> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
db.get('SELECT * FROM settings WHERE account_id = ?', setting.accountId, (err, row) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
const row = db.prepare('SELECT * FROM settings WHERE account_id = ?').get(setting.accountId)
|
||||
if (row) {
|
||||
db.run(
|
||||
'UPDATE settings SET marker_home = ?, marker_notifications = ? WHERE account_id = ?',
|
||||
[setting.markerHome, setting.markerNotifications, setting.accountId],
|
||||
err => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
resolve(setting)
|
||||
}
|
||||
try {
|
||||
db.prepare('UPDATE settings SET marker_home = ?, marker_notifications = ? WHERE account_id = ?').run(
|
||||
setting.markerHome,
|
||||
setting.markerNotifications,
|
||||
setting.accountId
|
||||
)
|
||||
resolve(setting)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
reject(err)
|
||||
}
|
||||
} else {
|
||||
db.run(
|
||||
'INSERT INTO settings(account_id, marker_home, marker_notifications) VALUES (?, ?, ?)',
|
||||
[setting.accountId, setting.markerHome, setting.markerNotifications],
|
||||
function (err) {
|
||||
if (err) {
|
||||
try {
|
||||
db.prepare('INSERT INTO settings(account_id, marker_home, marker_notifications) VALUES (?, ?, ?)').run(
|
||||
setting.accountId,
|
||||
setting.markerHome,
|
||||
setting.markerNotifications
|
||||
)
|
||||
resolve(setting)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
reject(err)
|
||||
}
|
||||
resolve(setting)
|
||||
}
|
||||
)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
257
yarn.lock
257
yarn.lock
@ -1482,21 +1482,6 @@
|
||||
lodash "^4.17.15"
|
||||
tmp-promise "^3.0.2"
|
||||
|
||||
"@mapbox/node-pre-gyp@^1.0.0":
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz#8e6735ccebbb1581e5a7e652244cadc8a844d03c"
|
||||
integrity sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==
|
||||
dependencies:
|
||||
detect-libc "^2.0.0"
|
||||
https-proxy-agent "^5.0.0"
|
||||
make-dir "^3.1.0"
|
||||
node-fetch "^2.6.7"
|
||||
nopt "^5.0.0"
|
||||
npmlog "^5.0.1"
|
||||
rimraf "^3.0.2"
|
||||
semver "^7.3.5"
|
||||
tar "^6.1.11"
|
||||
|
||||
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
|
||||
version "5.1.1-v1"
|
||||
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
|
||||
@ -1665,6 +1650,13 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.3.0"
|
||||
|
||||
"@types/better-sqlite3@^7.6.3":
|
||||
version "7.6.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.3.tgz#117c3c182e300799b84d1b7e1781c27d8d536505"
|
||||
integrity sha512-YS64N9SNDT/NAvou3QNdzAu3E2om/W/0dhORimtPGLef+zSK5l1vDzfsWb4xgXOgfhtOI5ZDTRxnvRPb22AIVQ==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/body-parser@*":
|
||||
version "1.19.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
|
||||
@ -2728,14 +2720,6 @@ applescript@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc"
|
||||
integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==
|
||||
|
||||
are-we-there-yet@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c"
|
||||
integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==
|
||||
dependencies:
|
||||
delegates "^1.0.0"
|
||||
readable-stream "^3.6.0"
|
||||
|
||||
are-we-there-yet@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd"
|
||||
@ -3091,6 +3075,14 @@ batch@0.6.1:
|
||||
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
|
||||
integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
|
||||
|
||||
better-sqlite3@^8.2.0:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.2.0.tgz#4ef6185b88992723de7e00cfa67585ac59f320bd"
|
||||
integrity sha512-8eTzxGk9535SB3oSNu0tQ6I4ZffjVCBUjKHN9QeeIFtphBX0sEd0NxAuglBNR9TO5ThnxBB7GqzfcYo9kjadJQ==
|
||||
dependencies:
|
||||
bindings "^1.5.0"
|
||||
prebuild-install "^7.1.0"
|
||||
|
||||
big.js@^5.2.2:
|
||||
version "5.2.2"
|
||||
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
|
||||
@ -3101,7 +3093,14 @@ binary-extensions@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||
|
||||
bl@^4.1.0:
|
||||
bindings@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
|
||||
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
|
||||
dependencies:
|
||||
file-uri-to-path "1.0.0"
|
||||
|
||||
bl@^4.0.3, bl@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
|
||||
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
||||
@ -3649,6 +3648,11 @@ chokidar@^3.5.3:
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
chownr@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||
|
||||
chownr@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
|
||||
@ -3863,7 +3867,7 @@ color-name@~1.1.4:
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
color-support@^1.1.2, color-support@^1.1.3:
|
||||
color-support@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
|
||||
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
|
||||
@ -3980,7 +3984,7 @@ connect-history-api-fallback@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
|
||||
integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==
|
||||
|
||||
console-control-strings@^1.0.0, console-control-strings@^1.1.0:
|
||||
console-control-strings@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
|
||||
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
|
||||
@ -4316,6 +4320,11 @@ decompress-response@^6.0.0:
|
||||
dependencies:
|
||||
mimic-response "^3.1.0"
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
deep-is@^0.1.3, deep-is@~0.1.3:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
|
||||
@ -4880,7 +4889,7 @@ encoding@^0.1.12, encoding@^0.1.13:
|
||||
dependencies:
|
||||
iconv-lite "^0.6.2"
|
||||
|
||||
end-of-stream@^1.1.0:
|
||||
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
||||
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
||||
@ -5282,6 +5291,11 @@ expand-brackets@^2.1.4:
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
||||
|
||||
expect@^26.6.2:
|
||||
version "26.6.2"
|
||||
resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417"
|
||||
@ -5511,6 +5525,11 @@ file-type@^10.11.0:
|
||||
resolved "https://registry.yarnpkg.com/file-type/-/file-type-10.11.0.tgz#2961d09e4675b9fb9a3ee6b69e9cd23f43fd1890"
|
||||
integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==
|
||||
|
||||
file-uri-to-path@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
||||
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
|
||||
|
||||
filelist@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
|
||||
@ -5654,6 +5673,11 @@ fresh@0.5.2:
|
||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||
|
||||
fs-extra@^10.0.0, fs-extra@^10.1.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
|
||||
@ -5718,21 +5742,6 @@ function-bind@^1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
gauge@^3.0.0:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395"
|
||||
integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==
|
||||
dependencies:
|
||||
aproba "^1.0.3 || ^2.0.0"
|
||||
color-support "^1.1.2"
|
||||
console-control-strings "^1.0.0"
|
||||
has-unicode "^2.0.1"
|
||||
object-assign "^4.1.1"
|
||||
signal-exit "^3.0.0"
|
||||
string-width "^4.2.3"
|
||||
strip-ansi "^6.0.1"
|
||||
wide-align "^1.1.2"
|
||||
|
||||
gauge@^4.0.3:
|
||||
version "4.0.4"
|
||||
resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce"
|
||||
@ -5807,6 +5816,11 @@ get-value@^2.0.3, get-value@^2.0.6:
|
||||
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
||||
integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
|
||||
|
||||
github-from-package@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
|
||||
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
|
||||
|
||||
glob-parent@^5.1.2, glob-parent@~5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||
@ -6497,7 +6511,7 @@ inherits@2.0.3:
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
|
||||
|
||||
ini@^1.3.4, ini@^1.3.5:
|
||||
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
@ -7912,7 +7926,7 @@ make-dir@^2.0.0, make-dir@^2.1.0:
|
||||
pify "^4.0.1"
|
||||
semver "^5.6.0"
|
||||
|
||||
make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
|
||||
make-dir@^3.0.0, make-dir@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
|
||||
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
|
||||
@ -8235,7 +8249,7 @@ minimist-options@4.1.0:
|
||||
is-plain-obj "^1.1.0"
|
||||
kind-of "^6.0.3"
|
||||
|
||||
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8:
|
||||
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6, minimist@^1.2.8:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
@ -8328,6 +8342,11 @@ mixin-deep@^1.2.0:
|
||||
for-in "^1.0.2"
|
||||
is-extendable "^1.0.1"
|
||||
|
||||
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
@ -8417,6 +8436,11 @@ nanomatch@^1.2.9:
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
napi-build-utils@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
|
||||
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
|
||||
|
||||
natural-compare-lite@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4"
|
||||
@ -8469,7 +8493,7 @@ no-case@^3.0.4:
|
||||
lower-case "^2.0.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
node-abi@^3.0.0:
|
||||
node-abi@^3.0.0, node-abi@^3.3.0:
|
||||
version "3.33.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.33.0.tgz#8b23a0cec84e1c5f5411836de6a9b84bccf26e7f"
|
||||
integrity sha512-7GGVawqyHF4pfd0YFybhv/eM9JwTtPqx0mAanQ146O3FlSh3pA24zf9IRQTOsfTSqXTNzPSP5iagAJ94jjuVog==
|
||||
@ -8486,11 +8510,6 @@ node-addon-api@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
|
||||
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
|
||||
|
||||
node-addon-api@^4.2.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f"
|
||||
integrity sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==
|
||||
|
||||
node-api-version@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/node-api-version/-/node-api-version-0.1.4.tgz#1ed46a485e462d55d66b5aa1fe2821720dedf080"
|
||||
@ -8498,13 +8517,6 @@ node-api-version@^0.1.4:
|
||||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
node-fetch@^2.6.7:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6"
|
||||
integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==
|
||||
dependencies:
|
||||
whatwg-url "^5.0.0"
|
||||
|
||||
node-forge@^1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
|
||||
@ -8515,7 +8527,7 @@ node-gyp-build@^4.2.1, node-gyp-build@^4.3.0:
|
||||
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
|
||||
integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
|
||||
|
||||
node-gyp@8.x, node-gyp@^8.4.1:
|
||||
node-gyp@^8.4.1:
|
||||
version "8.4.1"
|
||||
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937"
|
||||
integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==
|
||||
@ -8679,16 +8691,6 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1:
|
||||
dependencies:
|
||||
path-key "^3.0.0"
|
||||
|
||||
npmlog@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0"
|
||||
integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==
|
||||
dependencies:
|
||||
are-we-there-yet "^2.0.0"
|
||||
console-control-strings "^1.1.0"
|
||||
gauge "^3.0.0"
|
||||
set-blocking "^2.0.0"
|
||||
|
||||
npmlog@^6.0.0:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830"
|
||||
@ -8726,7 +8728,7 @@ object-assign-deep@^0.4.0:
|
||||
resolved "https://registry.yarnpkg.com/object-assign-deep/-/object-assign-deep-0.4.0.tgz#43505d3679abb9686ab359b97ac14cc837a9d143"
|
||||
integrity sha512-54Uvn3s+4A/cMWx9tlRez1qtc7pN7pbQ+Yi7mjLjcBpWLlP+XbSHiHbQW6CElDiV4OvuzqnMrBdkgxI1mT8V/Q==
|
||||
|
||||
object-assign@^4.1.0, object-assign@^4.1.1:
|
||||
object-assign@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
|
||||
@ -9256,6 +9258,24 @@ postcss@^8.1.10, postcss@^8.3.11, postcss@^8.4.0, postcss@^8.4.19, postcss@^8.4.
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
prebuild-install@^7.1.0:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
|
||||
integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==
|
||||
dependencies:
|
||||
detect-libc "^2.0.0"
|
||||
expand-template "^2.0.3"
|
||||
github-from-package "0.0.0"
|
||||
minimist "^1.2.3"
|
||||
mkdirp-classic "^0.5.3"
|
||||
napi-build-utils "^1.0.1"
|
||||
node-abi "^3.3.0"
|
||||
pump "^3.0.0"
|
||||
rc "^1.2.7"
|
||||
simple-get "^4.0.0"
|
||||
tar-fs "^2.0.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
@ -9473,6 +9493,16 @@ raw-body@2.5.1:
|
||||
iconv-lite "0.4.24"
|
||||
unpipe "1.0.0"
|
||||
|
||||
rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-is@^17.0.1:
|
||||
version "17.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
|
||||
@ -9539,6 +9569,15 @@ readable-stream@^3.0.6, readable-stream@^3.5.0, readable-stream@^3.6.0:
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readable-stream@^3.1.1:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
|
||||
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readable-stream@^3.4.0:
|
||||
version "3.6.1"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62"
|
||||
@ -10164,6 +10203,20 @@ simplayer@0.0.8:
|
||||
resolved "https://registry.yarnpkg.com/simplayer/-/simplayer-0.0.8.tgz#f20ceb233166ac7f382745666d23f3c48792c3c8"
|
||||
integrity sha512-QiJXJho7PZ0MQ4ZBr6GEclTDn91U0s07rb+jUcv8LQ5MGNXZ4Jt2V+hiPC6wVBIQNe7+jjjWMq6nqkzms7okHA==
|
||||
|
||||
simple-concat@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||
|
||||
simple-get@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
|
||||
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
|
||||
dependencies:
|
||||
decompress-response "^6.0.0"
|
||||
once "^1.3.1"
|
||||
simple-concat "^1.0.0"
|
||||
|
||||
simple-update-notifier@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz#67694c121de354af592b347cdba798463ed49c82"
|
||||
@ -10422,17 +10475,6 @@ sprintf-js@~1.0.2:
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
|
||||
|
||||
sqlite3@^5.1.4:
|
||||
version "5.1.4"
|
||||
resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.4.tgz#35f83d368963168b324ad2f0fffce09f3b8723a7"
|
||||
integrity sha512-i0UlWAzPlzX3B5XP2cYuhWQJsTtlMD6obOa1PgeEQ4DHEXUuyJkgv50I3isqZAP5oFc2T8OFvakmDh2W6I+YpA==
|
||||
dependencies:
|
||||
"@mapbox/node-pre-gyp" "^1.0.0"
|
||||
node-addon-api "^4.2.0"
|
||||
tar "^6.1.11"
|
||||
optionalDependencies:
|
||||
node-gyp "8.x"
|
||||
|
||||
ssri@^8.0.0, ssri@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af"
|
||||
@ -10610,6 +10652,11 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
|
||||
|
||||
style-loader@^3.3.1:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575"
|
||||
@ -10792,6 +10839,27 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
|
||||
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
|
||||
|
||||
tar-fs@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
|
||||
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
mkdirp-classic "^0.5.2"
|
||||
pump "^3.0.0"
|
||||
tar-stream "^2.1.4"
|
||||
|
||||
tar-stream@^2.1.4:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
|
||||
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
|
||||
dependencies:
|
||||
bl "^4.0.3"
|
||||
end-of-stream "^1.4.1"
|
||||
fs-constants "^1.0.0"
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
tar@^6.0.2, tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2:
|
||||
version "6.1.13"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b"
|
||||
@ -10990,11 +11058,6 @@ tr46@^3.0.0:
|
||||
dependencies:
|
||||
punycode "^2.1.1"
|
||||
|
||||
tr46@~0.0.3:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
|
||||
|
||||
trim-newlines@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
|
||||
@ -11064,6 +11127,13 @@ ttfinfo@^0.2.0, "ttfinfo@https://github.com/rBurgett/ttfinfo.git":
|
||||
version "0.2.0"
|
||||
resolved "https://github.com/rBurgett/ttfinfo.git#f00e43e2a6d4c8a12a677df20b7804492d50863c"
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
tunnel@^0.0.6:
|
||||
version "0.0.6"
|
||||
resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
|
||||
@ -11590,11 +11660,6 @@ wcwidth@^1.0.1:
|
||||
dependencies:
|
||||
defaults "^1.0.3"
|
||||
|
||||
webidl-conversions@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
|
||||
|
||||
webidl-conversions@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
||||
@ -11773,14 +11838,6 @@ whatwg-url@^11.0.0:
|
||||
tr46 "^3.0.0"
|
||||
webidl-conversions "^7.0.0"
|
||||
|
||||
whatwg-url@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
|
||||
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
|
||||
dependencies:
|
||||
tr46 "~0.0.3"
|
||||
webidl-conversions "^3.0.0"
|
||||
|
||||
whatwg-url@^8.0.0, whatwg-url@^8.5.0:
|
||||
version "8.7.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77"
|
||||
@ -11821,7 +11878,7 @@ which@^2.0.1, which@^2.0.2:
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
wide-align@^1.1.2, wide-align@^1.1.5:
|
||||
wide-align@^1.1.5:
|
||||
version "1.1.5"
|
||||
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3"
|
||||
integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==
|
||||
|
Loading…
x
Reference in New Issue
Block a user