help prs, why do i get ENOENT on second downloadFile in downloadPlugin?
This commit is contained in:
+1
-1
@@ -2,4 +2,4 @@ node_modules
|
||||
lib
|
||||
static
|
||||
kfs
|
||||
plugin
|
||||
plugins
|
||||
@@ -3,46 +3,26 @@
|
||||
import * as Logger from 'log4js'
|
||||
import { Plugin, socketioRPC } from 'frontblock-generic/Plugin';
|
||||
import { ErrorResponse, SuccessResponse } from 'frontblock-generic/Types';
|
||||
import { PluginManager } from './PluginManager'
|
||||
import express = require('express');
|
||||
import http = require('http');
|
||||
import fs = require('fs');
|
||||
import bsock = require('bsock');
|
||||
import fetch = require("node-fetch");
|
||||
|
||||
|
||||
const kfs = require("key-file-storage").default('kfs')
|
||||
|
||||
type pluginEntry =
|
||||
{
|
||||
pluginName:string
|
||||
}
|
||||
|
||||
const pluginList:pluginEntry[] =
|
||||
[
|
||||
//{ pluginName: 'apiclient' },
|
||||
//{ pluginName: 'paymentmanager' },
|
||||
//{ pluginName: 'wallet' },
|
||||
{ pluginName: 'htmlsupplier' }
|
||||
]
|
||||
|
||||
type releaseEntry =
|
||||
{
|
||||
tagName: string,
|
||||
staticZipURL: URL,
|
||||
checksumFileURL: URL
|
||||
}
|
||||
|
||||
Logger.configure({
|
||||
appenders:
|
||||
{
|
||||
"admin": { type: 'stdout' },
|
||||
"frontblock-admin": { type: 'stdout' },
|
||||
//app: { type: 'file', filename: 'application.log' }
|
||||
},
|
||||
categories:
|
||||
{
|
||||
default: { appenders: [ 'admin' ], level: 'debug' }
|
||||
default: { appenders: [ 'frontblock-admin' ], level: 'debug' }
|
||||
}
|
||||
})
|
||||
const logger = Logger.getLogger("admin")
|
||||
const logger = Logger.getLogger("frontblock-admin")
|
||||
|
||||
type hookRPC =
|
||||
{
|
||||
@@ -80,58 +60,28 @@ export type rpcInfo =
|
||||
* The list of available plugins is published via the frontblock API and downloaded via gitea-releases
|
||||
*/
|
||||
export class FrontblockAdmin{
|
||||
private plugins: Plugin[]
|
||||
|
||||
private plugins: Plugin[] = []
|
||||
private hookToUids:{[hookName:string]:string[]} = {}
|
||||
|
||||
private express
|
||||
private httpServer
|
||||
private io = bsock.createServer()
|
||||
private wsServer = http.createServer()
|
||||
private pm: PluginManager
|
||||
|
||||
constructor(){
|
||||
if(!('admin.conf' in kfs)){
|
||||
logger.info('Generating ./kfs/admin.conf')
|
||||
kfs['admin.conf'] = { httpPort: 8080 }
|
||||
}
|
||||
this.pm = new PluginManager()
|
||||
this.initialize()
|
||||
}
|
||||
|
||||
private async initialize(){
|
||||
const wat = await this.fetchReleaseList('htmlsupplier')
|
||||
logger.debug(wat)
|
||||
//await this.downloadPlugins()
|
||||
//this.plugins.forEach(plugin => plugin.start())
|
||||
//this.startWebsocket()
|
||||
//this.startWebserver()
|
||||
}
|
||||
|
||||
private async fetchReleaseList(pluginName:string): Promise<releaseEntry[]>{
|
||||
const res = await fetch('https://gitea.frontblock.me/api/v1/repos/fb-vendor/' + pluginName + '/releases')
|
||||
const json = await res.json();
|
||||
const releaseList:releaseEntry[] = []
|
||||
|
||||
json.forEach((release) => {
|
||||
const tagName = release.tag_name
|
||||
const staticZipURL = release.assets.filter(asset => asset.name === pluginName + '.zip')[0].browser_download_url
|
||||
const checksumFileURL = release.assets.filter(asset => asset.name === 'md5sum.txt')[0].browser_download_url
|
||||
releaseList.push({tagName,staticZipURL,checksumFileURL})
|
||||
})
|
||||
return releaseList
|
||||
}
|
||||
|
||||
private async downloadPlugin(release:releaseEntry) {
|
||||
}
|
||||
|
||||
private async verifyPlugin(release:releaseEntry) {
|
||||
}
|
||||
|
||||
private async extractPlugin(release:releaseEntry) {
|
||||
}
|
||||
|
||||
private async installPlugin(release:releaseEntry) {
|
||||
}
|
||||
|
||||
private initApis(socket){
|
||||
//Declare own functions
|
||||
const rpcInfos:rpcInfo[] = [
|
||||
@@ -234,7 +184,7 @@ export class FrontblockAdmin{
|
||||
|
||||
private restartWebserver(port:number){
|
||||
this.stopWebserver()
|
||||
kfs.FrontblockAdmin = { httpPort: port }
|
||||
kfs['admin.conf'] = { httpPort: port }
|
||||
this.startWebserver()
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
'use strict'
|
||||
|
||||
import * as Logger from 'log4js';
|
||||
import fetch = require('node-fetch');
|
||||
import fs = require('fs');
|
||||
import path = require('path')
|
||||
import unzip = require('unzip')
|
||||
|
||||
Logger.configure({
|
||||
appenders:
|
||||
{
|
||||
"plugin-manager": { type: 'stdout' },
|
||||
//app: { type: 'file', filename: 'application.log' }
|
||||
},
|
||||
categories:
|
||||
{
|
||||
default: { appenders: [ 'plugin-manager' ], level: 'debug' }
|
||||
}
|
||||
})
|
||||
const logger = Logger.getLogger("plugin-manager")
|
||||
|
||||
|
||||
export class PluginManager{
|
||||
|
||||
private installDir: string
|
||||
private cacheDir: string
|
||||
private loadedPlugins: string[]
|
||||
|
||||
constructor(installDir: string = './plugins'){
|
||||
this.installDir = installDir
|
||||
this.cacheDir = path.join(installDir, '.cache')
|
||||
this.initialize()
|
||||
}
|
||||
|
||||
private initialize() {
|
||||
logger.info('Initializing manager')
|
||||
|
||||
try {
|
||||
fs.access(this.cacheDir, async err => {
|
||||
if (err && err.code === 'ENOENT') {
|
||||
await fs.promises.mkdir(this.cacheDir, {recursive: true})
|
||||
logger.info('Manager installed to ' + this.installDir)
|
||||
} else {
|
||||
logger.info('Manager already installed at ' + this.installDir)
|
||||
}
|
||||
})
|
||||
} catch (error) {
|
||||
logger.error(error)
|
||||
}
|
||||
}
|
||||
|
||||
public async getAvailablePlugins(): Promise<string[] | void> {
|
||||
return [
|
||||
'apiclient',
|
||||
'paymentmanager',
|
||||
'wallet',
|
||||
'htmlsupplier'
|
||||
]
|
||||
}
|
||||
|
||||
public async getInstalledPlugins(): Promise<string[] | void> {
|
||||
try {
|
||||
const installed = await fs.promises.readdir(this.installDir)
|
||||
return installed.filter( entry => entry[0] != '.')
|
||||
} catch (error) {
|
||||
logger.error(error)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
public async getLoadedPlugins(): Promise<string[] | void> {
|
||||
return this.loadedPlugins
|
||||
}
|
||||
|
||||
private async downloadFile(url: URL, dest: string) {
|
||||
try {
|
||||
fs.access(path.dirname(dest), err => {
|
||||
if (err && err.code === 'ENOENT') {
|
||||
fs.mkdirSync(path.dirname(dest), {recursive: true})
|
||||
}
|
||||
})
|
||||
|
||||
const file = fs.createWriteStream(dest)
|
||||
file.on('error', err => {throw new Error(err)})
|
||||
const response = await fetch(url)
|
||||
if (!response.ok) throw new Error(response.statusText)
|
||||
response.body.pipe(file)
|
||||
} catch (error) {
|
||||
logger.error(error)
|
||||
await fs.promises.unlink(dest)
|
||||
}
|
||||
}
|
||||
|
||||
private async downloadPlugin(pluginName: string) {
|
||||
try {
|
||||
const response = await fetch('https://gitea.frontblock.me/api/v1/repos/fb-vendor/' + pluginName + '/releases')
|
||||
if (!response.ok) throw new Error(response.statusText)
|
||||
|
||||
const releases = await response.json()
|
||||
if (!releases || !releases.length) throw new Error('Empty response')
|
||||
|
||||
const latest = releases[0]
|
||||
const version = latest.tag_name
|
||||
const archiveURL = latest.assets.filter(asset => asset.name === pluginName + '.zip')[0].browser_download_url
|
||||
const checksumURL = latest.assets.filter(asset => asset.name === 'md5sum.txt')[0].browser_download_url
|
||||
if (!version || ! archiveURL || !checksumURL) throw new Error('Malformed response')
|
||||
|
||||
await this.downloadFile(archiveURL, path.join(this.cacheDir, pluginName, version, 'plugin.zip'))
|
||||
await this.downloadFile(checksumURL, path.join(this.cacheDir, pluginName, version, 'md5sum.txt'))
|
||||
|
||||
} catch (error) {
|
||||
logger.error(error)
|
||||
}
|
||||
}
|
||||
|
||||
public async installPlugin(pluginName: string) {
|
||||
try {
|
||||
await this.downloadPlugin(pluginName)
|
||||
} catch (error) {
|
||||
logger.debug(error)
|
||||
}
|
||||
}
|
||||
|
||||
public uninstallPlugin(pluginName: string) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async loadPlugin() {
|
||||
|
||||
}
|
||||
|
||||
public async unloadPlugin() {
|
||||
|
||||
}
|
||||
}
|
||||
Generated
+234
-9
@@ -386,7 +386,8 @@
|
||||
"@types/angular": {
|
||||
"version": "1.6.55",
|
||||
"resolved": "https://registry.npmjs.org/@types/angular/-/angular-1.6.55.tgz",
|
||||
"integrity": "sha512-jpQ5K6t76thd9Ook5x4Xj9K462hMje6/Q84SFxglBmaW8HOLblVnALpvg6w6aV3Oe6o9jWXnYH8gHHKrfSRxNQ=="
|
||||
"integrity": "sha512-jpQ5K6t76thd9Ook5x4Xj9K462hMje6/Q84SFxglBmaW8HOLblVnALpvg6w6aV3Oe6o9jWXnYH8gHHKrfSRxNQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/babel__core": {
|
||||
"version": "7.1.2",
|
||||
@@ -433,6 +434,7 @@
|
||||
"version": "1.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz",
|
||||
"integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/connect": "*",
|
||||
"@types/node": "*"
|
||||
@@ -442,6 +444,7 @@
|
||||
"version": "3.4.32",
|
||||
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
|
||||
"integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
@@ -450,6 +453,7 @@
|
||||
"version": "4.17.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz",
|
||||
"integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/body-parser": "*",
|
||||
"@types/express-serve-static-core": "*",
|
||||
@@ -460,6 +464,7 @@
|
||||
"version": "4.16.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz",
|
||||
"integrity": "sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"@types/range-parser": "*"
|
||||
@@ -521,7 +526,8 @@
|
||||
"@types/mime": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz",
|
||||
"integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw=="
|
||||
"integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "11.13.18",
|
||||
@@ -537,12 +543,20 @@
|
||||
"@types/range-parser": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
|
||||
"integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA=="
|
||||
"integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/semver": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.0.1.tgz",
|
||||
"integrity": "sha512-ffCdcrEE5h8DqVxinQjo+2d1q+FV5z7iNtPofw3JsrltSoSVlOGaW0rY8XxtO9XukdTn8TaCGWmk2VFGhI70mg==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/serve-static": {
|
||||
"version": "1.13.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz",
|
||||
"integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/express-serve-static-core": "*",
|
||||
"@types/mime": "*"
|
||||
@@ -557,7 +571,8 @@
|
||||
"@types/webpack-env": {
|
||||
"version": "1.14.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.14.0.tgz",
|
||||
"integrity": "sha512-Fv+0gYJzE/czLoRKq+gnXWr4yBpPM3tO3C8pDLFwqVKlMICQUq5OsxwwFZYDaVr7+L6mgNDp16iOcJHEz3J5RQ=="
|
||||
"integrity": "sha512-Fv+0gYJzE/czLoRKq+gnXWr4yBpPM3tO3C8pDLFwqVKlMICQUq5OsxwwFZYDaVr7+L6mgNDp16iOcJHEz3J5RQ==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/yargs": {
|
||||
"version": "12.0.12",
|
||||
@@ -1262,6 +1277,15 @@
|
||||
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
||||
"dev": true
|
||||
},
|
||||
"binary": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
|
||||
"integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
|
||||
"requires": {
|
||||
"buffers": "~0.1.1",
|
||||
"chainsaw": "~0.1.0"
|
||||
}
|
||||
},
|
||||
"binary-extensions": {
|
||||
"version": "1.13.1",
|
||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
|
||||
@@ -1528,6 +1552,11 @@
|
||||
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
|
||||
"dev": true
|
||||
},
|
||||
"buffers": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
|
||||
"integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="
|
||||
},
|
||||
"builtin-modules": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
|
||||
@@ -1688,6 +1717,14 @@
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
|
||||
"dev": true
|
||||
},
|
||||
"chainsaw": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
|
||||
"integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
|
||||
"requires": {
|
||||
"traverse": ">=0.3.0 <0.4"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||
@@ -2057,8 +2094,7 @@
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
||||
"dev": true
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"cosmiconfig": {
|
||||
"version": "5.2.1",
|
||||
@@ -3159,6 +3195,11 @@
|
||||
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
|
||||
"dev": true
|
||||
},
|
||||
"fast-extend": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-extend/-/fast-extend-0.0.2.tgz",
|
||||
"integrity": "sha1-9exCz0C5Rg9SGmOH37Ut7u1nHb0="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
||||
@@ -3401,6 +3442,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"fs-monkey": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-0.3.3.tgz",
|
||||
"integrity": "sha512-FNUvuTAJ3CqCQb5ELn+qCbGR/Zllhf2HtwsdAtBi59s1WeCjKMT81fHcSu7dwIskqGVK+MmOrb7VOBlq3/SItw=="
|
||||
},
|
||||
"fs-write-stream-atomic": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
|
||||
@@ -5943,6 +5989,38 @@
|
||||
"object-visit": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"match-stream": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz",
|
||||
"integrity": "sha1-mesFAJOzTf+t5CG5rAtBCpz6F88=",
|
||||
"requires": {
|
||||
"buffers": "~0.1.1",
|
||||
"readable-stream": "~1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||
@@ -5976,6 +6054,15 @@
|
||||
"p-is-promise": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"memfs": {
|
||||
"version": "2.15.5",
|
||||
"resolved": "https://registry.npmjs.org/memfs/-/memfs-2.15.5.tgz",
|
||||
"integrity": "sha512-x8v6Uok7FRuPt8RNXnIk3HzSFB2kaJtoT6ztpfIxxURjBPPsu4eKA+ZDLQ5GdV8+Lx71+vdMaBzHxy51vLQ7dw==",
|
||||
"requires": {
|
||||
"fast-extend": "0.0.2",
|
||||
"fs-monkey": "^0.3.3"
|
||||
}
|
||||
},
|
||||
"memory-fs": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
|
||||
@@ -6320,6 +6407,11 @@
|
||||
"to-regex": "^3.0.1"
|
||||
}
|
||||
},
|
||||
"natives": {
|
||||
"version": "1.1.6",
|
||||
"resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
|
||||
"integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA=="
|
||||
},
|
||||
"natural-compare": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
|
||||
@@ -6841,6 +6933,11 @@
|
||||
"os-tmpdir": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"over": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz",
|
||||
"integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg="
|
||||
},
|
||||
"p-defer": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
|
||||
@@ -7823,6 +7920,40 @@
|
||||
"safe-buffer": "^5.1.2"
|
||||
}
|
||||
},
|
||||
"pullstream": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/pullstream/-/pullstream-0.4.1.tgz",
|
||||
"integrity": "sha1-1vs79a7Wl+gxFQ6xACwlo/iuExQ=",
|
||||
"requires": {
|
||||
"over": ">= 0.0.5 < 1",
|
||||
"readable-stream": "~1.0.31",
|
||||
"setimmediate": ">= 1.0.2 < 2",
|
||||
"slice-stream": ">= 1.0.0 < 2"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"pump": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
||||
@@ -8285,7 +8416,6 @@
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
|
||||
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
@@ -8711,8 +8841,7 @@
|
||||
"setimmediate": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
|
||||
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
|
||||
"dev": true
|
||||
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
|
||||
},
|
||||
"setprototypeof": {
|
||||
"version": "1.1.1",
|
||||
@@ -8804,6 +8933,37 @@
|
||||
"integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
|
||||
"dev": true
|
||||
},
|
||||
"slice-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slice-stream/-/slice-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-WzO9ZvATsaf4ZGCwPUY97DmtPqA=",
|
||||
"requires": {
|
||||
"readable-stream": "~1.0.31"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"snapdragon": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
|
||||
@@ -9178,6 +9338,11 @@
|
||||
"readable-stream": "^2.0.2"
|
||||
}
|
||||
},
|
||||
"stream-buffers": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz",
|
||||
"integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ=="
|
||||
},
|
||||
"stream-each": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
|
||||
@@ -9610,6 +9775,11 @@
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"traverse": {
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
|
||||
"integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk="
|
||||
},
|
||||
"trim-newlines": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
|
||||
@@ -9921,6 +10091,61 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"unzip": {
|
||||
"version": "0.1.11",
|
||||
"resolved": "https://registry.npmjs.org/unzip/-/unzip-0.1.11.tgz",
|
||||
"integrity": "sha1-iXScY7BY19kNYZ+GuYqhU107l/A=",
|
||||
"requires": {
|
||||
"binary": ">= 0.3.0 < 1",
|
||||
"fstream": ">= 0.1.30 < 1",
|
||||
"match-stream": ">= 0.0.2 < 1",
|
||||
"pullstream": ">= 0.4.1 < 1",
|
||||
"readable-stream": "~1.0.31",
|
||||
"setimmediate": ">= 1.0.1 < 2"
|
||||
},
|
||||
"dependencies": {
|
||||
"fstream": {
|
||||
"version": "0.1.31",
|
||||
"resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz",
|
||||
"integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=",
|
||||
"requires": {
|
||||
"graceful-fs": "~3.0.2",
|
||||
"inherits": "~2.0.0",
|
||||
"mkdirp": "0.5",
|
||||
"rimraf": "2"
|
||||
}
|
||||
},
|
||||
"graceful-fs": {
|
||||
"version": "3.0.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz",
|
||||
"integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=",
|
||||
"requires": {
|
||||
"natives": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.1",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "~0.10.x"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"upath": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
|
||||
|
||||
+8
-5
@@ -15,10 +15,6 @@
|
||||
"author": "frontblock.me",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@types/angular": "^1.6.55",
|
||||
"@types/express": "^4.17.0",
|
||||
"@types/node": "^11.13.18",
|
||||
"@types/webpack-env": "^1.14.0",
|
||||
"@uirouter/angularjs": "^1.0.5",
|
||||
"angular": "^1.7.8",
|
||||
"bsert": "0.0.10",
|
||||
@@ -28,10 +24,17 @@
|
||||
"http": "0.0.0",
|
||||
"key-file-storage": "^2.2.1",
|
||||
"log4js": "^4.4.0",
|
||||
"memfs": "^2.15.5",
|
||||
"node-fetch": "^2.6.0",
|
||||
"socket.io": "^2.2.0"
|
||||
"socket.io": "^2.2.0",
|
||||
"stream-buffers": "^3.0.2",
|
||||
"unzip": "^0.1.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/express": "^4.17.0",
|
||||
"@types/node": "^11.13.18",
|
||||
"@types/semver": "^6.0.1",
|
||||
"@types/webpack-env": "^1.14.0",
|
||||
"@types/angular": "^1.6.27",
|
||||
"@types/jest": "^24.0.15",
|
||||
"autoprefixer": "^9.4.7",
|
||||
|
||||
Reference in New Issue
Block a user