Commit 5e78555
authored
fix(module): derive media list items from keys instead of N+1 fetches (#527)
* fix(module): derive media list items from keys instead of N+1 fetches
host.media.list() called storage.getItem() per key on top of getKeys(),
firing one HTTP request per file through the dev-mode HTTP storage driver.
On a public/ folder with many files this floods the browser's per-origin
connection limit and never resolves, which blocks isReady (and everything
gated behind it, e.g. the floating "Edit this page" button) forever.
All fields needed for listing (id, extension, stem, path, fsPath) are
derivable from the storage key alone, so list() no longer needs a
per-item round trip. Full metadata is still fetched lazily via
host.media.get() when a specific file is opened.
* fix(module): derive media key fields via shared helper, fix prod prefix mismatch
list()'s key-parsing assumed every storage key was raw and unprefixed, but
production's pre-baked publicAssetsStorage (templates.ts) stores items under
keys already prefixed with the virtual media collection name, so list() was
double-prefixing id/fsPath/path for every asset in a standard prod deploy.
Extracts mediaItemFieldsFromKey() into utils/media.ts as the single place
that derives id/extension/stem/path/fsPath from a raw key, used by host.ts,
templates.ts, and the dev public route. Also fixes the pre-existing stem
no-op (split('.').join('.') simply reconstructs the input) in all three.
* fix(module): derive stem from fsPath, hoist prefix regex, add test
- mediaItemFieldsFromKey: compute stem from fsPath instead of the
colon-joined key, matching the existing pattern in
medias/[...path].ts, so nested paths don't leak colons into stem
- host.ts: hoist the collection-prefix RegExp out of the per-key
map() loop
- add unit tests for mediaItemFieldsFromKey1 parent eff5a6b commit 5e78555
5 files changed
Lines changed: 65 additions & 24 deletions
File tree
- src/module
- src
- runtime
- server/routes/dev/public
- utils
- test/utils
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
| 17 | + | |
17 | 18 | | |
18 | 19 | | |
19 | 20 | | |
| |||
318 | 319 | | |
319 | 320 | | |
320 | 321 | | |
321 | | - | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | | - | |
326 | | - | |
327 | | - | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
328 | 329 | | |
329 | 330 | | |
330 | 331 | | |
| |||
Lines changed: 2 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
| 7 | + | |
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 32 | + | |
37 | 33 | | |
38 | 34 | | |
39 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
3 | | - | |
| 2 | + | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
| |||
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
| 22 | + | |
31 | 23 | | |
32 | 24 | | |
33 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
0 commit comments