Path: blob/main/package/src/common/dependencies/deno_dom.ts
6452 views
/*1* deno_dom.ts2*3* Copyright (C) 2020-2022 Posit Software, PBC4*5*/67import { ensureDir } from "../../../../src/deno_ral/fs.ts";8import { basename, dirname, join } from "../../../../src/deno_ral/path.ts";9import { Configuration } from "../config.ts";1011import { Dependency } from "./dependencies.ts";1213export function deno_dom(version: string): Dependency {14const deno_dom_release = (filename: string, baseUrl="https://github.com/b-fuze/deno-dom", targetFileName?: string) => {15return {16filename,17url:18`${baseUrl}/releases/download/${version}/${filename}`,19configure: async (config: Configuration, path: string) => {20const vendor = Deno.env.get("QUARTO_VENDOR_BINARIES");21if (vendor === undefined || vendor === "true") {22const targetPath = join(dirname(path), config.arch, "deno_dom", targetFileName || basename(path));23await ensureDir(dirname(targetPath));24await Deno.copyFile(path, targetPath);25} else {26if (Deno.env.get("DENO_DOM_PLUGIN") === undefined) {27throw new Error(28`DENO_DOM_PLUGIN is not set, and vendoring is turned off. Please install deno-dom and set DENO_DOM_PLUGIN.`,29);30}31}32},33};34};3536const deno_dom_release_quarto_dev = (filename: string, targetFileName: string) => {37return deno_dom_release(filename, "https://github.com/quarto-dev/deno-dom-apple-silicon", targetFileName)38}3940return {41name: "deno_dom",42bucket: "deno_dom",43version,44architectureDependencies: {45"x86_64": {46darwin: deno_dom_release("libplugin.dylib"),47linux: deno_dom_release("libplugin.so"),48windows: deno_dom_release("plugin.dll"),49},50"aarch64": {51linux: deno_dom_release("libplugin-linux-aarch64.so"),52darwin: deno_dom_release_quarto_dev("libplugin-aarch64.dylib", "libplugin.dylib")53},54},55};56}575859