gazetta 0.5.0 → 0.6.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 (236) hide show
  1. package/admin-dist/assets/index-B6pVot0Y.css +1 -0
  2. package/admin-dist/assets/index-DniLwxJA.js +609 -0
  3. package/admin-dist/assets/{vendor-primevue-BnR1c_bQ.js → vendor-primevue-C0Q_YTCb.js} +330 -431
  4. package/admin-dist/assets/vendor-vue-D3wBSmDf.js +1 -0
  5. package/admin-dist/index.html +4 -4
  6. package/dist/admin-api/index.d.ts +19 -4
  7. package/dist/admin-api/index.d.ts.map +1 -1
  8. package/dist/admin-api/index.js +154 -18
  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 +33 -24
  13. package/dist/admin-api/routes/compare.js.map +1 -1
  14. package/dist/admin-api/routes/fields.d.ts +2 -2
  15. package/dist/admin-api/routes/fields.d.ts.map +1 -1
  16. package/dist/admin-api/routes/fields.js +10 -3
  17. package/dist/admin-api/routes/fields.js.map +1 -1
  18. package/dist/admin-api/routes/fragments.d.ts +2 -3
  19. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  20. package/dist/admin-api/routes/fragments.js +92 -19
  21. package/dist/admin-api/routes/fragments.js.map +1 -1
  22. package/dist/admin-api/routes/history.d.ts +23 -0
  23. package/dist/admin-api/routes/history.d.ts.map +1 -0
  24. package/dist/admin-api/routes/history.js +143 -0
  25. package/dist/admin-api/routes/history.js.map +1 -0
  26. package/dist/admin-api/routes/pages.d.ts +2 -3
  27. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  28. package/dist/admin-api/routes/pages.js +118 -20
  29. package/dist/admin-api/routes/pages.js.map +1 -1
  30. package/dist/admin-api/routes/preview.d.ts +2 -2
  31. package/dist/admin-api/routes/preview.d.ts.map +1 -1
  32. package/dist/admin-api/routes/preview.js +50 -15
  33. package/dist/admin-api/routes/preview.js.map +1 -1
  34. package/dist/admin-api/routes/publish.d.ts +2 -1
  35. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  36. package/dist/admin-api/routes/publish.js +213 -66
  37. package/dist/admin-api/routes/publish.js.map +1 -1
  38. package/dist/admin-api/routes/site.d.ts +2 -2
  39. package/dist/admin-api/routes/site.d.ts.map +1 -1
  40. package/dist/admin-api/routes/site.js +27 -4
  41. package/dist/admin-api/routes/site.js.map +1 -1
  42. package/dist/admin-api/routes/templates.d.ts +2 -2
  43. package/dist/admin-api/routes/templates.d.ts.map +1 -1
  44. package/dist/admin-api/routes/templates.js +19 -9
  45. package/dist/admin-api/routes/templates.js.map +1 -1
  46. package/dist/admin-api/schemas/compare.d.ts +29 -0
  47. package/dist/admin-api/schemas/compare.d.ts.map +1 -0
  48. package/dist/admin-api/schemas/compare.js +30 -0
  49. package/dist/admin-api/schemas/compare.js.map +1 -0
  50. package/dist/admin-api/schemas/dependents.d.ts +15 -0
  51. package/dist/admin-api/schemas/dependents.d.ts.map +1 -0
  52. package/dist/admin-api/schemas/dependents.js +14 -0
  53. package/dist/admin-api/schemas/dependents.js.map +1 -0
  54. package/dist/admin-api/schemas/fetch.d.ts +12 -0
  55. package/dist/admin-api/schemas/fetch.d.ts.map +1 -0
  56. package/dist/admin-api/schemas/fetch.js +11 -0
  57. package/dist/admin-api/schemas/fetch.js.map +1 -0
  58. package/dist/admin-api/schemas/fields.d.ts +11 -0
  59. package/dist/admin-api/schemas/fields.d.ts.map +1 -0
  60. package/dist/admin-api/schemas/fields.js +11 -0
  61. package/dist/admin-api/schemas/fields.js.map +1 -0
  62. package/dist/admin-api/schemas/fragments.d.ts +27 -0
  63. package/dist/admin-api/schemas/fragments.d.ts.map +1 -0
  64. package/dist/admin-api/schemas/fragments.js +26 -0
  65. package/dist/admin-api/schemas/fragments.js.map +1 -0
  66. package/dist/admin-api/schemas/history.d.ts +73 -0
  67. package/dist/admin-api/schemas/history.d.ts.map +1 -0
  68. package/dist/admin-api/schemas/history.js +35 -0
  69. package/dist/admin-api/schemas/history.js.map +1 -0
  70. package/dist/admin-api/schemas/index.d.ts +32 -0
  71. package/dist/admin-api/schemas/index.d.ts.map +1 -0
  72. package/dist/admin-api/schemas/index.js +32 -0
  73. package/dist/admin-api/schemas/index.js.map +1 -0
  74. package/dist/admin-api/schemas/pages.d.ts +46 -0
  75. package/dist/admin-api/schemas/pages.d.ts.map +1 -0
  76. package/dist/admin-api/schemas/pages.js +47 -0
  77. package/dist/admin-api/schemas/pages.js.map +1 -0
  78. package/dist/admin-api/schemas/publish.d.ts +67 -0
  79. package/dist/admin-api/schemas/publish.d.ts.map +1 -0
  80. package/dist/admin-api/schemas/publish.js +60 -0
  81. package/dist/admin-api/schemas/publish.js.map +1 -0
  82. package/dist/admin-api/schemas/site.d.ts +28 -0
  83. package/dist/admin-api/schemas/site.d.ts.map +1 -0
  84. package/dist/admin-api/schemas/site.js +24 -0
  85. package/dist/admin-api/schemas/site.js.map +1 -0
  86. package/dist/admin-api/schemas/targets.d.ts +36 -0
  87. package/dist/admin-api/schemas/targets.d.ts.map +1 -0
  88. package/dist/admin-api/schemas/targets.js +19 -0
  89. package/dist/admin-api/schemas/targets.js.map +1 -0
  90. package/dist/admin-api/schemas/templates.d.ts +17 -0
  91. package/dist/admin-api/schemas/templates.d.ts.map +1 -0
  92. package/dist/admin-api/schemas/templates.js +16 -0
  93. package/dist/admin-api/schemas/templates.js.map +1 -0
  94. package/dist/admin-api/source-context.d.ts +165 -0
  95. package/dist/admin-api/source-context.d.ts.map +1 -0
  96. package/dist/admin-api/source-context.js +95 -0
  97. package/dist/admin-api/source-context.js.map +1 -0
  98. package/dist/app.js +1 -1
  99. package/dist/app.js.map +1 -1
  100. package/dist/assemble.d.ts.map +1 -1
  101. package/dist/assemble.js +4 -1
  102. package/dist/assemble.js.map +1 -1
  103. package/dist/cli/bootstrap.d.ts +48 -0
  104. package/dist/cli/bootstrap.d.ts.map +1 -0
  105. package/dist/cli/bootstrap.js +85 -0
  106. package/dist/cli/bootstrap.js.map +1 -0
  107. package/dist/cli/history.d.ts +45 -0
  108. package/dist/cli/history.d.ts.map +1 -0
  109. package/dist/cli/history.js +165 -0
  110. package/dist/cli/history.js.map +1 -0
  111. package/dist/cli/index.js +630 -115
  112. package/dist/cli/index.js.map +1 -1
  113. package/dist/compare.d.ts +8 -5
  114. package/dist/compare.d.ts.map +1 -1
  115. package/dist/compare.js +53 -14
  116. package/dist/compare.js.map +1 -1
  117. package/dist/content-root.d.ts +38 -0
  118. package/dist/content-root.d.ts.map +1 -0
  119. package/dist/content-root.js +29 -0
  120. package/dist/content-root.js.map +1 -0
  121. package/dist/editor/mount.d.ts +1 -1
  122. package/dist/editor/mount.d.ts.map +1 -1
  123. package/dist/editor/mount.js +61 -29
  124. package/dist/editor/mount.js.map +1 -1
  125. package/dist/hash.d.ts +34 -3
  126. package/dist/hash.d.ts.map +1 -1
  127. package/dist/hash.js +64 -7
  128. package/dist/hash.js.map +1 -1
  129. package/dist/history-provider.d.ts +49 -0
  130. package/dist/history-provider.d.ts.map +1 -0
  131. package/dist/history-provider.js +226 -0
  132. package/dist/history-provider.js.map +1 -0
  133. package/dist/history-recorder.d.ts +98 -0
  134. package/dist/history-recorder.d.ts.map +1 -0
  135. package/dist/history-recorder.js +160 -0
  136. package/dist/history-recorder.js.map +1 -0
  137. package/dist/history-restorer.d.ts +46 -0
  138. package/dist/history-restorer.d.ts.map +1 -0
  139. package/dist/history-restorer.js +105 -0
  140. package/dist/history-restorer.js.map +1 -0
  141. package/dist/history.d.ts +111 -0
  142. package/dist/history.d.ts.map +1 -0
  143. package/dist/history.js +25 -0
  144. package/dist/history.js.map +1 -0
  145. package/dist/index.d.ts +26 -4
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +16 -3
  148. package/dist/index.js.map +1 -1
  149. package/dist/locale.d.ts +74 -0
  150. package/dist/locale.d.ts.map +1 -0
  151. package/dist/locale.js +150 -0
  152. package/dist/locale.js.map +1 -0
  153. package/dist/manifest.d.ts.map +1 -1
  154. package/dist/manifest.js +16 -1
  155. package/dist/manifest.js.map +1 -1
  156. package/dist/providers/azure-blob.d.ts.map +1 -1
  157. package/dist/providers/azure-blob.js.map +1 -1
  158. package/dist/providers/r2.d.ts.map +1 -1
  159. package/dist/providers/r2.js +7 -4
  160. package/dist/providers/r2.js.map +1 -1
  161. package/dist/providers/s3.d.ts.map +1 -1
  162. package/dist/providers/s3.js +23 -15
  163. package/dist/providers/s3.js.map +1 -1
  164. package/dist/publish-locale.d.ts +44 -0
  165. package/dist/publish-locale.d.ts.map +1 -0
  166. package/dist/publish-locale.js +103 -0
  167. package/dist/publish-locale.js.map +1 -0
  168. package/dist/publish-rendered.d.ts +16 -5
  169. package/dist/publish-rendered.d.ts.map +1 -1
  170. package/dist/publish-rendered.js +89 -36
  171. package/dist/publish-rendered.js.map +1 -1
  172. package/dist/publish.d.ts +5 -7
  173. package/dist/publish.d.ts.map +1 -1
  174. package/dist/publish.js +21 -12
  175. package/dist/publish.js.map +1 -1
  176. package/dist/renderer.d.ts +14 -4
  177. package/dist/renderer.d.ts.map +1 -1
  178. package/dist/renderer.js +35 -23
  179. package/dist/renderer.js.map +1 -1
  180. package/dist/resolver.d.ts +7 -2
  181. package/dist/resolver.d.ts.map +1 -1
  182. package/dist/resolver.js +66 -15
  183. package/dist/resolver.js.map +1 -1
  184. package/dist/robots.d.ts +22 -0
  185. package/dist/robots.d.ts.map +1 -0
  186. package/dist/robots.js +25 -0
  187. package/dist/robots.js.map +1 -0
  188. package/dist/seo.d.ts +56 -0
  189. package/dist/seo.d.ts.map +1 -0
  190. package/dist/seo.js +72 -0
  191. package/dist/seo.js.map +1 -0
  192. package/dist/serve.d.ts +41 -3
  193. package/dist/serve.d.ts.map +1 -1
  194. package/dist/serve.js +206 -65
  195. package/dist/serve.js.map +1 -1
  196. package/dist/sidecars.d.ts +9 -5
  197. package/dist/sidecars.d.ts.map +1 -1
  198. package/dist/sidecars.js +112 -22
  199. package/dist/sidecars.js.map +1 -1
  200. package/dist/site-loader.d.ts +74 -6
  201. package/dist/site-loader.d.ts.map +1 -1
  202. package/dist/site-loader.js +138 -28
  203. package/dist/site-loader.js.map +1 -1
  204. package/dist/sitemap.d.ts +45 -0
  205. package/dist/sitemap.d.ts.map +1 -0
  206. package/dist/sitemap.js +67 -0
  207. package/dist/sitemap.js.map +1 -0
  208. package/dist/source-sidecars.d.ts +21 -2
  209. package/dist/source-sidecars.d.ts.map +1 -1
  210. package/dist/source-sidecars.js +51 -5
  211. package/dist/source-sidecars.js.map +1 -1
  212. package/dist/targets.d.ts +47 -1
  213. package/dist/targets.d.ts.map +1 -1
  214. package/dist/targets.js +78 -9
  215. package/dist/targets.js.map +1 -1
  216. package/dist/template-loader.d.ts +7 -3
  217. package/dist/template-loader.d.ts.map +1 -1
  218. package/dist/template-loader.js +27 -12
  219. package/dist/template-loader.js.map +1 -1
  220. package/dist/templates-scan-worker.js +1 -1
  221. package/dist/templates-scan-worker.js.map +1 -1
  222. package/dist/templates-scan.d.ts.map +1 -1
  223. package/dist/templates-scan.js +1 -1
  224. package/dist/templates-scan.js.map +1 -1
  225. package/dist/types.d.ts +116 -9
  226. package/dist/types.d.ts.map +1 -1
  227. package/dist/types.js +28 -5
  228. package/dist/types.js.map +1 -1
  229. package/dist/workers/cloudflare-r2.d.ts +11 -2
  230. package/dist/workers/cloudflare-r2.d.ts.map +1 -1
  231. package/dist/workers/cloudflare-r2.js +120 -55
  232. package/dist/workers/cloudflare-r2.js.map +1 -1
  233. package/package.json +11 -2
  234. package/admin-dist/assets/index-BZAFKsUp.js +0 -608
  235. package/admin-dist/assets/index-BpRotMuK.css +0 -1
  236. package/admin-dist/assets/vendor-vue-DSjyxCX6.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-restorer.js","sourceRoot":"","sources":["../src/history-restorer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * History / revisions for a target.
3
+ *
4
+ * Every write to a target (save or publish) records a revision. Undo and
5
+ * rollback restore a prior revision — both are soft (forward-only; create
6
+ * a new revision reverting to the past state, never destroy history).
7
+ *
8
+ * Storage layout per target (all inside the target's storage, in the
9
+ * reserved `.gazetta/` namespace that the runtime never reads):
10
+ *
11
+ * .gazetta/
12
+ * history/
13
+ * index.json ordered revision list
14
+ * objects/<hh>/<rest> content-addressed blobs, sharded by first 2 hex chars
15
+ * revisions/rev-NNNN.json revision manifest: metadata + item→hash map
16
+ *
17
+ * One uniform approach across all storage providers — the provider
18
+ * interface remains read/write bytes at paths; no provider-native
19
+ * versioning (S3 object versions, git commits) is used.
20
+ *
21
+ * This module declares the types and provider interface. Implementation
22
+ * lands in a later phase.
23
+ */
24
+ /** Operation that produced a revision. */
25
+ export type RevisionOperation = 'save' | 'publish' | 'rollback';
26
+ /** Metadata + item→hash snapshot for one write to a target. */
27
+ export interface Revision {
28
+ /** Unique id, typically `rev-{NNNN}` with a zero-padded counter. */
29
+ id: string;
30
+ /** ISO 8601 timestamp when the revision was recorded. */
31
+ timestamp: string;
32
+ /** What kind of write this was. */
33
+ operation: RevisionOperation;
34
+ /** Author identifier. Free-form for v1; upgrades to auth identity later. */
35
+ author?: string;
36
+ /** Source target name, if this revision was produced by a publish from another target. */
37
+ source?: string;
38
+ /** Paths of items affected by this write (e.g. `pages/home`, `fragments/header`). */
39
+ items: string[];
40
+ /** Optional human-readable note. */
41
+ message?: string;
42
+ /** For rollback/restore: the revision id this one restored from. */
43
+ restoredFrom?: string;
44
+ }
45
+ /** Full revision manifest as stored in `revisions/rev-NNNN.json`. */
46
+ export interface RevisionManifest extends Revision {
47
+ /**
48
+ * Snapshot of the full content tree at this revision, as `path → content hash`.
49
+ * The hash references a blob under `.gazetta/history/objects/`.
50
+ * Unchanged items across revisions share blobs (content-addressed dedupe).
51
+ */
52
+ snapshot: Record<string, string>;
53
+ }
54
+ /** Retention policy for a target's history. */
55
+ export interface HistoryRetention {
56
+ /** Keep at most N most-recent revisions. Default: 50. Oldest evicted. */
57
+ maxRevisions?: number;
58
+ }
59
+ /** Input to `recordRevision` — metadata plus the current content tree. */
60
+ export interface RevisionInput {
61
+ operation: RevisionOperation;
62
+ /** Author identifier (free-form for v1). */
63
+ author?: string;
64
+ /** Source target, when this revision was produced by a publish. */
65
+ source?: string;
66
+ /** Optional human-readable note. */
67
+ message?: string;
68
+ /** For rollback/restore: the revision id this one restored from. */
69
+ restoredFrom?: string;
70
+ /**
71
+ * Full content tree snapshot at this revision: `itemPath → content string`.
72
+ * Content is stored as UTF-8 text — covers every item type Gazetta
73
+ * tracks today (JSON manifests, YAML, HTML, CSS, JS). Binary assets
74
+ * (images, fonts) would need a separate mechanism; revisit when those
75
+ * become first-class.
76
+ *
77
+ * Unchanged items should carry identical content across calls so the
78
+ * provider can dedupe via content-addressing.
79
+ */
80
+ items: Map<string, string>;
81
+ }
82
+ /**
83
+ * Uniform history API. Implemented on top of any StorageProvider — reads
84
+ * and writes bytes under `.gazetta/history/`. No provider-native
85
+ * versioning (S3 object versions, git commits) is used.
86
+ */
87
+ export interface HistoryProvider {
88
+ /**
89
+ * Record a new revision on the target.
90
+ *
91
+ * Writes any new item blobs to `objects/<hash[:2]>/<hash[2:]>`, writes
92
+ * the revision manifest to `revisions/rev-NNNN.json`, updates
93
+ * `index.json`, and applies retention (evicts oldest if over limit).
94
+ *
95
+ * `items` parameter carries the full content tree; only blobs that
96
+ * don't already exist are written. Returns the recorded Revision.
97
+ */
98
+ recordRevision(input: RevisionInput): Promise<Revision>;
99
+ /** List revisions, newest first. `limit` caps the list size. */
100
+ listRevisions(limit?: number): Promise<Revision[]>;
101
+ /** Read a revision's full manifest (metadata + snapshot). */
102
+ readRevision(id: string): Promise<RevisionManifest>;
103
+ /** Read a content blob by hash (e.g. to restore an item's state). */
104
+ readBlob(hash: string): Promise<string>;
105
+ /**
106
+ * Delete a revision and its manifest. Orphaned blobs are garbage-
107
+ * collected by the implementation (lazy or immediate, adapter's choice).
108
+ */
109
+ deleteRevision(id: string): Promise<void>;
110
+ }
111
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,0CAA0C;AAC1C,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAA;AAE/D,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAA;IACV,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,SAAS,EAAE,iBAAiB,CAAA;IAC5B,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,qEAAqE;AACrE,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAChD;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,iBAAiB,CAAA;IAC5B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;OASG;IACH,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;OASG;IACH,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEvD,gEAAgE;IAChE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAElD,6DAA6D;IAC7D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAEnD,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAEvC;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * History / revisions for a target.
3
+ *
4
+ * Every write to a target (save or publish) records a revision. Undo and
5
+ * rollback restore a prior revision — both are soft (forward-only; create
6
+ * a new revision reverting to the past state, never destroy history).
7
+ *
8
+ * Storage layout per target (all inside the target's storage, in the
9
+ * reserved `.gazetta/` namespace that the runtime never reads):
10
+ *
11
+ * .gazetta/
12
+ * history/
13
+ * index.json ordered revision list
14
+ * objects/<hh>/<rest> content-addressed blobs, sharded by first 2 hex chars
15
+ * revisions/rev-NNNN.json revision manifest: metadata + item→hash map
16
+ *
17
+ * One uniform approach across all storage providers — the provider
18
+ * interface remains read/write bytes at paths; no provider-native
19
+ * versioning (S3 object versions, git commits) is used.
20
+ *
21
+ * This module declares the types and provider interface. Implementation
22
+ * lands in a later phase.
23
+ */
24
+ export {};
25
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,29 @@
1
1
  export type { RenderOutput, TemplateFunction, EditorMount, FieldMount, TemplateModule, ComponentManifest, FragmentManifest, PageManifest, SiteManifest, ResolvedComponent, TargetConfig, StorageConfig, WorkerConfig, CacheConfig, DirEntry, StorageProvider, PurgeStrategy, } from './types.js';
2
- export { getPublishMode } from './types.js';
3
- export { renderComponent, renderFragment, renderPage } from './renderer.js';
2
+ export { getType, isEditable } from './types.js';
3
+ export type { TargetType } from './types.js';
4
+ export { createTargetRegistryView, listEditableTargets, UnknownTargetError, NoEditableTargetError, } from './targets.js';
5
+ export type { TargetRegistry } from './targets.js';
6
+ export { createContentRoot } from './content-root.js';
7
+ export type { ContentRoot } from './content-root.js';
8
+ export { createSourceContext, createSourceContextFromRegistry } from './admin-api/source-context.js';
9
+ export type { SourceContext } from './admin-api/source-context.js';
10
+ export type { HistoryProvider, Revision, RevisionInput, RevisionManifest, RevisionOperation, HistoryRetention, } from './history.js';
11
+ export { createHistoryProvider } from './history-provider.js';
12
+ export type { CreateHistoryProviderOptions } from './history-provider.js';
13
+ export { recordWrite, DEFAULT_SCAN_LOCATIONS, DEFAULT_SCAN_ROOT_FILES, } from './history-recorder.js';
14
+ export type { RecordWriteOptions, WrittenItem, ScanLocation, } from './history-recorder.js';
15
+ export { restoreRevision } from './history-restorer.js';
16
+ export type { RestoreRevisionOptions } from './history-restorer.js';
17
+ export { isHistoryEnabled, getHistoryRetention, DEFAULT_HISTORY_RETENTION, } from './types.js';
18
+ export type { HistoryConfig, LocalesConfig, PageMetadata } from './types.js';
19
+ export { isValidLocale, normalizeLocale, defaultLocaleFor, resolveSiteLocales, resolveTargetLocales, localeFromFilename, localeFilename, resolveLocaleFallback, localeRoutePrefix, } from './locale.js';
20
+ export type { ResolvedLocales } from './locale.js';
21
+ export { renderComponent, renderFragment, renderPage, type RenderPageOptions, type SeoContext, } from './renderer.js';
22
+ export { resolveSeoTags, type ResolveSeoTagsInput } from './seo.js';
4
23
  export { resolveComponent, resolveFragment, resolvePage } from './resolver.js';
5
24
  export { loadSite } from './site-loader.js';
6
- export type { Site, LoadSiteOptions } from './site-loader.js';
25
+ export type { Site, LocalizedEntry, PageEntry, FragmentEntry, LoadSiteOptions } from './site-loader.js';
26
+ export { allPageEntries, allFragmentEntries } from './site-loader.js';
7
27
  export { loadTemplate, invalidateTemplate, invalidateAllTemplates } from './template-loader.js';
8
28
  export { scopeHtml, scopeCss, hashPath } from './scope.js';
9
29
  export { createFilesystemProvider } from './providers/filesystem.js';
@@ -14,10 +34,12 @@ export type { S3ProviderOptions } from './providers/s3.js';
14
34
  export { createR2RestProvider } from './providers/r2.js';
15
35
  export type { R2RestProviderOptions } from './providers/r2.js';
16
36
  export { createStorageProvider, createTargetRegistry } from './targets.js';
37
+ export { bootstrapFromSiteYaml, buildSourceContext } from './cli/bootstrap.js';
38
+ export type { BootstrapResult, BuildSourceContextOptions } from './cli/bootstrap.js';
17
39
  export { createServer } from './serve.js';
18
40
  export type { ServeOptions } from './serve.js';
19
41
  export { publishItems, resolveDependencies } from './publish.js';
20
- export { publishPageRendered, publishPageStatic, publishFragmentRendered, publishSiteManifest, publishFragmentIndex, publishFragmentWithPurge, publishPageWithPurge } from './publish-rendered.js';
42
+ export { publishPageRendered, publishPageStatic, publishFragmentRendered, publishSiteManifest, publishFragmentIndex, publishFragmentWithPurge, publishPageWithPurge, } from './publish-rendered.js';
21
43
  export { format } from './formats.js';
22
44
  export { assembleEsi, parseCacheComment, splitFragment, findEsiPaths } from './assemble.js';
23
45
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,eAAe,EACf,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAG3C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC/F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAG9D,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAG1E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACzC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAGlM,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAGrC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,19 @@
1
- export { getPublishMode } from './types.js';
1
+ export { getType, isEditable } from './types.js';
2
+ export { createTargetRegistryView, listEditableTargets, UnknownTargetError, NoEditableTargetError, } from './targets.js';
3
+ export { createContentRoot } from './content-root.js';
4
+ export { createSourceContext, createSourceContextFromRegistry } from './admin-api/source-context.js';
5
+ export { createHistoryProvider } from './history-provider.js';
6
+ export { recordWrite, DEFAULT_SCAN_LOCATIONS, DEFAULT_SCAN_ROOT_FILES, } from './history-recorder.js';
7
+ export { restoreRevision } from './history-restorer.js';
8
+ export { isHistoryEnabled, getHistoryRetention, DEFAULT_HISTORY_RETENTION, } from './types.js';
9
+ // Locale resolution
10
+ export { isValidLocale, normalizeLocale, defaultLocaleFor, resolveSiteLocales, resolveTargetLocales, localeFromFilename, localeFilename, resolveLocaleFallback, localeRoutePrefix, } from './locale.js';
2
11
  // Renderer
3
- export { renderComponent, renderFragment, renderPage } from './renderer.js';
12
+ export { renderComponent, renderFragment, renderPage, } from './renderer.js';
13
+ export { resolveSeoTags } from './seo.js';
4
14
  export { resolveComponent, resolveFragment, resolvePage } from './resolver.js';
5
15
  export { loadSite } from './site-loader.js';
16
+ export { allPageEntries, allFragmentEntries } from './site-loader.js';
6
17
  export { loadTemplate, invalidateTemplate, invalidateAllTemplates } from './template-loader.js';
7
18
  export { scopeHtml, scopeCss, hashPath } from './scope.js';
8
19
  // Storage providers
@@ -12,11 +23,13 @@ export { createS3Provider } from './providers/s3.js';
12
23
  export { createR2RestProvider } from './providers/r2.js';
13
24
  // Targets
14
25
  export { createStorageProvider, createTargetRegistry } from './targets.js';
26
+ // Bootstrap helpers — read site.yaml, build registry, derive SourceContext
27
+ export { bootstrapFromSiteYaml, buildSourceContext } from './cli/bootstrap.js';
15
28
  // Server
16
29
  export { createServer } from './serve.js';
17
30
  // Publish
18
31
  export { publishItems, resolveDependencies } from './publish.js';
19
- export { publishPageRendered, publishPageStatic, publishFragmentRendered, publishSiteManifest, publishFragmentIndex, publishFragmentWithPurge, publishPageWithPurge } from './publish-rendered.js';
32
+ export { publishPageRendered, publishPageStatic, publishFragmentRendered, publishSiteManifest, publishFragmentIndex, publishFragmentWithPurge, publishPageWithPurge, } from './publish-rendered.js';
20
33
  // Format helpers
21
34
  export { format } from './formats.js';
22
35
  // ESI assembly (for edge workers and servers)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC/F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1D,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAGxD,UAAU;AACV,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAE1E,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAElM,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,8CAA8C;AAC9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE3F,0GAA0G"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEhD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAA;AAUpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,uBAAuB,CAAA;AAM9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,YAAY,CAAA;AAGnB,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,aAAa,CAAA;AAGpB,WAAW;AACX,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,GAGX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,cAAc,EAA4B,MAAM,UAAU,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC/F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1D,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAGxD,UAAU;AACV,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAE1E,2EAA2E;AAC3E,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAG9E,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAGzC,UAAU;AACV,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,uBAAuB,CAAA;AAE9B,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,8CAA8C;AAC9C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE3F,0GAA0G"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Locale resolution — single source of truth for locale configuration.
3
+ *
4
+ * Resolves the effective locale settings for a site and for each target,
5
+ * applying inheritance (target inherits from site) and inference
6
+ * (single-locale target auto-infers its default).
7
+ *
8
+ * All locale logic goes through this module. Consumers (renderer, publisher,
9
+ * CLI, admin API) call these functions instead of reading raw config fields.
10
+ */
11
+ import type { SiteManifest, TargetConfig } from './types.js';
12
+ /** Resolved locale settings for a site or target. */
13
+ export interface ResolvedLocales {
14
+ /** All supported locale codes, normalized to lowercase. */
15
+ supported: string[];
16
+ /** The default locale code. */
17
+ default: string;
18
+ /** Whether the default locale gets a URL prefix. */
19
+ defaultPrefix: boolean;
20
+ /** Whether Accept-Language detection/redirect is enabled. */
21
+ detection: boolean;
22
+ /** Fallback chains. E.g. { 'pt-br': 'pt' }. */
23
+ fallbacks: Record<string, string>;
24
+ }
25
+ /**
26
+ * Validate a locale code against BCP 47 pattern.
27
+ * Rejects path traversal (../), dots (fr.json), scripts, empty strings,
28
+ * and anything that isn't a simple language or language-region code.
29
+ */
30
+ export declare function isValidLocale(locale: string): boolean;
31
+ /** Normalize a BCP 47 locale code to lowercase for filenames. */
32
+ export declare function normalizeLocale(locale: string): string;
33
+ /**
34
+ * Resolve the default locale for a site manifest.
35
+ * Chain: explicit `locale` field → first in `locales.supported` → 'en'.
36
+ */
37
+ export declare function defaultLocaleFor(site: SiteManifest): string;
38
+ /**
39
+ * Resolve site-level locale settings.
40
+ * Returns null if i18n is not enabled (no `locales` config).
41
+ */
42
+ export declare function resolveSiteLocales(site: SiteManifest): ResolvedLocales | null;
43
+ /**
44
+ * Resolve target-level locale settings, inheriting from site.
45
+ * Returns null if i18n is not enabled at the site level.
46
+ */
47
+ export declare function resolveTargetLocales(target: TargetConfig, site: SiteManifest): ResolvedLocales | null;
48
+ /**
49
+ * Resolve the locale for a given filename suffix.
50
+ * `page.json` → default locale, `page.fr.json` → 'fr'.
51
+ */
52
+ export declare function localeFromFilename(filename: string, baseName: string): string | null;
53
+ /**
54
+ * Build the filename for a locale variant.
55
+ * `('page', null)` → `page.json`, `('page', 'fr')` → `page.fr.json`.
56
+ */
57
+ export declare function localeFilename(baseName: string, locale: string | null): string;
58
+ /**
59
+ * Resolve a locale through the fallback chain.
60
+ * Returns the first locale in the chain that has content,
61
+ * or the default if nothing matches.
62
+ *
63
+ * @param locale - The requested locale
64
+ * @param available - Set of locales that have content
65
+ * @param resolved - The resolved locale settings (for fallbacks and default)
66
+ */
67
+ export declare function resolveLocaleFallback(locale: string, available: Set<string>, resolved: ResolvedLocales): string;
68
+ /**
69
+ * Build the route prefix for a locale on a given target.
70
+ * Default locale → '' (no prefix, unless defaultPrefix is true).
71
+ * Other locales → '/{locale}'.
72
+ */
73
+ export declare function localeRoutePrefix(locale: string, resolved: ResolvedLocales): string;
74
+ //# sourceMappingURL=locale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAiB,MAAM,YAAY,CAAA;AAE3E,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,aAAa,EAAE,OAAO,CAAA;IACtB,6DAA6D;IAC7D,SAAS,EAAE,OAAO,CAAA;IAClB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAY7E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAsBrG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWpF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,CAiB/G;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,MAAM,CAInF"}
package/dist/locale.js ADDED
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Locale resolution — single source of truth for locale configuration.
3
+ *
4
+ * Resolves the effective locale settings for a site and for each target,
5
+ * applying inheritance (target inherits from site) and inference
6
+ * (single-locale target auto-infers its default).
7
+ *
8
+ * All locale logic goes through this module. Consumers (renderer, publisher,
9
+ * CLI, admin API) call these functions instead of reading raw config fields.
10
+ */
11
+ /** BCP 47 locale code pattern: 2-letter language, optional region subtag. */
12
+ const LOCALE_PATTERN = /^[a-z]{2}(-[a-z]{2,8})?$/;
13
+ /**
14
+ * Validate a locale code against BCP 47 pattern.
15
+ * Rejects path traversal (../), dots (fr.json), scripts, empty strings,
16
+ * and anything that isn't a simple language or language-region code.
17
+ */
18
+ export function isValidLocale(locale) {
19
+ return LOCALE_PATTERN.test(locale.toLowerCase());
20
+ }
21
+ /** Normalize a BCP 47 locale code to lowercase for filenames. */
22
+ export function normalizeLocale(locale) {
23
+ return locale.toLowerCase();
24
+ }
25
+ /**
26
+ * Resolve the default locale for a site manifest.
27
+ * Chain: explicit `locale` field → first in `locales.supported` → 'en'.
28
+ */
29
+ export function defaultLocaleFor(site) {
30
+ return site.locale ?? site.locales?.supported?.[0] ?? 'en';
31
+ }
32
+ /**
33
+ * Resolve site-level locale settings.
34
+ * Returns null if i18n is not enabled (no `locales` config).
35
+ */
36
+ export function resolveSiteLocales(site) {
37
+ if (!site.locales)
38
+ return null;
39
+ const supported = site.locales.supported.map(normalizeLocale);
40
+ if (supported.length === 0)
41
+ return null;
42
+ const defaultLocale = normalizeLocale(defaultLocaleFor(site));
43
+ return {
44
+ supported,
45
+ default: defaultLocale,
46
+ defaultPrefix: site.locales.defaultPrefix ?? false,
47
+ detection: site.locales.detection ?? false,
48
+ fallbacks: normalizeFallbacks(site.locales.fallbacks),
49
+ };
50
+ }
51
+ /**
52
+ * Resolve target-level locale settings, inheriting from site.
53
+ * Returns null if i18n is not enabled at the site level.
54
+ */
55
+ export function resolveTargetLocales(target, site) {
56
+ const siteLocales = resolveSiteLocales(site);
57
+ if (!siteLocales)
58
+ return null;
59
+ const supported = target.locales ? target.locales.map(normalizeLocale) : siteLocales.supported;
60
+ const defaultLocale = target.locale
61
+ ? normalizeLocale(target.locale)
62
+ : supported.length === 1
63
+ ? supported[0] // single-locale target: the only locale IS the default
64
+ : siteLocales.default;
65
+ return {
66
+ supported,
67
+ default: defaultLocale,
68
+ defaultPrefix: target.defaultPrefix ?? siteLocales.defaultPrefix,
69
+ detection: supported.length === 1
70
+ ? false // single-locale: nothing to detect
71
+ : (target.detection ?? siteLocales.detection),
72
+ fallbacks: siteLocales.fallbacks,
73
+ };
74
+ }
75
+ /**
76
+ * Resolve the locale for a given filename suffix.
77
+ * `page.json` → default locale, `page.fr.json` → 'fr'.
78
+ */
79
+ export function localeFromFilename(filename, baseName) {
80
+ // page.json → null (default)
81
+ if (filename === `${baseName}.json`)
82
+ return null;
83
+ // page.fr.json → 'fr', page.en-gb.json → 'en-gb'
84
+ const prefix = `${baseName}.`;
85
+ const suffix = '.json';
86
+ if (filename.startsWith(prefix) && filename.endsWith(suffix)) {
87
+ const locale = filename.slice(prefix.length, -suffix.length);
88
+ return locale || null;
89
+ }
90
+ return null;
91
+ }
92
+ /**
93
+ * Build the filename for a locale variant.
94
+ * `('page', null)` → `page.json`, `('page', 'fr')` → `page.fr.json`.
95
+ */
96
+ export function localeFilename(baseName, locale) {
97
+ if (!locale)
98
+ return `${baseName}.json`;
99
+ return `${baseName}.${normalizeLocale(locale)}.json`;
100
+ }
101
+ /**
102
+ * Resolve a locale through the fallback chain.
103
+ * Returns the first locale in the chain that has content,
104
+ * or the default if nothing matches.
105
+ *
106
+ * @param locale - The requested locale
107
+ * @param available - Set of locales that have content
108
+ * @param resolved - The resolved locale settings (for fallbacks and default)
109
+ */
110
+ export function resolveLocaleFallback(locale, available, resolved) {
111
+ const norm = normalizeLocale(locale);
112
+ if (available.has(norm))
113
+ return norm;
114
+ // Walk fallback chain
115
+ let current = norm;
116
+ while (resolved.fallbacks[current]) {
117
+ current = resolved.fallbacks[current];
118
+ if (available.has(current))
119
+ return current;
120
+ }
121
+ // Fall back to default
122
+ if (available.has(resolved.default))
123
+ return resolved.default;
124
+ // Last resort: first available
125
+ for (const loc of available)
126
+ return loc;
127
+ return resolved.default;
128
+ }
129
+ /**
130
+ * Build the route prefix for a locale on a given target.
131
+ * Default locale → '' (no prefix, unless defaultPrefix is true).
132
+ * Other locales → '/{locale}'.
133
+ */
134
+ export function localeRoutePrefix(locale, resolved) {
135
+ const norm = normalizeLocale(locale);
136
+ if (norm === resolved.default && !resolved.defaultPrefix)
137
+ return '';
138
+ return `/${norm}`;
139
+ }
140
+ /** Normalize fallback keys and values to lowercase. */
141
+ function normalizeFallbacks(fallbacks) {
142
+ if (!fallbacks)
143
+ return {};
144
+ const result = {};
145
+ for (const [key, value] of Object.entries(fallbacks)) {
146
+ result[normalizeLocale(key)] = normalizeLocale(value);
147
+ }
148
+ return result;
149
+ }
150
+ //# sourceMappingURL=locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkBH,6EAA6E;AAC7E,MAAM,cAAc,GAAG,0BAA0B,CAAA;AAEjD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;AAClD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAA;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAkB;IACjD,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACnD,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IAC7D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,OAAO;QACL,SAAS;QACT,OAAO,EAAE,aAAa;QACtB,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK;QAClD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK;QAC1C,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;KACtD,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAoB,EAAE,IAAkB;IAC3E,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAE7B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAA;IAE9F,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM;QACjC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,uDAAuD;YACtE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAA;IAEzB,OAAO;QACL,SAAS;QACT,OAAO,EAAE,aAAa;QACtB,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,WAAW,CAAC,aAAa;QAChE,SAAS,EACP,SAAS,CAAC,MAAM,KAAK,CAAC;YACpB,CAAC,CAAC,KAAK,CAAC,mCAAmC;YAC3C,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,CAAC;QACjD,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,QAAgB;IACnE,6BAA6B;IAC7B,IAAI,QAAQ,KAAK,GAAG,QAAQ,OAAO;QAAE,OAAO,IAAI,CAAA;IAChD,iDAAiD;IACjD,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAA;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAA;IACtB,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC5D,OAAO,MAAM,IAAI,IAAI,CAAA;IACvB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,MAAqB;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,QAAQ,OAAO,CAAA;IACtC,OAAO,GAAG,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAA;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,SAAsB,EAAE,QAAyB;IACrG,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACpC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpC,sBAAsB;IACtB,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,OAAO,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QACrC,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAA;IAC5C,CAAC;IAED,uBAAuB;IACvB,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAA;IAE5D,+BAA+B;IAC/B,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,OAAO,GAAG,CAAA;IACvC,OAAO,QAAQ,CAAC,OAAO,CAAA;AACzB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAyB;IACzE,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IACpC,IAAI,IAAI,KAAK,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa;QAAE,OAAO,EAAE,CAAA;IACnE,OAAO,IAAI,IAAI,EAAE,CAAA;AACnB,CAAC;AAED,uDAAuD;AACvD,SAAS,kBAAkB,CAAC,SAAkC;IAC5D,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAA;IACzB,MAAM,MAAM,GAA2B,EAAE,CAAA;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAiD/G,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAYzG;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAYzG;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAUjH"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAEhB,YAAY,EACZ,YAAY,EACZ,eAAe,EAChB,MAAM,YAAY,CAAA;AAiDnB,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAazG;AAcD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAazG;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAUjH"}
package/dist/manifest.js CHANGED
@@ -56,10 +56,24 @@ export async function parseSiteManifest(storage, filePath) {
56
56
  name: raw.name,
57
57
  version: raw.version,
58
58
  locale: raw.locale,
59
- baseUrl: raw.baseUrl,
59
+ locales: parseLocalesConfig(raw.locales),
60
+ defaultOgImage: raw.defaultOgImage,
60
61
  systemPages: Array.isArray(raw.systemPages) ? raw.systemPages : undefined,
61
62
  };
62
63
  }
64
+ function parseLocalesConfig(raw) {
65
+ if (!raw || typeof raw !== 'object')
66
+ return undefined;
67
+ const obj = raw;
68
+ if (!Array.isArray(obj.supported) || obj.supported.length === 0)
69
+ return undefined;
70
+ return {
71
+ supported: obj.supported,
72
+ fallbacks: obj.fallbacks,
73
+ defaultPrefix: typeof obj.defaultPrefix === 'boolean' ? obj.defaultPrefix : undefined,
74
+ detection: typeof obj.detection === 'boolean' ? obj.detection : undefined,
75
+ };
76
+ }
63
77
  export async function parsePageManifest(storage, filePath) {
64
78
  const raw = parseJson(await storage.readFile(filePath), filePath);
65
79
  if (typeof raw.template !== 'string') {
@@ -70,6 +84,7 @@ export async function parsePageManifest(storage, filePath) {
70
84
  template: raw.template,
71
85
  content: raw.content,
72
86
  components: parseComponents(raw.components),
87
+ metadata: raw.metadata,
73
88
  cache: raw.cache,
74
89
  };
75
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"azure-blob.d.ts","sourceRoot":"","sources":["../../src/providers/azure-blob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,aAAa,CAAA;AAE5D,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB;AAWD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,eAAe,GAAG;IAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAiFtH"}
1
+ {"version":3,"file":"azure-blob.d.ts","sourceRoot":"","sources":["../../src/providers/azure-blob.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,aAAa,CAAA;AAE5D,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CAClB;AAWD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,eAAe,GAAG;IAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAiF7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"azure-blob.js","sourceRoot":"","sources":["../../src/providers/azure-blob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"azure-blob.js","sourceRoot":"","sources":["../../src/providers/azure-blob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,qBAAqB,CAAA;AAQ7E,KAAK,UAAU,cAAc,CAAC,cAAqC;IACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC/E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACxD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAiC;IAEjC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC1F,MAAM,eAAe,GAAoB,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAEhG,OAAO;QACL,KAAK,CAAC,IAAI;YACR,MAAM,eAAe,CAAC,iBAAiB,EAAE,CAAA;QAC3C,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,IAAY;YACzB,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1E,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAA;gBAC5C,IAAI,CAAC,QAAQ,CAAC,kBAAkB;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAA;gBAC/E,OAAO,MAAM,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;YAC1D,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,UAAU,GAAI,GAA+B,CAAC,UAAU,CAAA;gBAC9D,IAAI,UAAU,KAAK,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAA;gBAClE,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YACnE,CAAC;QACH,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,IAAY;YACxB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAClC,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;YAE1C,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC;gBACpF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBAC5D,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC/C,IAAI,CAAC,YAAY;oBAAE,SAAQ;gBAE3B,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;gBAC9C,+DAA+D;gBAC/D,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;oBAAE,SAAQ;gBACpE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;YACxC,CAAC;YAED,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAA;QACrF,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,IAAY;YACvB,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1E,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAA;YACxC,IAAI,MAAM;gBAAE,OAAO,IAAI,CAAA;YAEvB,2DAA2D;YAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;YACxC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAA;YACb,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;YAC3C,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;YAC1E,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBAC3D,eAAe,EAAE,EAAE,eAAe,EAAE,2BAA2B,EAAE;aAClE,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,KAAa;YACvB,4EAA4E;YAC5E,iBAAiB;QACnB,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,IAAY;YACnB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YACtC,gCAAgC;YAChC,MAAM,UAAU,GAAG,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAA;YACjE,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9B,MAAM,UAAU,CAAC,MAAM,EAAE,CAAA;gBACzB,OAAM;YACR,CAAC;YACD,4DAA4D;YAC5D,MAAM,MAAM,GAAG,UAAU,GAAG,GAAG,CAAA;YAC/B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACnE,MAAM,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAA;YAC9D,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,yCAAyC;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;AACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"r2.d.ts","sourceRoot":"","sources":["../../src/providers/r2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,aAAa,CAAA;AAE5D,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,CA6EpF"}
1
+ {"version":3,"file":"r2.d.ts","sourceRoot":"","sources":["../../src/providers/r2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,aAAa,CAAA;AAE5D,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAID,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,CAgFpF"}
@@ -22,7 +22,7 @@ export function createR2RestProvider(options) {
22
22
  const res = await fetch(url, { headers: headers() });
23
23
  if (!res.ok)
24
24
  throw new Error(`Cannot list ${path}: ${res.status}`);
25
- const data = await res.json();
25
+ const data = (await res.json());
26
26
  const entries = new Map();
27
27
  for (const obj of data.result ?? []) {
28
28
  const relativeName = obj.key.slice(prefixWithSlash.length);
@@ -37,7 +37,10 @@ export function createR2RestProvider(options) {
37
37
  return [...entries.entries()].map(([name, isDirectory]) => ({ name, isDirectory }));
38
38
  },
39
39
  async exists(path) {
40
- const res = await fetch(`${base}/${encodeURIComponent(normalizePath(path))}`, { method: 'HEAD', headers: headers() });
40
+ const res = await fetch(`${base}/${encodeURIComponent(normalizePath(path))}`, {
41
+ method: 'HEAD',
42
+ headers: headers(),
43
+ });
41
44
  if (res.ok)
42
45
  return true;
43
46
  // Check as directory prefix
@@ -45,7 +48,7 @@ export function createR2RestProvider(options) {
45
48
  const listRes = await fetch(url, { headers: headers() });
46
49
  if (!listRes.ok)
47
50
  return false;
48
- const data = await listRes.json();
51
+ const data = (await listRes.json());
49
52
  return (data.result?.length ?? 0) > 0;
50
53
  },
51
54
  async writeFile(path, content) {
@@ -69,7 +72,7 @@ export function createR2RestProvider(options) {
69
72
  const url = `${CF_API}/accounts/${accountId}/r2/buckets/${bucket}/objects?prefix=${encodeURIComponent(key)}`;
70
73
  const listRes = await fetch(url, { headers: headers() });
71
74
  if (listRes.ok) {
72
- const data = await listRes.json();
75
+ const data = (await listRes.json());
73
76
  for (const obj of data.result ?? []) {
74
77
  await fetch(`${base}/${encodeURIComponent(obj.key)}`, { method: 'DELETE', headers: headers() });
75
78
  }