1
0
Fork 0
mirror of synced 2024-07-04 05:50:57 +12:00
budibase/packages/server/src/api/controllers/plugin/utils.js

33 lines
953 B
JavaScript
Raw Normal View History

2022-09-06 02:04:26 +12:00
const fetch = require("node-fetch")
import { downloadUnzipPlugin } from "../../../utilities/fileSystem"
export const createNpmPlugin = async (url, name = "") => {
let npmTarball = url
let pluginName = name
if (
!npmTarball.includes("https://www.npmjs.com") &&
!npmTarball.includes("https://registry.npmjs.org")
) {
throw "The plugin origin must be from NPM"
}
if (!npmTarball.includes(".tgz")) {
const npmPackageURl = url.replace(
"https://www.npmjs.com/package/",
"https://registry.npmjs.org/"
)
const response = await fetch(npmPackageURl)
if (response.status === 200) {
let npmDetails = await response.json()
pluginName = npmDetails.name
const npmVersion = npmDetails["dist-tags"].latest
npmTarball = npmDetails.versions[npmVersion].dist.tarball
} else {
throw "Cannot get package details"
}
}
return await downloadUnzipPlugin(pluginName, npmTarball)
}