2023-08-17 05:04:15 +00:00
|
|
|
import { StaticResources } from "../util/resources"
|
2023-08-19 22:52:25 +00:00
|
|
|
import { FilePath, FullSlug } from "../util/path"
|
2023-08-17 05:04:15 +00:00
|
|
|
import { BuildCtx } from "../util/ctx"
|
2023-07-01 07:03:01 +00:00
|
|
|
|
2023-07-24 07:04:01 +00:00
|
|
|
export function getStaticResourcesFromPlugins(ctx: BuildCtx) {
|
2023-05-30 15:02:20 +00:00
|
|
|
const staticResources: StaticResources = {
|
|
|
|
css: [],
|
|
|
|
js: [],
|
|
|
|
}
|
|
|
|
|
2023-07-24 07:04:01 +00:00
|
|
|
for (const transformer of ctx.cfg.plugins.transformers) {
|
|
|
|
const res = transformer.externalResources ? transformer.externalResources(ctx) : {}
|
2023-05-30 15:02:20 +00:00
|
|
|
if (res?.js) {
|
2023-07-04 17:08:32 +00:00
|
|
|
staticResources.js.push(...res.js)
|
2023-05-30 15:02:20 +00:00
|
|
|
}
|
|
|
|
if (res?.css) {
|
2023-07-04 17:08:32 +00:00
|
|
|
staticResources.css.push(...res.css)
|
2023-05-30 15:02:20 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-03-10 00:42:23 +00:00
|
|
|
// if serving locally, listen for rebuilds and reload the page
|
|
|
|
if (ctx.argv.serve) {
|
|
|
|
const wsUrl = ctx.argv.remoteDevHost
|
|
|
|
? `wss://${ctx.argv.remoteDevHost}:${ctx.argv.wsPort}`
|
|
|
|
: `ws://localhost:${ctx.argv.wsPort}`
|
|
|
|
|
|
|
|
staticResources.js.push({
|
|
|
|
loadTime: "afterDOMReady",
|
|
|
|
contentType: "inline",
|
|
|
|
script: `
|
2024-07-30 08:13:13 +00:00
|
|
|
const socket = new WebSocket('${wsUrl}')
|
|
|
|
// reload(true) ensures resources like images and scripts are fetched again in firefox
|
|
|
|
socket.addEventListener('message', () => document.location.reload(true))
|
|
|
|
`,
|
2024-03-10 00:42:23 +00:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-05-30 15:02:20 +00:00
|
|
|
return staticResources
|
|
|
|
}
|
|
|
|
|
2023-07-23 00:27:41 +00:00
|
|
|
export * from "./transformers"
|
|
|
|
export * from "./filters"
|
|
|
|
export * from "./emitters"
|
2023-05-30 15:02:20 +00:00
|
|
|
|
2023-07-23 00:27:41 +00:00
|
|
|
declare module "vfile" {
|
2023-05-30 15:02:20 +00:00
|
|
|
// inserted in processors.ts
|
|
|
|
interface DataMap {
|
2023-08-19 22:52:25 +00:00
|
|
|
slug: FullSlug
|
2023-07-13 07:19:35 +00:00
|
|
|
filePath: FilePath
|
2023-12-28 00:44:14 +00:00
|
|
|
relativePath: FilePath
|
2023-05-30 15:02:20 +00:00
|
|
|
}
|
|
|
|
}
|