First pass - converting CLI to Typescript.
This commit is contained in:
parent
381bf816aa
commit
2125331b14
|
@ -6,3 +6,4 @@ docker-error.log
|
|||
envoy.yaml
|
||||
*.tar.gz
|
||||
prebuilds/
|
||||
dist/
|
||||
|
|
|
@ -2,15 +2,16 @@
|
|||
"name": "@budibase/cli",
|
||||
"version": "2.3.18-alpha.29",
|
||||
"description": "Budibase CLI, for developers, self hosting and migrations.",
|
||||
"main": "src/index.js",
|
||||
"main": "dist/index.js",
|
||||
"bin": {
|
||||
"budi": "src/index.js"
|
||||
"budi": "dist/index.js"
|
||||
},
|
||||
"author": "Budibase",
|
||||
"license": "GPL-3.0",
|
||||
"scripts": {
|
||||
"prebuild": "rm -rf prebuilds 2> /dev/null && cp -r node_modules/leveldown/prebuilds prebuilds",
|
||||
"build": "yarn prebuild && renamer --find .node --replace .fake 'prebuilds/**' && pkg . --out-path build && yarn postbuild",
|
||||
"tsc": "tsc -p tsconfig.build.json",
|
||||
"build": "npx prebuild && renamer --find .node --replace .fake 'prebuilds/**' && npx tsc && pkg . --out-path build && npx postbuild",
|
||||
"postbuild": "rm -rf prebuilds 2> /dev/null"
|
||||
},
|
||||
"pkg": {
|
||||
|
@ -29,7 +30,6 @@
|
|||
"@budibase/backend-core": "2.3.18-alpha.29",
|
||||
"@budibase/string-templates": "2.3.18-alpha.29",
|
||||
"@budibase/types": "2.3.18-alpha.29",
|
||||
"axios": "0.21.2",
|
||||
"chalk": "4.1.0",
|
||||
"cli-progress": "3.11.2",
|
||||
"commander": "7.1.0",
|
||||
|
@ -40,7 +40,7 @@
|
|||
"inquirer": "8.0.0",
|
||||
"joi": "17.6.0",
|
||||
"lookpath": "1.1.0",
|
||||
"node-fetch": "2",
|
||||
"node-fetch": "2.6.7",
|
||||
"pkg": "5.8.0",
|
||||
"posthog-node": "1.0.7",
|
||||
"pouchdb": "7.3.0",
|
||||
|
@ -50,8 +50,15 @@
|
|||
"yaml": "^2.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/core": "^1.3.25",
|
||||
"@swc/jest": "^0.2.24",
|
||||
"@types/jest": "^29.4.0",
|
||||
"@types/pouchdb": "^6.4.0",
|
||||
"@types/node-fetch": "2.6.1",
|
||||
"copyfiles": "^2.4.1",
|
||||
"eslint": "^7.20.0",
|
||||
"renamer": "^4.0.0"
|
||||
"renamer": "^4.0.0",
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "4.7.3"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
const PostHog = require("posthog-node")
|
||||
const { POSTHOG_TOKEN, AnalyticsEvents } = require("../constants")
|
||||
const ConfigManager = require("../structures/ConfigManager")
|
||||
|
||||
class AnalyticsClient {
|
||||
constructor() {
|
||||
this.client = new PostHog(POSTHOG_TOKEN)
|
||||
this.configManager = new ConfigManager()
|
||||
}
|
||||
|
||||
capture(event) {
|
||||
if (this.configManager.config.analyticsDisabled) return
|
||||
|
||||
this.client.capture(event)
|
||||
}
|
||||
|
||||
enable() {
|
||||
this.configManager.removeKey("analyticsDisabled")
|
||||
this.client.capture({ event: AnalyticsEvents.OptIn, distinctId: "cli" })
|
||||
}
|
||||
|
||||
disable() {
|
||||
this.client.capture({ event: AnalyticsEvents.OptOut, distinctId: "cli" })
|
||||
this.configManager.setValue("analyticsDisabled", true)
|
||||
}
|
||||
|
||||
status() {
|
||||
return this.configManager.config.analyticsDisabled ? "disabled" : "enabled"
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = AnalyticsClient
|
|
@ -0,0 +1,33 @@
|
|||
import PostHog from "posthog-node"
|
||||
import { POSTHOG_TOKEN, AnalyticsEvent } from "../constants"
|
||||
import { ConfigManager } from "../structures/ConfigManager"
|
||||
|
||||
export class AnalyticsClient {
|
||||
client: PostHog
|
||||
configManager: ConfigManager
|
||||
|
||||
constructor() {
|
||||
this.client = new PostHog(POSTHOG_TOKEN, {})
|
||||
this.configManager = new ConfigManager()
|
||||
}
|
||||
|
||||
capture(event: { distinctId: string; event: string; properties?: any }) {
|
||||
if (this.configManager.config.analyticsDisabled) return
|
||||
|
||||
this.client.capture(event)
|
||||
}
|
||||
|
||||
enable() {
|
||||
this.configManager.removeKey("analyticsDisabled")
|
||||
this.client.capture({ event: AnalyticsEvent.OptIn, distinctId: "cli" })
|
||||
}
|
||||
|
||||
disable() {
|
||||
this.client.capture({ event: AnalyticsEvent.OptOut, distinctId: "cli" })
|
||||
this.configManager.setValue("analyticsDisabled", true)
|
||||
}
|
||||
|
||||
status() {
|
||||
return this.configManager.config.analyticsDisabled ? "disabled" : "enabled"
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
const Command = require("../structures/Command")
|
||||
const { CommandWords } = require("../constants")
|
||||
const { success, error } = require("../utils")
|
||||
const AnalyticsClient = require("./Client")
|
||||
import { Command } from "../structures/Command"
|
||||
import { CommandWord } from "../constants"
|
||||
import { success, error } from "../utils"
|
||||
import { AnalyticsClient } from "./Client"
|
||||
|
||||
const client = new AnalyticsClient()
|
||||
|
||||
|
@ -14,11 +14,10 @@ async function optOut() {
|
|||
"Successfully opted out of Budibase analytics. You can opt in at any time by running 'budi analytics opt-in'"
|
||||
)
|
||||
)
|
||||
} catch (err) {
|
||||
} catch (err: any) {
|
||||
console.log(
|
||||
error(
|
||||
"Error opting out of Budibase analytics. Please try again later.",
|
||||
err
|
||||
`Error opting out of Budibase analytics. Please try again later - ${err}`
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -50,7 +49,7 @@ async function status() {
|
|||
}
|
||||
}
|
||||
|
||||
const command = new Command(`${CommandWords.ANALYTICS}`)
|
||||
export default new Command(`${CommandWord.ANALYTICS}`)
|
||||
.addHelp("Control the analytics you send to Budibase.")
|
||||
.addSubOption("--optin", "Opt in to sending analytics to Budibase", optIn)
|
||||
.addSubOption("--optout", "Opt out of sending analytics to Budibase.", optOut)
|
||||
|
@ -59,5 +58,3 @@ const command = new Command(`${CommandWords.ANALYTICS}`)
|
|||
"Check whether you are currently opted in to Budibase analytics.",
|
||||
status
|
||||
)
|
||||
|
||||
exports.command = command
|
|
@ -1,28 +1,30 @@
|
|||
const Command = require("../structures/Command")
|
||||
const { CommandWords } = require("../constants")
|
||||
const fs = require("fs")
|
||||
const { join } = require("path")
|
||||
const { getAllDbs } = require("../core/db")
|
||||
const tar = require("tar")
|
||||
const { progressBar, httpCall } = require("../utils")
|
||||
const {
|
||||
import { Command } from "../structures/Command"
|
||||
import { CommandWord } from "../constants"
|
||||
import fs from "fs"
|
||||
import { join } from "path"
|
||||
import { getAllDbs } from "../core/db"
|
||||
import { progressBar, httpCall } from "../utils"
|
||||
import {
|
||||
TEMP_DIR,
|
||||
COUCH_DIR,
|
||||
MINIO_DIR,
|
||||
getConfig,
|
||||
replication,
|
||||
getPouches,
|
||||
} = require("./utils")
|
||||
const { exportObjects, importObjects } = require("./objectStore")
|
||||
} from "./utils"
|
||||
import { exportObjects, importObjects } from "./objectStore"
|
||||
const tar = require("tar")
|
||||
|
||||
async function exportBackup(opts) {
|
||||
type BackupOpts = { env?: string; import?: string; export?: string }
|
||||
|
||||
async function exportBackup(opts: BackupOpts) {
|
||||
const envFile = opts.env || undefined
|
||||
let filename = opts["export"] || opts
|
||||
let filename = opts["export"] || (opts as string)
|
||||
if (typeof filename !== "string") {
|
||||
filename = `backup-${new Date().toISOString()}.tar.gz`
|
||||
}
|
||||
const config = await getConfig(envFile)
|
||||
const dbList = await getAllDbs(config["COUCH_DB_URL"])
|
||||
const dbList = (await getAllDbs(config["COUCH_DB_URL"])) as string[]
|
||||
const { Remote, Local } = getPouches(config)
|
||||
if (fs.existsSync(TEMP_DIR)) {
|
||||
fs.rmSync(TEMP_DIR, { recursive: true })
|
||||
|
@ -55,9 +57,9 @@ async function exportBackup(opts) {
|
|||
console.log(`Generated export file - ${filename}`)
|
||||
}
|
||||
|
||||
async function importBackup(opts) {
|
||||
async function importBackup(opts: BackupOpts) {
|
||||
const envFile = opts.env || undefined
|
||||
const filename = opts["import"] || opts
|
||||
const filename = opts["import"] || (opts as string)
|
||||
const config = await getConfig(envFile)
|
||||
if (!filename || !fs.existsSync(filename)) {
|
||||
console.error("Cannot import without specifying a valid file to import")
|
||||
|
@ -99,7 +101,7 @@ async function importBackup(opts) {
|
|||
fs.rmSync(TEMP_DIR, { recursive: true })
|
||||
}
|
||||
|
||||
async function pickOne(opts) {
|
||||
async function pickOne(opts: BackupOpts) {
|
||||
if (opts["import"]) {
|
||||
return importBackup(opts)
|
||||
} else if (opts["export"]) {
|
||||
|
@ -107,7 +109,7 @@ async function pickOne(opts) {
|
|||
}
|
||||
}
|
||||
|
||||
const command = new Command(`${CommandWords.BACKUPS}`)
|
||||
export default new Command(`${CommandWord.BACKUPS}`)
|
||||
.addHelp(
|
||||
"Allows building backups of Budibase, as well as importing a backup to a new instance."
|
||||
)
|
||||
|
@ -126,5 +128,3 @@ const command = new Command(`${CommandWords.BACKUPS}`)
|
|||
"Provide an environment variable file to configure the CLI.",
|
||||
pickOne
|
||||
)
|
||||
|
||||
exports.command = command
|
|
@ -1,8 +1,8 @@
|
|||
const { objectStore } = require("@budibase/backend-core")
|
||||
const fs = require("fs")
|
||||
const { join } = require("path")
|
||||
const { TEMP_DIR, MINIO_DIR } = require("./utils")
|
||||
const { progressBar } = require("../utils")
|
||||
import { objectStore } from "@budibase/backend-core"
|
||||
import fs from "fs"
|
||||
import { join } from "path"
|
||||
import { TEMP_DIR, MINIO_DIR } from "./utils"
|
||||
import { progressBar } from "../utils"
|
||||
const {
|
||||
ObjectStoreBuckets,
|
||||
ObjectStore,
|
||||
|
@ -13,10 +13,10 @@ const {
|
|||
|
||||
const bucketList = Object.values(ObjectStoreBuckets)
|
||||
|
||||
exports.exportObjects = async () => {
|
||||
export async function exportObjects() {
|
||||
const path = join(TEMP_DIR, MINIO_DIR)
|
||||
fs.mkdirSync(path)
|
||||
let fullList = []
|
||||
let fullList: any[] = []
|
||||
let errorCount = 0
|
||||
for (let bucket of bucketList) {
|
||||
const client = ObjectStore(bucket)
|
||||
|
@ -26,7 +26,7 @@ exports.exportObjects = async () => {
|
|||
errorCount++
|
||||
continue
|
||||
}
|
||||
const list = await client.listObjectsV2().promise()
|
||||
const list = (await client.listObjectsV2().promise()) as { Contents: any[] }
|
||||
fullList = fullList.concat(list.Contents.map(el => ({ ...el, bucket })))
|
||||
}
|
||||
if (errorCount === bucketList.length) {
|
||||
|
@ -48,7 +48,7 @@ exports.exportObjects = async () => {
|
|||
bar.stop()
|
||||
}
|
||||
|
||||
exports.importObjects = async () => {
|
||||
export async function importObjects() {
|
||||
const path = join(TEMP_DIR, MINIO_DIR)
|
||||
const buckets = fs.readdirSync(path)
|
||||
let total = 0
|
|
@ -1,12 +1,13 @@
|
|||
const dotenv = require("dotenv")
|
||||
const fs = require("fs")
|
||||
const { string } = require("../questions")
|
||||
const { getPouch } = require("../core/db")
|
||||
const { env: environment } = require("@budibase/backend-core")
|
||||
import dotenv from "dotenv"
|
||||
import fs from "fs"
|
||||
import { string } from "../questions"
|
||||
import { getPouch } from "../core/db"
|
||||
import { env as environment } from "@budibase/backend-core"
|
||||
import PouchDB from "pouchdb"
|
||||
|
||||
exports.TEMP_DIR = ".temp"
|
||||
exports.COUCH_DIR = "couchdb"
|
||||
exports.MINIO_DIR = "minio"
|
||||
export const TEMP_DIR = ".temp"
|
||||
export const COUCH_DIR = "couchdb"
|
||||
export const MINIO_DIR = "minio"
|
||||
|
||||
const REQUIRED = [
|
||||
{ value: "MAIN_PORT", default: "10000" },
|
||||
|
@ -19,7 +20,7 @@ const REQUIRED = [
|
|||
{ value: "MINIO_SECRET_KEY" },
|
||||
]
|
||||
|
||||
exports.checkURLs = config => {
|
||||
export function checkURLs(config: Record<string, string>) {
|
||||
const mainPort = config["MAIN_PORT"],
|
||||
username = config["COUCH_DB_USER"],
|
||||
password = config["COUCH_DB_PASSWORD"]
|
||||
|
@ -34,23 +35,23 @@ exports.checkURLs = config => {
|
|||
return config
|
||||
}
|
||||
|
||||
exports.askQuestions = async () => {
|
||||
export async function askQuestions() {
|
||||
console.log(
|
||||
"*** NOTE: use a .env file to load these parameters repeatedly ***"
|
||||
)
|
||||
let config = {}
|
||||
let config: Record<string, string> = {}
|
||||
for (let property of REQUIRED) {
|
||||
config[property.value] = await string(property.value, property.default)
|
||||
}
|
||||
return config
|
||||
}
|
||||
|
||||
exports.loadEnvironment = path => {
|
||||
export function loadEnvironment(path: string) {
|
||||
if (!fs.existsSync(path)) {
|
||||
throw "Unable to file specified .env file"
|
||||
}
|
||||
const env = fs.readFileSync(path, "utf8")
|
||||
const config = exports.checkURLs(dotenv.parse(env))
|
||||
const config = checkURLs(dotenv.parse(env))
|
||||
for (let required of REQUIRED) {
|
||||
if (!config[required.value]) {
|
||||
throw `Cannot find "${required.value}" property in .env file`
|
||||
|
@ -60,12 +61,12 @@ exports.loadEnvironment = path => {
|
|||
}
|
||||
|
||||
// true is the default value passed by commander
|
||||
exports.getConfig = async (envFile = true) => {
|
||||
export async function getConfig(envFile: boolean | string = true) {
|
||||
let config
|
||||
if (envFile !== true) {
|
||||
config = exports.loadEnvironment(envFile)
|
||||
config = loadEnvironment(envFile as string)
|
||||
} else {
|
||||
config = await exports.askQuestions()
|
||||
config = await askQuestions()
|
||||
}
|
||||
// fill out environment
|
||||
for (let key of Object.keys(config)) {
|
||||
|
@ -74,12 +75,16 @@ exports.getConfig = async (envFile = true) => {
|
|||
return config
|
||||
}
|
||||
|
||||
exports.replication = async (from, to) => {
|
||||
export async function replication(
|
||||
from: PouchDB.Database,
|
||||
to: PouchDB.Database
|
||||
) {
|
||||
const pouch = getPouch()
|
||||
try {
|
||||
await pouch.replicate(from, to, {
|
||||
batch_size: 1000,
|
||||
batch_limit: 5,
|
||||
batches_limit: 5,
|
||||
// @ts-ignore
|
||||
style: "main_only",
|
||||
})
|
||||
} catch (err) {
|
||||
|
@ -87,7 +92,7 @@ exports.replication = async (from, to) => {
|
|||
}
|
||||
}
|
||||
|
||||
exports.getPouches = config => {
|
||||
export function getPouches(config: Record<string, string>) {
|
||||
const Remote = getPouch(config["COUCH_DB_URL"])
|
||||
const Local = getPouch()
|
||||
return { Remote, Local }
|
|
@ -1,25 +0,0 @@
|
|||
const { Event } = require("@budibase/types")
|
||||
|
||||
exports.CommandWords = {
|
||||
BACKUPS: "backups",
|
||||
HOSTING: "hosting",
|
||||
ANALYTICS: "analytics",
|
||||
HELP: "help",
|
||||
PLUGIN: "plugins",
|
||||
}
|
||||
|
||||
exports.InitTypes = {
|
||||
QUICK: "quick",
|
||||
DIGITAL_OCEAN: "do",
|
||||
}
|
||||
|
||||
exports.AnalyticsEvents = {
|
||||
OptOut: "analytics:opt:out",
|
||||
OptIn: "analytics:opt:in",
|
||||
SelfHostInit: "hosting:init",
|
||||
PluginInit: Event.PLUGIN_INIT,
|
||||
}
|
||||
|
||||
exports.POSTHOG_TOKEN = "phc_yGOn4i7jWKaCTapdGR6lfA4AvmuEQ2ijn5zAVSFYPlS"
|
||||
|
||||
exports.GENERATED_USER_EMAIL = "admin@admin.com"
|
|
@ -0,0 +1,4 @@
|
|||
export { CommandWord, InitType, AnalyticsEvent } from "@budibase/types"
|
||||
|
||||
export const POSTHOG_TOKEN = "phc_yGOn4i7jWKaCTapdGR6lfA4AvmuEQ2ijn5zAVSFYPlS"
|
||||
export const GENERATED_USER_EMAIL = "admin@admin.com"
|
|
@ -1,12 +1,12 @@
|
|||
const PouchDB = require("pouchdb")
|
||||
const { checkSlashesInUrl } = require("../utils")
|
||||
const fetch = require("node-fetch")
|
||||
import PouchDB from "pouchdb"
|
||||
import { checkSlashesInUrl } from "../utils"
|
||||
import fetch from "node-fetch"
|
||||
|
||||
/**
|
||||
* Fully qualified URL including username and password, or nothing for local
|
||||
*/
|
||||
exports.getPouch = (url = undefined) => {
|
||||
let POUCH_DB_DEFAULTS = {}
|
||||
export function getPouch(url?: string) {
|
||||
let POUCH_DB_DEFAULTS
|
||||
if (!url) {
|
||||
POUCH_DB_DEFAULTS = {
|
||||
prefix: undefined,
|
||||
|
@ -19,11 +19,12 @@ exports.getPouch = (url = undefined) => {
|
|||
}
|
||||
const replicationStream = require("pouchdb-replication-stream")
|
||||
PouchDB.plugin(replicationStream.plugin)
|
||||
// @ts-ignore
|
||||
PouchDB.adapter("writableStream", replicationStream.adapters.writableStream)
|
||||
return PouchDB.defaults(POUCH_DB_DEFAULTS)
|
||||
return PouchDB.defaults(POUCH_DB_DEFAULTS) as PouchDB.Static
|
||||
}
|
||||
|
||||
exports.getAllDbs = async url => {
|
||||
export async function getAllDbs(url: string) {
|
||||
const response = await fetch(
|
||||
checkSlashesInUrl(encodeURI(`${url}/_all_dbs`)),
|
||||
{
|
|
@ -1,11 +0,0 @@
|
|||
const AnalyticsClient = require("./analytics/Client")
|
||||
|
||||
const client = new AnalyticsClient()
|
||||
|
||||
exports.captureEvent = (event, properties) => {
|
||||
client.capture({
|
||||
distinctId: "cli",
|
||||
event,
|
||||
properties,
|
||||
})
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
import { AnalyticsClient } from "./analytics/Client"
|
||||
|
||||
const client = new AnalyticsClient()
|
||||
|
||||
export function captureEvent(event: string, properties: any) {
|
||||
client.capture({
|
||||
distinctId: "cli",
|
||||
event,
|
||||
properties,
|
||||
})
|
||||
}
|
|
@ -1,21 +1,21 @@
|
|||
const util = require("util")
|
||||
const exec = util.promisify(require("child_process").exec)
|
||||
import util from "util"
|
||||
const runCommand = util.promisify(require("child_process").exec)
|
||||
|
||||
exports.exec = async (command, dir = "./") => {
|
||||
const { stdout } = await exec(command, { cwd: dir })
|
||||
export async function exec(command: string, dir = "./") {
|
||||
const { stdout } = await runCommand(command, { cwd: dir })
|
||||
return stdout
|
||||
}
|
||||
|
||||
exports.utilityInstalled = async utilName => {
|
||||
export async function utilityInstalled(utilName: string) {
|
||||
try {
|
||||
await exports.exec(`${utilName} --version`)
|
||||
await exec(`${utilName} --version`)
|
||||
return true
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
exports.runPkgCommand = async (command, dir = "./") => {
|
||||
export async function runPkgCommand(command: string, dir = "./") {
|
||||
const yarn = await exports.utilityInstalled("yarn")
|
||||
const npm = await exports.utilityInstalled("npm")
|
||||
if (!yarn && !npm) {
|
|
@ -2,15 +2,16 @@ const { success } = require("../utils")
|
|||
const { updateDockerComposeService } = require("./utils")
|
||||
const randomString = require("randomstring")
|
||||
const { GENERATED_USER_EMAIL } = require("../constants")
|
||||
import { DockerCompose } from "./types"
|
||||
|
||||
exports.generateUser = async (password, silent) => {
|
||||
export async function generateUser(password: string | null, silent: boolean) {
|
||||
const email = GENERATED_USER_EMAIL
|
||||
if (!password) {
|
||||
password = randomString.generate({ length: 6 })
|
||||
}
|
||||
updateDockerComposeService(service => {
|
||||
updateDockerComposeService((service: DockerCompose) => {
|
||||
service.environment["BB_ADMIN_USER_EMAIL"] = email
|
||||
service.environment["BB_ADMIN_USER_PASSWORD"] = password
|
||||
service.environment["BB_ADMIN_USER_PASSWORD"] = password as string
|
||||
})
|
||||
if (!silent) {
|
||||
console.log(
|
|
@ -1,14 +1,14 @@
|
|||
const Command = require("../structures/Command")
|
||||
const { CommandWords } = require("../constants")
|
||||
const { init } = require("./init")
|
||||
const { start } = require("./start")
|
||||
const { stop } = require("./stop")
|
||||
const { status } = require("./status")
|
||||
const { update } = require("./update")
|
||||
const { generateUser } = require("./genUser")
|
||||
const { watchPlugins } = require("./watch")
|
||||
import { Command } from "../structures/Command"
|
||||
import { CommandWord } from "../constants"
|
||||
import { init } from "./init"
|
||||
import { start } from "./start"
|
||||
import { stop } from "./stop"
|
||||
import { status } from "./status"
|
||||
import { update } from "./update"
|
||||
import { generateUser } from "./genUser"
|
||||
import { watchPlugins } from "./watch"
|
||||
|
||||
const command = new Command(`${CommandWords.HOSTING}`)
|
||||
export default new Command(`${CommandWord.HOSTING}`)
|
||||
.addHelp("Controls self hosting on the Budibase platform.")
|
||||
.addSubOption(
|
||||
"--init [type]",
|
||||
|
@ -46,5 +46,3 @@ const command = new Command(`${CommandWords.HOSTING}`)
|
|||
generateUser
|
||||
)
|
||||
.addSubOption("--single", "Specify this with init to use the single image.")
|
||||
|
||||
exports.command = command
|
|
@ -1,24 +1,25 @@
|
|||
const { InitTypes, AnalyticsEvents } = require("../constants")
|
||||
const { confirmation } = require("../questions")
|
||||
const { captureEvent } = require("../events")
|
||||
const makeFiles = require("./makeFiles")
|
||||
const axios = require("axios")
|
||||
const { parseEnv } = require("../utils")
|
||||
const { checkDockerConfigured, downloadFiles } = require("./utils")
|
||||
const { watchPlugins } = require("./watch")
|
||||
const { generateUser } = require("./genUser")
|
||||
import { InitType, AnalyticsEvent } from "../constants"
|
||||
import { confirmation } from "../questions"
|
||||
import { captureEvent } from "../events"
|
||||
import * as makeFiles from "./makeFiles"
|
||||
import { parseEnv } from "../utils"
|
||||
import { checkDockerConfigured, downloadFiles } from "./utils"
|
||||
import { watchPlugins } from "./watch"
|
||||
import { generateUser } from "./genUser"
|
||||
import fetch from "node-fetch"
|
||||
|
||||
const DO_USER_DATA_URL = "http://169.254.169.254/metadata/v1/user-data"
|
||||
|
||||
async function getInitConfig(type, isQuick, port) {
|
||||
const config = isQuick ? makeFiles.QUICK_CONFIG : {}
|
||||
if (type === InitTypes.DIGITAL_OCEAN) {
|
||||
async function getInitConfig(type: string, isQuick: boolean, port: number) {
|
||||
const config: any = isQuick ? makeFiles.QUICK_CONFIG : {}
|
||||
if (type === InitType.DIGITAL_OCEAN) {
|
||||
try {
|
||||
const output = await axios.get(DO_USER_DATA_URL)
|
||||
const response = parseEnv(output.data)
|
||||
const output = await fetch(DO_USER_DATA_URL)
|
||||
const data = await output.text()
|
||||
const response = parseEnv(data)
|
||||
for (let [key, value] of Object.entries(makeFiles.ConfigMap)) {
|
||||
if (response[key]) {
|
||||
config[value] = response[key]
|
||||
config[value as string] = response[key]
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
|
@ -32,7 +33,7 @@ async function getInitConfig(type, isQuick, port) {
|
|||
return config
|
||||
}
|
||||
|
||||
exports.init = async opts => {
|
||||
export async function init(opts: any) {
|
||||
let type, isSingle, watchDir, genUser, port, silent
|
||||
if (typeof opts === "string") {
|
||||
type = opts
|
||||
|
@ -44,7 +45,7 @@ exports.init = async opts => {
|
|||
port = opts["port"]
|
||||
silent = opts["silent"]
|
||||
}
|
||||
const isQuick = type === InitTypes.QUICK || type === InitTypes.DIGITAL_OCEAN
|
||||
const isQuick = type === InitType.QUICK || type === InitType.DIGITAL_OCEAN
|
||||
await checkDockerConfigured()
|
||||
if (!isQuick) {
|
||||
const shouldContinue = await confirmation(
|
||||
|
@ -55,7 +56,7 @@ exports.init = async opts => {
|
|||
return
|
||||
}
|
||||
}
|
||||
captureEvent(AnalyticsEvents.SelfHostInit, {
|
||||
captureEvent(AnalyticsEvent.SelfHostInit, {
|
||||
type,
|
||||
})
|
||||
const config = await getInitConfig(type, isQuick, port)
|
|
@ -1,15 +1,15 @@
|
|||
const { number } = require("../questions")
|
||||
const { success, stringifyToDotEnv } = require("../utils")
|
||||
const fs = require("fs")
|
||||
const path = require("path")
|
||||
import { number } from "../questions"
|
||||
import { success, stringifyToDotEnv } from "../utils"
|
||||
import fs from "fs"
|
||||
import path from "path"
|
||||
import yaml from "yaml"
|
||||
import { getAppService } from "./utils"
|
||||
const randomString = require("randomstring")
|
||||
const yaml = require("yaml")
|
||||
const { getAppService } = require("./utils")
|
||||
|
||||
const SINGLE_IMAGE = "budibase/budibase:latest"
|
||||
const VOL_NAME = "budibase_data"
|
||||
const COMPOSE_PATH = path.resolve("./docker-compose.yaml")
|
||||
const ENV_PATH = path.resolve("./.env")
|
||||
export const COMPOSE_PATH = path.resolve("./docker-compose.yaml")
|
||||
export const ENV_PATH = path.resolve("./.env")
|
||||
|
||||
function getSecrets(opts = { single: false }) {
|
||||
const secrets = [
|
||||
|
@ -19,7 +19,7 @@ function getSecrets(opts = { single: false }) {
|
|||
"REDIS_PASSWORD",
|
||||
"INTERNAL_API_KEY",
|
||||
]
|
||||
const obj = {}
|
||||
const obj: Record<string, string> = {}
|
||||
secrets.forEach(secret => (obj[secret] = randomString.generate()))
|
||||
// setup couch creds separately
|
||||
if (opts && opts.single) {
|
||||
|
@ -32,7 +32,7 @@ function getSecrets(opts = { single: false }) {
|
|||
return obj
|
||||
}
|
||||
|
||||
function getSingleCompose(port) {
|
||||
function getSingleCompose(port: number) {
|
||||
const singleComposeObj = {
|
||||
version: "3",
|
||||
services: {
|
||||
|
@ -53,7 +53,7 @@ function getSingleCompose(port) {
|
|||
return yaml.stringify(singleComposeObj)
|
||||
}
|
||||
|
||||
function getEnv(port) {
|
||||
function getEnv(port: number) {
|
||||
const partOne = stringifyToDotEnv({
|
||||
MAIN_PORT: port,
|
||||
})
|
||||
|
@ -77,19 +77,21 @@ function getEnv(port) {
|
|||
].join("\n")
|
||||
}
|
||||
|
||||
exports.ENV_PATH = ENV_PATH
|
||||
exports.COMPOSE_PATH = COMPOSE_PATH
|
||||
|
||||
module.exports.ConfigMap = {
|
||||
export const ConfigMap = {
|
||||
MAIN_PORT: "port",
|
||||
}
|
||||
|
||||
module.exports.QUICK_CONFIG = {
|
||||
export const QUICK_CONFIG = {
|
||||
key: "budibase",
|
||||
port: 10000,
|
||||
}
|
||||
|
||||
async function make(path, contentsFn, inputs = {}, silent) {
|
||||
async function make(
|
||||
path: string,
|
||||
contentsFn: Function,
|
||||
inputs: any = {},
|
||||
silent: boolean
|
||||
) {
|
||||
const port =
|
||||
inputs.port ||
|
||||
(await number(
|
||||
|
@ -107,15 +109,15 @@ async function make(path, contentsFn, inputs = {}, silent) {
|
|||
}
|
||||
}
|
||||
|
||||
module.exports.makeEnv = async (inputs = {}, silent) => {
|
||||
export async function makeEnv(inputs: any = {}, silent: boolean) {
|
||||
return make(ENV_PATH, getEnv, inputs, silent)
|
||||
}
|
||||
|
||||
module.exports.makeSingleCompose = async (inputs = {}, silent) => {
|
||||
export async function makeSingleCompose(inputs: any = {}, silent: boolean) {
|
||||
return make(COMPOSE_PATH, getSingleCompose, inputs, silent)
|
||||
}
|
||||
|
||||
module.exports.getEnvProperty = property => {
|
||||
export function getEnvProperty(property: string) {
|
||||
const props = fs.readFileSync(ENV_PATH, "utf8").split(property)
|
||||
if (props[0].charAt(0) === "=") {
|
||||
property = props[0]
|
||||
|
@ -125,7 +127,7 @@ module.exports.getEnvProperty = property => {
|
|||
return property.split("=")[1].split("\n")[0]
|
||||
}
|
||||
|
||||
module.exports.getComposeProperty = property => {
|
||||
export function getComposeProperty(property: string) {
|
||||
const { service } = getAppService(COMPOSE_PATH)
|
||||
if (property === "port" && Array.isArray(service.ports)) {
|
||||
const port = service.ports[0]
|
|
@ -1,14 +1,10 @@
|
|||
const {
|
||||
checkDockerConfigured,
|
||||
checkInitComplete,
|
||||
handleError,
|
||||
} = require("./utils")
|
||||
const { info, success } = require("../utils")
|
||||
const makeFiles = require("./makeFiles")
|
||||
const compose = require("docker-compose")
|
||||
const fs = require("fs")
|
||||
import { checkDockerConfigured, checkInitComplete, handleError } from "./utils"
|
||||
import { info, success } from "../utils"
|
||||
import * as makeFiles from "./makeFiles"
|
||||
import compose from "docker-compose"
|
||||
import fs from "fs"
|
||||
|
||||
exports.start = async () => {
|
||||
export async function start() {
|
||||
await checkDockerConfigured()
|
||||
checkInitComplete()
|
||||
console.log(
|
|
@ -1,12 +1,8 @@
|
|||
const {
|
||||
checkDockerConfigured,
|
||||
checkInitComplete,
|
||||
handleError,
|
||||
} = require("./utils")
|
||||
const { info } = require("../utils")
|
||||
const compose = require("docker-compose")
|
||||
import { checkDockerConfigured, checkInitComplete, handleError } from "./utils"
|
||||
import { info } from "../utils"
|
||||
import compose from "docker-compose"
|
||||
|
||||
exports.status = async () => {
|
||||
export async function status() {
|
||||
await checkDockerConfigured()
|
||||
checkInitComplete()
|
||||
console.log(info("Budibase status"))
|
|
@ -1,12 +1,8 @@
|
|||
const {
|
||||
checkDockerConfigured,
|
||||
checkInitComplete,
|
||||
handleError,
|
||||
} = require("./utils")
|
||||
const { info, success } = require("../utils")
|
||||
const compose = require("docker-compose")
|
||||
import { checkDockerConfigured, checkInitComplete, handleError } from "./utils"
|
||||
import { info, success } from "../utils"
|
||||
import compose from "docker-compose"
|
||||
|
||||
exports.stop = async () => {
|
||||
export async function stop() {
|
||||
await checkDockerConfigured()
|
||||
checkInitComplete()
|
||||
console.log(info("Stopping services, this may take a moment."))
|
|
@ -0,0 +1,4 @@
|
|||
export interface DockerCompose {
|
||||
environment: Record<string, string>
|
||||
volumes: string[]
|
||||
}
|
|
@ -1,20 +1,20 @@
|
|||
const {
|
||||
import {
|
||||
checkDockerConfigured,
|
||||
checkInitComplete,
|
||||
downloadFiles,
|
||||
handleError,
|
||||
getServices,
|
||||
} = require("./utils")
|
||||
const { confirmation } = require("../questions")
|
||||
const compose = require("docker-compose")
|
||||
const { COMPOSE_PATH } = require("./makeFiles")
|
||||
const { info, success } = require("../utils")
|
||||
const { start } = require("./start")
|
||||
} from "./utils"
|
||||
import { confirmation } from "../questions"
|
||||
import compose from "docker-compose"
|
||||
import { COMPOSE_PATH } from "./makeFiles"
|
||||
import { info, success } from "../utils"
|
||||
import { start } from "./start"
|
||||
|
||||
const BB_COMPOSE_SERVICES = ["app-service", "worker-service", "proxy-service"]
|
||||
const BB_SINGLE_SERVICE = ["budibase"]
|
||||
|
||||
exports.update = async () => {
|
||||
export async function update() {
|
||||
const { services } = getServices(COMPOSE_PATH)
|
||||
const isSingle = Object.keys(services).length === 1
|
||||
await checkDockerConfigured()
|
|
@ -1,15 +1,16 @@
|
|||
const { lookpath } = require("lookpath")
|
||||
const fs = require("fs")
|
||||
const makeFiles = require("./makeFiles")
|
||||
const { logErrorToFile, downloadFile, error } = require("../utils")
|
||||
const yaml = require("yaml")
|
||||
import { lookpath } from "lookpath"
|
||||
import fs from "fs"
|
||||
import * as makeFiles from "./makeFiles"
|
||||
import { logErrorToFile, downloadFile, error } from "../utils"
|
||||
import yaml from "yaml"
|
||||
import { DockerCompose } from "./types"
|
||||
|
||||
const ERROR_FILE = "docker-error.log"
|
||||
const FILE_URLS = [
|
||||
"https://raw.githubusercontent.com/Budibase/budibase/master/hosting/docker-compose.yaml",
|
||||
]
|
||||
|
||||
exports.downloadFiles = async () => {
|
||||
export async function downloadFiles() {
|
||||
const promises = []
|
||||
for (let url of FILE_URLS) {
|
||||
const fileName = url.split("/").slice(-1)[0]
|
||||
|
@ -18,7 +19,7 @@ exports.downloadFiles = async () => {
|
|||
await Promise.all(promises)
|
||||
}
|
||||
|
||||
exports.checkDockerConfigured = async () => {
|
||||
export async function checkDockerConfigured() {
|
||||
const error =
|
||||
"docker/docker-compose has not been installed, please follow instructions at: https://docs.budibase.com/docs/docker-compose"
|
||||
const docker = await lookpath("docker")
|
||||
|
@ -28,7 +29,7 @@ exports.checkDockerConfigured = async () => {
|
|||
}
|
||||
}
|
||||
|
||||
exports.checkInitComplete = () => {
|
||||
export function checkInitComplete() {
|
||||
if (
|
||||
!fs.existsSync(makeFiles.ENV_PATH) &&
|
||||
!fs.existsSync(makeFiles.COMPOSE_PATH)
|
||||
|
@ -37,10 +38,10 @@ exports.checkInitComplete = () => {
|
|||
}
|
||||
}
|
||||
|
||||
exports.handleError = async func => {
|
||||
export async function handleError(func: Function) {
|
||||
try {
|
||||
await func()
|
||||
} catch (err) {
|
||||
} catch (err: any) {
|
||||
if (err && err.err) {
|
||||
logErrorToFile(ERROR_FILE, err.err)
|
||||
}
|
||||
|
@ -48,14 +49,14 @@ exports.handleError = async func => {
|
|||
}
|
||||
}
|
||||
|
||||
exports.getServices = path => {
|
||||
export function getServices(path: string) {
|
||||
const dockerYaml = fs.readFileSync(path, "utf8")
|
||||
const parsedYaml = yaml.parse(dockerYaml)
|
||||
return { yaml: parsedYaml, services: parsedYaml.services }
|
||||
}
|
||||
|
||||
exports.getAppService = path => {
|
||||
const { yaml, services } = exports.getServices(path),
|
||||
export function getAppService(path: string) {
|
||||
const { yaml, services } = getServices(path),
|
||||
serviceList = Object.keys(services)
|
||||
let service
|
||||
if (services["app-service"]) {
|
||||
|
@ -66,14 +67,16 @@ exports.getAppService = path => {
|
|||
return { yaml, service }
|
||||
}
|
||||
|
||||
exports.updateDockerComposeService = updateFn => {
|
||||
export function updateDockerComposeService(
|
||||
updateFn: (service: DockerCompose) => void
|
||||
) {
|
||||
const opts = ["docker-compose.yaml", "docker-compose.yml"]
|
||||
const dockerFilePath = opts.find(name => fs.existsSync(name))
|
||||
if (!dockerFilePath) {
|
||||
console.log(error("Unable to locate docker-compose YAML."))
|
||||
return
|
||||
}
|
||||
const { yaml: parsedYaml, service } = exports.getAppService(dockerFilePath)
|
||||
const { yaml: parsedYaml, service } = getAppService(dockerFilePath)
|
||||
if (!service) {
|
||||
console.log(
|
||||
error(
|
|
@ -1,9 +1,10 @@
|
|||
const { resolve } = require("path")
|
||||
const fs = require("fs")
|
||||
const { error, success } = require("../utils")
|
||||
const { updateDockerComposeService } = require("./utils")
|
||||
import { resolve } from "path"
|
||||
import fs from "fs"
|
||||
import { error, success } from "../utils"
|
||||
import { updateDockerComposeService } from "./utils"
|
||||
import { DockerCompose } from "./types"
|
||||
|
||||
exports.watchPlugins = async (pluginPath, silent) => {
|
||||
export async function watchPlugins(pluginPath: string, silent: boolean) {
|
||||
const PLUGIN_PATH = "/plugins"
|
||||
// get absolute path
|
||||
pluginPath = resolve(pluginPath)
|
||||
|
@ -15,7 +16,7 @@ exports.watchPlugins = async (pluginPath, silent) => {
|
|||
)
|
||||
return
|
||||
}
|
||||
updateDockerComposeService(service => {
|
||||
updateDockerComposeService((service: DockerCompose) => {
|
||||
// set environment variable
|
||||
service.environment["PLUGINS_DIR"] = PLUGIN_PATH
|
||||
// add volumes to parsed yaml
|
|
@ -1,10 +1,10 @@
|
|||
#!/usr/bin/env node
|
||||
require("./prebuilds")
|
||||
require("./environment")
|
||||
import "./prebuilds"
|
||||
import "./environment"
|
||||
import { getCommands } from "./options"
|
||||
import { Command } from "commander"
|
||||
import { getHelpDescription } from "./utils"
|
||||
const json = require("../package.json")
|
||||
const { getCommands } = require("./options")
|
||||
const { Command } = require("commander")
|
||||
const { getHelpDescription } = require("./utils")
|
||||
|
||||
// add hosting config
|
||||
async function init() {
|
|
@ -1,8 +0,0 @@
|
|||
const analytics = require("./analytics")
|
||||
const hosting = require("./hosting")
|
||||
const backups = require("./backups")
|
||||
const plugins = require("./plugins")
|
||||
|
||||
exports.getCommands = () => {
|
||||
return [hosting.command, analytics.command, backups.command, plugins.command]
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
import analytics from "./analytics"
|
||||
import hosting from "./hosting"
|
||||
import backups from "./backups"
|
||||
import plugins from "./plugins"
|
||||
|
||||
export function getCommands() {
|
||||
return [hosting, analytics, backups, plugins]
|
||||
}
|
|
@ -1,18 +1,22 @@
|
|||
const Command = require("../structures/Command")
|
||||
const { CommandWords, AnalyticsEvents, InitTypes } = require("../constants")
|
||||
const { getSkeleton, fleshOutSkeleton } = require("./skeleton")
|
||||
const questions = require("../questions")
|
||||
const fs = require("fs")
|
||||
const { PLUGIN_TYPE_ARR } = require("@budibase/types")
|
||||
const { plugins } = require("@budibase/backend-core")
|
||||
const { runPkgCommand } = require("../exec")
|
||||
const { join } = require("path")
|
||||
const { success, error, info, moveDirectory } = require("../utils")
|
||||
const { captureEvent } = require("../events")
|
||||
import { Command } from "../structures/Command"
|
||||
import { CommandWord, AnalyticsEvent, InitType } from "../constants"
|
||||
import { getSkeleton, fleshOutSkeleton } from "./skeleton"
|
||||
import * as questions from "../questions"
|
||||
import fs from "fs"
|
||||
import { PluginType, PLUGIN_TYPE_ARR } from "@budibase/types"
|
||||
import { plugins } from "@budibase/backend-core"
|
||||
import { runPkgCommand } from "../exec"
|
||||
import { join } from "path"
|
||||
import { success, error, info, moveDirectory } from "../utils"
|
||||
import { captureEvent } from "../events"
|
||||
import { GENERATED_USER_EMAIL } from "../constants"
|
||||
import { init as hostingInit } from "../hosting/init"
|
||||
import { start as hostingStart } from "../hosting/start"
|
||||
const fp = require("find-free-port")
|
||||
const { GENERATED_USER_EMAIL } = require("../constants")
|
||||
const { init: hostingInit } = require("../hosting/init")
|
||||
const { start: hostingStart } = require("../hosting/start")
|
||||
|
||||
type PluginOpts = {
|
||||
init?: PluginType
|
||||
}
|
||||
|
||||
function checkInPlugin() {
|
||||
if (!fs.existsSync("package.json")) {
|
||||
|
@ -27,7 +31,7 @@ function checkInPlugin() {
|
|||
}
|
||||
}
|
||||
|
||||
async function askAboutTopLevel(name) {
|
||||
async function askAboutTopLevel(name: string) {
|
||||
const files = fs.readdirSync(process.cwd())
|
||||
// we are in an empty git repo, don't ask
|
||||
if (files.find(file => file === ".git")) {
|
||||
|
@ -45,8 +49,8 @@ async function askAboutTopLevel(name) {
|
|||
}
|
||||
}
|
||||
|
||||
async function init(opts) {
|
||||
const type = opts["init"] || opts
|
||||
async function init(opts: PluginOpts) {
|
||||
const type = opts["init"] || (opts as PluginType)
|
||||
if (!type || !PLUGIN_TYPE_ARR.includes(type)) {
|
||||
console.log(
|
||||
error(
|
||||
|
@ -82,7 +86,7 @@ async function init(opts) {
|
|||
} else {
|
||||
console.log(info(`Plugin created in directory "${name}"`))
|
||||
}
|
||||
captureEvent(AnalyticsEvents.PluginInit, {
|
||||
captureEvent(AnalyticsEvent.PluginInit, {
|
||||
type,
|
||||
name,
|
||||
description,
|
||||
|
@ -109,7 +113,7 @@ async function verify() {
|
|||
version = pkgJson.version
|
||||
plugins.validate(schemaJson)
|
||||
return { name, version }
|
||||
} catch (err) {
|
||||
} catch (err: any) {
|
||||
if (err && err.message && err.message.includes("not valid JSON")) {
|
||||
console.log(error(`schema.json is not valid JSON: ${err.message}`))
|
||||
} else {
|
||||
|
@ -120,7 +124,7 @@ async function verify() {
|
|||
|
||||
async function build() {
|
||||
const verified = await verify()
|
||||
if (!verified.name) {
|
||||
if (!verified?.name) {
|
||||
return
|
||||
}
|
||||
console.log(success("Verified!"))
|
||||
|
@ -132,7 +136,7 @@ async function build() {
|
|||
|
||||
async function watch() {
|
||||
const verified = await verify()
|
||||
if (!verified.name) {
|
||||
if (!verified?.name) {
|
||||
return
|
||||
}
|
||||
const output = join("dist", `${verified.name}-${verified.version}.tar.gz`)
|
||||
|
@ -150,7 +154,7 @@ async function dev() {
|
|||
const [port] = await fp(10000)
|
||||
const password = "admin"
|
||||
await hostingInit({
|
||||
init: InitTypes.QUICK,
|
||||
init: InitType.QUICK,
|
||||
single: true,
|
||||
watchPluginDir: pluginDir,
|
||||
genUser: password,
|
||||
|
@ -168,7 +172,7 @@ async function dev() {
|
|||
console.log(success("Password: ") + info(password))
|
||||
}
|
||||
|
||||
const command = new Command(`${CommandWords.PLUGIN}`)
|
||||
export default new Command(`${CommandWord.PLUGIN}`)
|
||||
.addHelp(
|
||||
"Custom plugins for Budibase, init, build and verify your components and datasources with this tool."
|
||||
)
|
||||
|
@ -192,5 +196,3 @@ const command = new Command(`${CommandWords.PLUGIN}`)
|
|||
"Run a development environment which automatically watches the current directory.",
|
||||
dev
|
||||
)
|
||||
|
||||
exports.command = command
|
|
@ -1,21 +1,21 @@
|
|||
const fetch = require("node-fetch")
|
||||
import fetch from "node-fetch"
|
||||
import fs from "fs"
|
||||
import os from "os"
|
||||
import { join } from "path"
|
||||
import { processStringSync } from "@budibase/string-templates"
|
||||
const download = require("download")
|
||||
const fs = require("fs")
|
||||
const os = require("os")
|
||||
const { join } = require("path")
|
||||
const tar = require("tar")
|
||||
const { processStringSync } = require("@budibase/string-templates")
|
||||
|
||||
const HBS_FILES = ["package.json.hbs", "schema.json.hbs", "README.md.hbs"]
|
||||
|
||||
async function getSkeletonUrl(type) {
|
||||
async function getSkeletonUrl(type: string) {
|
||||
const resp = await fetch(
|
||||
"https://api.github.com/repos/budibase/budibase-skeleton/releases/latest"
|
||||
)
|
||||
if (resp.status >= 300) {
|
||||
throw new Error("Failed to retrieve skeleton metadata")
|
||||
}
|
||||
const json = await resp.json()
|
||||
const json = (await resp.json()) as { assets: any[] }
|
||||
for (let asset of json["assets"]) {
|
||||
if (asset.name && asset.name.includes(type)) {
|
||||
return asset["browser_download_url"]
|
||||
|
@ -24,7 +24,7 @@ async function getSkeletonUrl(type) {
|
|||
throw new Error("No skeleton found in latest release.")
|
||||
}
|
||||
|
||||
exports.getSkeleton = async (type, name) => {
|
||||
export async function getSkeleton(type: string, name: string) {
|
||||
const url = await getSkeletonUrl(type)
|
||||
const tarballFile = join(os.tmpdir(), "skeleton.tar.gz")
|
||||
|
||||
|
@ -40,7 +40,12 @@ exports.getSkeleton = async (type, name) => {
|
|||
fs.rmSync(tarballFile)
|
||||
}
|
||||
|
||||
exports.fleshOutSkeleton = async (type, name, description, version) => {
|
||||
export async function fleshOutSkeleton(
|
||||
type: string,
|
||||
name: string,
|
||||
description: string,
|
||||
version: string
|
||||
) {
|
||||
for (let file of HBS_FILES) {
|
||||
const oldFile = join(name, file),
|
||||
newFile = join(name, file.substring(0, file.length - 4))
|
|
@ -1,7 +1,8 @@
|
|||
const os = require("os")
|
||||
const { join } = require("path")
|
||||
const fs = require("fs")
|
||||
const { error } = require("./utils")
|
||||
import os from "os"
|
||||
import { join } from "path"
|
||||
import fs from "fs"
|
||||
import { error } from "./utils"
|
||||
|
||||
const PREBUILDS = "prebuilds"
|
||||
const ARCH = `${os.platform()}-${os.arch()}`
|
||||
const PREBUILD_DIR = join(process.execPath, "..", PREBUILDS, ARCH)
|
||||
|
@ -26,8 +27,8 @@ function checkForBinaries() {
|
|||
}
|
||||
}
|
||||
|
||||
function cleanup(evt) {
|
||||
if (!isNaN(evt)) {
|
||||
function cleanup(evt?: number) {
|
||||
if (evt && !isNaN(evt)) {
|
||||
return
|
||||
}
|
||||
if (evt) {
|
|
@ -1,6 +1,6 @@
|
|||
const inquirer = require("inquirer")
|
||||
|
||||
exports.confirmation = async question => {
|
||||
export async function confirmation(question: string) {
|
||||
const config = {
|
||||
type: "confirm",
|
||||
message: question,
|
||||
|
@ -10,8 +10,8 @@ exports.confirmation = async question => {
|
|||
return (await inquirer.prompt(config)).confirmation
|
||||
}
|
||||
|
||||
exports.string = async (question, defaultString = null) => {
|
||||
const config = {
|
||||
export async function string(question: string, defaultString?: string) {
|
||||
const config: any = {
|
||||
type: "input",
|
||||
name: "string",
|
||||
message: question,
|
||||
|
@ -22,12 +22,12 @@ exports.string = async (question, defaultString = null) => {
|
|||
return (await inquirer.prompt(config)).string
|
||||
}
|
||||
|
||||
exports.number = async (question, defaultNumber) => {
|
||||
const config = {
|
||||
export async function number(question: string, defaultNumber?: number) {
|
||||
const config: any = {
|
||||
type: "input",
|
||||
name: "number",
|
||||
message: question,
|
||||
validate: value => {
|
||||
validate: (value: string) => {
|
||||
let valid = !isNaN(parseFloat(value))
|
||||
return valid || "Please enter a number"
|
||||
},
|
|
@ -1,19 +1,31 @@
|
|||
const {
|
||||
import {
|
||||
getSubHelpDescription,
|
||||
getHelpDescription,
|
||||
error,
|
||||
capitaliseFirstLetter,
|
||||
} = require("../utils")
|
||||
} from "../utils"
|
||||
|
||||
class Command {
|
||||
constructor(command, func = null) {
|
||||
type CommandOpt = {
|
||||
command: string
|
||||
help: string
|
||||
func?: Function
|
||||
extras: any[]
|
||||
}
|
||||
|
||||
export class Command {
|
||||
command: string
|
||||
opts: CommandOpt[]
|
||||
func?: Function
|
||||
help?: string
|
||||
|
||||
constructor(command: string, func?: Function) {
|
||||
// if there are options, need to just get the command name
|
||||
this.command = command
|
||||
this.opts = []
|
||||
this.func = func
|
||||
}
|
||||
|
||||
convertToCommander(lookup) {
|
||||
convertToCommander(lookup: string) {
|
||||
const parts = lookup.toLowerCase().split("-")
|
||||
// camel case, separate out first
|
||||
const first = parts.shift()
|
||||
|
@ -22,21 +34,26 @@ class Command {
|
|||
.join("")
|
||||
}
|
||||
|
||||
addHelp(help) {
|
||||
addHelp(help: string) {
|
||||
this.help = help
|
||||
return this
|
||||
}
|
||||
|
||||
addSubOption(command, help, func, extras = []) {
|
||||
addSubOption(
|
||||
command: string,
|
||||
help: string,
|
||||
func?: Function,
|
||||
extras: any[] = []
|
||||
) {
|
||||
this.opts.push({ command, help, func, extras })
|
||||
return this
|
||||
}
|
||||
|
||||
configure(program) {
|
||||
configure(program: any) {
|
||||
const thisCmd = this
|
||||
let command = program.command(thisCmd.command)
|
||||
if (this.help) {
|
||||
command = command.description(getHelpDescription(thisCmd.help))
|
||||
command = command.description(getHelpDescription(thisCmd.help!))
|
||||
}
|
||||
for (let opt of thisCmd.opts) {
|
||||
command = command.option(opt.command, getSubHelpDescription(opt.help))
|
||||
|
@ -45,7 +62,7 @@ class Command {
|
|||
"--help",
|
||||
getSubHelpDescription(`Get help with ${this.command} options`)
|
||||
)
|
||||
command.action(async options => {
|
||||
command.action(async (options: Record<string, string>) => {
|
||||
try {
|
||||
let executed = false,
|
||||
found = false
|
||||
|
@ -53,7 +70,7 @@ class Command {
|
|||
let lookup = opt.command.split(" ")[0].replace("--", "")
|
||||
// need to handle how commander converts watch-plugin-dir to watchPluginDir
|
||||
lookup = this.convertToCommander(lookup)
|
||||
found = !executed && options[lookup]
|
||||
found = !executed && !!options[lookup]
|
||||
if (found && opt.func) {
|
||||
const input =
|
||||
Object.keys(options).length > 1 ? options : options[lookup]
|
||||
|
@ -69,11 +86,9 @@ class Command {
|
|||
console.log(error(`Unknown ${this.command} option.`))
|
||||
command.help()
|
||||
}
|
||||
} catch (err) {
|
||||
} catch (err: any) {
|
||||
console.log(error(err))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Command
|
|
@ -3,7 +3,9 @@ const path = require("path")
|
|||
const os = require("os")
|
||||
const { error } = require("../utils")
|
||||
|
||||
class ConfigManager {
|
||||
export class ConfigManager {
|
||||
path: string
|
||||
|
||||
constructor() {
|
||||
this.path = path.join(os.homedir(), ".budibase.json")
|
||||
if (!fs.existsSync(this.path)) {
|
||||
|
@ -24,26 +26,24 @@ class ConfigManager {
|
|||
}
|
||||
}
|
||||
|
||||
set config(json) {
|
||||
set config(json: any) {
|
||||
fs.writeFileSync(this.path, JSON.stringify(json))
|
||||
}
|
||||
|
||||
getValue(key) {
|
||||
getValue(key: string) {
|
||||
return this.config[key]
|
||||
}
|
||||
|
||||
setValue(key, value) {
|
||||
setValue(key: string, value: any) {
|
||||
this.config = {
|
||||
...this.config,
|
||||
[key]: value,
|
||||
}
|
||||
}
|
||||
|
||||
removeKey(key) {
|
||||
removeKey(key: string) {
|
||||
const updated = { ...this.config }
|
||||
delete updated[key]
|
||||
this.config = updated
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ConfigManager
|
|
@ -1,21 +1,18 @@
|
|||
const chalk = require("chalk")
|
||||
const fs = require("fs")
|
||||
const axios = require("axios")
|
||||
const path = require("path")
|
||||
import chalk from "chalk"
|
||||
import fs from "fs"
|
||||
import path from "path"
|
||||
import { join } from "path"
|
||||
import fetch from "node-fetch"
|
||||
const progress = require("cli-progress")
|
||||
const { join } = require("path")
|
||||
|
||||
exports.downloadFile = async (url, filePath) => {
|
||||
export async function downloadFile(url: string, filePath: string) {
|
||||
filePath = path.resolve(filePath)
|
||||
const writer = fs.createWriteStream(filePath)
|
||||
|
||||
const response = await axios({
|
||||
url,
|
||||
const response = await fetch(url, {
|
||||
method: "GET",
|
||||
responseType: "stream",
|
||||
})
|
||||
|
||||
response.data.pipe(writer)
|
||||
response.body?.pipe(writer)
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
writer.on("finish", resolve)
|
||||
|
@ -23,41 +20,41 @@ exports.downloadFile = async (url, filePath) => {
|
|||
})
|
||||
}
|
||||
|
||||
exports.httpCall = async (url, method) => {
|
||||
const response = await axios({
|
||||
url,
|
||||
export async function httpCall(url: string, method: string) {
|
||||
const response = await fetch(url, {
|
||||
method,
|
||||
})
|
||||
return response.data
|
||||
return response.body
|
||||
}
|
||||
|
||||
exports.getHelpDescription = string => {
|
||||
return chalk.cyan(string)
|
||||
export function getHelpDescription(str: string) {
|
||||
return chalk.cyan(str)
|
||||
}
|
||||
|
||||
exports.getSubHelpDescription = string => {
|
||||
return chalk.green(string)
|
||||
export function getSubHelpDescription(str: string) {
|
||||
return chalk.green(str)
|
||||
}
|
||||
|
||||
exports.error = error => {
|
||||
return chalk.red(`Error - ${error}`)
|
||||
export function error(err: string | number) {
|
||||
process.exitCode = -1
|
||||
return chalk.red(`Error - ${err}`)
|
||||
}
|
||||
|
||||
exports.success = success => {
|
||||
return chalk.green(success)
|
||||
export function success(str: string) {
|
||||
return chalk.green(str)
|
||||
}
|
||||
|
||||
exports.info = info => {
|
||||
return chalk.cyan(info)
|
||||
export function info(str: string) {
|
||||
return chalk.cyan(str)
|
||||
}
|
||||
|
||||
exports.logErrorToFile = (file, error) => {
|
||||
export function logErrorToFile(file: string, error: string) {
|
||||
fs.writeFileSync(path.resolve(`./${file}`), `Budibase Error\n${error}`)
|
||||
}
|
||||
|
||||
exports.parseEnv = env => {
|
||||
export function parseEnv(env: string) {
|
||||
const lines = env.toString().split("\n")
|
||||
let result = {}
|
||||
let result: Record<string, string> = {}
|
||||
for (const line of lines) {
|
||||
const match = line.match(/^([^=:#]+?)[=:](.*)/)
|
||||
if (match) {
|
||||
|
@ -67,17 +64,17 @@ exports.parseEnv = env => {
|
|||
return result
|
||||
}
|
||||
|
||||
exports.progressBar = total => {
|
||||
export function progressBar(total: number) {
|
||||
const bar = new progress.SingleBar({}, progress.Presets.shades_classic)
|
||||
bar.start(total, 0)
|
||||
return bar
|
||||
}
|
||||
|
||||
exports.checkSlashesInUrl = url => {
|
||||
export function checkSlashesInUrl(url: string) {
|
||||
return url.replace(/(https?:\/\/)|(\/)+/g, "$1$2")
|
||||
}
|
||||
|
||||
exports.moveDirectory = (oldPath, newPath) => {
|
||||
export function moveDirectory(oldPath: string, newPath: string) {
|
||||
const files = fs.readdirSync(oldPath)
|
||||
// check any file exists already
|
||||
for (let file of files) {
|
||||
|
@ -93,11 +90,11 @@ exports.moveDirectory = (oldPath, newPath) => {
|
|||
fs.rmdirSync(oldPath)
|
||||
}
|
||||
|
||||
exports.capitaliseFirstLetter = str => {
|
||||
export function capitaliseFirstLetter(str: string) {
|
||||
return str.charAt(0).toUpperCase() + str.slice(1)
|
||||
}
|
||||
|
||||
exports.stringifyToDotEnv = json => {
|
||||
export function stringifyToDotEnv(json: Record<string, string | number>) {
|
||||
let str = ""
|
||||
for (let [key, value] of Object.entries(json)) {
|
||||
str += `${key}=${value}\n`
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"lib": ["es2020"],
|
||||
"strict": true,
|
||||
"noImplicitAny": true,
|
||||
"esModuleInterop": true,
|
||||
"resolveJsonModule": true,
|
||||
"incremental": true,
|
||||
"types": [ "node", "jest" ],
|
||||
"outDir": "dist",
|
||||
"skipLibCheck": true
|
||||
},
|
||||
"include": [
|
||||
"src/**/*"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist",
|
||||
"**/*.spec.ts",
|
||||
"**/*.spec.js"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"extends": "./tsconfig.build.json",
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"declaration": true,
|
||||
"sourceMap": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@budibase/types": ["../types/src"],
|
||||
"@budibase/backend-core": ["../backend-core/src"],
|
||||
"@budibase/backend-core/*": ["../backend-core/*"],
|
||||
"@budibase/pro": ["../../../budibase-pro/packages/pro/src"]
|
||||
}
|
||||
},
|
||||
"ts-node": {
|
||||
"require": ["tsconfig-paths/register"],
|
||||
"swc": true
|
||||
},
|
||||
"references": [
|
||||
{ "path": "../types" },
|
||||
{ "path": "../backend-core" },
|
||||
{ "path": "../../../budibase-pro/packages/pro" }
|
||||
],
|
||||
"include": [
|
||||
"src/**/*",
|
||||
"package.json"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"dist"
|
||||
]
|
||||
}
|
|
@ -9,6 +9,13 @@
|
|||
dependencies:
|
||||
"@babel/highlight" "^7.10.4"
|
||||
|
||||
"@babel/code-frame@^7.12.13":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
|
||||
integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.18.6"
|
||||
|
||||
"@babel/generator@7.18.2":
|
||||
version "7.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d"
|
||||
|
@ -33,7 +40,7 @@
|
|||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
|
||||
integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
|
||||
|
||||
"@babel/highlight@^7.10.4":
|
||||
"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
|
||||
integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
|
||||
|
@ -71,6 +78,13 @@
|
|||
"@babel/helper-validator-identifier" "^7.19.1"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@cspotcode/source-map-support@^0.8.0":
|
||||
version "0.8.1"
|
||||
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
|
||||
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping" "0.3.9"
|
||||
|
||||
"@eslint/eslintrc@^0.4.3":
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
|
||||
|
@ -112,6 +126,50 @@
|
|||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
||||
|
||||
"@jest/create-cache-key-function@^27.4.2":
|
||||
version "27.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31"
|
||||
integrity sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==
|
||||
dependencies:
|
||||
"@jest/types" "^27.5.1"
|
||||
|
||||
"@jest/expect-utils@^29.4.3":
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.4.3.tgz#95ce4df62952f071bcd618225ac7c47eaa81431e"
|
||||
integrity sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==
|
||||
dependencies:
|
||||
jest-get-type "^29.4.3"
|
||||
|
||||
"@jest/schemas@^29.4.3":
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788"
|
||||
integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==
|
||||
dependencies:
|
||||
"@sinclair/typebox" "^0.25.16"
|
||||
|
||||
"@jest/types@^27.5.1":
|
||||
version "27.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80"
|
||||
integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==
|
||||
dependencies:
|
||||
"@types/istanbul-lib-coverage" "^2.0.0"
|
||||
"@types/istanbul-reports" "^3.0.0"
|
||||
"@types/node" "*"
|
||||
"@types/yargs" "^16.0.0"
|
||||
chalk "^4.0.0"
|
||||
|
||||
"@jest/types@^29.4.3":
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.3.tgz#9069145f4ef09adf10cec1b2901b2d390031431f"
|
||||
integrity sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==
|
||||
dependencies:
|
||||
"@jest/schemas" "^29.4.3"
|
||||
"@types/istanbul-lib-coverage" "^2.0.0"
|
||||
"@types/istanbul-reports" "^3.0.0"
|
||||
"@types/node" "*"
|
||||
"@types/yargs" "^17.0.8"
|
||||
chalk "^4.0.0"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.0":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
|
||||
|
@ -121,7 +179,7 @@
|
|||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
"@jridgewell/trace-mapping" "^0.3.9"
|
||||
|
||||
"@jridgewell/resolve-uri@3.1.0":
|
||||
"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
|
||||
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
|
||||
|
@ -136,6 +194,14 @@
|
|||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
||||
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
||||
|
||||
"@jridgewell/trace-mapping@0.3.9":
|
||||
version "0.3.9"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
|
||||
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri" "^3.0.3"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.17"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
|
||||
|
@ -182,11 +248,332 @@
|
|||
resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
|
||||
integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
|
||||
|
||||
"@sinclair/typebox@^0.25.16":
|
||||
version "0.25.24"
|
||||
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718"
|
||||
integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==
|
||||
|
||||
"@sindresorhus/is@^0.7.0":
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
|
||||
integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==
|
||||
|
||||
"@swc/core-darwin-arm64@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.37.tgz#a92e075ae35f18a64aaf3823ea175f03564f8da1"
|
||||
integrity sha512-iIyVqqioUpVeT/hbBVfkrsjfCyL4idNH+LVKGmoTAWaTTSB0+UNhNuA7Wh2CqIHWh1Mv7IlumitWPcqsVDdoEw==
|
||||
|
||||
"@swc/core-darwin-x64@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.37.tgz#a3cc06c87140a2ca0b8e7ef1f3d5cc34dd080429"
|
||||
integrity sha512-dao5nXPWKxtaxqak4ZkRyBoApNIelW/glantQhPhj0FjMjuIQc+v03ldJ8XDByWOG+6xuVUTheANCtEccxoQBw==
|
||||
|
||||
"@swc/core-linux-arm-gnueabihf@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.37.tgz#f7d8f8523830c6be653f608839d4bd5598457f1f"
|
||||
integrity sha512-/mVrc8H/f062CUkqKGmBiil2VIYu4mKawHxERfeP1y38X5K/OwjG5s9MgO9TVxy+Ly6vejwj70kRhSa3hVp1Bw==
|
||||
|
||||
"@swc/core-linux-arm64-gnu@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.37.tgz#b162febd9de14fb08000c722b063be2bb5aefa6b"
|
||||
integrity sha512-eRQ3KaZI0j5LidTfOIi/kUVOOMuVmw1HCdt/Z1TAUKoHMLVxY8xcJ3pEE3/+ednI60EmHpwpJRs6LelXyL6uzQ==
|
||||
|
||||
"@swc/core-linux-arm64-musl@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.37.tgz#3b1a628e880fbb1a5e2a7a46d42e8aa878c6bfdd"
|
||||
integrity sha512-w2BRLODyxNQY2rfHZMZ5ir6QrrnGBPlnIslTrgKmVbn1OjZoxUCtuqhrYnCmybaAc4DOkeH02TqynEFXrm+EMw==
|
||||
|
||||
"@swc/core-linux-x64-gnu@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.37.tgz#ed443ad77dc90e415267d02a38e4113047b2d3d8"
|
||||
integrity sha512-CfoH8EsZJZ9kunjMUjBNYD5fFuO86zw+K/o4wEw72Yg6ZEiqPmeIlCKU8tpTv4sK+CbhUXrmVzMB5tqsb2jALQ==
|
||||
|
||||
"@swc/core-linux-x64-musl@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.37.tgz#de607a4985458bd6e8b0e40f0d62d0e26bd8df1e"
|
||||
integrity sha512-9YPrHYNdoG7PK11gV51GfL45biI2dic+YTqHUDKyykemsD7Ot1zUFX7Ty//pdvpKcKSff6SrHbfFACD5ziNirA==
|
||||
|
||||
"@swc/core-win32-arm64-msvc@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.37.tgz#d5851a47d7df183929b9746d56f76c282f940e6a"
|
||||
integrity sha512-h17Ek8/wCDje6BrXOvCXBM80oBRmTSMMdLyt87whTl5xqYlWYYs9oQIzZndNRTlNpTgjGO8Ns2eo4kwVxIkBIA==
|
||||
|
||||
"@swc/core-win32-ia32-msvc@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.37.tgz#06ad7016f61b56aec4abf60eab3a91b786f9e294"
|
||||
integrity sha512-1BR175E1olGy/zdt94cgdb6ps/lBNissAOaxyBk8taFpcjy3zpdP30yAoH0GIsC6isnZ5JfArbOJNRXXO5tE0Q==
|
||||
|
||||
"@swc/core-win32-x64-msvc@1.3.37":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.37.tgz#60139a7089003a7447a4efef9704ae8fde21995e"
|
||||
integrity sha512-1siDQ7dccQ1pesJmgAL3BUBbRPtfbNInOWnZOkiie/DfFqGQ117QKnCVyjUvwFKfTQx1+3UUTDmMSlRd00SlXg==
|
||||
|
||||
"@swc/core@^1.3.25":
|
||||
version "1.3.37"
|
||||
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.37.tgz#644653fa7deb20c7c342e7fd019c7abc44ecf1bf"
|
||||
integrity sha512-VOFlEQ1pReOM73N9A7R8rt561GU8Rxsq833jiimWDUB2sXEN3V6n6wFTgYmZuMz2T4/R0cQA1nV48KkaT4gkFw==
|
||||
optionalDependencies:
|
||||
"@swc/core-darwin-arm64" "1.3.37"
|
||||
"@swc/core-darwin-x64" "1.3.37"
|
||||
"@swc/core-linux-arm-gnueabihf" "1.3.37"
|
||||
"@swc/core-linux-arm64-gnu" "1.3.37"
|
||||
"@swc/core-linux-arm64-musl" "1.3.37"
|
||||
"@swc/core-linux-x64-gnu" "1.3.37"
|
||||
"@swc/core-linux-x64-musl" "1.3.37"
|
||||
"@swc/core-win32-arm64-msvc" "1.3.37"
|
||||
"@swc/core-win32-ia32-msvc" "1.3.37"
|
||||
"@swc/core-win32-x64-msvc" "1.3.37"
|
||||
|
||||
"@swc/jest@^0.2.24":
|
||||
version "0.2.24"
|
||||
resolved "https://registry.yarnpkg.com/@swc/jest/-/jest-0.2.24.tgz#35d9377ede049613cd5fdd6c24af2b8dcf622875"
|
||||
integrity sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==
|
||||
dependencies:
|
||||
"@jest/create-cache-key-function" "^27.4.2"
|
||||
jsonc-parser "^3.2.0"
|
||||
|
||||
"@tsconfig/node10@^1.0.7":
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
|
||||
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
|
||||
|
||||
"@tsconfig/node12@^1.0.7":
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
|
||||
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
|
||||
|
||||
"@tsconfig/node14@^1.0.0":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
|
||||
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
|
||||
|
||||
"@tsconfig/node16@^1.0.2":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e"
|
||||
integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
|
||||
|
||||
"@types/debug@*":
|
||||
version "4.1.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82"
|
||||
integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==
|
||||
dependencies:
|
||||
"@types/ms" "*"
|
||||
|
||||
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
|
||||
integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
|
||||
|
||||
"@types/istanbul-lib-report@*":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
|
||||
integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
|
||||
dependencies:
|
||||
"@types/istanbul-lib-coverage" "*"
|
||||
|
||||
"@types/istanbul-reports@^3.0.0":
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff"
|
||||
integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==
|
||||
dependencies:
|
||||
"@types/istanbul-lib-report" "*"
|
||||
|
||||
"@types/jest@^29.4.0":
|
||||
version "29.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206"
|
||||
integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==
|
||||
dependencies:
|
||||
expect "^29.0.0"
|
||||
pretty-format "^29.0.0"
|
||||
|
||||
"@types/ms@*":
|
||||
version "0.7.31"
|
||||
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
|
||||
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
|
||||
|
||||
"@types/node-fetch@2.6.1":
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975"
|
||||
integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
form-data "^3.0.0"
|
||||
|
||||
"@types/node@*":
|
||||
version "18.14.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.4.tgz#0e64ec0b35a772e1e3d849f9a0ff61782d0cb647"
|
||||
integrity sha512-VhCw7I7qO2X49+jaKcAUwi3rR+hbxT5VcYF493+Z5kMLI0DL568b7JI4IDJaxWFH0D/xwmGJNoXisyX+w7GH/g==
|
||||
|
||||
"@types/pouchdb-adapter-cordova-sqlite@*":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-cordova-sqlite/-/pouchdb-adapter-cordova-sqlite-1.0.1.tgz#49e5ee6df7cc0c23196fcb340f43a560e74eb1d6"
|
||||
integrity sha512-nqlXpW1ho3KBg1mUQvZgH2755y3z/rw4UA7ZJCPMRTHofxGMY8izRVw5rHBL4/7P615or0J2udpRYxgkT3D02g==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-fruitdown@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-fruitdown/-/pouchdb-adapter-fruitdown-6.1.3.tgz#9b140ad9645cc56068728acf08ec19ac0046658e"
|
||||
integrity sha512-Wz1Z1JLOW1hgmFQjqnSkmyyfH7by/iWb4abKn684WMvQfmxx6BxKJpJ4+eulkVPQzzgMMSgU1MpnQOm9FgRkbw==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-http@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-http/-/pouchdb-adapter-http-6.1.3.tgz#6e592d5f48deb6274a21ddac1498dd308096bcf3"
|
||||
integrity sha512-9Z4TLbF/KJWy/D2sWRPBA+RNU0odQimfdvlDX+EY7rGcd3aVoH8qjD/X0Xcd/0dfBH5pKrNIMFFQgW/TylRCmA==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-idb@*":
|
||||
version "6.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-idb/-/pouchdb-adapter-idb-6.1.4.tgz#cb9a18864585d600820cd325f007614c5c3989cd"
|
||||
integrity sha512-KIAXbkF4uYUz0ZwfNEFLtEkK44mEWopAsD76UhucH92XnJloBysav+TjI4FFfYQyTjoW3S1s6V+Z14CUJZ0F6w==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-leveldb@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-leveldb/-/pouchdb-adapter-leveldb-6.1.3.tgz#17c7e75d75b992050bca15991e97fba575c61bb3"
|
||||
integrity sha512-ex8NFqQGFwEpFi7AaZ5YofmuemfZNsL3nTFZBUCAKYMBkazQij1pe2ILLStSvJr0XS0qxgXjCEW19T5Wqiiskg==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-localstorage@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-localstorage/-/pouchdb-adapter-localstorage-6.1.3.tgz#0dde02ba6b9d6073a295a20196563942ba9a54bd"
|
||||
integrity sha512-oor040tye1KKiGLWYtIy7rRT7C2yoyX3Tf6elEJRpjOA7Ja/H8lKc4LaSh9ATbptIcES6MRqZDxtp7ly9hsW3Q==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-memory@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-memory/-/pouchdb-adapter-memory-6.1.3.tgz#9eabdbc890fcf58960ee8b68b8685f837e75c844"
|
||||
integrity sha512-gVbsIMzDzgZYThFVT4eVNsmuZwVm/4jDxP1sjlgc3qtDIxbtBhGgyNfcskwwz9Zu5Lv1avkDsIWvcxQhnvRlHg==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-node-websql@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-node-websql/-/pouchdb-adapter-node-websql-6.1.3.tgz#aa18bc68af8cf509acd12c400010dcd5fab2243d"
|
||||
integrity sha512-F/P+os6Jsa7CgHtH64+Z0HfwIcj0hIRB5z8gNhF7L7dxPWoAfkopK5H2gydrP3sQrlGyN4WInF+UJW/Zu1+FKg==
|
||||
dependencies:
|
||||
"@types/pouchdb-adapter-websql" "*"
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-adapter-websql@*":
|
||||
version "6.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-websql/-/pouchdb-adapter-websql-6.1.4.tgz#359fbe42ccac0ac90b492ddb8c32fafd0aa96d79"
|
||||
integrity sha512-zMJQCtXC40hBsIDRn0GhmpeGMK0f9l/OGWfLguvczROzxxcOD7REI+e6SEmX7gJKw5JuMvlfuHzkQwjmvSJbtg==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-browser@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-browser/-/pouchdb-browser-6.1.3.tgz#8f33d6ef58d6817d1f6d36979148a1c7f63244d8"
|
||||
integrity sha512-EdYowrWxW9SWBMX/rux2eq7dbHi5Zeyzz+FF/IAsgQKnUxgeCO5VO2j4zTzos0SDyJvAQU+EYRc11r7xGn5tvA==
|
||||
dependencies:
|
||||
"@types/pouchdb-adapter-http" "*"
|
||||
"@types/pouchdb-adapter-idb" "*"
|
||||
"@types/pouchdb-adapter-websql" "*"
|
||||
"@types/pouchdb-core" "*"
|
||||
"@types/pouchdb-mapreduce" "*"
|
||||
"@types/pouchdb-replication" "*"
|
||||
|
||||
"@types/pouchdb-core@*":
|
||||
version "7.0.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-core/-/pouchdb-core-7.0.10.tgz#d1ea1549e7fad6cb579f71459b1bc27252e06a5a"
|
||||
integrity sha512-mKhjLlWWXyV3PTTjDhzDV1kc2dolO7VYFa75IoKM/hr8Er9eo8RIbS7mJLfC8r/C3p6ihZu9yZs1PWC1LQ0SOA==
|
||||
dependencies:
|
||||
"@types/debug" "*"
|
||||
"@types/pouchdb-find" "*"
|
||||
|
||||
"@types/pouchdb-find@*":
|
||||
version "7.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-find/-/pouchdb-find-7.3.0.tgz#b917030e9f4bf6e56bf8c3b9fe4b2a25e989009a"
|
||||
integrity sha512-sFPli5tBjGX9UfXioik1jUzPdcN84eV82n0lmEFuoPepWqkLjQcyri0eOa++HYOaNPyMDhKFBqEALEZivK2dRg==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-http@*":
|
||||
version "6.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-http/-/pouchdb-http-6.1.3.tgz#09576c0d409da1f8dee34ec5b768415e2472ea52"
|
||||
integrity sha512-0e9E5SqNOyPl/3FnEIbENssB4FlJsNYuOy131nxrZk36S+y1R/6qO7ZVRypWpGTqBWSuVd7gCsq2UDwO/285+w==
|
||||
dependencies:
|
||||
"@types/pouchdb-adapter-http" "*"
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-mapreduce@*":
|
||||
version "6.1.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-mapreduce/-/pouchdb-mapreduce-6.1.7.tgz#9ab32d1e0f234f1bf6d1e4c5d7e216e9e23ac0a3"
|
||||
integrity sha512-WzBwm7tmO9QhfRzVaWT4v6JQSS/fG2OoUDrWrhX87rPe2Pn6laPvdK5li6myNRxCoI/l5e8Jd+oYBAFnaiFucA==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
|
||||
"@types/pouchdb-node@*":
|
||||
version "6.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-node/-/pouchdb-node-6.1.4.tgz#5214c0169fcfd2237d373380bbd65a934feb5dfb"
|
||||
integrity sha512-wnTCH8X1JOPpNOfVhz8HW0AvmdHh6pt40MuRj0jQnK7QEHsHS79WujsKTKSOF8QXtPwpvCNSsI7ut7H7tfxxJQ==
|
||||
dependencies:
|
||||
"@types/pouchdb-adapter-http" "*"
|
||||
"@types/pouchdb-adapter-leveldb" "*"
|
||||
"@types/pouchdb-core" "*"
|
||||
"@types/pouchdb-mapreduce" "*"
|
||||
"@types/pouchdb-replication" "*"
|
||||
|
||||
"@types/pouchdb-replication@*":
|
||||
version "6.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb-replication/-/pouchdb-replication-6.4.4.tgz#743406c90f13a988fa3e346ea74ce40acd170d00"
|
||||
integrity sha512-BsE5LKpjJK4iAf6Fx5kyrMw+33V+Ip7uWldUnU2BYrrvtR+MLD22dcImm7DZN1st2wPPb91i0XEnQzvP0w1C/Q==
|
||||
dependencies:
|
||||
"@types/pouchdb-core" "*"
|
||||
"@types/pouchdb-find" "*"
|
||||
|
||||
"@types/pouchdb@^6.4.0":
|
||||
version "6.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/pouchdb/-/pouchdb-6.4.0.tgz#f9c41ca64b23029f9bf2eb4bf6956e6431cb79f8"
|
||||
integrity sha512-eGCpX+NXhd5VLJuJMzwe3L79fa9+IDTrAG3CPaf4s/31PD56hOrhDJTSmRELSXuiqXr6+OHzzP0PldSaWsFt7w==
|
||||
dependencies:
|
||||
"@types/pouchdb-adapter-cordova-sqlite" "*"
|
||||
"@types/pouchdb-adapter-fruitdown" "*"
|
||||
"@types/pouchdb-adapter-http" "*"
|
||||
"@types/pouchdb-adapter-idb" "*"
|
||||
"@types/pouchdb-adapter-leveldb" "*"
|
||||
"@types/pouchdb-adapter-localstorage" "*"
|
||||
"@types/pouchdb-adapter-memory" "*"
|
||||
"@types/pouchdb-adapter-node-websql" "*"
|
||||
"@types/pouchdb-adapter-websql" "*"
|
||||
"@types/pouchdb-browser" "*"
|
||||
"@types/pouchdb-core" "*"
|
||||
"@types/pouchdb-http" "*"
|
||||
"@types/pouchdb-mapreduce" "*"
|
||||
"@types/pouchdb-node" "*"
|
||||
"@types/pouchdb-replication" "*"
|
||||
|
||||
"@types/stack-utils@^2.0.0":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
|
||||
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
|
||||
|
||||
"@types/yargs-parser@*":
|
||||
version "21.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
|
||||
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
|
||||
|
||||
"@types/yargs@^16.0.0":
|
||||
version "16.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3"
|
||||
integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==
|
||||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
"@types/yargs@^17.0.8":
|
||||
version "17.0.22"
|
||||
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a"
|
||||
integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==
|
||||
dependencies:
|
||||
"@types/yargs-parser" "*"
|
||||
|
||||
abort-controller@3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
|
||||
|
@ -221,11 +608,21 @@ acorn-jsx@^5.3.1:
|
|||
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
|
||||
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
|
||||
|
||||
acorn-walk@^8.1.1:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
|
||||
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
||||
|
||||
acorn@^7.4.0:
|
||||
version "7.4.1"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||
|
||||
acorn@^8.4.1:
|
||||
version "8.8.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
|
||||
integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
|
||||
|
||||
agent-base@6:
|
||||
version "6.0.2"
|
||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
||||
|
@ -289,6 +686,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
|||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
|
||||
ansi-styles@^5.0.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
|
||||
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
|
||||
|
||||
aproba@^1.0.3:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
|
||||
|
@ -309,6 +711,11 @@ are-we-there-yet@~1.1.2:
|
|||
delegates "^1.0.0"
|
||||
readable-stream "^2.0.6"
|
||||
|
||||
arg@^4.1.0:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
|
||||
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
|
||||
|
||||
argparse@^1.0.7:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
||||
|
@ -351,6 +758,11 @@ astral-regex@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
|
||||
integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
|
||||
|
||||
at-least-node@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
||||
|
@ -364,13 +776,6 @@ axios-retry@^3.1.9:
|
|||
"@babel/runtime" "^7.15.4"
|
||||
is-retry-allowed "^2.2.0"
|
||||
|
||||
axios@0.21.2:
|
||||
version "0.21.2"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.2.tgz#21297d5084b2aeeb422f5d38e7be4fbb82239017"
|
||||
integrity sha512-87otirqUw3e8CzHTMO+/9kh/FSgXt/eVDvipijwDtEuwbkySWZ9SBm6VEubmJ/kLKEoLQV/POhxXFb66bfekfg==
|
||||
dependencies:
|
||||
follow-redirects "^1.14.0"
|
||||
|
||||
axios@^0.21.1:
|
||||
version "0.21.4"
|
||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
|
||||
|
@ -519,6 +924,11 @@ chownr@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
|
||||
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
|
||||
|
||||
ci-info@^3.2.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
|
||||
integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
|
||||
|
||||
cli-cursor@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
|
||||
|
@ -588,6 +998,13 @@ 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==
|
||||
|
||||
combined-stream@^1.0.8:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
||||
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
command-line-args@^5.2.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e"
|
||||
|
@ -658,6 +1075,11 @@ core-util-is@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
||||
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
||||
|
||||
create-require@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||
|
||||
cross-spawn@^7.0.2:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
||||
|
@ -774,6 +1196,11 @@ deferred-leveldown@~5.3.0:
|
|||
abstract-leveldown "~6.2.1"
|
||||
inherits "^2.0.3"
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
||||
|
||||
delegates@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
||||
|
@ -784,6 +1211,16 @@ detect-libc@^1.0.3:
|
|||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
|
||||
integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
|
||||
|
||||
diff-sequences@^29.4.3:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2"
|
||||
integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==
|
||||
|
||||
diff@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
|
||||
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
||||
|
||||
dir-glob@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
||||
|
@ -888,6 +1325,11 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
|||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
||||
|
||||
escape-string-regexp@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
|
||||
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
|
||||
|
||||
escape-string-regexp@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
|
@ -1017,6 +1459,17 @@ expand-template@^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@^29.0.0:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/expect/-/expect-29.4.3.tgz#5e47757316df744fe3b8926c3ae8a3ebdafff7fe"
|
||||
integrity sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==
|
||||
dependencies:
|
||||
"@jest/expect-utils" "^29.4.3"
|
||||
jest-get-type "^29.4.3"
|
||||
jest-matcher-utils "^29.4.3"
|
||||
jest-message-util "^29.4.3"
|
||||
jest-util "^29.4.3"
|
||||
|
||||
ext-list@^2.0.0:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37"
|
||||
|
@ -1191,6 +1644,15 @@ follow-redirects@^1.14.0:
|
|||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
|
||||
integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
|
||||
|
||||
form-data@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
|
||||
integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.8"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
from2@^2.1.1, from2@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
|
||||
|
@ -1348,7 +1810,7 @@ got@^8.3.1:
|
|||
url-parse-lax "^3.0.0"
|
||||
url-to-options "^1.0.1"
|
||||
|
||||
graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||
graceful-fs@^4.1.10, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9:
|
||||
version "4.2.10"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
|
||||
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
||||
|
@ -1604,6 +2066,58 @@ isurl@^1.0.0-alpha5:
|
|||
has-to-string-tag-x "^1.2.0"
|
||||
is-object "^1.0.1"
|
||||
|
||||
jest-diff@^29.4.3:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.4.3.tgz#42f4eb34d0bf8c0fb08b0501069b87e8e84df347"
|
||||
integrity sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==
|
||||
dependencies:
|
||||
chalk "^4.0.0"
|
||||
diff-sequences "^29.4.3"
|
||||
jest-get-type "^29.4.3"
|
||||
pretty-format "^29.4.3"
|
||||
|
||||
jest-get-type@^29.4.3:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5"
|
||||
integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==
|
||||
|
||||
jest-matcher-utils@^29.4.3:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.4.3.tgz#ea68ebc0568aebea4c4213b99f169ff786df96a0"
|
||||
integrity sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==
|
||||
dependencies:
|
||||
chalk "^4.0.0"
|
||||
jest-diff "^29.4.3"
|
||||
jest-get-type "^29.4.3"
|
||||
pretty-format "^29.4.3"
|
||||
|
||||
jest-message-util@^29.4.3:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.3.tgz#65b5280c0fdc9419503b49d4f48d4999d481cb5b"
|
||||
integrity sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.12.13"
|
||||
"@jest/types" "^29.4.3"
|
||||
"@types/stack-utils" "^2.0.0"
|
||||
chalk "^4.0.0"
|
||||
graceful-fs "^4.2.9"
|
||||
micromatch "^4.0.4"
|
||||
pretty-format "^29.4.3"
|
||||
slash "^3.0.0"
|
||||
stack-utils "^2.0.3"
|
||||
|
||||
jest-util@^29.4.3:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.3.tgz#851a148e23fc2b633c55f6dad2e45d7f4579f496"
|
||||
integrity sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==
|
||||
dependencies:
|
||||
"@jest/types" "^29.4.3"
|
||||
"@types/node" "*"
|
||||
chalk "^4.0.0"
|
||||
ci-info "^3.2.0"
|
||||
graceful-fs "^4.2.9"
|
||||
picomatch "^2.2.3"
|
||||
|
||||
joi@17.6.0:
|
||||
version "17.6.0"
|
||||
resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2"
|
||||
|
@ -1663,6 +2177,11 @@ json-stringify-safe@^5.0.1:
|
|||
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
|
||||
|
||||
jsonc-parser@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
|
||||
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
|
||||
|
||||
jsonfile@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
|
||||
|
@ -1857,6 +2376,11 @@ make-dir@^2.1.0:
|
|||
pify "^4.0.1"
|
||||
semver "^5.6.0"
|
||||
|
||||
make-error@^1.1.1:
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
||||
|
||||
md5@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
|
||||
|
@ -1879,11 +2403,18 @@ micromatch@^4.0.4:
|
|||
braces "^3.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
mime-db@^1.28.0:
|
||||
mime-db@1.52.0, mime-db@^1.28.0:
|
||||
version "1.52.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
||||
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
||||
|
||||
mime-types@^2.1.12:
|
||||
version "2.1.35"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
|
||||
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||
dependencies:
|
||||
mime-db "1.52.0"
|
||||
|
||||
mimic-fn@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
|
@ -1991,7 +2522,7 @@ node-abi@^2.21.0:
|
|||
dependencies:
|
||||
semver "^5.4.1"
|
||||
|
||||
node-fetch@2, node-fetch@2.6.7, node-fetch@^2.6.6:
|
||||
node-fetch@2.6.7, node-fetch@^2.6.6:
|
||||
version "2.6.7"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
|
||||
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
|
||||
|
@ -2137,7 +2668,7 @@ pend@~1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
||||
integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
|
||||
|
||||
picomatch@^2.3.1:
|
||||
picomatch@^2.2.3, picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
@ -2300,6 +2831,15 @@ prepend-http@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
|
||||
integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==
|
||||
|
||||
pretty-format@^29.0.0, pretty-format@^29.4.3:
|
||||
version "29.4.3"
|
||||
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c"
|
||||
integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==
|
||||
dependencies:
|
||||
"@jest/schemas" "^29.4.3"
|
||||
ansi-styles "^5.0.0"
|
||||
react-is "^18.0.0"
|
||||
|
||||
printj@^1.3.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb"
|
||||
|
@ -2374,6 +2914,11 @@ rc@^1.2.7:
|
|||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
react-is@^18.0.0:
|
||||
version "18.2.0"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
|
||||
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
|
||||
|
||||
readable-stream@1.1.14, readable-stream@^1.0.27-1:
|
||||
version "1.1.14"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
|
||||
|
@ -2656,6 +3201,13 @@ sprintf-js@~1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
|
||||
|
||||
stack-utils@^2.0.3:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
|
||||
integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
|
||||
dependencies:
|
||||
escape-string-regexp "^2.0.0"
|
||||
|
||||
stream-meter@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/stream-meter/-/stream-meter-1.0.4.tgz#52af95aa5ea760a2491716704dbff90f73afdd1d"
|
||||
|
@ -2911,6 +3463,25 @@ trim-repeated@^1.0.0:
|
|||
dependencies:
|
||||
escape-string-regexp "^1.0.2"
|
||||
|
||||
ts-node@^10.9.1:
|
||||
version "10.9.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
|
||||
integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
|
||||
dependencies:
|
||||
"@cspotcode/source-map-support" "^0.8.0"
|
||||
"@tsconfig/node10" "^1.0.7"
|
||||
"@tsconfig/node12" "^1.0.7"
|
||||
"@tsconfig/node14" "^1.0.0"
|
||||
"@tsconfig/node16" "^1.0.2"
|
||||
acorn "^8.4.1"
|
||||
acorn-walk "^8.1.1"
|
||||
arg "^4.1.0"
|
||||
create-require "^1.1.0"
|
||||
diff "^4.0.1"
|
||||
make-error "^1.1.1"
|
||||
v8-compile-cache-lib "^3.0.1"
|
||||
yn "3.1.1"
|
||||
|
||||
tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
|
@ -2940,6 +3511,11 @@ type-fest@^0.21.3:
|
|||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
|
||||
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
|
||||
|
||||
typescript@4.7.3:
|
||||
version "4.7.3"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d"
|
||||
integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==
|
||||
|
||||
typical@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
|
||||
|
@ -3015,6 +3591,11 @@ uuid@8.3.2, uuid@^8.3.2:
|
|||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||
|
||||
v8-compile-cache-lib@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
|
||||
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
|
||||
|
||||
v8-compile-cache@^2.0.3:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
|
||||
|
@ -3131,3 +3712,8 @@ yauzl@^2.4.2:
|
|||
dependencies:
|
||||
buffer-crc32 "~0.2.3"
|
||||
fd-slicer "~1.1.0"
|
||||
|
||||
yn@3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
|
||||
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
import { Event } from "../events"
|
||||
|
||||
export enum CommandWord {
|
||||
BACKUPS = "backups",
|
||||
HOSTING = "hosting",
|
||||
ANALYTICS = "analytics",
|
||||
HELP = "help",
|
||||
PLUGIN = "plugins"
|
||||
}
|
||||
|
||||
export enum InitType {
|
||||
QUICK = "quick",
|
||||
DIGITAL_OCEAN = "do",
|
||||
}
|
||||
|
||||
export const AnalyticsEvent = {
|
||||
OptOut: "analytics:opt:out",
|
||||
OptIn: "analytics:opt:in",
|
||||
SelfHostInit: "hosting:init",
|
||||
PluginInit: Event.PLUGIN_INIT,
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
export * from "./constants"
|
|
@ -15,3 +15,4 @@ export * from "./environmentVariables"
|
|||
export * from "./auditLogs"
|
||||
export * from "./sso"
|
||||
export * from "./user"
|
||||
export * from "./cli"
|
||||
|
|
Loading…
Reference in New Issue