diff --git a/packages/backend-core/src/cache/writethrough.ts b/packages/backend-core/src/cache/writethrough.ts
index ec6b1604c8..495ba58590 100644
--- a/packages/backend-core/src/cache/writethrough.ts
+++ b/packages/backend-core/src/cache/writethrough.ts
@@ -1,6 +1,7 @@
import BaseCache from "./base"
import { getWritethroughClient } from "../redis/init"
import { logWarn } from "../logging"
+import PouchDB from "pouchdb"
const DEFAULT_WRITE_RATE_MS = 10000
let CACHE: BaseCache | null = null
diff --git a/packages/backend-core/src/db/index.ts b/packages/backend-core/src/db/index.ts
index 8374aecd8d..429cd61fc1 100644
--- a/packages/backend-core/src/db/index.ts
+++ b/packages/backend-core/src/db/index.ts
@@ -1,11 +1,12 @@
-import pouch from "./pouch"
+import * as pouch from "./pouch"
import env from "../environment"
import { checkSlashesInUrl } from "../helpers"
import fetch from "node-fetch"
import { PouchOptions, CouchFindOptions } from "@budibase/types"
+import PouchDB from "pouchdb"
const openDbs: string[] = []
-let PouchDB: any
+let Pouch: any
let initialised = false
const dbList = new Set()
@@ -33,19 +34,19 @@ const checkInitialised = () => {
}
export async function init(opts?: PouchOptions) {
- PouchDB = pouch.getPouch(opts)
+ Pouch = pouch.getPouch(opts)
initialised = true
}
// NOTE: THIS IS A DANGEROUS FUNCTION - USE WITH CAUTION
// this function is prone to leaks, should only be used
// in situations that using the function doWithDB does not work
-export function dangerousGetDB(dbName: string, opts?: any) {
+export function dangerousGetDB(dbName: string, opts?: any): PouchDB.Database {
checkInitialised()
if (env.isTest()) {
dbList.add(dbName)
}
- const db = new PouchDB(dbName, opts)
+ const db = new Pouch(dbName, opts)
if (env.MEMORY_LEAK_CHECK) {
openDbs.push(db.name)
}
diff --git a/packages/backend-core/src/db/pouch.js b/packages/backend-core/src/db/pouch.ts
similarity index 88%
rename from packages/backend-core/src/db/pouch.js
rename to packages/backend-core/src/db/pouch.ts
index 12d7d787e3..1e37da9240 100644
--- a/packages/backend-core/src/db/pouch.js
+++ b/packages/backend-core/src/db/pouch.ts
@@ -1,7 +1,7 @@
-const PouchDB = require("pouchdb")
-const env = require("../environment")
+import PouchDB from "pouchdb"
+import env from "../environment"
-exports.getUrlInfo = (url = env.COUCH_DB_URL) => {
+export const getUrlInfo = (url = env.COUCH_DB_URL) => {
let cleanUrl, username, password, host
if (url) {
// Ensure the URL starts with a protocol
@@ -44,8 +44,8 @@ exports.getUrlInfo = (url = env.COUCH_DB_URL) => {
}
}
-exports.getCouchInfo = () => {
- const urlInfo = exports.getUrlInfo()
+export const getCouchInfo = () => {
+ const urlInfo = getUrlInfo()
let username
let password
if (env.COUCH_DB_USERNAME) {
@@ -82,11 +82,11 @@ exports.getCouchInfo = () => {
* This should be rarely used outside of the main application config.
* Exposed for exceptional cases such as in-memory views.
*/
-exports.getPouch = (opts = {}) => {
- let { url, cookie } = exports.getCouchInfo()
+export const getPouch = (opts: any = {}) => {
+ let { url, cookie } = getCouchInfo()
let POUCH_DB_DEFAULTS = {
prefix: url,
- fetch: (url, opts) => {
+ fetch: (url: string, opts: any) => {
// use a specific authorization cookie - be very explicit about how we authenticate
opts.headers.set("Authorization", cookie)
return PouchDB.fetch(url, opts)
@@ -98,6 +98,7 @@ exports.getPouch = (opts = {}) => {
PouchDB.plugin(inMemory)
POUCH_DB_DEFAULTS = {
prefix: undefined,
+ // @ts-ignore
adapter: "memory",
}
}
@@ -105,6 +106,7 @@ exports.getPouch = (opts = {}) => {
if (opts.onDisk) {
POUCH_DB_DEFAULTS = {
prefix: undefined,
+ // @ts-ignore
adapter: "leveldb",
}
}
@@ -112,6 +114,7 @@ exports.getPouch = (opts = {}) => {
if (opts.replication) {
const replicationStream = require("pouchdb-replication-stream")
PouchDB.plugin(replicationStream.plugin)
+ // @ts-ignore
PouchDB.adapter("writableStream", replicationStream.adapters.writableStream)
}
diff --git a/packages/server/package.json b/packages/server/package.json
index a3ec4568aa..2b2289cfc6 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -169,6 +169,7 @@
"@types/node": "14.18.20",
"@types/node-fetch": "2.6.1",
"@types/oracledb": "5.2.2",
+ "@types/pouchdb": "6.4.0",
"@types/redis": "4.0.11",
"@typescript-eslint/parser": "5.12.0",
"apidoc": "0.50.4",
diff --git a/packages/server/src/migrations/functions/backfill/app/tables.ts b/packages/server/src/migrations/functions/backfill/app/tables.ts
index b6d896a1ca..6663c3c43b 100644
--- a/packages/server/src/migrations/functions/backfill/app/tables.ts
+++ b/packages/server/src/migrations/functions/backfill/app/tables.ts
@@ -1,5 +1,6 @@
import { events } from "@budibase/backend-core"
import sdk from "../../../../sdk"
+import PouchDB from "pouchdb"
export const backfill = async (
appDb: PouchDB.Database,
diff --git a/packages/server/src/sdk/app/backups/imports.ts b/packages/server/src/sdk/app/backups/imports.ts
index aaab85ec92..f6f2939b7d 100644
--- a/packages/server/src/sdk/app/backups/imports.ts
+++ b/packages/server/src/sdk/app/backups/imports.ts
@@ -14,6 +14,7 @@ import sdk from "../../"
import { CouchFindOptions, RowAttachment } from "@budibase/types"
const uuid = require("uuid/v4")
const tar = require("tar")
+import PouchDB from "pouchdb"
type TemplateType = {
file?: {
diff --git a/packages/server/src/sdk/app/backups/statistics.ts b/packages/server/src/sdk/app/backups/statistics.ts
index 3f03158264..7a8e24dc58 100644
--- a/packages/server/src/sdk/app/backups/statistics.ts
+++ b/packages/server/src/sdk/app/backups/statistics.ts
@@ -5,6 +5,7 @@ import {
getAutomationParams,
getScreenParams,
} from "../../../db/utils"
+import PouchDB from "pouchdb"
async function runInContext(appId: string, cb: any, db?: PouchDB.Database) {
if (db) {
diff --git a/packages/server/src/sdk/app/tables/index.ts b/packages/server/src/sdk/app/tables/index.ts
index eeaf869055..5af92404a1 100644
--- a/packages/server/src/sdk/app/tables/index.ts
+++ b/packages/server/src/sdk/app/tables/index.ts
@@ -6,6 +6,7 @@ import {
isSQL,
} from "../../../integrations/utils"
import { Table } from "@budibase/types"
+import PouchDB from "pouchdb"
async function getAllInternalTables(db?: PouchDB.Database): Promise
{
if (!db) {
diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock
index 123bb8802a..71d36f924c 100644
--- a/packages/server/yarn.lock
+++ b/packages/server/yarn.lock
@@ -2700,6 +2700,13 @@
resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
+"@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/eslint-scope@^3.7.3":
version "3.7.3"
resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224"
@@ -2869,6 +2876,11 @@
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
+"@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"
@@ -2923,6 +2935,152 @@
"@types/node" "*"
dotenv "^8.2.0"
+"@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/prettier@^2.1.5":
version "2.6.3"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a"
diff --git a/packages/types/src/sdk/db.ts b/packages/types/src/sdk/db.ts
index 6d47a5c36b..2ba0b7bc93 100644
--- a/packages/types/src/sdk/db.ts
+++ b/packages/types/src/sdk/db.ts
@@ -1,3 +1,5 @@
+import PouchDB from "pouchdb"
+
export type PouchOptions = {
inMemory: boolean
replication: boolean
diff --git a/packages/worker/package.json b/packages/worker/package.json
index be9367203f..f3f34dee72 100644
--- a/packages/worker/package.json
+++ b/packages/worker/package.json
@@ -74,6 +74,7 @@
"@types/koa": "2.13.4",
"@types/koa__router": "8.0.11",
"@types/node": "14.18.20",
+ "@types/pouchdb": "6.4.0",
"@types/uuid": "8.3.4",
"@typescript-eslint/parser": "5.12.0",
"copyfiles": "2.4.1",
diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock
index c2b2417209..7b9a49fd5c 100644
--- a/packages/worker/yarn.lock
+++ b/packages/worker/yarn.lock
@@ -954,6 +954,13 @@
"@types/keygrip" "*"
"@types/node" "*"
+"@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/express-serve-static-core@^4.17.18":
version "4.17.28"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8"
@@ -1084,6 +1091,11 @@
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
+"@types/ms@*":
+ version "0.7.31"
+ resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
+ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
+
"@types/node@*":
version "17.0.41"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.41.tgz#1607b2fd3da014ae5d4d1b31bc792a39348dfb9b"
@@ -1094,6 +1106,152 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.20.tgz#268f028b36eaf51181c3300252f605488c4f0650"
integrity sha512-Q8KKwm9YqEmUBRsqJ2GWJDtXltBDxTdC4m5vTdXBolu2PeQh8LX+f6BTwU+OuXPu37fLxoN6gidqBmnky36FXA==
+"@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/prettier@^2.1.5":
version "2.6.3"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a"
diff --git a/qa-core/src/config/internal-api/TestConfiguration/applications.ts b/qa-core/src/config/internal-api/TestConfiguration/applications.ts
index 8d276911c8..c5e81f3718 100644
--- a/qa-core/src/config/internal-api/TestConfiguration/applications.ts
+++ b/qa-core/src/config/internal-api/TestConfiguration/applications.ts
@@ -8,8 +8,6 @@ import { AppPackageResponse } from "../fixtures/types/appPackage"
import { DeployConfig } from "../fixtures/types/deploy"
import { responseMessage } from "../fixtures/types/responseMessage"
-
-
export default class AppApi {
api: InternalAPIClient
diff --git a/qa-core/src/config/internal-api/TestConfiguration/rows.ts b/qa-core/src/config/internal-api/TestConfiguration/rows.ts
index 010c8936c1..a0e9b7c408 100644
--- a/qa-core/src/config/internal-api/TestConfiguration/rows.ts
+++ b/qa-core/src/config/internal-api/TestConfiguration/rows.ts
@@ -3,26 +3,26 @@ import { Row } from "@budibase/types"
import InternalAPIClient from "./InternalAPIClient"
export default class RowsApi {
- api: InternalAPIClient
+ api: InternalAPIClient
- constructor(apiClient: InternalAPIClient) {
- this.api = apiClient
- }
+ constructor(apiClient: InternalAPIClient) {
+ this.api = apiClient
+ }
- async getAll(tableId: string): Promise<[Response, Row[]]> {
- const response = await this.api.get(`/${tableId}/rows`)
- const json = await response.json()
- return [response, json]
- }
- async add(tableId: string, body: any): Promise<[Response, Row]> {
- const response = await this.api.post(`/${tableId}/rows`, { body })
- const json = await response.json()
- return [response, json]
- }
+ async getAll(tableId: string): Promise<[Response, Row[]]> {
+ const response = await this.api.get(`/${tableId}/rows`)
+ const json = await response.json()
+ return [response, json]
+ }
+ async add(tableId: string, body: any): Promise<[Response, Row]> {
+ const response = await this.api.post(`/${tableId}/rows`, { body })
+ const json = await response.json()
+ return [response, json]
+ }
- async delete(tableId: string, body: any): Promise<[Response, Row[]]> {
- const response = await this.api.del(`/${tableId}/rows/`, { body })
- const json = await response.json()
- return [response, json]
- }
+ async delete(tableId: string, body: any): Promise<[Response, Row[]]> {
+ const response = await this.api.del(`/${tableId}/rows/`, { body })
+ const json = await response.json()
+ return [response, json]
+ }
}
diff --git a/qa-core/src/config/internal-api/TestConfiguration/tables.ts b/qa-core/src/config/internal-api/TestConfiguration/tables.ts
index bbafc73de5..58dc1a5a74 100644
--- a/qa-core/src/config/internal-api/TestConfiguration/tables.ts
+++ b/qa-core/src/config/internal-api/TestConfiguration/tables.ts
@@ -3,38 +3,39 @@ import { Table } from "@budibase/types"
import InternalAPIClient from "./InternalAPIClient"
import { responseMessage } from "../fixtures/types/responseMessage"
-
export default class TablesApi {
- api: InternalAPIClient
+ api: InternalAPIClient
- constructor(apiClient: InternalAPIClient) {
- this.api = apiClient
- }
+ constructor(apiClient: InternalAPIClient) {
+ this.api = apiClient
+ }
- async getAll(expectedNumber: Number): Promise<[Response, Table[]]> {
- const response = await this.api.get(`/tables`)
- const json = await response.json()
- expect(response).toHaveStatusCode(200)
- expect(json.length).toBe(expectedNumber)
- return [response, json]
- }
+ async getAll(expectedNumber: Number): Promise<[Response, Table[]]> {
+ const response = await this.api.get(`/tables`)
+ const json = await response.json()
+ expect(response).toHaveStatusCode(200)
+ expect(json.length).toBe(expectedNumber)
+ return [response, json]
+ }
- async getTableById(id: string): Promise<[Response, Table]> {
- const response = await this.api.get(`/tables/${id}`)
- const json = await response.json()
- return [response, json]
- }
+ async getTableById(id: string): Promise<[Response, Table]> {
+ const response = await this.api.get(`/tables/${id}`)
+ const json = await response.json()
+ return [response, json]
+ }
- async save(body: any): Promise<[Response, Table]> {
- const response = await this.api.post(`/tables`, { body })
- const json = await response.json()
- return [response, json]
- }
-
- async delete(id: string, revId: string): Promise<[Response, responseMessage]> {
- const response = await this.api.del(`/tables/${id}/${revId}`)
- const json = await response.json()
- return [response, json]
- }
+ async save(body: any): Promise<[Response, Table]> {
+ const response = await this.api.post(`/tables`, { body })
+ const json = await response.json()
+ return [response, json]
+ }
+ async delete(
+ id: string,
+ revId: string
+ ): Promise<[Response, responseMessage]> {
+ const response = await this.api.del(`/tables/${id}/${revId}`)
+ const json = await response.json()
+ return [response, json]
+ }
}
diff --git a/qa-core/src/config/internal-api/fixtures/rows.ts b/qa-core/src/config/internal-api/fixtures/rows.ts
index f3c12d9ddd..90f6350dcf 100644
--- a/qa-core/src/config/internal-api/fixtures/rows.ts
+++ b/qa-core/src/config/internal-api/fixtures/rows.ts
@@ -1,8 +1,8 @@
import { Row } from "@budibase/types"
export const generateNewRowForTable = (tableId: string): Row => {
- return {
- TestColumn: "TestRow",
- tableId: tableId
- }
+ return {
+ TestColumn: "TestRow",
+ tableId: tableId,
+ }
}
diff --git a/qa-core/src/config/internal-api/fixtures/table.ts b/qa-core/src/config/internal-api/fixtures/table.ts
index 9787dc500a..5060a405bb 100644
--- a/qa-core/src/config/internal-api/fixtures/table.ts
+++ b/qa-core/src/config/internal-api/fixtures/table.ts
@@ -1,34 +1,34 @@
import { Table } from "@budibase/types"
export const generateTable = (): Table => {
- return {
- name: "Test Table",
- schema: {},
- sourceId: "bb_internal",
- type: "internal",
- dataImport: {
- valid: true,
- schema: {}
- }
- }
+ return {
+ name: "Test Table",
+ schema: {},
+ sourceId: "bb_internal",
+ type: "internal",
+ dataImport: {
+ valid: true,
+ schema: {},
+ },
+ }
}
export const generateNewColumnForTable = (tableData: any): Table => {
- const newColumn = tableData
- newColumn.schema = {
- TestColumn: {
- type: "string",
- name: "TestColumn",
- constraints: {
- presence: { allowEmpty: false },
- length: { maximum: null },
- type: "string"
- }
- }
- }
- newColumn.indexes = {
- 0: "TestColumn"
- }
- newColumn.updatedAt = new Date().toISOString()
- return newColumn
+ const newColumn = tableData
+ newColumn.schema = {
+ TestColumn: {
+ type: "string",
+ name: "TestColumn",
+ constraints: {
+ presence: { allowEmpty: false },
+ length: { maximum: null },
+ type: "string",
+ },
+ },
+ }
+ newColumn.indexes = {
+ 0: "TestColumn",
+ }
+ newColumn.updatedAt = new Date().toISOString()
+ return newColumn
}
diff --git a/qa-core/src/config/internal-api/fixtures/types/responseMessage.ts b/qa-core/src/config/internal-api/fixtures/types/responseMessage.ts
index 74931123fa..06c701c059 100644
--- a/qa-core/src/config/internal-api/fixtures/types/responseMessage.ts
+++ b/qa-core/src/config/internal-api/fixtures/types/responseMessage.ts
@@ -1 +1,3 @@
-export interface responseMessage { message: string }
+export interface responseMessage {
+ message: string
+}
diff --git a/qa-core/src/tests/internal-api/applications/create.spec.ts b/qa-core/src/tests/internal-api/applications/create.spec.ts
index f96c915f14..ee46bebf8f 100644
--- a/qa-core/src/tests/internal-api/applications/create.spec.ts
+++ b/qa-core/src/tests/internal-api/applications/create.spec.ts
@@ -5,7 +5,10 @@ import InternalAPIClient from "../../../config/internal-api/TestConfiguration/In
import generateApp from "../../../config/internal-api/fixtures/applications"
import generator from "../../../config/generator"
import generateScreen from "../../../config/internal-api/fixtures/screens"
-import { generateTable, generateNewColumnForTable } from "../../../config/internal-api/fixtures/table"
+import {
+ generateTable,
+ generateNewColumnForTable,
+} from "../../../config/internal-api/fixtures/table"
import { generateNewRowForTable } from "../../../config/internal-api/fixtures/rows"
describe("Internal API - /applications endpoints", () => {
@@ -119,7 +122,7 @@ describe("Internal API - /applications endpoints", () => {
const [updateResponse, updatedApp] = await config.applications.update(
app.appId,
{
- name: generator.word()
+ name: generator.word(),
}
)
expect(updateResponse).toHaveStatusCode(200)
@@ -188,7 +191,9 @@ describe("Internal API - /applications endpoints", () => {
await config.tables.getAll(2)
// Add new table
- const [createdTableResponse, createdTableData] = await config.tables.save(generateTable())
+ const [createdTableResponse, createdTableData] = await config.tables.save(
+ generateTable()
+ )
expect(createdTableResponse).toHaveStatusCode(200)
expect(createdTableData._id).toBeDefined()
expect(createdTableData._rev).toBeDefined()
@@ -197,20 +202,27 @@ describe("Internal API - /applications endpoints", () => {
await config.tables.getAll(3)
//Get information about the table
- const [tableInfoResponse, tableInfo] = await config.tables.getTableById(createdTableData._id)
+ const [tableInfoResponse, tableInfo] = await config.tables.getTableById(
+ createdTableData._id
+ )
expect(tableInfoResponse).toHaveStatusCode(200)
expect(tableInfo._id).toEqual(createdTableData._id)
//Add Column to table
const newColumn = generateNewColumnForTable(createdTableData)
- const [addColumnResponse, addColumnData] = await config.tables.save(newColumn)
+ const [addColumnResponse, addColumnData] = await config.tables.save(
+ newColumn
+ )
expect(addColumnResponse).toHaveStatusCode(200)
expect(addColumnData._id).toEqual(createdTableData._id)
expect(addColumnData.schema.TestColumn).toBeDefined()
//Add Row to table
const newRow = generateNewRowForTable(addColumnData._id)
- const [addRowResponse, addRowData] = await config.rows.add(addColumnData._id, newRow)
+ const [addRowResponse, addRowData] = await config.rows.add(
+ addColumnData._id,
+ newRow
+ )
console.log(addRowData)
expect(addRowResponse).toHaveStatusCode(200)
expect(addRowData._id).toBeDefined()
@@ -218,24 +230,32 @@ describe("Internal API - /applications endpoints", () => {
expect(addRowData.tableId).toEqual(addColumnData._id)
//Get Row from table
- const [getRowResponse, getRowData] = await config.rows.getAll(addColumnData._id)
+ const [getRowResponse, getRowData] = await config.rows.getAll(
+ addColumnData._id
+ )
expect(getRowResponse).toHaveStatusCode(200)
expect(getRowData.length).toEqual(1)
//Delete Row from table
const rowToDelete = {
- rows: [
- getRowData[0]
- ]
+ rows: [getRowData[0]],
}
- const [deleteRowResponse, deleteRowData] = await config.rows.delete(addColumnData._id, rowToDelete)
+ const [deleteRowResponse, deleteRowData] = await config.rows.delete(
+ addColumnData._id,
+ rowToDelete
+ )
expect(deleteRowResponse).toHaveStatusCode(200)
expect(deleteRowData[0]._id).toEqual(getRowData[0]._id)
//Delete the table
- const [deleteTableResponse, deleteTable] = await config.tables.delete(addColumnData._id, addColumnData._rev)
+ const [deleteTableResponse, deleteTable] = await config.tables.delete(
+ addColumnData._id,
+ addColumnData._rev
+ )
expect(deleteTableResponse).toHaveStatusCode(200)
- expect(deleteTable.message).toEqual(`Table ${createdTableData._id} deleted.`)
+ expect(deleteTable.message).toEqual(
+ `Table ${createdTableData._id} deleted.`
+ )
//Table was deleted
await config.tables.getAll(2)