fba7ef26ad
- Add swc dependencies - Add transform change to jest.config.ts - Replace `export =` with `export default` in src code to enable code coverage to work with swc transformer - Restructure backend-core errors package to allow for exporting error classes with ESM syntax - Update backend-core to no longer use `export =`, export individual packages instead of replacing with `export default` for backwards compatibility - Update event publishers to use `export default` - this was required for the `jest.spyOn` usage inside backend-core common mocks - Restructure some jest.mock usages where declaring the jest.fn as a variable outside of the package mock threw an error
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import path from "path"
|
|
import env from "./environment"
|
|
import chokidar from "chokidar"
|
|
import fs from "fs"
|
|
import { constants, tenancy } from "@budibase/backend-core"
|
|
import { processUploadedPlugin } from "./api/controllers/plugin"
|
|
|
|
export function watch() {
|
|
const watchPath = path.join(env.PLUGINS_DIR, "./**/*.tar.gz")
|
|
chokidar
|
|
.watch(watchPath, {
|
|
ignored: "**/node_modules",
|
|
awaitWriteFinish: {
|
|
pollInterval: 100,
|
|
stabilityThreshold: 250,
|
|
},
|
|
usePolling: true,
|
|
interval: 250,
|
|
})
|
|
.on("all", async (event: string, path: string) => {
|
|
// Sanity checks
|
|
if (!path?.endsWith(".tar.gz") || !fs.existsSync(path)) {
|
|
return
|
|
}
|
|
await tenancy.doInTenant(constants.DEFAULT_TENANT_ID, async () => {
|
|
try {
|
|
const split = path.split("/")
|
|
const name = split[split.length - 1]
|
|
console.log("Importing plugin:", path)
|
|
await processUploadedPlugin({ name, path })
|
|
} catch (err: any) {
|
|
const message = err?.message ? err?.message : err
|
|
console.error("Failed to import plugin:", message)
|
|
}
|
|
})
|
|
})
|
|
}
|