gazetta 0.4.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 (240) 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 +26 -5
  7. package/dist/admin-api/index.d.ts.map +1 -1
  8. package/dist/admin-api/index.js +175 -13
  9. package/dist/admin-api/index.js.map +1 -1
  10. package/dist/admin-api/routes/compare.d.ts +3 -1
  11. package/dist/admin-api/routes/compare.d.ts.map +1 -1
  12. package/dist/admin-api/routes/compare.js +34 -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 -2
  19. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  20. package/dist/admin-api/routes/fragments.js +94 -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 -2
  27. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  28. package/dist/admin-api/routes/pages.js +120 -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 +3 -1
  35. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  36. package/dist/admin-api/routes/publish.js +306 -65
  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 +691 -113
  112. package/dist/cli/index.js.map +1 -1
  113. package/dist/compare.d.ts +15 -5
  114. package/dist/compare.d.ts.map +1 -1
  115. package/dist/compare.js +83 -45
  116. package/dist/compare.js.map +1 -1
  117. package/dist/concurrency.d.ts +63 -0
  118. package/dist/concurrency.d.ts.map +1 -0
  119. package/dist/concurrency.js +134 -0
  120. package/dist/concurrency.js.map +1 -0
  121. package/dist/content-root.d.ts +38 -0
  122. package/dist/content-root.d.ts.map +1 -0
  123. package/dist/content-root.js +29 -0
  124. package/dist/content-root.js.map +1 -0
  125. package/dist/editor/mount.d.ts +1 -1
  126. package/dist/editor/mount.d.ts.map +1 -1
  127. package/dist/editor/mount.js +61 -29
  128. package/dist/editor/mount.js.map +1 -1
  129. package/dist/hash.d.ts +47 -1
  130. package/dist/hash.d.ts.map +1 -1
  131. package/dist/hash.js +107 -10
  132. package/dist/hash.js.map +1 -1
  133. package/dist/history-provider.d.ts +49 -0
  134. package/dist/history-provider.d.ts.map +1 -0
  135. package/dist/history-provider.js +226 -0
  136. package/dist/history-provider.js.map +1 -0
  137. package/dist/history-recorder.d.ts +98 -0
  138. package/dist/history-recorder.d.ts.map +1 -0
  139. package/dist/history-recorder.js +160 -0
  140. package/dist/history-recorder.js.map +1 -0
  141. package/dist/history-restorer.d.ts +46 -0
  142. package/dist/history-restorer.d.ts.map +1 -0
  143. package/dist/history-restorer.js +105 -0
  144. package/dist/history-restorer.js.map +1 -0
  145. package/dist/history.d.ts +111 -0
  146. package/dist/history.d.ts.map +1 -0
  147. package/dist/history.js +25 -0
  148. package/dist/history.js.map +1 -0
  149. package/dist/index.d.ts +26 -4
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +16 -3
  152. package/dist/index.js.map +1 -1
  153. package/dist/locale.d.ts +74 -0
  154. package/dist/locale.d.ts.map +1 -0
  155. package/dist/locale.js +150 -0
  156. package/dist/locale.js.map +1 -0
  157. package/dist/manifest.d.ts.map +1 -1
  158. package/dist/manifest.js +16 -1
  159. package/dist/manifest.js.map +1 -1
  160. package/dist/providers/azure-blob.d.ts.map +1 -1
  161. package/dist/providers/azure-blob.js.map +1 -1
  162. package/dist/providers/r2.d.ts.map +1 -1
  163. package/dist/providers/r2.js +7 -4
  164. package/dist/providers/r2.js.map +1 -1
  165. package/dist/providers/s3.d.ts.map +1 -1
  166. package/dist/providers/s3.js +23 -15
  167. package/dist/providers/s3.js.map +1 -1
  168. package/dist/publish-locale.d.ts +44 -0
  169. package/dist/publish-locale.d.ts.map +1 -0
  170. package/dist/publish-locale.js +103 -0
  171. package/dist/publish-locale.js.map +1 -0
  172. package/dist/publish-rendered.d.ts +17 -5
  173. package/dist/publish-rendered.d.ts.map +1 -1
  174. package/dist/publish-rendered.js +114 -66
  175. package/dist/publish-rendered.js.map +1 -1
  176. package/dist/publish.d.ts +39 -3
  177. package/dist/publish.d.ts.map +1 -1
  178. package/dist/publish.js +166 -17
  179. package/dist/publish.js.map +1 -1
  180. package/dist/renderer.d.ts +14 -4
  181. package/dist/renderer.d.ts.map +1 -1
  182. package/dist/renderer.js +35 -23
  183. package/dist/renderer.js.map +1 -1
  184. package/dist/resolver.d.ts +7 -2
  185. package/dist/resolver.d.ts.map +1 -1
  186. package/dist/resolver.js +66 -15
  187. package/dist/resolver.js.map +1 -1
  188. package/dist/robots.d.ts +22 -0
  189. package/dist/robots.d.ts.map +1 -0
  190. package/dist/robots.js +25 -0
  191. package/dist/robots.js.map +1 -0
  192. package/dist/seo.d.ts +56 -0
  193. package/dist/seo.d.ts.map +1 -0
  194. package/dist/seo.js +72 -0
  195. package/dist/seo.js.map +1 -0
  196. package/dist/serve.d.ts +41 -3
  197. package/dist/serve.d.ts.map +1 -1
  198. package/dist/serve.js +206 -65
  199. package/dist/serve.js.map +1 -1
  200. package/dist/sidecars.d.ts +60 -0
  201. package/dist/sidecars.d.ts.map +1 -0
  202. package/dist/sidecars.js +231 -0
  203. package/dist/sidecars.js.map +1 -0
  204. package/dist/site-loader.d.ts +74 -6
  205. package/dist/site-loader.d.ts.map +1 -1
  206. package/dist/site-loader.js +149 -36
  207. package/dist/site-loader.js.map +1 -1
  208. package/dist/sitemap.d.ts +45 -0
  209. package/dist/sitemap.d.ts.map +1 -0
  210. package/dist/sitemap.js +67 -0
  211. package/dist/sitemap.js.map +1 -0
  212. package/dist/source-sidecars.d.ts +32 -0
  213. package/dist/source-sidecars.d.ts.map +1 -0
  214. package/dist/source-sidecars.js +98 -0
  215. package/dist/source-sidecars.js.map +1 -0
  216. package/dist/targets.d.ts +47 -1
  217. package/dist/targets.d.ts.map +1 -1
  218. package/dist/targets.js +78 -9
  219. package/dist/targets.js.map +1 -1
  220. package/dist/template-loader.d.ts +7 -3
  221. package/dist/template-loader.d.ts.map +1 -1
  222. package/dist/template-loader.js +27 -12
  223. package/dist/template-loader.js.map +1 -1
  224. package/dist/templates-scan-worker.js +1 -1
  225. package/dist/templates-scan-worker.js.map +1 -1
  226. package/dist/templates-scan.d.ts.map +1 -1
  227. package/dist/templates-scan.js +1 -1
  228. package/dist/templates-scan.js.map +1 -1
  229. package/dist/types.d.ts +116 -9
  230. package/dist/types.d.ts.map +1 -1
  231. package/dist/types.js +28 -5
  232. package/dist/types.js.map +1 -1
  233. package/dist/workers/cloudflare-r2.d.ts +11 -2
  234. package/dist/workers/cloudflare-r2.d.ts.map +1 -1
  235. package/dist/workers/cloudflare-r2.js +120 -55
  236. package/dist/workers/cloudflare-r2.js.map +1 -1
  237. package/package.json +11 -2
  238. package/admin-dist/assets/index-Bh_y1d_l.css +0 -1
  239. package/admin-dist/assets/index-DjGNi6yy.js +0 -608
  240. package/admin-dist/assets/vendor-vue-DSjyxCX6.js +0 -1
package/dist/types.d.ts CHANGED
@@ -10,6 +10,8 @@ export type TemplateFunction<T extends Record<string, unknown> = Record<string,
10
10
  content?: T;
11
11
  children?: RenderOutput[];
12
12
  params?: Record<string, string>;
13
+ /** Active locale code (e.g. 'fr', 'en'). Always provided by the renderer — defaults to site's locale or 'en'. */
14
+ locale: string;
13
15
  }) => RenderOutput | Promise<RenderOutput>;
14
16
  /** Mount function for framework-agnostic custom editors */
15
17
  export interface EditorMount {
@@ -73,14 +75,32 @@ export interface CacheConfig {
73
75
  /** CDN cache purge configuration */
74
76
  purge?: PurgeConfig;
75
77
  }
78
+ /** SEO metadata for a page — surfaced in <head> and used by sitemap generation. */
79
+ export interface PageMetadata {
80
+ title?: string;
81
+ description?: string;
82
+ ogImage?: string;
83
+ canonical?: string;
84
+ /** Robots directive — e.g. "noindex", "nofollow", "noindex, nofollow".
85
+ * When set, emitted as `<meta name="robots" content="...">`.
86
+ * When absent, the tag is omitted (default: allow indexing). */
87
+ robots?: string;
88
+ }
76
89
  /** Page manifest (routable component) */
77
90
  export interface PageManifest extends ComponentManifest {
78
91
  route: string;
92
+ metadata?: PageMetadata;
79
93
  cache?: CacheConfig;
80
94
  }
81
95
  /** Storage configuration */
82
96
  export interface StorageConfig {
83
97
  type: 'filesystem' | 'azure-blob' | 's3' | 'r2';
98
+ /**
99
+ * Filesystem storage directory, relative to the site directory.
100
+ * Defaults to `./targets/<target-key>` when unset — the target's key in
101
+ * site.yaml maps to a subdirectory under `targets/`. Override for shared
102
+ * drives, external mounts, or existing custom layouts.
103
+ */
84
104
  path?: string;
85
105
  connectionString?: string;
86
106
  container?: string;
@@ -97,33 +117,120 @@ export interface WorkerConfig {
97
117
  name?: string;
98
118
  }
99
119
  export type TargetEnvironment = 'local' | 'staging' | 'production';
120
+ export type TargetType = 'static' | 'dynamic';
100
121
  /** Target configuration in site.yaml */
101
122
  export interface TargetConfig {
102
123
  storage: StorageConfig;
103
124
  worker?: WorkerConfig;
104
- /** Publish mode — 'esi' for Workers/gazetta serve, 'static' for static hosting. Default: esi if worker configured, static otherwise. */
105
- publishMode?: 'esi' | 'static';
125
+ /**
126
+ * Rendering model:
127
+ * - `static`: pre-rendered at publish time, served from edge (no SSR at request)
128
+ * - `dynamic`: composed/SSR'd at request time on Node/Bun server (ESI-style assembly)
129
+ * Default: `dynamic` if worker configured, `static` otherwise.
130
+ */
131
+ type?: TargetType;
106
132
  /**
107
133
  * Semantic intent of this target — drives UI treatment (confirmation
108
- * prompts, badges) and ops decisions. Default: 'local' for filesystem,
109
- * 'production' otherwise. Override in site.yaml for shared filesystem
110
- * mounts used as production, or for cloud targets used for staging.
134
+ * prompts, badges) and ops decisions. Default: 'local'. Production
135
+ * targets must be marked explicitly the default is safe, not
136
+ * alarming; prod opt-in prevents accidental prod chrome on dev targets.
111
137
  */
112
138
  environment?: TargetEnvironment;
139
+ /**
140
+ * Whether the author can save form-edits to this target and whether it
141
+ * can receive publishes from the CMS. Default: `true` for `environment:
142
+ * local` (or unset — local is the env default), `false` for `staging`
143
+ * and `production`.
144
+ * Override explicitly for hotfix-tolerant staging/prod setups
145
+ * (`editable: true`) or locked-down local targets (`editable: false`).
146
+ */
147
+ editable?: boolean;
113
148
  /** Base URL of the site (e.g. https://gazetta.studio) */
114
149
  siteUrl?: string;
150
+ /**
151
+ * Locale subset this target serves. Inherits site-level `locales.supported`
152
+ * when absent. A single-entry list (e.g. `[fr]`) makes the target
153
+ * single-language — no URL prefix, no locale switching.
154
+ */
155
+ locales?: string[];
156
+ /**
157
+ * Default locale for this target. Inherits site-level `locale` when absent.
158
+ * The default locale has no URL prefix (unless `defaultPrefix` is true).
159
+ * For single-locale targets, auto-inferred from the `locales` list.
160
+ */
161
+ locale?: string;
162
+ /**
163
+ * Override site-level `locales.defaultPrefix` for this target.
164
+ */
165
+ defaultPrefix?: boolean;
166
+ /**
167
+ * Override site-level `locales.detection` for this target.
168
+ */
169
+ detection?: boolean;
115
170
  cache?: CacheConfig;
171
+ /**
172
+ * Per-target history / revisions (undo, rollback). Default: enabled
173
+ * with 50-revision retention. Set `{ enabled: false }` to disable
174
+ * entirely (no `.gazetta/history/` writes on save/publish) for
175
+ * targets where the storage cost isn't worth it (e.g., ephemeral CI
176
+ * preview targets).
177
+ */
178
+ history?: HistoryConfig;
116
179
  }
117
- /** Determine publish mode for a target centralised logic used by CLI and admin API */
118
- export declare function getPublishMode(target: TargetConfig): 'esi' | 'static';
119
- /** Resolve a target's environment, applying the storage-type default */
180
+ /** Per-target history configuration. */
181
+ export interface HistoryConfig {
182
+ /** Record revisions on save/publish. Default: true. */
183
+ enabled?: boolean;
184
+ /**
185
+ * Keep at most N most-recent revisions; oldest evicted on write.
186
+ * Default: 50.
187
+ */
188
+ retention?: number;
189
+ }
190
+ /** Determine rendering type for a target — centralised logic used by CLI and admin API */
191
+ export declare function getType(target: TargetConfig): TargetType;
192
+ /** Resolve a target's environment. Defaults to 'local' — production must be explicit. */
120
193
  export declare function getEnvironment(target: TargetConfig): TargetEnvironment;
194
+ /**
195
+ * Whether the author can save and receive publishes on this target from the CMS.
196
+ * Default: true for `environment: local`, false for `staging` / `production`.
197
+ */
198
+ export declare function isEditable(target: TargetConfig): boolean;
199
+ /** Default retention: keep the last 50 revisions. Matches design-publishing.md. */
200
+ export declare const DEFAULT_HISTORY_RETENTION = 50;
201
+ /** Whether this target records history on save/publish. Default: true. */
202
+ export declare function isHistoryEnabled(target: TargetConfig): boolean;
203
+ /**
204
+ * Effective retention (max revisions) for this target. Defaults to
205
+ * `DEFAULT_HISTORY_RETENTION`. Values ≤ 0 are clamped to 1 — retaining
206
+ * zero revisions would mean every write evicts itself, which is
207
+ * confusing; use `enabled: false` to disable entirely.
208
+ */
209
+ export declare function getHistoryRetention(target: TargetConfig): number;
210
+ /**
211
+ * i18n configuration. Opt-in: absent = single-locale site.
212
+ * Adding `locales` enables multi-locale support.
213
+ */
214
+ export interface LocalesConfig {
215
+ /** All supported locale codes (BCP 47). First entry is the default if `locale` is not set. */
216
+ supported: string[];
217
+ /** Locale-specific fallback chains. E.g. `{ 'pt-BR': 'pt' }` → pt-BR falls back to pt before default. */
218
+ fallbacks?: Record<string, string>;
219
+ /** Whether the default locale gets a URL prefix. Default: false (no prefix for default). */
220
+ defaultPrefix?: boolean;
221
+ /** Enable Accept-Language detection and redirect. Default: false. */
222
+ detection?: boolean;
223
+ }
121
224
  /** Site manifest (site.yaml) */
122
225
  export interface SiteManifest {
123
226
  name: string;
124
227
  version?: string;
228
+ /** Default locale code (BCP 47). Falls back to first in `locales.supported`, then 'en'. */
125
229
  locale?: string;
126
- baseUrl?: string;
230
+ /** i18n configuration. Absent = single-locale site. */
231
+ locales?: LocalesConfig;
232
+ /** Default Open Graph image for pages that don't specify their own. */
233
+ defaultOgImage?: string;
127
234
  systemPages?: string[];
128
235
  targets?: Record<string, TargetConfig>;
129
236
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,9 +1,32 @@
1
- /** Determine publish mode for a target — centralised logic used by CLI and admin API */
2
- export function getPublishMode(target) {
3
- return target.publishMode ?? (target.worker ? 'esi' : 'static');
1
+ /** Determine rendering type for a target — centralised logic used by CLI and admin API */
2
+ export function getType(target) {
3
+ return target.type ?? (target.worker ? 'dynamic' : 'static');
4
4
  }
5
- /** Resolve a target's environment, applying the storage-type default */
5
+ /** Resolve a target's environment. Defaults to 'local' production must be explicit. */
6
6
  export function getEnvironment(target) {
7
- return target.environment ?? (target.storage.type === 'filesystem' ? 'local' : 'production');
7
+ return target.environment ?? 'local';
8
+ }
9
+ /**
10
+ * Whether the author can save and receive publishes on this target from the CMS.
11
+ * Default: true for `environment: local`, false for `staging` / `production`.
12
+ */
13
+ export function isEditable(target) {
14
+ return target.editable ?? getEnvironment(target) === 'local';
15
+ }
16
+ /** Default retention: keep the last 50 revisions. Matches design-publishing.md. */
17
+ export const DEFAULT_HISTORY_RETENTION = 50;
18
+ /** Whether this target records history on save/publish. Default: true. */
19
+ export function isHistoryEnabled(target) {
20
+ return target.history?.enabled ?? true;
21
+ }
22
+ /**
23
+ * Effective retention (max revisions) for this target. Defaults to
24
+ * `DEFAULT_HISTORY_RETENTION`. Values ≤ 0 are clamped to 1 — retaining
25
+ * zero revisions would mean every write evicts itself, which is
26
+ * confusing; use `enabled: false` to disable entirely.
27
+ */
28
+ export function getHistoryRetention(target) {
29
+ const raw = target.history?.retention ?? DEFAULT_HISTORY_RETENTION;
30
+ return raw > 0 ? raw : 1;
8
31
  }
9
32
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAmIA,wFAAwF;AACxF,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,OAAO,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AACjE,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,OAAO,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;AAC9F,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAqNA,0FAA0F;AAC1F,MAAM,UAAU,OAAO,CAAC,MAAoB;IAC1C,OAAO,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AAC9D,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,OAAO,MAAM,CAAC,WAAW,IAAI,OAAO,CAAA;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAoB;IAC7C,OAAO,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,OAAO,CAAA;AAC9D,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAA;AAE3C,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAA;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,yBAAyB,CAAA;IAClE,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1B,CAAC"}
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * Reads pre-rendered pages and fragments from an R2 bucket,
5
5
  * assembles them using ESI-style composition, and serves with
6
- * Cache API + ETag support.
6
+ * Cache API + ETag support. Locale-aware: extracts locale prefix
7
+ * from URL, reads locale-suffixed files, falls back to default.
7
8
  *
8
9
  * Usage: import and re-export from your worker entry point:
9
10
  *
@@ -13,13 +14,21 @@
13
14
  * Or customize:
14
15
  *
15
16
  * import { createWorker } from 'gazetta/workers/cloudflare-r2'
16
- * const worker = createWorker({ bucketBinding: 'SITE_BUCKET' })
17
+ * const worker = createWorker({
18
+ * bucketBinding: 'SITE_BUCKET',
19
+ * locales: ['en', 'fr', 'de'],
20
+ * defaultLocale: 'en',
21
+ * })
17
22
  * export default worker
18
23
  */
19
24
  import { Hono } from 'hono';
20
25
  export interface CloudflareR2WorkerOptions {
21
26
  /** R2 bucket binding name (default: 'SITE_BUCKET') */
22
27
  bucketBinding?: string;
28
+ /** Supported locale codes (lowercase). Enables locale-prefix routing. */
29
+ locales?: string[];
30
+ /** Default locale — no URL prefix. Falls back to first in `locales`. */
31
+ defaultLocale?: string;
23
32
  /** Custom middleware to add before page serving */
24
33
  middleware?: (app: Hono<{
25
34
  Bindings: Record<string, R2Bucket>;
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-r2.d.ts","sourceRoot":"","sources":["../../src/workers/cloudflare-r2.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;KAAE,CAAC,KAAK,IAAI,CAAA;CACzE;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,yBAAyB;cAG7B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;0CAqF1D"}
1
+ {"version":3,"file":"cloudflare-r2.d.ts","sourceRoot":"","sources":["../../src/workers/cloudflare-r2.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mDAAmD;IACnD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;KAAE,CAAC,KAAK,IAAI,CAAA;CACzE;AA0FD,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,yBAAyB;cAK7B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;0CAuF1D"}
@@ -4,7 +4,8 @@
4
4
  *
5
5
  * Reads pre-rendered pages and fragments from an R2 bucket,
6
6
  * assembles them using ESI-style composition, and serves with
7
- * Cache API + ETag support.
7
+ * Cache API + ETag support. Locale-aware: extracts locale prefix
8
+ * from URL, reads locale-suffixed files, falls back to default.
8
9
  *
9
10
  * Usage: import and re-export from your worker entry point:
10
11
  *
@@ -14,13 +15,97 @@
14
15
  * Or customize:
15
16
  *
16
17
  * import { createWorker } from 'gazetta/workers/cloudflare-r2'
17
- * const worker = createWorker({ bucketBinding: 'SITE_BUCKET' })
18
+ * const worker = createWorker({
19
+ * bucketBinding: 'SITE_BUCKET',
20
+ * locales: ['en', 'fr', 'de'],
21
+ * defaultLocale: 'en',
22
+ * })
18
23
  * export default worker
19
24
  */
20
25
  import { Hono } from 'hono';
21
26
  import { assembleEsi, parseCacheComment, splitFragment, findEsiPaths } from '../assemble.js';
27
+ // ---------------------------------------------------------------------------
28
+ // Locale extraction (same logic as serve.ts — SRP)
29
+ // ---------------------------------------------------------------------------
30
+ function extractLocale(requestPath, locales) {
31
+ if (locales.length === 0)
32
+ return { locale: undefined, path: requestPath };
33
+ const parts = requestPath.split('/').filter(Boolean);
34
+ if (parts.length > 0 && locales.includes(parts[0])) {
35
+ return { locale: parts[0], path: '/' + parts.slice(1).join('/') || '/' };
36
+ }
37
+ return { locale: undefined, path: requestPath };
38
+ }
39
+ // ---------------------------------------------------------------------------
40
+ // Fragment fetching with locale fallback (SRP)
41
+ // ---------------------------------------------------------------------------
42
+ async function fetchFragment(bucket, path) {
43
+ const key = path.slice(1);
44
+ const obj = await bucket.get(key);
45
+ if (obj)
46
+ return [path, splitFragment(await obj.text())];
47
+ // Locale fallback: index.fr.html → index.html
48
+ const localeFallback = key.replace(/\/index\.[a-z-]+\.html$/, '/index.html');
49
+ if (localeFallback !== key) {
50
+ const fallbackObj = await bucket.get(localeFallback);
51
+ if (fallbackObj)
52
+ return [path, splitFragment(await fallbackObj.text())];
53
+ }
54
+ return [path, { head: '', body: `<!-- fragment not found: ${path} -->` }];
55
+ }
56
+ // ---------------------------------------------------------------------------
57
+ // Page lookup with locale support (SRP)
58
+ // ---------------------------------------------------------------------------
59
+ async function findPage(bucket, requestPath, locales) {
60
+ const { locale, path: resolvedPath } = locales?.length
61
+ ? extractLocale(requestPath, locales)
62
+ : { locale: undefined, path: requestPath };
63
+ const indexFile = locale ? `index.${locale}.html` : 'index.html';
64
+ // Try exact page path
65
+ const pagePath = resolvedPath === '/' ? `pages/home/${indexFile}` : `pages${resolvedPath}/${indexFile}`;
66
+ const obj = await bucket.get(pagePath);
67
+ if (obj)
68
+ return { html: await obj.text(), locale };
69
+ // Locale fallback to default
70
+ if (locale) {
71
+ const fallback = resolvedPath === '/' ? 'pages/home/index.html' : `pages${resolvedPath}/index.html`;
72
+ const fallbackObj = await bucket.get(fallback);
73
+ if (fallbackObj)
74
+ return { html: await fallbackObj.text(), locale };
75
+ }
76
+ // Dynamic segments — list parent directory, find [param] entries
77
+ const parts = resolvedPath.split('/').filter(Boolean);
78
+ for (let i = parts.length - 1; i >= 0; i--) {
79
+ const parentDir = parts.slice(0, i).join('/');
80
+ const prefix = parentDir ? `pages/${parentDir}/` : 'pages/';
81
+ const listed = await bucket.list({ prefix, delimiter: '/' });
82
+ for (const item of listed.delimitedPrefixes) {
83
+ const segment = item.replace(prefix, '').replace(/\/$/, '');
84
+ if (segment.startsWith('[') && segment.endsWith(']')) {
85
+ const dynamicParts = [...parts];
86
+ dynamicParts[i] = segment;
87
+ const dynamicPath = `pages/${dynamicParts.join('/')}/${indexFile}`;
88
+ const dynObj = await bucket.get(dynamicPath);
89
+ if (dynObj)
90
+ return { html: await dynObj.text(), locale };
91
+ // Dynamic route locale fallback
92
+ if (locale) {
93
+ const dynFallback = await bucket.get(`pages/${dynamicParts.join('/')}/index.html`);
94
+ if (dynFallback)
95
+ return { html: await dynFallback.text(), locale };
96
+ }
97
+ }
98
+ }
99
+ }
100
+ return null;
101
+ }
102
+ // ---------------------------------------------------------------------------
103
+ // Worker composition
104
+ // ---------------------------------------------------------------------------
22
105
  export function createWorker(options) {
23
106
  const bindingName = options?.bucketBinding ?? 'SITE_BUCKET';
107
+ const locales = options?.locales;
108
+ const nonDefaultLocales = locales?.filter(l => l !== (options?.defaultLocale ?? locales?.[0])) ?? [];
24
109
  const app = new Hono();
25
110
  // Custom middleware (e.g., www redirect, auth)
26
111
  if (options?.middleware)
@@ -32,6 +117,23 @@ export function createWorker(options) {
32
117
  const fragments = await bucket.list({ prefix: 'fragments/', delimiter: '/' });
33
118
  return c.json({ ok: true, pages: pages.delimitedPrefixes.length, fragments: fragments.delimitedPrefixes.length });
34
119
  });
120
+ // Root-level files (sitemap.xml, robots.txt) — served from R2
121
+ app.get('/sitemap.xml', async (c) => {
122
+ const obj = await c.env[bindingName].get('sitemap.xml');
123
+ if (!obj)
124
+ return c.notFound();
125
+ return new Response(obj.body, {
126
+ headers: { 'Content-Type': 'application/xml; charset=utf-8', 'Cache-Control': 'public, max-age=3600' },
127
+ });
128
+ });
129
+ app.get('/robots.txt', async (c) => {
130
+ const obj = await c.env[bindingName].get('robots.txt');
131
+ if (!obj)
132
+ return c.notFound();
133
+ return new Response(obj.body, {
134
+ headers: { 'Content-Type': 'text/plain; charset=utf-8', 'Cache-Control': 'public, max-age=3600' },
135
+ });
136
+ });
35
137
  // Static assets (CSS, JS) — immutable cache
36
138
  app.get('/pages/*', async (c) => serveStatic(c, c.env[bindingName]));
37
139
  app.get('/fragments/*', async (c) => serveStatic(c, c.env[bindingName]));
@@ -44,47 +146,36 @@ export function createWorker(options) {
44
146
  return cached;
45
147
  const bucket = c.env[bindingName];
46
148
  const requestPath = new URL(c.req.url).pathname;
47
- const pageHtml = await findPage(bucket, requestPath);
48
- if (!pageHtml) {
49
- const notFoundHtml = await findPage(bucket, '/404');
50
- if (notFoundHtml) {
51
- const { html: raw404 } = parseCacheComment(notFoundHtml);
52
- const fragPaths = findEsiPaths(raw404);
53
- const fragEntries = await Promise.all(fragPaths.map(async (p) => {
54
- const obj = await bucket.get(p.slice(1));
55
- if (!obj)
56
- return [p, { head: '', body: '' }];
57
- return [p, splitFragment(await obj.text())];
58
- }));
149
+ const result = await findPage(bucket, requestPath, locales);
150
+ if (!result) {
151
+ const notFound = await findPage(bucket, '/404');
152
+ if (notFound) {
153
+ const { html: raw404 } = parseCacheComment(notFound.html);
154
+ const fragEntries = await Promise.all(findEsiPaths(raw404).map(p => fetchFragment(bucket, p)));
59
155
  return c.html(assembleEsi(raw404, new Map(fragEntries)), 404);
60
156
  }
61
157
  return c.html('<h1>404 — Page not found</h1>', 404);
62
158
  }
63
- const { html: rawHtml, browser, edge } = parseCacheComment(pageHtml);
64
- // Read all fragments in parallel
65
- const fragmentPaths = findEsiPaths(rawHtml);
66
- const fragmentEntries = await Promise.all(fragmentPaths.map(async (path) => {
67
- const key = path.slice(1);
68
- const obj = await bucket.get(key);
69
- if (!obj)
70
- return [path, { head: '', body: `<!-- fragment not found: ${path} -->` }];
71
- return [path, splitFragment(await obj.text())];
72
- }));
73
- const fragments = new Map(fragmentEntries);
74
- const assembled = assembleEsi(rawHtml, fragments);
159
+ const { html: rawHtml, browser, edge } = parseCacheComment(result.html);
160
+ // Read all fragments in parallel (with locale fallback)
161
+ const fragEntries = await Promise.all(findEsiPaths(rawHtml).map(p => fetchFragment(bucket, p)));
162
+ const assembled = assembleEsi(rawHtml, new Map(fragEntries));
75
163
  // Compute ETag
76
164
  const encoder = new TextEncoder();
77
165
  const hashBuffer = await crypto.subtle.digest('SHA-256', encoder.encode(assembled));
78
- const etag = `"${[...new Uint8Array(hashBuffer)].map(b => b.toString(16).padStart(2, '0')).join('').slice(0, 16)}"`;
166
+ const etag = `"${[...new Uint8Array(hashBuffer)]
167
+ .map(b => b.toString(16).padStart(2, '0'))
168
+ .join('')
169
+ .slice(0, 16)}"`;
79
170
  if (c.req.header('If-None-Match') === etag) {
80
- return new Response(null, { status: 304, headers: { 'ETag': etag } });
171
+ return new Response(null, { status: 304, headers: { ETag: etag } });
81
172
  }
82
173
  const response = new Response(assembled, {
83
174
  status: 200,
84
175
  headers: {
85
176
  'Content-Type': 'text/html; charset=utf-8',
86
177
  'Cache-Control': `public, max-age=${browser}, s-maxage=${edge}`,
87
- 'ETag': etag,
178
+ ETag: etag,
88
179
  },
89
180
  });
90
181
  c.executionCtx.waitUntil(cache.put(request, response.clone()));
@@ -106,30 +197,4 @@ async function serveStatic(c, bucket) {
106
197
  },
107
198
  });
108
199
  }
109
- async function findPage(bucket, requestPath) {
110
- const pagePath = requestPath === '/' ? 'pages/home/index.html'
111
- : `pages${requestPath}/index.html`;
112
- const obj = await bucket.get(pagePath);
113
- if (obj)
114
- return await obj.text();
115
- // Try dynamic segments — list parent directory, find [param] entries
116
- const parts = requestPath.split('/').filter(Boolean);
117
- for (let i = parts.length - 1; i >= 0; i--) {
118
- const parentDir = parts.slice(0, i).join('/');
119
- const prefix = parentDir ? `pages/${parentDir}/` : 'pages/';
120
- const listed = await bucket.list({ prefix, delimiter: '/' });
121
- for (const item of listed.delimitedPrefixes) {
122
- const segment = item.replace(prefix, '').replace(/\/$/, '');
123
- if (segment.startsWith('[') && segment.endsWith(']')) {
124
- const dynamicParts = [...parts];
125
- dynamicParts[i] = segment;
126
- const dynamicPath = `pages/${dynamicParts.join('/')}/index.html`;
127
- const dynObj = await bucket.get(dynamicPath);
128
- if (dynObj)
129
- return await dynObj.text();
130
- }
131
- }
132
- }
133
- return null;
134
- }
135
200
  //# sourceMappingURL=cloudflare-r2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-r2.js","sourceRoot":"","sources":["../../src/workers/cloudflare-r2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudflare-r2.js","sourceRoot":"","sources":["../../src/workers/cloudflare-r2.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gazetta",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Stateless CMS for composable websites",
5
5
  "keywords": [
6
6
  "cms",
@@ -38,6 +38,10 @@
38
38
  "types": "./dist/admin-api/index.d.ts",
39
39
  "import": "./dist/admin-api/index.js"
40
40
  },
41
+ "./admin-api/schemas": {
42
+ "types": "./dist/admin-api/schemas/index.d.ts",
43
+ "import": "./dist/admin-api/schemas/index.js"
44
+ },
41
45
  "./workers/cloudflare-r2": {
42
46
  "types": "./dist/workers/cloudflare-r2.d.ts",
43
47
  "import": "./dist/workers/cloudflare-r2.js"
@@ -55,7 +59,8 @@
55
59
  "build": "tsc",
56
60
  "build:admin": "vite build -c ../../apps/admin/vite.config.ts --base /admin/ --outDir ../../packages/gazetta/admin-dist --emptyOutDir ../../apps/admin",
57
61
  "prepublishOnly": "npm run build && npm run build:admin",
58
- "test": "vitest run"
62
+ "test": "vitest run",
63
+ "test:mutation": "stryker run"
59
64
  },
60
65
  "dependencies": {
61
66
  "@clack/prompts": "^1.2.0",
@@ -96,11 +101,15 @@
96
101
  "@aws-sdk/client-s3": "^3.1030.0",
97
102
  "@azure/storage-blob": "^12.31.0",
98
103
  "@cloudflare/workers-types": "^4.20260413.1",
104
+ "@stryker-mutator/core": "^9.6.1",
105
+ "@stryker-mutator/typescript-checker": "^9.6.1",
106
+ "@stryker-mutator/vitest-runner": "^9.6.1",
99
107
  "@types/js-yaml": "^4.0.0",
100
108
  "@types/node": "^25.6.0",
101
109
  "@types/react": "^19.2.0",
102
110
  "@types/react-dom": "^19.2.0",
103
111
  "@vitejs/plugin-vue": "^6.0.6",
112
+ "fast-check": "^4.6.0",
104
113
  "tsx": "^4.21.0",
105
114
  "typescript": "^6.0.2",
106
115
  "vite": "^8.0.8",