gazetta 0.3.0 → 0.5.0

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.
Files changed (72) hide show
  1. package/admin-dist/assets/index-BZAFKsUp.js +608 -0
  2. package/admin-dist/assets/index-BpRotMuK.css +1 -0
  3. package/admin-dist/assets/vendor-primevue-BnR1c_bQ.js +2097 -0
  4. package/admin-dist/assets/vendor-vue-DSjyxCX6.js +1 -0
  5. package/admin-dist/index.html +4 -4
  6. package/dist/admin-api/index.d.ts +8 -2
  7. package/dist/admin-api/index.d.ts.map +1 -1
  8. package/dist/admin-api/index.js +31 -5
  9. package/dist/admin-api/index.js.map +1 -1
  10. package/dist/admin-api/routes/compare.d.ts +2 -1
  11. package/dist/admin-api/routes/compare.d.ts.map +1 -1
  12. package/dist/admin-api/routes/compare.js +6 -1
  13. package/dist/admin-api/routes/compare.js.map +1 -1
  14. package/dist/admin-api/routes/fragments.d.ts +2 -1
  15. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  16. package/dist/admin-api/routes/fragments.js +3 -1
  17. package/dist/admin-api/routes/fragments.js.map +1 -1
  18. package/dist/admin-api/routes/pages.d.ts +2 -1
  19. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  20. package/dist/admin-api/routes/pages.js +3 -1
  21. package/dist/admin-api/routes/pages.js.map +1 -1
  22. package/dist/admin-api/routes/publish.d.ts +36 -1
  23. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  24. package/dist/admin-api/routes/publish.js +216 -53
  25. package/dist/admin-api/routes/publish.js.map +1 -1
  26. package/dist/cli/index.js +228 -29
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/compare.d.ts +14 -0
  29. package/dist/compare.d.ts.map +1 -1
  30. package/dist/compare.js +44 -38
  31. package/dist/compare.js.map +1 -1
  32. package/dist/concurrency.d.ts +63 -0
  33. package/dist/concurrency.d.ts.map +1 -0
  34. package/dist/concurrency.js +134 -0
  35. package/dist/concurrency.js.map +1 -0
  36. package/dist/editor/mount.js +71 -71
  37. package/dist/editor/mount.js.map +1 -1
  38. package/dist/hash.d.ts +15 -0
  39. package/dist/hash.d.ts.map +1 -1
  40. package/dist/hash.js +47 -7
  41. package/dist/hash.js.map +1 -1
  42. package/dist/publish-rendered.d.ts +6 -5
  43. package/dist/publish-rendered.d.ts.map +1 -1
  44. package/dist/publish-rendered.js +39 -44
  45. package/dist/publish-rendered.js.map +1 -1
  46. package/dist/publish.d.ts +38 -0
  47. package/dist/publish.d.ts.map +1 -1
  48. package/dist/publish.js +154 -14
  49. package/dist/publish.js.map +1 -1
  50. package/dist/sidecars.d.ts +56 -0
  51. package/dist/sidecars.d.ts.map +1 -0
  52. package/dist/sidecars.js +141 -0
  53. package/dist/sidecars.js.map +1 -0
  54. package/dist/site-loader.d.ts.map +1 -1
  55. package/dist/site-loader.js +13 -10
  56. package/dist/site-loader.js.map +1 -1
  57. package/dist/source-sidecars.d.ts +13 -0
  58. package/dist/source-sidecars.d.ts.map +1 -0
  59. package/dist/source-sidecars.js +52 -0
  60. package/dist/source-sidecars.js.map +1 -0
  61. package/dist/targets.d.ts.map +1 -1
  62. package/dist/targets.js +21 -6
  63. package/dist/targets.js.map +1 -1
  64. package/dist/types.d.ts +10 -0
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/types.js +4 -0
  67. package/dist/types.js.map +1 -1
  68. package/package.json +1 -1
  69. package/admin-dist/assets/index-C-xOOPUK.js +0 -604
  70. package/admin-dist/assets/index-CKOOkleR.css +0 -1
  71. package/admin-dist/assets/vendor-primevue-BNJTiXAs.js +0 -1670
  72. package/admin-dist/assets/vendor-vue-GhBrpzPN.js +0 -1
@@ -1,10 +1,11 @@
1
1
  import type { StorageProvider, PurgeStrategy, CacheConfig } from './types.js';
2
+ import type { Site } from './site-loader.js';
2
3
  /**
3
4
  * Publish a page as HTML with ESI placeholders for fragments.
4
5
  * Local components are baked in. Fragment markup is replaced at request time by the worker.
5
6
  * CSS is stored as separate hashed files for immutable caching.
6
7
  */
7
- export declare function publishPageRendered(pageName: string, sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, targetCache?: CacheConfig, templatesDir?: string, manifestHash?: string): Promise<{
8
+ export declare function publishPageRendered(pageName: string, sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, targetCache?: CacheConfig, templatesDir?: string, manifestHash?: string, preloadedSite?: Site): Promise<{
8
9
  files: number;
9
10
  removed: number;
10
11
  }>;
@@ -13,26 +14,26 @@ export declare function publishPageRendered(pageName: string, sourceStorage: Sto
13
14
  * All components (including fragments) are baked in. CSS/JS inline.
14
15
  * For static hosting: GitHub Pages, Netlify, Vercel, any file server.
15
16
  */
16
- export declare function publishPageStatic(pageName: string, sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, templatesDir?: string, manifestHash?: string): Promise<{
17
+ export declare function publishPageStatic(pageName: string, sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, templatesDir?: string, manifestHash?: string, preloadedSite?: Site): Promise<{
17
18
  files: number;
18
19
  }>;
19
20
  /**
20
21
  * Publish a fragment as HTML with a <head> section for CSS/JS.
21
22
  * The worker injects <head> content before </head> and body content at the ESI placeholder.
22
23
  */
23
- export declare function publishFragmentRendered(fragmentName: string, sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, templatesDir?: string, manifestHash?: string): Promise<{
24
+ export declare function publishFragmentRendered(fragmentName: string, sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, templatesDir?: string, manifestHash?: string, preloadedSite?: Site): Promise<{
24
25
  files: number;
25
26
  removed: number;
26
27
  }>;
27
28
  /**
28
29
  * Publish site manifest (stripped of targets config).
29
30
  */
30
- export declare function publishSiteManifest(sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider): Promise<void>;
31
+ export declare function publishSiteManifest(sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, preloadedSite?: Site): Promise<void>;
31
32
  /**
32
33
  * Build and store reverse fragment index.
33
34
  * Maps each fragment to the list of page routes that use it.
34
35
  */
35
- export declare function publishFragmentIndex(sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider): Promise<Record<string, string[]>>;
36
+ export declare function publishFragmentIndex(sourceStorage: StorageProvider, sourceDir: string, targetStorage: StorageProvider, preloadedSite?: Site): Promise<Record<string, string[]>>;
36
37
  /** Purge via Cloudflare zone cache API */
37
38
  export declare function createCloudflarePurge(zoneId: string, apiToken: string): PurgeStrategy;
38
39
  /** Look up Cloudflare zone ID from a site URL */
@@ -1 +1 @@
1
- {"version":3,"file":"publish-rendered.d.ts","sourceRoot":"","sources":["../src/publish-rendered.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAqD7E;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA8G7C;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5B;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA0D7C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,GAC7B,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAiBnC;AAED,0CAA0C;AAC1C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAcrF;AAED,iDAAiD;AACjD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQtG;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,KAAK,EAAE,aAAa,EACpB,SAAS,GAAE,KAAK,GAAG,KAAa,GAC/B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkBlD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAUlD"}
1
+ {"version":3,"file":"publish-rendered.d.ts","sourceRoot":"","sources":["../src/publish-rendered.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAmC5C;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,WAAW,CAAC,EAAE,WAAW,EACzB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,IAAI,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsH7C;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,IAAI,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B5B;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,IAAI,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAgE7C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,aAAa,CAAC,EAAE,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,aAAa,CAAC,EAAE,IAAI,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAiBnC;AAED,0CAA0C;AAC1C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAcrF;AAED,iDAAiD;AACjD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQtG;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,KAAK,EAAE,aAAa,EACpB,SAAS,GAAE,KAAK,GAAG,KAAa,GAC/B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkBlD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,eAAe,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,eAAe,EAC9B,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAUlD"}
@@ -2,32 +2,10 @@ import { createHash } from 'node:crypto';
2
2
  import { loadSite } from './site-loader.js';
3
3
  import { resolvePage, resolveComponent } from './resolver.js';
4
4
  import { renderComponent, renderPage } from './renderer.js';
5
- import { parseSidecarName, sidecarNameFor } from './hash.js';
5
+ import { writeSidecars, collectFragmentRefs } from './sidecars.js';
6
6
  function contentHash(content) {
7
7
  return createHash('md5').update(content).digest('hex').slice(0, 8);
8
8
  }
9
- /**
10
- * Write a content-hash sidecar (zero-byte file) and remove any older sidecar(s)
11
- * in the same directory. Used by compare-targets to detect changes via readDir.
12
- */
13
- async function writeSidecar(storage, dir, hash) {
14
- // Remove stale sidecars first — there should only ever be one per dir
15
- try {
16
- const entries = await storage.readDir(dir);
17
- for (const e of entries) {
18
- const existing = parseSidecarName(e.name);
19
- if (existing && existing !== hash) {
20
- try {
21
- await storage.rm(`${dir}/${e.name}`);
22
- }
23
- catch { /* already gone */ }
24
- }
25
- }
26
- }
27
- catch { /* dir doesn't exist yet — mkdir below */ }
28
- await storage.mkdir(dir);
29
- await storage.writeFile(`${dir}/${sidecarNameFor(hash)}`, '');
30
- }
31
9
  /** List existing hashed files (styles.*.css, script.*.js) in a directory */
32
10
  async function listHashedFiles(storage, dir) {
33
11
  try {
@@ -60,8 +38,10 @@ async function cleanupOldFiles(storage, oldFiles, newFiles) {
60
38
  * Local components are baked in. Fragment markup is replaced at request time by the worker.
61
39
  * CSS is stored as separate hashed files for immutable caching.
62
40
  */
63
- export async function publishPageRendered(pageName, sourceStorage, sourceDir, targetStorage, targetCache, templatesDir, manifestHash) {
64
- const site = await loadSite({ siteDir: sourceDir, storage: sourceStorage, templatesDir });
41
+ export async function publishPageRendered(pageName, sourceStorage, sourceDir, targetStorage, targetCache, templatesDir, manifestHash, preloadedSite) {
42
+ // Reuse a preloaded site when the caller already has one (runPublish loops
43
+ // over N items; loading per-item was quadratic). loadSite is idempotent.
44
+ const site = preloadedSite ?? await loadSite({ siteDir: sourceDir, storage: sourceStorage, templatesDir });
65
45
  const page = site.pages.get(pageName);
66
46
  if (!page)
67
47
  throw new Error(`Page "${pageName}" not found`);
@@ -155,9 +135,14 @@ ${bodyContent}
155
135
  await targetStorage.mkdir(pageDir);
156
136
  await targetStorage.writeFile(`${pageDir}/index.html`, html);
157
137
  fileCount++;
158
- // Write content-hash sidecar for compare-targets
159
- if (manifestHash)
160
- await writeSidecar(targetStorage, pageDir, manifestHash);
138
+ // Write content-hash sidecar + reverse-dep sidecars for compare/dependents
139
+ if (manifestHash) {
140
+ await writeSidecars(targetStorage, pageDir, {
141
+ hash: manifestHash,
142
+ uses: collectFragmentRefs(page.components),
143
+ template: page.template,
144
+ });
145
+ }
161
146
  // Clean up old hashed files
162
147
  const removed = await cleanupOldFiles(targetStorage, oldFiles, newFiles);
163
148
  return { files: fileCount, removed };
@@ -167,8 +152,8 @@ ${bodyContent}
167
152
  * All components (including fragments) are baked in. CSS/JS inline.
168
153
  * For static hosting: GitHub Pages, Netlify, Vercel, any file server.
169
154
  */
170
- export async function publishPageStatic(pageName, sourceStorage, sourceDir, targetStorage, templatesDir, manifestHash) {
171
- const site = await loadSite({ siteDir: sourceDir, storage: sourceStorage, templatesDir });
155
+ export async function publishPageStatic(pageName, sourceStorage, sourceDir, targetStorage, templatesDir, manifestHash, preloadedSite) {
156
+ const site = preloadedSite ?? await loadSite({ siteDir: sourceDir, storage: sourceStorage, templatesDir });
172
157
  const page = site.pages.get(pageName);
173
158
  if (!page)
174
159
  throw new Error(`Page "${pageName}" not found`);
@@ -181,19 +166,24 @@ export async function publishPageStatic(pageName, sourceStorage, sourceDir, targ
181
166
  const outputDir = urlPath || '.';
182
167
  await targetStorage.mkdir(outputDir);
183
168
  await targetStorage.writeFile(outputPath, html);
184
- // Sidecar goes under pages/{name}/ regardless of static route layout, so compare
185
- // can find it the same way it does for ESI targets. pages/ doesn't clash with
186
- // static serving (routes are / and /{route}, not /pages/*).
187
- if (manifestHash)
188
- await writeSidecar(targetStorage, `pages/${pageName}`, manifestHash);
169
+ // Sidecars go under pages/{name}/ regardless of static route layout, so compare
170
+ // + dependents find them the same way as for ESI targets. pages/ doesn't clash
171
+ // with static serving (routes are / and /{route}, not /pages/*).
172
+ if (manifestHash) {
173
+ await writeSidecars(targetStorage, `pages/${pageName}`, {
174
+ hash: manifestHash,
175
+ uses: collectFragmentRefs(page.components),
176
+ template: page.template,
177
+ });
178
+ }
189
179
  return { files: 1 };
190
180
  }
191
181
  /**
192
182
  * Publish a fragment as HTML with a <head> section for CSS/JS.
193
183
  * The worker injects <head> content before </head> and body content at the ESI placeholder.
194
184
  */
195
- export async function publishFragmentRendered(fragmentName, sourceStorage, sourceDir, targetStorage, templatesDir, manifestHash) {
196
- const site = await loadSite({ siteDir: sourceDir, storage: sourceStorage, templatesDir });
185
+ export async function publishFragmentRendered(fragmentName, sourceStorage, sourceDir, targetStorage, templatesDir, manifestHash, preloadedSite) {
186
+ const site = preloadedSite ?? await loadSite({ siteDir: sourceDir, storage: sourceStorage, templatesDir });
197
187
  const fragment = site.fragments.get(fragmentName);
198
188
  if (!fragment)
199
189
  throw new Error(`Fragment "${fragmentName}" not found`);
@@ -235,9 +225,14 @@ export async function publishFragmentRendered(fragmentName, sourceStorage, sourc
235
225
  await targetStorage.mkdir(fragDir);
236
226
  await targetStorage.writeFile(`${fragDir}/index.html`, fragmentHtml);
237
227
  fileCount++;
238
- // Write content-hash sidecar for compare-targets
239
- if (manifestHash)
240
- await writeSidecar(targetStorage, fragDir, manifestHash);
228
+ // Write content-hash sidecar + reverse-dep sidecars for compare/dependents
229
+ if (manifestHash) {
230
+ await writeSidecars(targetStorage, fragDir, {
231
+ hash: manifestHash,
232
+ uses: collectFragmentRefs(fragment.components),
233
+ template: fragment.template,
234
+ });
235
+ }
241
236
  // Clean up old hashed files
242
237
  const removed = await cleanupOldFiles(targetStorage, oldFiles, newFiles);
243
238
  return { files: fileCount, removed };
@@ -245,8 +240,8 @@ export async function publishFragmentRendered(fragmentName, sourceStorage, sourc
245
240
  /**
246
241
  * Publish site manifest (stripped of targets config).
247
242
  */
248
- export async function publishSiteManifest(sourceStorage, sourceDir, targetStorage) {
249
- const site = await loadSite({ siteDir: sourceDir, storage: sourceStorage });
243
+ export async function publishSiteManifest(sourceStorage, sourceDir, targetStorage, preloadedSite) {
244
+ const site = preloadedSite ?? await loadSite({ siteDir: sourceDir, storage: sourceStorage });
250
245
  const manifest = { name: site.manifest.name, version: site.manifest.version };
251
246
  await targetStorage.writeFile('site.json', JSON.stringify(manifest));
252
247
  }
@@ -254,8 +249,8 @@ export async function publishSiteManifest(sourceStorage, sourceDir, targetStorag
254
249
  * Build and store reverse fragment index.
255
250
  * Maps each fragment to the list of page routes that use it.
256
251
  */
257
- export async function publishFragmentIndex(sourceStorage, sourceDir, targetStorage) {
258
- const site = await loadSite({ siteDir: sourceDir, storage: sourceStorage });
252
+ export async function publishFragmentIndex(sourceStorage, sourceDir, targetStorage, preloadedSite) {
253
+ const site = preloadedSite ?? await loadSite({ siteDir: sourceDir, storage: sourceStorage });
259
254
  const index = {};
260
255
  for (const [_pageName, page] of site.pages) {
261
256
  if (!page.components)
@@ -1 +1 @@
1
- {"version":3,"file":"publish-rendered.js","sourceRoot":"","sources":["../src/publish-rendered.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish-rendered.js","sourceRoot":"","sources":["../src/publish-rendered.ts"],"names":[],"mappings":"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"}
package/dist/publish.d.ts CHANGED
@@ -23,4 +23,42 @@ export declare function publishItems(sourceStorage: StorageProvider, sourceBase:
23
23
  * Given a list of items (pages/fragments), find all referenced templates and fragments.
24
24
  */
25
25
  export declare function resolveDependencies(storage: StorageProvider, siteBase: string, items: string[]): Promise<string[]>;
26
+ /**
27
+ * Reverse-dependency lookup: given a fragment name, return the pages and
28
+ * fragments that reference it (transitively). Used by the admin UI to show
29
+ * "publishing @header affects: home, about, blog".
30
+ *
31
+ * On static targets, those pages need to be republished too — fragments are
32
+ * baked into pages at publish time. On ESI targets, republishing the fragment
33
+ * alone suffices because the edge composer resolves @fragments per request.
34
+ */
35
+ export declare function findFragmentDependents(storage: StorageProvider, siteBase: string, fragmentName: string): Promise<{
36
+ pages: string[];
37
+ fragments: string[];
38
+ }>;
39
+ /**
40
+ * Fast path for finding dependents against a *published* target.
41
+ *
42
+ * Uses `.uses-{fragment}` and `.tpl-{template}` sidecar filenames (written by
43
+ * writeSidecar in publish-rendered.ts). Needs listings only — no content
44
+ * reads, no JSON parsing. Scales to 10k pages at the cost of one LIST call
45
+ * per item directory.
46
+ *
47
+ * Handles transitive fragment→fragment dependencies: if @inner is referenced
48
+ * by @outer which is referenced by pages/home, querying "@inner" returns
49
+ * home and @outer.
50
+ *
51
+ * Works against target storage (rooted at target base) or source storage
52
+ * (pass `baseDir: siteDir` so the walker descends into `siteDir/pages`).
53
+ */
54
+ export declare function findDependentsFromSidecars(storage: StorageProvider, query: {
55
+ fragment: string;
56
+ } | {
57
+ template: string;
58
+ }, opts?: {
59
+ baseDir?: string;
60
+ }): Promise<{
61
+ pages: string[];
62
+ fragments: string[];
63
+ }>;
26
64
  //# sourceMappingURL=publish.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBlC;AA+CD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB"}
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBlC;AA8CD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CASnB;AA0DD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA2DnD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAClD,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA0CnD"}
package/dist/publish.js CHANGED
@@ -1,16 +1,21 @@
1
1
  import { join } from 'node:path';
2
+ import { listSidecars } from './sidecars.js';
3
+ import { mapLimit } from './concurrency.js';
2
4
  /**
3
5
  * Copy items from source storage to target storage.
4
6
  * Items are relative paths like "pages/home" or "fragments/header".
5
7
  * All files under each item directory are copied recursively.
6
8
  */
7
9
  export async function publishItems(sourceStorage, sourceBase, targetStorage, targetBase, items) {
8
- let copiedFiles = 0;
9
- for (const item of items) {
10
+ // Copy items in parallel (bounded). copyRecursive does its own bounded
11
+ // fan-out per item, so the outer limit here keeps total concurrency in
12
+ // check regardless of how deep any one item goes.
13
+ const counts = await mapLimit(items, async (item) => {
10
14
  const sourcePath = join(sourceBase, item);
11
15
  const targetPath = join(targetBase, item);
12
- copiedFiles += await copyRecursive(sourceStorage, sourcePath, targetStorage, targetPath);
13
- }
16
+ return copyRecursive(sourceStorage, sourcePath, targetStorage, targetPath);
17
+ });
18
+ let copiedFiles = counts.reduce((a, b) => a + b, 0);
14
19
  // Also copy site.yaml
15
20
  try {
16
21
  const siteYaml = await sourceStorage.readFile(join(sourceBase, 'site.yaml'));
@@ -23,7 +28,6 @@ export async function publishItems(sourceStorage, sourceBase, targetStorage, tar
23
28
  return { copiedFiles };
24
29
  }
25
30
  async function copyRecursive(source, sourcePath, target, targetPath) {
26
- let count = 0;
27
31
  // Check if sourcePath is a file
28
32
  try {
29
33
  const content = await source.readFile(sourcePath);
@@ -39,19 +43,19 @@ async function copyRecursive(source, sourcePath, target, targetPath) {
39
43
  return 0;
40
44
  const entries = await source.readDir(sourcePath);
41
45
  await target.mkdir(targetPath);
42
- for (const entry of entries) {
46
+ // Bounded-parallel copy of children. Sequential would be O(n) wall time;
47
+ // at 10k files on cloud storage that's minutes of serial I/O latency.
48
+ const counts = await mapLimit(entries, async (entry) => {
43
49
  const childSource = join(sourcePath, entry.name);
44
50
  const childTarget = join(targetPath, entry.name);
45
51
  if (entry.isDirectory) {
46
- count += await copyRecursive(source, childSource, target, childTarget);
52
+ return copyRecursive(source, childSource, target, childTarget);
47
53
  }
48
- else {
49
- const content = await source.readFile(childSource);
50
- await target.writeFile(childTarget, content);
51
- count++;
52
- }
53
- }
54
- return count;
54
+ const content = await source.readFile(childSource);
55
+ await target.writeFile(childTarget, content);
56
+ return 1;
57
+ });
58
+ return counts.reduce((a, b) => a + b, 0);
55
59
  }
56
60
  function dirname(path) {
57
61
  const parts = path.split('/');
@@ -113,4 +117,140 @@ async function collectComponentDeps(components, storage, siteBase, allItems, vis
113
117
  }
114
118
  }
115
119
  }
120
+ /**
121
+ * Reverse-dependency lookup: given a fragment name, return the pages and
122
+ * fragments that reference it (transitively). Used by the admin UI to show
123
+ * "publishing @header affects: home, about, blog".
124
+ *
125
+ * On static targets, those pages need to be republished too — fragments are
126
+ * baked into pages at publish time. On ESI targets, republishing the fragment
127
+ * alone suffices because the edge composer resolves @fragments per request.
128
+ */
129
+ export async function findFragmentDependents(storage, siteBase, fragmentName) {
130
+ const pages = new Set();
131
+ const fragments = new Set();
132
+ // Build an index of every manifest → direct @ references
133
+ const manifestsToScan = [];
134
+ for (const kind of ['pages', 'fragments']) {
135
+ try {
136
+ const entries = await storage.readDir(join(siteBase, kind));
137
+ for (const e of entries) {
138
+ if (e.isDirectory)
139
+ manifestsToScan.push({ kind: kind === 'pages' ? 'page' : 'fragment', name: e.name });
140
+ }
141
+ }
142
+ catch { /* missing dir */ }
143
+ }
144
+ function walkComponents(components, out) {
145
+ if (!Array.isArray(components))
146
+ return;
147
+ for (const entry of components) {
148
+ if (typeof entry === 'string' && entry.startsWith('@'))
149
+ out.push(entry.slice(1));
150
+ else if (typeof entry === 'object' && entry !== null) {
151
+ walkComponents(entry.components, out);
152
+ }
153
+ }
154
+ }
155
+ // Read every manifest in parallel (bounded) and index refs in memory.
156
+ // Past this point the BFS is a map lookup, not storage I/O — so it stays
157
+ // fast even at 10k items.
158
+ const directRefs = new Map();
159
+ await mapLimit(manifestsToScan, async (item) => {
160
+ const refs = [];
161
+ const manifestName = item.kind === 'page' ? 'page.json' : 'fragment.json';
162
+ const dir = item.kind === 'page' ? 'pages' : 'fragments';
163
+ try {
164
+ const raw = await storage.readFile(join(siteBase, dir, item.name, manifestName));
165
+ const manifest = JSON.parse(raw);
166
+ walkComponents(manifest.components, refs);
167
+ }
168
+ catch { /* skip unreadable */ }
169
+ directRefs.set(`${item.kind}:${item.name}`, refs);
170
+ });
171
+ // BFS: find everything that transitively references `fragmentName`.
172
+ const queue = [fragmentName];
173
+ const seen = new Set([fragmentName]);
174
+ while (queue.length) {
175
+ const current = queue.shift();
176
+ for (const item of manifestsToScan) {
177
+ const key = `${item.kind}:${item.name}`;
178
+ if (seen.has(key))
179
+ continue;
180
+ const refs = directRefs.get(key) ?? [];
181
+ if (refs.includes(current)) {
182
+ seen.add(key);
183
+ if (item.kind === 'page')
184
+ pages.add(item.name);
185
+ else {
186
+ fragments.add(item.name);
187
+ queue.push(item.name);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ return { pages: [...pages].sort(), fragments: [...fragments].sort() };
193
+ }
194
+ /**
195
+ * Fast path for finding dependents against a *published* target.
196
+ *
197
+ * Uses `.uses-{fragment}` and `.tpl-{template}` sidecar filenames (written by
198
+ * writeSidecar in publish-rendered.ts). Needs listings only — no content
199
+ * reads, no JSON parsing. Scales to 10k pages at the cost of one LIST call
200
+ * per item directory.
201
+ *
202
+ * Handles transitive fragment→fragment dependencies: if @inner is referenced
203
+ * by @outer which is referenced by pages/home, querying "@inner" returns
204
+ * home and @outer.
205
+ *
206
+ * Works against target storage (rooted at target base) or source storage
207
+ * (pass `baseDir: siteDir` so the walker descends into `siteDir/pages`).
208
+ */
209
+ export async function findDependentsFromSidecars(storage, query, opts = {}) {
210
+ const pagesRoot = opts.baseDir ? `${opts.baseDir}/pages` : 'pages';
211
+ const fragmentsRoot = opts.baseDir ? `${opts.baseDir}/fragments` : 'fragments';
212
+ // Single listing pass per root, then all reasoning is in-memory.
213
+ const [pagesList, fragmentsList] = await Promise.all([
214
+ listSidecars(storage, pagesRoot),
215
+ listSidecars(storage, fragmentsRoot),
216
+ ]);
217
+ const pagesIndex = new Map();
218
+ for (const [name, state] of pagesList) {
219
+ pagesIndex.set(name, { uses: new Set(state.uses), template: state.template });
220
+ }
221
+ const fragmentsIndex = new Map();
222
+ for (const [name, state] of fragmentsList) {
223
+ fragmentsIndex.set(name, { uses: new Set(state.uses), template: state.template });
224
+ }
225
+ // Now walk the indexes in-memory. No more storage calls from this point.
226
+ const pages = new Set();
227
+ const fragments = new Set();
228
+ if ('template' in query) {
229
+ for (const [name, info] of pagesIndex)
230
+ if (info.template === query.template)
231
+ pages.add(name);
232
+ for (const [name, info] of fragmentsIndex)
233
+ if (info.template === query.template)
234
+ fragments.add(name);
235
+ return { pages: [...pages].sort(), fragments: [...fragments].sort() };
236
+ }
237
+ // Fragment query with transitive walk
238
+ const queue = [query.fragment];
239
+ const seen = new Set([query.fragment]);
240
+ while (queue.length) {
241
+ const current = queue.shift();
242
+ for (const [name, info] of pagesIndex) {
243
+ if (info.uses.has(current))
244
+ pages.add(name);
245
+ }
246
+ for (const [name, info] of fragmentsIndex) {
247
+ if (info.uses.has(current) && !seen.has(name)) {
248
+ seen.add(name);
249
+ fragments.add(name);
250
+ queue.push(name);
251
+ }
252
+ }
253
+ }
254
+ return { pages: [...pages].sort(), fragments: [...fragments].sort() };
255
+ }
116
256
  //# sourceMappingURL=publish.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Sidecar file I/O for pages and fragments — one module owning all reads
3
+ * and writes of the three sidecar kinds:
4
+ *
5
+ * .{8hex}.hash — content hash, used by compare-targets
6
+ * .uses-{fragment} — one per @ reference; used by dependents lookup
7
+ * .tpl-{template} — template name; used to flag republish-needed
8
+ *
9
+ * Filenames encode the whole picture — a single readDir returns the full
10
+ * dependency state of an item without any content reads. Scaling goal:
11
+ * listing calls, not GETs, at 10k pages.
12
+ *
13
+ * Publish-rendered.ts, compare.ts, publish.ts all used to inline this
14
+ * logic separately; centralizing here reduces duplication and gives us
15
+ * one place to swap the storage shape (e.g. future single-index file)
16
+ * without touching every caller.
17
+ */
18
+ import type { StorageProvider } from './types.js';
19
+ /** Full sidecar state for one page or fragment. */
20
+ export interface SidecarState {
21
+ hash: string;
22
+ uses: string[];
23
+ template: string | null;
24
+ }
25
+ /**
26
+ * Read sidecar filenames for a single item directory. Returns null if
27
+ * the directory doesn't exist or has no hash sidecar. `uses` and
28
+ * `template` default to empty/null when their sidecars are absent —
29
+ * old items published before we started writing them will still work,
30
+ * the caller just won't have dependency info for them.
31
+ */
32
+ export declare function readSidecars(storage: StorageProvider, dir: string): Promise<SidecarState | null>;
33
+ /**
34
+ * Write (or rewrite) all three sidecar kinds for one item. Stale sidecars
35
+ * of any kind that aren't in the new state are removed first, so
36
+ * fragment-references removed from a page's components don't linger as
37
+ * .uses-*.
38
+ */
39
+ export declare function writeSidecars(storage: StorageProvider, dir: string, state: SidecarState): Promise<void>;
40
+ /**
41
+ * Walk a directory tree collecting every sub-directory's sidecar state.
42
+ * Bounded-parallel recursion — flat Promise.all over 10k dirs would blow
43
+ * the fd limit or provider rate limit.
44
+ *
45
+ * Keys are paths relative to `rootDir` (e.g. `home`, `blog/[slug]`). Items
46
+ * without a .hash sidecar are skipped. `writeSidecars` always writes all
47
+ * three kinds together, so partial state doesn't occur in real operation.
48
+ */
49
+ export declare function listSidecars(storage: StorageProvider, rootDir: string): Promise<Map<string, SidecarState>>;
50
+ /**
51
+ * Walk a component tree and collect every @fragment reference, recursing
52
+ * into inline components' children. Used when building SidecarState from
53
+ * a live manifest (source-side).
54
+ */
55
+ export declare function collectFragmentRefs(components: unknown[] | undefined): string[];
56
+ //# sourceMappingURL=sidecars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidecars.d.ts","sourceRoot":"","sources":["../src/sidecars.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAQjD,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAiBtG;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAcpC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAa/E"}