chore(export/share): export full share script & styles

This commit is contained in:
Elian Doran
2025-10-26 11:02:19 +02:00
parent 1182592fc5
commit 212956201a
2 changed files with 22 additions and 3 deletions

View File

@@ -32,7 +32,6 @@ async function register(app: express.Application) {
req.url = `/${assetUrlFragment}` + req.url; req.url = `/${assetUrlFragment}` + req.url;
vite.middlewares(req, res, next); vite.middlewares(req, res, next);
}); });
app.use(`/share/assets/`, express.static(path.join(srcRoot, "../../packages/share-theme/dist")));
} else { } else {
const publicDir = path.join(resourceDir, "public"); const publicDir = path.join(resourceDir, "public");
if (!existsSync(publicDir)) { if (!existsSync(publicDir)) {
@@ -43,9 +42,9 @@ async function register(app: express.Application) {
app.use(`/${assetUrlFragment}/stylesheets`, persistentCacheStatic(path.join(publicDir, "stylesheets"))); app.use(`/${assetUrlFragment}/stylesheets`, persistentCacheStatic(path.join(publicDir, "stylesheets")));
app.use(`/${assetUrlFragment}/fonts`, persistentCacheStatic(path.join(publicDir, "fonts"))); app.use(`/${assetUrlFragment}/fonts`, persistentCacheStatic(path.join(publicDir, "fonts")));
app.use(`/${assetUrlFragment}/translations/`, persistentCacheStatic(path.join(publicDir, "translations"))); app.use(`/${assetUrlFragment}/translations/`, persistentCacheStatic(path.join(publicDir, "translations")));
app.use(`/share/assets/`, persistentCacheStatic(path.join(resourceDir, "share-theme/assets")));
app.use(`/node_modules/`, persistentCacheStatic(path.join(publicDir, "node_modules"))); app.use(`/node_modules/`, persistentCacheStatic(path.join(publicDir, "node_modules")));
} }
app.use(`/share/assets/`, express.static(getShareThemeAssetDir()));
app.use(`/${assetUrlFragment}/images`, persistentCacheStatic(path.join(resourceDir, "assets", "images"))); app.use(`/${assetUrlFragment}/images`, persistentCacheStatic(path.join(resourceDir, "assets", "images")));
app.use(`/${assetUrlFragment}/doc_notes`, persistentCacheStatic(path.join(resourceDir, "assets", "doc_notes"))); app.use(`/${assetUrlFragment}/doc_notes`, persistentCacheStatic(path.join(resourceDir, "assets", "doc_notes")));
app.use(`/assets/vX/fonts`, express.static(path.join(srcRoot, "public/fonts"))); app.use(`/assets/vX/fonts`, express.static(path.join(srcRoot, "public/fonts")));
@@ -53,6 +52,16 @@ async function register(app: express.Application) {
app.use(`/assets/vX/stylesheets`, express.static(path.join(srcRoot, "public/stylesheets"))); app.use(`/assets/vX/stylesheets`, express.static(path.join(srcRoot, "public/stylesheets")));
} }
export function getShareThemeAssetDir() {
if (process.env.NODE_ENV === "development") {
const srcRoot = path.join(__dirname, "..", "..");
return path.join(srcRoot, "../../packages/share-theme/dist");
} else {
const resourceDir = getResourceDir();
return path.join(resourceDir, "share-theme/assets");
}
}
export default { export default {
register register
}; };

View File

@@ -3,10 +3,13 @@ import NoteMeta, { NoteMetaFile } from "../../meta/note_meta";
import { ExportFormat, ZipExportProvider } from "./abstract_provider.js"; import { ExportFormat, ZipExportProvider } from "./abstract_provider.js";
import { RESOURCE_DIR } from "../../resource_dir"; import { RESOURCE_DIR } from "../../resource_dir";
import { getResourceDir, isDev } from "../../utils"; import { getResourceDir, isDev } from "../../utils";
import fs from "fs"; import fs, { readdirSync } from "fs";
import { renderNoteForExport } from "../../../share/content_renderer"; import { renderNoteForExport } from "../../../share/content_renderer";
import type BNote from "../../../becca/entities/bnote.js"; import type BNote from "../../../becca/entities/bnote.js";
import type BBranch from "../../../becca/entities/bbranch.js"; import type BBranch from "../../../becca/entities/bbranch.js";
import { getShareThemeAssetDir } from "../../../routes/assets";
const shareThemeAssetDir = getShareThemeAssetDir();
export default class ShareThemeExportProvider extends ZipExportProvider { export default class ShareThemeExportProvider extends ZipExportProvider {
@@ -14,6 +17,7 @@ export default class ShareThemeExportProvider extends ZipExportProvider {
private indexMeta: NoteMeta | null = null; private indexMeta: NoteMeta | null = null;
prepareMeta(metaFile: NoteMetaFile): void { prepareMeta(metaFile: NoteMetaFile): void {
const assets = [ const assets = [
"style.css", "style.css",
"script.js", "script.js",
@@ -26,6 +30,10 @@ export default class ShareThemeExportProvider extends ZipExportProvider {
"icon-color.svg" "icon-color.svg"
]; ];
for (const file of readdirSync(shareThemeAssetDir)) {
assets.push(`assets/${file}`);
}
for (const asset of assets) { for (const asset of assets) {
const assetMeta = { const assetMeta = {
noImport: true, noImport: true,
@@ -107,6 +115,8 @@ function getShareThemeAssets(nameWithExtension: string) {
let path: string | undefined; let path: string | undefined;
if (nameWithExtension === "icon-color.svg") { if (nameWithExtension === "icon-color.svg") {
path = join(RESOURCE_DIR, "images", nameWithExtension); path = join(RESOURCE_DIR, "images", nameWithExtension);
} else if (nameWithExtension.startsWith("assets")) {
path = join(shareThemeAssetDir, nameWithExtension.replace(/^assets\//, ""));
} else if (isDev) { } else if (isDev) {
path = join(getResourceDir(), "..", "..", "client", "dist", "src", nameWithExtension); path = join(getResourceDir(), "..", "..", "client", "dist", "src", nameWithExtension);
} else { } else {