mirror of
https://github.com/yt-dlp/ejs.git
synced 2026-06-13 00:32:11 +00:00
251 lines
6.1 KiB
JavaScript
251 lines
6.1 KiB
JavaScript
import { defineConfig } from "rollup";
|
|
import nodeResolve from "@rollup/plugin-node-resolve";
|
|
import sucrase from "@rollup/plugin-sucrase";
|
|
import terser from "@rollup/plugin-terser";
|
|
import { createHash } from "node:crypto";
|
|
import license from "rollup-plugin-license";
|
|
import { readFileSync } from "node:fs";
|
|
import prettier from "prettier";
|
|
|
|
const pkg = JSON.parse(readFileSync("./package.json"));
|
|
|
|
const LICENSE_BANNER =
|
|
"SPDX-License-Identifier: Unlicense\n" +
|
|
"This file was automatically generated by https://github.com/yt-dlp/ejs" +
|
|
"<% if (dependencies && dependencies.length) { %>" +
|
|
"\n\nBundled Dependencies:" +
|
|
"<% _.forEach(dependencies, function (dependency) { if (!dependency.private) { %>" +
|
|
"\n\n---\nName: <%= dependency.name %>" +
|
|
"<% if (dependency.version) { %>\nVersion: <%= dependency.version %><% } %>" +
|
|
"\nLicense: <%= dependency.license %>" +
|
|
"<% if (dependency.repository && dependency.repository.url) { %>\nRepository: <%= dependency.repository.url %><% } %>" +
|
|
"<% if (dependency.homepage && dependency.homepage.url) { %>\nHomepage: <%= dependency.homepage.url %><% } %>" +
|
|
"<% if (dependency.author) { %>\nAuthor: <%= dependency.author.text() %><% } %>" +
|
|
"<% if (dependency.licenseText) { %>\n\n<%= dependency.licenseText %><% } %>" +
|
|
"\n---<% } }) %>\n<% } %>";
|
|
|
|
function printHash() {
|
|
return {
|
|
name: "hash-output-plugin",
|
|
writeBundle(_options, bundle) {
|
|
for (const [fileName, assetInfo] of Object.entries(bundle)) {
|
|
if (assetInfo.code) {
|
|
try {
|
|
const digest = createHash("sha3-512")
|
|
.update(assetInfo.code)
|
|
.digest("hex");
|
|
console.log(`SHA3-512 for ${assetInfo.fileName}: ${digest}`);
|
|
} catch (err) {
|
|
console.error(`Error hashing ${fileName}:`, err.message);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
};
|
|
}
|
|
|
|
function dynamicImportRewrite({ format = "deno" } = {}) {
|
|
return {
|
|
name: "dynamic-import-rewrite-plugin",
|
|
resolveId(source) {
|
|
if (pkg.dependencies[source]) {
|
|
if (format === "deno") {
|
|
return {
|
|
id: `npm:${source}@${pkg.dependencies[source]}`,
|
|
external: true,
|
|
};
|
|
} else if (format === "bun") {
|
|
return {
|
|
id: `${source}@${pkg.dependencies[source]}`,
|
|
external: true,
|
|
};
|
|
}
|
|
return null;
|
|
}
|
|
return null;
|
|
},
|
|
renderDynamicImport() {
|
|
return null;
|
|
},
|
|
};
|
|
}
|
|
|
|
function prettifyOutput() {
|
|
return {
|
|
name: "prettify-output",
|
|
renderChunk(code) {
|
|
return prettier.format(code, { parser: "babel", singleQuote: true });
|
|
},
|
|
};
|
|
}
|
|
|
|
export default defineConfig([
|
|
{
|
|
input: "src/yt/solver/main.ts",
|
|
output: {
|
|
name: "jsc",
|
|
globals: {
|
|
astring: "astring",
|
|
input: "input",
|
|
meriyah: "meriyah",
|
|
},
|
|
file: "dist/yt.solver.core.js",
|
|
format: "iife",
|
|
},
|
|
external: ["astring", "meriyah"],
|
|
plugins: [
|
|
nodeResolve(),
|
|
sucrase({
|
|
exclude: ["node_modules/**"],
|
|
transforms: ["typescript"],
|
|
}),
|
|
license({
|
|
banner: {
|
|
commentStyle: "ignored",
|
|
content: LICENSE_BANNER,
|
|
},
|
|
}),
|
|
// Use terser to remove comments but do not minify
|
|
terser({
|
|
compress: false,
|
|
mangle: false,
|
|
}),
|
|
prettifyOutput(),
|
|
printHash(),
|
|
],
|
|
},
|
|
{
|
|
input: "src/yt/solver/main.ts",
|
|
output: {
|
|
name: "jsc",
|
|
globals: {
|
|
astring: "astring",
|
|
input: "input",
|
|
meriyah: "meriyah",
|
|
},
|
|
file: "dist/yt.solver.core.min.js",
|
|
compact: true,
|
|
format: "iife",
|
|
minifyInternalExports: true,
|
|
},
|
|
external: ["astring", "meriyah"],
|
|
plugins: [
|
|
nodeResolve(),
|
|
sucrase({
|
|
exclude: ["node_modules/**"],
|
|
transforms: ["typescript"],
|
|
}),
|
|
license({
|
|
banner: {
|
|
commentStyle: "ignored",
|
|
content: LICENSE_BANNER,
|
|
},
|
|
}),
|
|
terser(),
|
|
printHash(),
|
|
],
|
|
},
|
|
{
|
|
input: "src/yt/solver/lib.ts",
|
|
output: {
|
|
name: "lib",
|
|
file: "dist/yt.solver.lib.js",
|
|
format: "iife",
|
|
exports: "named",
|
|
},
|
|
plugins: [
|
|
nodeResolve(),
|
|
sucrase({
|
|
exclude: ["node_modules/**"],
|
|
transforms: ["typescript"],
|
|
}),
|
|
license({
|
|
banner: {
|
|
commentStyle: "ignored",
|
|
content: LICENSE_BANNER,
|
|
},
|
|
}),
|
|
// Use terser to remove comments but do not minify
|
|
terser({
|
|
compress: false,
|
|
mangle: false,
|
|
}),
|
|
prettifyOutput(),
|
|
printHash(),
|
|
],
|
|
},
|
|
{
|
|
input: "src/yt/solver/lib.ts",
|
|
output: {
|
|
name: "lib",
|
|
file: "dist/yt.solver.lib.min.js",
|
|
compact: true,
|
|
format: "iife",
|
|
minifyInternalExports: true,
|
|
},
|
|
plugins: [
|
|
nodeResolve(),
|
|
sucrase({
|
|
exclude: ["node_modules/**"],
|
|
transforms: ["typescript"],
|
|
}),
|
|
license({
|
|
banner: {
|
|
commentStyle: "ignored",
|
|
content: LICENSE_BANNER,
|
|
},
|
|
}),
|
|
terser(),
|
|
printHash(),
|
|
],
|
|
},
|
|
{
|
|
input: "src/yt/solver/dynamic.lib.ts",
|
|
output: {
|
|
name: "lib",
|
|
file: "dist/yt.solver.deno.lib.js",
|
|
format: "es",
|
|
},
|
|
plugins: [
|
|
dynamicImportRewrite(),
|
|
license({
|
|
banner: {
|
|
commentStyle: "ignored",
|
|
content: LICENSE_BANNER,
|
|
},
|
|
}),
|
|
// Use terser to remove comments but do not minify
|
|
terser({
|
|
compress: false,
|
|
mangle: false,
|
|
}),
|
|
prettifyOutput(),
|
|
printHash(),
|
|
],
|
|
},
|
|
{
|
|
input: "src/yt/solver/dynamic.lib.ts",
|
|
output: {
|
|
name: "lib",
|
|
file: "dist/yt.solver.bun.lib.js",
|
|
format: "es",
|
|
},
|
|
plugins: [
|
|
dynamicImportRewrite({ format: "bun" }),
|
|
license({
|
|
banner: {
|
|
commentStyle: "ignored",
|
|
content: LICENSE_BANNER,
|
|
},
|
|
}),
|
|
// Use terser to remove comments but do not minify
|
|
terser({
|
|
compress: false,
|
|
mangle: false,
|
|
}),
|
|
prettifyOutput(),
|
|
printHash(),
|
|
],
|
|
},
|
|
]);
|