mediafuse 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +14 -20
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/remote.d.ts +13 -0
- package/dist/cli/remote.d.ts.map +1 -1
- package/dist/cli/remote.js +100 -17
- package/dist/cli/remote.js.map +1 -1
- package/dist/cli/resolve.d.ts +3 -1
- package/dist/cli/resolve.d.ts.map +1 -1
- package/dist/cli/resolve.js +69 -61
- package/dist/cli/resolve.js.map +1 -1
- package/dist/cli/server.d.ts +4 -1
- package/dist/cli/server.d.ts.map +1 -1
- package/dist/cli/server.js +106 -38
- package/dist/cli/server.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +3 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +46 -0
- package/dist/loader.js.map +1 -0
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
|
-
import { readFileSync, existsSync
|
|
3
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
4
4
|
import { resolve, dirname, join } from "node:path";
|
|
5
|
-
import { resolveManifest } from "./resolve.js";
|
|
5
|
+
import { resolveManifest, findManifestEntry } from "./resolve.js";
|
|
6
6
|
import { startServer } from "./server.js";
|
|
7
|
-
import {
|
|
7
|
+
import { resolveRef, setCacheDir } from "./remote.js";
|
|
8
8
|
const USAGE = `Usage: mediafuse [-p path ...] [--port N] [source]
|
|
9
9
|
|
|
10
10
|
Serve a MediaFuse manifest and its plugins locally.
|
|
@@ -25,11 +25,15 @@ Options:
|
|
|
25
25
|
-p, --plugin path Plugin search path (repeatable)
|
|
26
26
|
Can be a directory, file, or remote repo
|
|
27
27
|
--port N Port to listen on (default: 8000)
|
|
28
|
+
--data D Directory for cloned repos and fetched files (default: system temp)
|
|
29
|
+
--cache Enable browser caching (sends Cache-Control: public, max-age=300)
|
|
28
30
|
-h, --help Show this help`;
|
|
29
31
|
const { values, positionals } = parseArgs({
|
|
30
32
|
options: {
|
|
31
33
|
plugin: { type: "string", short: "p", multiple: true, default: [] },
|
|
32
34
|
port: { type: "string", default: "8000" },
|
|
35
|
+
"data": { type: "string" },
|
|
36
|
+
cache: { type: "boolean", default: false },
|
|
33
37
|
help: { type: "boolean", short: "h", default: false },
|
|
34
38
|
},
|
|
35
39
|
allowPositionals: true,
|
|
@@ -43,8 +47,11 @@ if (positionals.length > 1) {
|
|
|
43
47
|
process.exit(1);
|
|
44
48
|
}
|
|
45
49
|
async function main() {
|
|
50
|
+
if (values["data"]) {
|
|
51
|
+
setCacheDir(values["data"]);
|
|
52
|
+
}
|
|
46
53
|
const manifestPath = positionals.length === 1
|
|
47
|
-
? await
|
|
54
|
+
? await resolveRef(positionals[0], findManifestEntry)
|
|
48
55
|
: findManifestLocal();
|
|
49
56
|
if (!existsSync(manifestPath)) {
|
|
50
57
|
console.error(`Manifest not found: ${manifestPath}`);
|
|
@@ -53,22 +60,9 @@ async function main() {
|
|
|
53
60
|
const manifestDir = dirname(manifestPath);
|
|
54
61
|
const manifestData = JSON.parse(readFileSync(manifestPath, "utf-8"));
|
|
55
62
|
const port = parseInt(values.port, 10);
|
|
56
|
-
const searchPaths = await Promise.all(values.plugin.map(async (p) => resolve(await
|
|
57
|
-
const resolved = resolveManifest(manifestData, manifestDir, searchPaths
|
|
58
|
-
startServer(resolved, port);
|
|
59
|
-
}
|
|
60
|
-
async function resolveManifestSource(input) {
|
|
61
|
-
const localPath = await resolveSource(input);
|
|
62
|
-
const resolved = resolve(localPath);
|
|
63
|
-
if (existsSync(resolved) && statSync(resolved).isDirectory()) {
|
|
64
|
-
const manifest = findManifestInDir(resolved);
|
|
65
|
-
if (!manifest) {
|
|
66
|
-
console.error(`No manifest.json found in ${resolved}`);
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
69
|
-
return manifest;
|
|
70
|
-
}
|
|
71
|
-
return resolved;
|
|
63
|
+
const searchPaths = await Promise.all(values.plugin.map(async (p) => resolve(await resolveRef(p))));
|
|
64
|
+
const resolved = await resolveManifest(manifestData, manifestDir, searchPaths);
|
|
65
|
+
startServer(resolved, port, { cache: values.cache });
|
|
72
66
|
}
|
|
73
67
|
function findManifestLocal() {
|
|
74
68
|
const pkgPath = join(process.cwd(), "package.json");
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/remote.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function setCacheDir(dir: string): void;
|
|
1
2
|
export interface RemoteRef {
|
|
2
3
|
host: string;
|
|
3
4
|
owner: string;
|
|
@@ -6,6 +7,18 @@ export interface RemoteRef {
|
|
|
6
7
|
}
|
|
7
8
|
export declare function parseRemoteRef(input: string): RemoteRef | null;
|
|
8
9
|
export declare function materializeRemote(ref: RemoteRef): Promise<string>;
|
|
10
|
+
export type EntryFinder = (dir: string) => string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve any input reference to a local file path.
|
|
13
|
+
*
|
|
14
|
+
* Handles: remote refs (owner/repo, github:owner/repo, full git URLs),
|
|
15
|
+
* plain URLs (CDN links), and local paths.
|
|
16
|
+
*
|
|
17
|
+
* When findEntry is provided and the result is a directory,
|
|
18
|
+
* it's called to locate the relevant file within it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveRef(input: string, findEntry?: EntryFinder): Promise<string>;
|
|
9
21
|
export declare function resolveSource(input: string): Promise<string>;
|
|
10
22
|
export declare function findManifestInDir(dir: string): string | null;
|
|
23
|
+
export declare function fetchRemoteFile(url: string): Promise<string>;
|
|
11
24
|
//# sourceMappingURL=remote.d.ts.map
|
package/dist/cli/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/cli/remote.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../src/cli/remote.ts"],"names":[],"mappings":"AAUA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7C;AAgBD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAqB9D;AA0DD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCvE;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAEzD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,WAAW,GACtB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AASD,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAElE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5D;AAQD,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BlE"}
|
package/dist/cli/remote.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { execFile as execFileCb } from "node:child_process";
|
|
2
|
-
import {
|
|
3
|
-
import { existsSync } from "node:fs";
|
|
2
|
+
import { mkdirSync, existsSync, statSync, writeFileSync } from "node:fs";
|
|
4
3
|
import { tmpdir } from "node:os";
|
|
5
|
-
import { join } from "node:path";
|
|
4
|
+
import { join, basename } from "node:path";
|
|
6
5
|
import { promisify } from "node:util";
|
|
7
6
|
const execFile = promisify(execFileCb);
|
|
7
|
+
let cacheDir = tmpdir();
|
|
8
|
+
export function setCacheDir(dir) {
|
|
9
|
+
cacheDir = dir;
|
|
10
|
+
}
|
|
8
11
|
const HOSTS = {
|
|
9
12
|
"github.com": "https://github.com",
|
|
10
13
|
"codeberg.org": "https://codeberg.org",
|
|
@@ -47,9 +50,13 @@ function parseUrl(url) {
|
|
|
47
50
|
const segments = parsed.pathname.replace(/^\//, "").replace(/\.git$/, "").split("/");
|
|
48
51
|
if (segments.length < 2)
|
|
49
52
|
return null;
|
|
50
|
-
const [owner, repo] = segments;
|
|
51
53
|
const host = parsed.hostname;
|
|
52
54
|
const base = HOSTS[host] ?? `https://${host}`;
|
|
55
|
+
// Only treat as a git repo if the path looks like owner/repo (2 segments)
|
|
56
|
+
// not a deep file path like /gh/user/repo@v/plugins/file.js
|
|
57
|
+
if (segments.length !== 2)
|
|
58
|
+
return null;
|
|
59
|
+
const [owner, repo] = segments;
|
|
53
60
|
return { host, owner, repo, url: `${base}/${owner}/${repo}.git` };
|
|
54
61
|
}
|
|
55
62
|
function parseOwnerRepo(host, ref) {
|
|
@@ -82,15 +89,37 @@ function isBareShorthand(input) {
|
|
|
82
89
|
return false;
|
|
83
90
|
return true;
|
|
84
91
|
}
|
|
85
|
-
const
|
|
92
|
+
const REFRESH_INTERVAL = 30000;
|
|
93
|
+
const lastChecked = new Map();
|
|
94
|
+
function repoDir(ref) {
|
|
95
|
+
return join(cacheDir, "repos", ref.host, ref.owner, ref.repo);
|
|
96
|
+
}
|
|
86
97
|
export async function materializeRemote(ref) {
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
const dir = repoDir(ref);
|
|
99
|
+
const now = Date.now();
|
|
100
|
+
const last = lastChecked.get(ref.url);
|
|
101
|
+
if (last && now - last < REFRESH_INTERVAL) {
|
|
102
|
+
return dir;
|
|
103
|
+
}
|
|
104
|
+
const gitEnv = { ...process.env, GIT_TERMINAL_PROMPT: "0", GIT_ASKPASS: "" };
|
|
105
|
+
if (existsSync(join(dir, ".git"))) {
|
|
106
|
+
lastChecked.set(ref.url, now);
|
|
107
|
+
try {
|
|
108
|
+
await execFile("git", ["pull", "--ff-only"], {
|
|
109
|
+
cwd: dir,
|
|
110
|
+
env: gitEnv,
|
|
111
|
+
timeout: 30000,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// pull failed (offline, force-pushed, etc.) — use what we have
|
|
116
|
+
}
|
|
117
|
+
return dir;
|
|
118
|
+
}
|
|
119
|
+
mkdirSync(dir, { recursive: true });
|
|
91
120
|
try {
|
|
92
|
-
await execFile("git", ["clone", "--depth", "1", ref.url,
|
|
93
|
-
env:
|
|
121
|
+
await execFile("git", ["clone", "--depth", "1", ref.url, dir], {
|
|
122
|
+
env: gitEnv,
|
|
94
123
|
timeout: 30000,
|
|
95
124
|
});
|
|
96
125
|
}
|
|
@@ -98,14 +127,41 @@ export async function materializeRemote(ref) {
|
|
|
98
127
|
const msg = err instanceof Error ? err.stderr || err.message : String(err);
|
|
99
128
|
throw new Error(`Failed to clone ${ref.url}: ${msg}`);
|
|
100
129
|
}
|
|
101
|
-
|
|
102
|
-
return
|
|
130
|
+
lastChecked.set(ref.url, now);
|
|
131
|
+
return dir;
|
|
103
132
|
}
|
|
104
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Resolve any input reference to a local file path.
|
|
135
|
+
*
|
|
136
|
+
* Handles: remote refs (owner/repo, github:owner/repo, full git URLs),
|
|
137
|
+
* plain URLs (CDN links), and local paths.
|
|
138
|
+
*
|
|
139
|
+
* When findEntry is provided and the result is a directory,
|
|
140
|
+
* it's called to locate the relevant file within it.
|
|
141
|
+
*/
|
|
142
|
+
export async function resolveRef(input, findEntry) {
|
|
105
143
|
const ref = parseRemoteRef(input);
|
|
106
|
-
if (
|
|
107
|
-
|
|
108
|
-
|
|
144
|
+
if (ref) {
|
|
145
|
+
const dir = await materializeRemote(ref);
|
|
146
|
+
return findEntry ? requireEntry(findEntry, dir, ref.url) : dir;
|
|
147
|
+
}
|
|
148
|
+
if (input.startsWith("https://") || input.startsWith("http://")) {
|
|
149
|
+
return fetchRemoteFile(input);
|
|
150
|
+
}
|
|
151
|
+
if (findEntry && existsSync(input) && statSync(input).isDirectory()) {
|
|
152
|
+
return requireEntry(findEntry, input, input);
|
|
153
|
+
}
|
|
154
|
+
return input;
|
|
155
|
+
}
|
|
156
|
+
function requireEntry(findEntry, dir, source) {
|
|
157
|
+
const entry = findEntry(dir);
|
|
158
|
+
if (!entry)
|
|
159
|
+
throw new Error(`No entry found in ${source}`);
|
|
160
|
+
return entry;
|
|
161
|
+
}
|
|
162
|
+
// Back-compat aliases — these are thin wrappers around resolveRef
|
|
163
|
+
export async function resolveSource(input) {
|
|
164
|
+
return resolveRef(input);
|
|
109
165
|
}
|
|
110
166
|
export function findManifestInDir(dir) {
|
|
111
167
|
const manifestJson = join(dir, "manifest.json");
|
|
@@ -113,4 +169,31 @@ export function findManifestInDir(dir) {
|
|
|
113
169
|
return manifestJson;
|
|
114
170
|
return null;
|
|
115
171
|
}
|
|
172
|
+
function fetchDir(url) {
|
|
173
|
+
const parsed = new URL(url);
|
|
174
|
+
const pathPart = parsed.pathname.replace(/^\//, "").replace(/\//g, "_");
|
|
175
|
+
return join(cacheDir, "fetch", parsed.hostname, pathPart);
|
|
176
|
+
}
|
|
177
|
+
export async function fetchRemoteFile(url) {
|
|
178
|
+
const dir = fetchDir(url);
|
|
179
|
+
const filename = basename(new URL(url).pathname) || "index.js";
|
|
180
|
+
const filePath = join(dir, filename);
|
|
181
|
+
const now = Date.now();
|
|
182
|
+
const last = lastChecked.get(url);
|
|
183
|
+
if (last && now - last < REFRESH_INTERVAL && existsSync(filePath)) {
|
|
184
|
+
return filePath;
|
|
185
|
+
}
|
|
186
|
+
mkdirSync(dir, { recursive: true });
|
|
187
|
+
const response = await fetch(url);
|
|
188
|
+
if (!response.ok) {
|
|
189
|
+
if (existsSync(filePath)) {
|
|
190
|
+
lastChecked.set(url, now);
|
|
191
|
+
return filePath;
|
|
192
|
+
}
|
|
193
|
+
throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`);
|
|
194
|
+
}
|
|
195
|
+
writeFileSync(filePath, await response.text());
|
|
196
|
+
lastChecked.set(url, now);
|
|
197
|
+
return filePath;
|
|
198
|
+
}
|
|
116
199
|
//# sourceMappingURL=remote.js.map
|
package/dist/cli/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/cli/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../src/cli/remote.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/resolve.d.ts
CHANGED
|
@@ -10,5 +10,7 @@ export interface ResolvedManifest {
|
|
|
10
10
|
plugins: ResolvedPlugin[];
|
|
11
11
|
staticRoot: string;
|
|
12
12
|
}
|
|
13
|
-
export declare function resolveManifest(raw: PluginManifest, manifestDir: string, searchPaths: string[]
|
|
13
|
+
export declare function resolveManifest(raw: PluginManifest, manifestDir: string, searchPaths: string[]): Promise<ResolvedManifest>;
|
|
14
|
+
export declare function findManifestEntry(dir: string): string | null;
|
|
15
|
+
export declare function findPluginEntry(dir: string): string | null;
|
|
14
16
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAOD,wBAAsB,eAAe,CACnC,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY5D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsB1D"}
|
package/dist/cli/resolve.js
CHANGED
|
@@ -1,44 +1,65 @@
|
|
|
1
1
|
import { readFileSync, existsSync, statSync, readdirSync } from "node:fs";
|
|
2
2
|
import { resolve, dirname, basename, join, relative, sep } from "node:path";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { resolveRef } from "./remote.js";
|
|
4
|
+
export async function resolveManifest(raw, manifestDir, searchPaths) {
|
|
5
5
|
const discovered = discoverPlugins(searchPaths);
|
|
6
6
|
const entries = normalizeEntries(raw.plugins);
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
const filePath = resolvePluginSrc(entry, manifestDir, discovered);
|
|
10
|
-
// Remote URLs are kept as-is — no local serving needed
|
|
11
|
-
if (filePath.startsWith("https://") || filePath.startsWith("http://")) {
|
|
12
|
-
const mergedEntry = mergeMetadata(entry, filePath, discovered);
|
|
13
|
-
return { entry: mergedEntry, localDir: "", filename: "", index: i };
|
|
14
|
-
}
|
|
7
|
+
const plugins = await Promise.all(entries.map(async (entry, i) => {
|
|
8
|
+
const filePath = await resolvePluginSrc(entry, manifestDir, discovered);
|
|
15
9
|
const localDir = dirname(filePath);
|
|
16
10
|
const filename = basename(filePath);
|
|
17
11
|
const mergedEntry = mergeMetadata(entry, filePath, discovered);
|
|
18
|
-
mergedEntry.src =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
const config = rewriteConfigPaths(raw.config || {}, manifestDir, baseUrl);
|
|
12
|
+
mergedEntry.src = `/${i}/${filename}`;
|
|
13
|
+
return { entry: mergedEntry, localDir, filename, index: i };
|
|
14
|
+
}));
|
|
15
|
+
const config = rewriteConfigPaths(raw.config || {}, manifestDir);
|
|
24
16
|
return {
|
|
25
17
|
manifest: { ...raw, plugins: plugins.map((p) => p.entry), config },
|
|
26
18
|
plugins,
|
|
27
19
|
staticRoot: manifestDir,
|
|
28
20
|
};
|
|
29
21
|
}
|
|
22
|
+
// -- Entry finders (used as strategies for resolveRef) -----------------------
|
|
23
|
+
export function findManifestEntry(dir) {
|
|
24
|
+
const pkgPath = join(dir, "package.json");
|
|
25
|
+
if (existsSync(pkgPath)) {
|
|
26
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
27
|
+
const ref = pkg.mediafuse?.manifest;
|
|
28
|
+
if (ref)
|
|
29
|
+
return resolve(dir, ref);
|
|
30
|
+
}
|
|
31
|
+
const manifestJson = join(dir, "manifest.json");
|
|
32
|
+
if (existsSync(manifestJson))
|
|
33
|
+
return manifestJson;
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
export function findPluginEntry(dir) {
|
|
37
|
+
const pkgPath = join(dir, "package.json");
|
|
38
|
+
if (existsSync(pkgPath)) {
|
|
39
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
|
|
40
|
+
const plugins = pkg.mediafuse?.plugins;
|
|
41
|
+
if (typeof plugins === "string")
|
|
42
|
+
return resolve(dir, plugins);
|
|
43
|
+
if (Array.isArray(plugins) && plugins.length > 0)
|
|
44
|
+
return resolve(dir, plugins[0]);
|
|
45
|
+
if (pkg.main)
|
|
46
|
+
return resolve(dir, pkg.main);
|
|
47
|
+
}
|
|
48
|
+
for (const name of ["index.js", "index.ts"]) {
|
|
49
|
+
const candidate = resolve(dir, name);
|
|
50
|
+
if (existsSync(candidate))
|
|
51
|
+
return candidate;
|
|
52
|
+
}
|
|
53
|
+
// Not a single-plugin dir — scan subdirectories for the first plugin
|
|
54
|
+
const scanned = scanDir(dir);
|
|
55
|
+
if (scanned.length > 0)
|
|
56
|
+
return scanned[0].src;
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
// -- Plugin discovery (for -p search paths) ----------------------------------
|
|
30
60
|
const SKIP_DIRS = new Set([
|
|
31
61
|
"node_modules", ".git", ".hg", ".svn", "dist", "build", "coverage",
|
|
32
62
|
]);
|
|
33
|
-
/**
|
|
34
|
-
* Walk search paths and discover plugins.
|
|
35
|
-
*
|
|
36
|
-
* For each -p path:
|
|
37
|
-
* - If it's a file, register it directly
|
|
38
|
-
* - If it's a directory with a package.json that has a mediafuse field, register it
|
|
39
|
-
* - Otherwise, scan subdirectories (skipping node_modules etc.) until
|
|
40
|
-
* package.jsons with mediafuse fields are found
|
|
41
|
-
*/
|
|
42
63
|
function discoverPlugins(searchPaths) {
|
|
43
64
|
const found = new Map();
|
|
44
65
|
for (const searchPath of searchPaths) {
|
|
@@ -84,11 +105,9 @@ function readPluginsFromPackage(dir, pkgPath) {
|
|
|
84
105
|
if (!plugins)
|
|
85
106
|
return [];
|
|
86
107
|
const pkgName = pkg.name || basename(dir);
|
|
87
|
-
// String shorthand: mediafuse.plugins: "./src/index.ts"
|
|
88
108
|
if (typeof plugins === "string") {
|
|
89
109
|
return [{ name: pkgName, src: resolve(dir, plugins) }];
|
|
90
110
|
}
|
|
91
|
-
// List: mediafuse.plugins: ["./src/index.ts", "./src/other.ts"]
|
|
92
111
|
if (Array.isArray(plugins)) {
|
|
93
112
|
return plugins.map((p, i) => ({
|
|
94
113
|
name: i === 0 ? pkgName : `${pkgName}/${basename(p, ".ts").replace(/\.js$/, "")}`,
|
|
@@ -97,27 +116,28 @@ function readPluginsFromPackage(dir, pkgPath) {
|
|
|
97
116
|
}
|
|
98
117
|
return [];
|
|
99
118
|
}
|
|
119
|
+
// -- Plugin source resolution ------------------------------------------------
|
|
100
120
|
function normalizeEntries(plugins) {
|
|
101
121
|
return plugins.map((p) => (typeof p === "string" ? { src: p } : { ...p }));
|
|
102
122
|
}
|
|
103
|
-
function resolvePluginSrc(entry, manifestDir, discovered) {
|
|
123
|
+
async function resolvePluginSrc(entry, manifestDir, discovered) {
|
|
104
124
|
const src = entry.src;
|
|
105
|
-
//
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
125
|
+
// Check discovered plugins from search paths first — local overrides remote
|
|
126
|
+
const match = findDiscovered(src, entry, discovered);
|
|
127
|
+
if (match)
|
|
128
|
+
return match.src;
|
|
129
|
+
// Try resolveRef — handles remote refs, URLs, and local dirs
|
|
130
|
+
const resolved = await resolveRef(src, findPluginEntry);
|
|
131
|
+
if (resolved !== src)
|
|
132
|
+
return resolved;
|
|
109
133
|
// Relative or absolute path
|
|
110
134
|
if (src.startsWith("./") || src.startsWith("../") || src.startsWith("/")) {
|
|
111
|
-
const
|
|
112
|
-
if (!existsSync(
|
|
113
|
-
throw new Error(`Plugin file not found: ${src} (resolved to ${
|
|
135
|
+
const abs = resolve(manifestDir, src);
|
|
136
|
+
if (!existsSync(abs)) {
|
|
137
|
+
throw new Error(`Plugin file not found: ${src} (resolved to ${abs})`);
|
|
114
138
|
}
|
|
115
|
-
return
|
|
139
|
+
return abs;
|
|
116
140
|
}
|
|
117
|
-
// Check discovered plugins from search paths
|
|
118
|
-
const match = findDiscovered(src, entry, discovered);
|
|
119
|
-
if (match)
|
|
120
|
-
return match.src;
|
|
121
141
|
// File in manifest dir
|
|
122
142
|
if (existsSync(resolve(manifestDir, src))) {
|
|
123
143
|
return resolve(manifestDir, src);
|
|
@@ -126,25 +146,23 @@ function resolvePluginSrc(entry, manifestDir, discovered) {
|
|
|
126
146
|
return resolveFromNodeModules(src, manifestDir);
|
|
127
147
|
}
|
|
128
148
|
function findDiscovered(src, entry, discovered) {
|
|
129
|
-
// Exact name match
|
|
130
149
|
if (entry.name && discovered.has(entry.name)) {
|
|
131
150
|
return discovered.get(entry.name);
|
|
132
151
|
}
|
|
133
|
-
// Package/subplugin reference: "mediafuse-plugins/p5" → look up "p5"
|
|
134
152
|
const slash = src.lastIndexOf("/");
|
|
135
153
|
if (slash >= 0) {
|
|
136
154
|
const subName = src.slice(slash + 1);
|
|
137
155
|
if (discovered.has(subName))
|
|
138
156
|
return discovered.get(subName);
|
|
139
157
|
}
|
|
140
|
-
// Full src as key
|
|
141
158
|
if (discovered.has(src))
|
|
142
159
|
return discovered.get(src);
|
|
143
|
-
|
|
160
|
+
const srcBasename = basename(src.split("?")[0]).replace(/\.[^.]+$/, "");
|
|
161
|
+
if (srcBasename && discovered.has(srcBasename))
|
|
162
|
+
return discovered.get(srcBasename);
|
|
144
163
|
for (const plugin of discovered.values()) {
|
|
145
164
|
if (plugin.name === src)
|
|
146
165
|
return plugin;
|
|
147
|
-
// Match scoped package short name: "@mediafuse/p5" matches "p5"
|
|
148
166
|
const scopedSlash = plugin.name.lastIndexOf("/");
|
|
149
167
|
if (scopedSlash >= 0) {
|
|
150
168
|
const shortName = plugin.name.slice(scopedSlash + 1);
|
|
@@ -160,21 +178,11 @@ function resolveFromNodeModules(ref, from) {
|
|
|
160
178
|
const pkgName = parts[0].startsWith("@")
|
|
161
179
|
? parts.slice(0, 2).join("/")
|
|
162
180
|
: parts[0];
|
|
163
|
-
const subPlugin = parts.slice(pkgName.split("/").length).join("/") || null;
|
|
164
181
|
const pkgDir = findPackageDir(pkgName, from);
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (typeof plugins === "string") {
|
|
170
|
-
return resolve(pkgDir, plugins);
|
|
171
|
-
}
|
|
172
|
-
if (Array.isArray(plugins) && plugins.length > 0) {
|
|
173
|
-
return resolve(pkgDir, plugins[0]);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
const main = pkg.main || "index.js";
|
|
177
|
-
return resolve(pkgDir, main);
|
|
182
|
+
const entry = findPluginEntry(pkgDir);
|
|
183
|
+
if (entry)
|
|
184
|
+
return entry;
|
|
185
|
+
throw new Error(`No plugin entry found in ${pkgDir}`);
|
|
178
186
|
}
|
|
179
187
|
function findPackageDir(name, from) {
|
|
180
188
|
let dir = resolve(from);
|
|
@@ -197,7 +205,7 @@ function mergeMetadata(entry, _resolvedPath, discovered) {
|
|
|
197
205
|
}
|
|
198
206
|
return merged;
|
|
199
207
|
}
|
|
200
|
-
function rewriteConfigPaths(config, manifestDir
|
|
208
|
+
function rewriteConfigPaths(config, manifestDir) {
|
|
201
209
|
return walkValues(config, (value) => {
|
|
202
210
|
if (typeof value !== "string")
|
|
203
211
|
return value;
|
|
@@ -205,7 +213,7 @@ function rewriteConfigPaths(config, manifestDir, baseUrl) {
|
|
|
205
213
|
return value;
|
|
206
214
|
const abs = resolve(manifestDir, value);
|
|
207
215
|
const rel = relative(manifestDir, abs).split(sep).join("/");
|
|
208
|
-
return
|
|
216
|
+
return `/${rel}`;
|
|
209
217
|
});
|
|
210
218
|
}
|
|
211
219
|
function walkValues(obj, transform) {
|
package/dist/cli/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/server.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { ResolvedManifest } from "./resolve.js";
|
|
2
|
-
export
|
|
2
|
+
export interface ServerOptions {
|
|
3
|
+
cache?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function startServer(resolved: ResolvedManifest, port: number, options?: ServerOptions): void;
|
|
3
6
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/cli/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAqCrD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,IAAI,CAkIvG"}
|
package/dist/cli/server.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { readFileSync, createReadStream, existsSync } from "node:fs";
|
|
3
|
-
import { extname, resolve, sep } from "node:path";
|
|
3
|
+
import { extname, resolve, dirname, basename, sep } from "node:path";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
4
5
|
import { transform } from "esbuild";
|
|
6
|
+
import { resolveRef } from "./remote.js";
|
|
5
7
|
const MIME = {
|
|
6
8
|
".js": "application/javascript",
|
|
7
9
|
".mjs": "application/javascript",
|
|
@@ -26,9 +28,94 @@ const MIME = {
|
|
|
26
28
|
".txt": "text/plain",
|
|
27
29
|
};
|
|
28
30
|
const TS_EXTENSIONS = new Set([".ts", ".tsx"]);
|
|
29
|
-
|
|
31
|
+
function baseUrl(req, port) {
|
|
32
|
+
const host = req.headers.host || `localhost:${port}`;
|
|
33
|
+
const proto = req.headers["x-forwarded-proto"] || "http";
|
|
34
|
+
return `${proto}://${host}`;
|
|
35
|
+
}
|
|
36
|
+
export function startServer(resolved, port, options = {}) {
|
|
37
|
+
const cacheControl = options.cache ? "public, max-age=300" : "no-store";
|
|
30
38
|
const { manifest, plugins, staticRoot } = resolved;
|
|
31
|
-
|
|
39
|
+
// Dynamic resolution: maps hash IDs to local directories
|
|
40
|
+
const dynMap = new Map();
|
|
41
|
+
function dynId(specifier) {
|
|
42
|
+
return createHash("sha256").update(specifier).digest("hex").slice(0, 12);
|
|
43
|
+
}
|
|
44
|
+
const routes = [
|
|
45
|
+
[/^\/$/, (req, res) => {
|
|
46
|
+
const base = baseUrl(req, port);
|
|
47
|
+
const rewritten = rewriteManifestUrls(manifest, base);
|
|
48
|
+
res.setHeader("Content-Type", "application/json");
|
|
49
|
+
res.writeHead(200);
|
|
50
|
+
res.end(JSON.stringify(rewritten, null, 2));
|
|
51
|
+
}],
|
|
52
|
+
[/^\/_resolve$/, async (req, res) => {
|
|
53
|
+
const url = new URL(req.url || "/", `http://localhost:${port}`);
|
|
54
|
+
const src = url.searchParams.get("src");
|
|
55
|
+
if (!src) {
|
|
56
|
+
res.writeHead(400);
|
|
57
|
+
res.end(JSON.stringify({ error: "Missing src parameter" }));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const filePath = await resolveRef(src);
|
|
62
|
+
const id = dynId(src);
|
|
63
|
+
const localDir = dirname(filePath);
|
|
64
|
+
const filename = basename(filePath);
|
|
65
|
+
dynMap.set(id, { localDir, filename });
|
|
66
|
+
const base = baseUrl(req, port);
|
|
67
|
+
const resolvedUrl = `${base}/_dyn/${id}/${filename}`;
|
|
68
|
+
res.setHeader("Content-Type", "application/json");
|
|
69
|
+
res.writeHead(200);
|
|
70
|
+
res.end(JSON.stringify({ url: resolvedUrl }));
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
74
|
+
res.writeHead(500);
|
|
75
|
+
res.end(JSON.stringify({ error: msg }));
|
|
76
|
+
}
|
|
77
|
+
}],
|
|
78
|
+
[/^\/_dyn\/([a-f0-9]+)\/(.+)$/, async (_req, res, match) => {
|
|
79
|
+
const entry = dynMap.get(match[1]);
|
|
80
|
+
if (!entry) {
|
|
81
|
+
res.writeHead(404);
|
|
82
|
+
res.end("Not found");
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const filePath = safePath(entry.localDir, match[2]);
|
|
86
|
+
if (!filePath) {
|
|
87
|
+
res.writeHead(403);
|
|
88
|
+
res.end("Forbidden");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
await serveFile(filePath, res);
|
|
92
|
+
}],
|
|
93
|
+
[/^\/(\d+)\/(.+)$/, async (_req, res, match) => {
|
|
94
|
+
const idx = parseInt(match[1], 10);
|
|
95
|
+
const plugin = plugins[idx];
|
|
96
|
+
if (!plugin) {
|
|
97
|
+
res.writeHead(404);
|
|
98
|
+
res.end("Plugin not found");
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const filePath = safePath(plugin.localDir, match[2]);
|
|
102
|
+
if (!filePath) {
|
|
103
|
+
res.writeHead(403);
|
|
104
|
+
res.end("Forbidden");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
await serveFile(filePath, res);
|
|
108
|
+
}],
|
|
109
|
+
[/^\/(.+)$/, async (_req, res, match) => {
|
|
110
|
+
const filePath = safePath(staticRoot, match[1]);
|
|
111
|
+
if (!filePath) {
|
|
112
|
+
res.writeHead(403);
|
|
113
|
+
res.end("Forbidden");
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
await serveFile(filePath, res);
|
|
117
|
+
}],
|
|
118
|
+
];
|
|
32
119
|
const server = createServer(async (req, res) => {
|
|
33
120
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
34
121
|
res.setHeader("Access-Control-Allow-Methods", "GET, OPTIONS");
|
|
@@ -43,55 +130,36 @@ export function startServer(resolved, port) {
|
|
|
43
130
|
res.end("Method not allowed");
|
|
44
131
|
return;
|
|
45
132
|
}
|
|
46
|
-
res.setHeader("Cache-Control",
|
|
133
|
+
res.setHeader("Cache-Control", cacheControl);
|
|
47
134
|
const url = new URL(req.url || "/", `http://localhost:${port}`);
|
|
48
135
|
const pathname = decodeURIComponent(url.pathname);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const pluginMatch = pathname.match(/^\/p\/(\d+)\/(.+)$/);
|
|
56
|
-
if (pluginMatch) {
|
|
57
|
-
const idx = parseInt(pluginMatch[1], 10);
|
|
58
|
-
const plugin = plugins[idx];
|
|
59
|
-
if (!plugin) {
|
|
60
|
-
res.writeHead(404);
|
|
61
|
-
res.end("Plugin not found");
|
|
136
|
+
for (const [pattern, handler] of routes) {
|
|
137
|
+
const match = pattern.exec(pathname);
|
|
138
|
+
if (match) {
|
|
139
|
+
await handler(req, res, match);
|
|
62
140
|
return;
|
|
63
141
|
}
|
|
64
|
-
const filePath = safePath(plugin.localDir, pluginMatch[2]);
|
|
65
|
-
if (!filePath) {
|
|
66
|
-
res.writeHead(403);
|
|
67
|
-
res.end("Forbidden");
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
await serveFile(filePath, res);
|
|
71
|
-
return;
|
|
72
142
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
res.end("Not found");
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const filePath = safePath(staticRoot, pathname.slice(1));
|
|
79
|
-
if (!filePath) {
|
|
80
|
-
res.writeHead(403);
|
|
81
|
-
res.end("Forbidden");
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
await serveFile(filePath, res);
|
|
143
|
+
res.writeHead(404);
|
|
144
|
+
res.end("Not found");
|
|
85
145
|
});
|
|
86
146
|
server.listen(port, () => {
|
|
87
147
|
console.log(`mediafuse serving on http://localhost:${port}`);
|
|
88
|
-
console.log(`manifest: http://localhost:${port}/manifest.json`);
|
|
89
148
|
for (const plugin of plugins) {
|
|
90
149
|
const name = plugin.entry.name || `plugin-${plugin.index}`;
|
|
91
150
|
console.log(`${name}: ${plugin.entry.src}`);
|
|
92
151
|
}
|
|
93
152
|
});
|
|
94
153
|
}
|
|
154
|
+
function rewriteManifestUrls(manifest, base) {
|
|
155
|
+
return {
|
|
156
|
+
...manifest,
|
|
157
|
+
plugins: manifest.plugins.map((p) => ({
|
|
158
|
+
...p,
|
|
159
|
+
src: `${base}${p.src}`,
|
|
160
|
+
})),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
95
163
|
function safePath(root, requested) {
|
|
96
164
|
const resolved = resolve(root, requested);
|
|
97
165
|
const normalizedRoot = resolve(root) + sep;
|
package/dist/cli/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/cli/server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export type { DefinePluginFn, SetupFn } from "./define-plugin.js";
|
|
2
|
-
export type { StoredMessage, MessageOf, PluginType, PluginEnvironment, PluginEvent, PluginEventMap, CreateContext, PluginHandlers, RegisterOptions, PluginEntry, BlockPosition, BlockCondition, BlockConditions, BlockAnimation, BlockTypeRenderer, Block, PluginManifest, RegisterFn, RegisterBlockTypeFn, PluginContext, } from "./types.js";
|
|
2
|
+
export type { StoredMessage, MessageOf, PluginType, PluginEnvironment, PluginEvent, PluginEventMap, CreateContext, PluginHandlers, RegisterOptions, PluginEntry, BlockPosition, BlockCondition, BlockConditions, BlockAnimation, BlockTypeRenderer, Block, PluginManifest, RegisterFn, RegisterBlockTypeFn, LoadType, LoadResult, LoadFn, PluginContext, } from "./types.js";
|
|
3
|
+
export { createLoader } from "./loader.js";
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElE,YAAY,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElE,YAAY,EACV,aAAa,EACb,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,eAAe,EACf,WAAW,EACX,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,MAAM,EACN,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { createLoader } from "./loader.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/loader.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,YAAY,CAAC;AAkBnD,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA6BvD"}
|
package/dist/loader.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
const SOURCE_EXTENSIONS = new Set([".js", ".mjs", ".ts", ".tsx"]);
|
|
2
|
+
const JSON_EXTENSIONS = new Set([".json"]);
|
|
3
|
+
const CSS_EXTENSIONS = new Set([".css"]);
|
|
4
|
+
function inferType(url) {
|
|
5
|
+
const pathname = new URL(url).pathname;
|
|
6
|
+
const dot = pathname.lastIndexOf(".");
|
|
7
|
+
if (dot < 0)
|
|
8
|
+
return "source";
|
|
9
|
+
const ext = pathname.slice(dot);
|
|
10
|
+
if (SOURCE_EXTENSIONS.has(ext))
|
|
11
|
+
return "source";
|
|
12
|
+
if (JSON_EXTENSIONS.has(ext))
|
|
13
|
+
return "json";
|
|
14
|
+
if (CSS_EXTENSIONS.has(ext))
|
|
15
|
+
return "css";
|
|
16
|
+
return "url";
|
|
17
|
+
}
|
|
18
|
+
export function createLoader(serverBase) {
|
|
19
|
+
return async (specifier, type) => {
|
|
20
|
+
const res = await fetch(`${serverBase}/_resolve?src=${encodeURIComponent(specifier)}`);
|
|
21
|
+
if (!res.ok) {
|
|
22
|
+
const body = await res.json().catch(() => ({ error: "Resolution failed" }));
|
|
23
|
+
throw new Error(body.error || `Failed to resolve: ${specifier}`);
|
|
24
|
+
}
|
|
25
|
+
const { url } = await res.json();
|
|
26
|
+
const resolved = type || inferType(url);
|
|
27
|
+
switch (resolved) {
|
|
28
|
+
case "source":
|
|
29
|
+
return await import(/* @vite-ignore */ url);
|
|
30
|
+
case "json": {
|
|
31
|
+
const jsonRes = await fetch(url);
|
|
32
|
+
return await jsonRes.json();
|
|
33
|
+
}
|
|
34
|
+
case "css": {
|
|
35
|
+
const link = document.createElement("link");
|
|
36
|
+
link.rel = "stylesheet";
|
|
37
|
+
link.href = url;
|
|
38
|
+
document.head.appendChild(link);
|
|
39
|
+
return url;
|
|
40
|
+
}
|
|
41
|
+
case "url":
|
|
42
|
+
return url;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAClE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzC,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE7B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC5C,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,iBAAiB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QAExC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,MAAM,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC9C,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAC9B,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;gBACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,GAAG,CAAC;YACb,CAAC;YACD,KAAK,KAAK;gBACR,OAAO,GAAG,CAAC;QACf,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/testing.js
CHANGED
|
@@ -44,7 +44,7 @@ export function createTestHarness(plugin, options = {}) {
|
|
|
44
44
|
};
|
|
45
45
|
const definePlugin = (name, setup) => {
|
|
46
46
|
capturedName = name;
|
|
47
|
-
setup({ register, registerBlockType: () => { }, manifest });
|
|
47
|
+
setup({ register, registerBlockType: () => { }, manifest, load: () => Promise.reject(new Error("load() not available in tests")) });
|
|
48
48
|
};
|
|
49
49
|
const pluginFn = typeof plugin === "function" ? plugin : plugin.default;
|
|
50
50
|
pluginFn(definePlugin);
|
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAsCA,SAAS,eAAe,CAAC,SAAmC;IAC1D,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAA0F,EAC1F,UAA8B,EAAE;IAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;IAC9C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE/D,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,YAAY,GAAsB,IAAI,CAAC;IAC3C,IAAI,gBAAgB,GAAmB,EAAE,CAAC;IAC1C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,SAAS,GACb,WAAW,KAAK,SAAS;QACvB,CAAC,CAAE,aAAa,EAAgC;QAChD,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,MAAM,GACV,WAAW,KAAK,MAAM;QACpB,CAAC,CAAC,CAAwB,KAAQ,EAAE,IAAuB,EAAE,EAAE;YAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAkB,CAAC,CAAC;QAChD,CAAC;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAE,QAAwB,EAAE,QAA0B,EAAW,EAAE;QACnG,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAEvC,YAAY,GAAG,IAAI,CAAC;QACpB,gBAAgB,GAAG,QAAQ,CAAC;QAC5B,WAAW,GAAG,IAAI,CAAC;QAEnB,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,QAAQ,CAAC,QAAQ,CAAC;gBAChB,SAAS;gBACT,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,MAAM;gBACZ,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;gBACzB,WAAW,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBAClE,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,YAAY,GAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnD,YAAY,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAsCA,SAAS,eAAe,CAAC,SAAmC;IAC1D,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAA0F,EAC1F,UAA8B,EAAE;IAEhC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;IAC9C,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAE/D,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,YAAY,GAAsB,IAAI,CAAC;IAC3C,IAAI,gBAAgB,GAAmB,EAAE,CAAC;IAC1C,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,SAAS,GACb,WAAW,KAAK,SAAS;QACvB,CAAC,CAAE,aAAa,EAAgC;QAChD,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,MAAM,GACV,WAAW,KAAK,MAAM;QACpB,CAAC,CAAC,CAAwB,KAAQ,EAAE,IAAuB,EAAE,EAAE;YAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAkB,CAAC,CAAC;QAChD,CAAC;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAE,QAAwB,EAAE,QAA0B,EAAW,EAAE;QACnG,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAEvC,YAAY,GAAG,IAAI,CAAC;QACpB,gBAAgB,GAAG,QAAQ,CAAC;QAC5B,WAAW,GAAG,IAAI,CAAC;QAEnB,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,QAAQ,CAAC,QAAQ,CAAC;gBAChB,SAAS;gBACT,MAAM,EAAE,YAAY;gBACpB,IAAI,EAAE,MAAM;gBACZ,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;gBACzB,WAAW,EAAE,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBAClE,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,YAAY,GAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnD,YAAY,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,EAAE,CAAC,CAAC;IACrI,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACxE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAG,CAAwB,KAAQ,EAAE,IAAuB,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAA0B,CAAC;QAC1F,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAEvB,CAAC;QACd,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,KAAK,OAAO,YAAY,CAAC,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,OAAO,YAAY,IAAI,WAAW,CAAC,CAAC,CAAC;QAClD,IAAI,UAAU,KAAK,OAAO,WAAW,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,OAAO,gBAAgB,CAAC,CAAC,CAAC;QAC3C,SAAS;QACT,OAAO;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;QACtC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;QACtC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;QACtC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACtB,QAAQ;QACR,UAAU,EAAE,QAAQ;QACpB,WAAW,CAAC,KAAc,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;QACnE,WAAW,CAAC,KAAc;YACxB,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAI,CAAC;QACX,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,aAAa,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QAChC,gBAAgB,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACjC,gBAAgB,KAAI,CAAC;QACrB,mBAAmB,KAAI,CAAC;QACxB,YAAY,KAAI,CAAC;QACjB,YAAY,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;QAC/B,SAAS,EAAE;YACT,GAAG,KAAI,CAAC;YACR,MAAM,KAAI,CAAC;YACX,MAAM,KAAI,CAAC;YACX,QAAQ,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;SAC7B;KACF,CAAC;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -50,6 +50,8 @@ export interface PluginEntry {
|
|
|
50
50
|
export interface BlockPosition {
|
|
51
51
|
x?: number | string;
|
|
52
52
|
y?: number | string;
|
|
53
|
+
width?: number | string;
|
|
54
|
+
height?: number | string;
|
|
53
55
|
anchor?: {
|
|
54
56
|
x?: "left" | "center" | "right";
|
|
55
57
|
y?: "top" | "center" | "bottom";
|
|
@@ -85,9 +87,13 @@ export interface PluginManifest {
|
|
|
85
87
|
}
|
|
86
88
|
export type RegisterFn = (type: PluginType, handlers: PluginHandlers, options?: RegisterOptions) => boolean;
|
|
87
89
|
export type RegisterBlockTypeFn = (subtype: string, renderer: BlockTypeRenderer) => void;
|
|
90
|
+
export type LoadType = "source" | "json" | "css" | "url";
|
|
91
|
+
export type LoadResult<T extends LoadType | undefined = undefined> = T extends "source" ? Record<string, unknown> : T extends "json" ? unknown : T extends "css" ? string : T extends "url" ? string : Record<string, unknown> | string | unknown;
|
|
92
|
+
export type LoadFn = <T extends LoadType | undefined = undefined>(specifier: string, type?: T) => Promise<LoadResult<T>>;
|
|
88
93
|
export interface PluginContext {
|
|
89
94
|
register: RegisterFn;
|
|
90
95
|
registerBlockType: RegisterBlockTypeFn;
|
|
91
96
|
manifest: PluginManifest;
|
|
97
|
+
load: LoadFn;
|
|
92
98
|
}
|
|
93
99
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|