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.
- package/admin-dist/assets/index-B6pVot0Y.css +1 -0
- package/admin-dist/assets/index-DniLwxJA.js +609 -0
- package/admin-dist/assets/{vendor-primevue-BnR1c_bQ.js → vendor-primevue-C0Q_YTCb.js} +330 -431
- package/admin-dist/assets/vendor-vue-D3wBSmDf.js +1 -0
- package/admin-dist/index.html +4 -4
- package/dist/admin-api/index.d.ts +19 -4
- package/dist/admin-api/index.d.ts.map +1 -1
- package/dist/admin-api/index.js +154 -18
- package/dist/admin-api/index.js.map +1 -1
- package/dist/admin-api/routes/compare.d.ts +2 -1
- package/dist/admin-api/routes/compare.d.ts.map +1 -1
- package/dist/admin-api/routes/compare.js +33 -24
- package/dist/admin-api/routes/compare.js.map +1 -1
- package/dist/admin-api/routes/fields.d.ts +2 -2
- package/dist/admin-api/routes/fields.d.ts.map +1 -1
- package/dist/admin-api/routes/fields.js +10 -3
- package/dist/admin-api/routes/fields.js.map +1 -1
- package/dist/admin-api/routes/fragments.d.ts +2 -3
- package/dist/admin-api/routes/fragments.d.ts.map +1 -1
- package/dist/admin-api/routes/fragments.js +92 -19
- package/dist/admin-api/routes/fragments.js.map +1 -1
- package/dist/admin-api/routes/history.d.ts +23 -0
- package/dist/admin-api/routes/history.d.ts.map +1 -0
- package/dist/admin-api/routes/history.js +143 -0
- package/dist/admin-api/routes/history.js.map +1 -0
- package/dist/admin-api/routes/pages.d.ts +2 -3
- package/dist/admin-api/routes/pages.d.ts.map +1 -1
- package/dist/admin-api/routes/pages.js +118 -20
- package/dist/admin-api/routes/pages.js.map +1 -1
- package/dist/admin-api/routes/preview.d.ts +2 -2
- package/dist/admin-api/routes/preview.d.ts.map +1 -1
- package/dist/admin-api/routes/preview.js +50 -15
- package/dist/admin-api/routes/preview.js.map +1 -1
- package/dist/admin-api/routes/publish.d.ts +2 -1
- package/dist/admin-api/routes/publish.d.ts.map +1 -1
- package/dist/admin-api/routes/publish.js +213 -66
- package/dist/admin-api/routes/publish.js.map +1 -1
- package/dist/admin-api/routes/site.d.ts +2 -2
- package/dist/admin-api/routes/site.d.ts.map +1 -1
- package/dist/admin-api/routes/site.js +27 -4
- package/dist/admin-api/routes/site.js.map +1 -1
- package/dist/admin-api/routes/templates.d.ts +2 -2
- package/dist/admin-api/routes/templates.d.ts.map +1 -1
- package/dist/admin-api/routes/templates.js +19 -9
- package/dist/admin-api/routes/templates.js.map +1 -1
- package/dist/admin-api/schemas/compare.d.ts +29 -0
- package/dist/admin-api/schemas/compare.d.ts.map +1 -0
- package/dist/admin-api/schemas/compare.js +30 -0
- package/dist/admin-api/schemas/compare.js.map +1 -0
- package/dist/admin-api/schemas/dependents.d.ts +15 -0
- package/dist/admin-api/schemas/dependents.d.ts.map +1 -0
- package/dist/admin-api/schemas/dependents.js +14 -0
- package/dist/admin-api/schemas/dependents.js.map +1 -0
- package/dist/admin-api/schemas/fetch.d.ts +12 -0
- package/dist/admin-api/schemas/fetch.d.ts.map +1 -0
- package/dist/admin-api/schemas/fetch.js +11 -0
- package/dist/admin-api/schemas/fetch.js.map +1 -0
- package/dist/admin-api/schemas/fields.d.ts +11 -0
- package/dist/admin-api/schemas/fields.d.ts.map +1 -0
- package/dist/admin-api/schemas/fields.js +11 -0
- package/dist/admin-api/schemas/fields.js.map +1 -0
- package/dist/admin-api/schemas/fragments.d.ts +27 -0
- package/dist/admin-api/schemas/fragments.d.ts.map +1 -0
- package/dist/admin-api/schemas/fragments.js +26 -0
- package/dist/admin-api/schemas/fragments.js.map +1 -0
- package/dist/admin-api/schemas/history.d.ts +73 -0
- package/dist/admin-api/schemas/history.d.ts.map +1 -0
- package/dist/admin-api/schemas/history.js +35 -0
- package/dist/admin-api/schemas/history.js.map +1 -0
- package/dist/admin-api/schemas/index.d.ts +32 -0
- package/dist/admin-api/schemas/index.d.ts.map +1 -0
- package/dist/admin-api/schemas/index.js +32 -0
- package/dist/admin-api/schemas/index.js.map +1 -0
- package/dist/admin-api/schemas/pages.d.ts +46 -0
- package/dist/admin-api/schemas/pages.d.ts.map +1 -0
- package/dist/admin-api/schemas/pages.js +47 -0
- package/dist/admin-api/schemas/pages.js.map +1 -0
- package/dist/admin-api/schemas/publish.d.ts +67 -0
- package/dist/admin-api/schemas/publish.d.ts.map +1 -0
- package/dist/admin-api/schemas/publish.js +60 -0
- package/dist/admin-api/schemas/publish.js.map +1 -0
- package/dist/admin-api/schemas/site.d.ts +28 -0
- package/dist/admin-api/schemas/site.d.ts.map +1 -0
- package/dist/admin-api/schemas/site.js +24 -0
- package/dist/admin-api/schemas/site.js.map +1 -0
- package/dist/admin-api/schemas/targets.d.ts +36 -0
- package/dist/admin-api/schemas/targets.d.ts.map +1 -0
- package/dist/admin-api/schemas/targets.js +19 -0
- package/dist/admin-api/schemas/targets.js.map +1 -0
- package/dist/admin-api/schemas/templates.d.ts +17 -0
- package/dist/admin-api/schemas/templates.d.ts.map +1 -0
- package/dist/admin-api/schemas/templates.js +16 -0
- package/dist/admin-api/schemas/templates.js.map +1 -0
- package/dist/admin-api/source-context.d.ts +165 -0
- package/dist/admin-api/source-context.d.ts.map +1 -0
- package/dist/admin-api/source-context.js +95 -0
- package/dist/admin-api/source-context.js.map +1 -0
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/assemble.d.ts.map +1 -1
- package/dist/assemble.js +4 -1
- package/dist/assemble.js.map +1 -1
- package/dist/cli/bootstrap.d.ts +48 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +85 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/history.d.ts +45 -0
- package/dist/cli/history.d.ts.map +1 -0
- package/dist/cli/history.js +165 -0
- package/dist/cli/history.js.map +1 -0
- package/dist/cli/index.js +630 -115
- package/dist/cli/index.js.map +1 -1
- package/dist/compare.d.ts +8 -5
- package/dist/compare.d.ts.map +1 -1
- package/dist/compare.js +53 -14
- package/dist/compare.js.map +1 -1
- package/dist/content-root.d.ts +38 -0
- package/dist/content-root.d.ts.map +1 -0
- package/dist/content-root.js +29 -0
- package/dist/content-root.js.map +1 -0
- package/dist/editor/mount.d.ts +1 -1
- package/dist/editor/mount.d.ts.map +1 -1
- package/dist/editor/mount.js +61 -29
- package/dist/editor/mount.js.map +1 -1
- package/dist/hash.d.ts +34 -3
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js +64 -7
- package/dist/hash.js.map +1 -1
- package/dist/history-provider.d.ts +49 -0
- package/dist/history-provider.d.ts.map +1 -0
- package/dist/history-provider.js +226 -0
- package/dist/history-provider.js.map +1 -0
- package/dist/history-recorder.d.ts +98 -0
- package/dist/history-recorder.d.ts.map +1 -0
- package/dist/history-recorder.js +160 -0
- package/dist/history-recorder.js.map +1 -0
- package/dist/history-restorer.d.ts +46 -0
- package/dist/history-restorer.d.ts.map +1 -0
- package/dist/history-restorer.js +105 -0
- package/dist/history-restorer.js.map +1 -0
- package/dist/history.d.ts +111 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +25 -0
- package/dist/history.js.map +1 -0
- package/dist/index.d.ts +26 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +74 -0
- package/dist/locale.d.ts.map +1 -0
- package/dist/locale.js +150 -0
- package/dist/locale.js.map +1 -0
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +16 -1
- package/dist/manifest.js.map +1 -1
- package/dist/providers/azure-blob.d.ts.map +1 -1
- package/dist/providers/azure-blob.js.map +1 -1
- package/dist/providers/r2.d.ts.map +1 -1
- package/dist/providers/r2.js +7 -4
- package/dist/providers/r2.js.map +1 -1
- package/dist/providers/s3.d.ts.map +1 -1
- package/dist/providers/s3.js +23 -15
- package/dist/providers/s3.js.map +1 -1
- package/dist/publish-locale.d.ts +44 -0
- package/dist/publish-locale.d.ts.map +1 -0
- package/dist/publish-locale.js +103 -0
- package/dist/publish-locale.js.map +1 -0
- package/dist/publish-rendered.d.ts +16 -5
- package/dist/publish-rendered.d.ts.map +1 -1
- package/dist/publish-rendered.js +89 -36
- package/dist/publish-rendered.js.map +1 -1
- package/dist/publish.d.ts +5 -7
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +21 -12
- package/dist/publish.js.map +1 -1
- package/dist/renderer.d.ts +14 -4
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +35 -23
- package/dist/renderer.js.map +1 -1
- package/dist/resolver.d.ts +7 -2
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +66 -15
- package/dist/resolver.js.map +1 -1
- package/dist/robots.d.ts +22 -0
- package/dist/robots.d.ts.map +1 -0
- package/dist/robots.js +25 -0
- package/dist/robots.js.map +1 -0
- package/dist/seo.d.ts +56 -0
- package/dist/seo.d.ts.map +1 -0
- package/dist/seo.js +72 -0
- package/dist/seo.js.map +1 -0
- package/dist/serve.d.ts +41 -3
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +206 -65
- package/dist/serve.js.map +1 -1
- package/dist/sidecars.d.ts +9 -5
- package/dist/sidecars.d.ts.map +1 -1
- package/dist/sidecars.js +112 -22
- package/dist/sidecars.js.map +1 -1
- package/dist/site-loader.d.ts +74 -6
- package/dist/site-loader.d.ts.map +1 -1
- package/dist/site-loader.js +138 -28
- package/dist/site-loader.js.map +1 -1
- package/dist/sitemap.d.ts +45 -0
- package/dist/sitemap.d.ts.map +1 -0
- package/dist/sitemap.js +67 -0
- package/dist/sitemap.js.map +1 -0
- package/dist/source-sidecars.d.ts +21 -2
- package/dist/source-sidecars.d.ts.map +1 -1
- package/dist/source-sidecars.js +51 -5
- package/dist/source-sidecars.js.map +1 -1
- package/dist/targets.d.ts +47 -1
- package/dist/targets.d.ts.map +1 -1
- package/dist/targets.js +78 -9
- package/dist/targets.js.map +1 -1
- package/dist/template-loader.d.ts +7 -3
- package/dist/template-loader.d.ts.map +1 -1
- package/dist/template-loader.js +27 -12
- package/dist/template-loader.js.map +1 -1
- package/dist/templates-scan-worker.js +1 -1
- package/dist/templates-scan-worker.js.map +1 -1
- package/dist/templates-scan.d.ts.map +1 -1
- package/dist/templates-scan.js +1 -1
- package/dist/templates-scan.js.map +1 -1
- package/dist/types.d.ts +116 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +28 -5
- package/dist/types.js.map +1 -1
- package/dist/workers/cloudflare-r2.d.ts +11 -2
- package/dist/workers/cloudflare-r2.d.ts.map +1 -1
- package/dist/workers/cloudflare-r2.js +120 -55
- package/dist/workers/cloudflare-r2.js.map +1 -1
- package/package.json +11 -2
- package/admin-dist/assets/index-BZAFKsUp.js +0 -608
- package/admin-dist/assets/index-BpRotMuK.css +0 -1
- package/admin-dist/assets/vendor-vue-DSjyxCX6.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin-api/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Barrel for Zod schemas shared between the admin API server and its
|
|
3
|
+
* clients. Importing from `gazetta/admin-api/schemas` avoids pulling
|
|
4
|
+
* in Hono + storage-provider code that live under `gazetta/admin-api`.
|
|
5
|
+
*
|
|
6
|
+
* Migrated endpoints so far:
|
|
7
|
+
* - POST /api/pages (create + list summary)
|
|
8
|
+
* - POST /api/fragments (create + list summary)
|
|
9
|
+
* - GET /api/templates (list)
|
|
10
|
+
* - GET /api/fields (list)
|
|
11
|
+
* - GET /api/targets (list)
|
|
12
|
+
* - GET /api/site (manifest)
|
|
13
|
+
* - GET /api/dependents (reverse-dep lookup)
|
|
14
|
+
* - GET /api/compare (logical diff result)
|
|
15
|
+
* - POST /api/publish + /api/publish/stream (result + SSE progress union)
|
|
16
|
+
* - GET /api/history + POST /api/history/{undo,restore} (revisions + restore)
|
|
17
|
+
* - POST /api/fetch (cross-target copy)
|
|
18
|
+
*
|
|
19
|
+
* Add new endpoint modules here as they move to schema-validated contracts.
|
|
20
|
+
*/
|
|
21
|
+
export * from './pages.js';
|
|
22
|
+
export * from './fragments.js';
|
|
23
|
+
export * from './templates.js';
|
|
24
|
+
export * from './fields.js';
|
|
25
|
+
export * from './targets.js';
|
|
26
|
+
export * from './site.js';
|
|
27
|
+
export * from './dependents.js';
|
|
28
|
+
export * from './compare.js';
|
|
29
|
+
export * from './publish.js';
|
|
30
|
+
export * from './history.js';
|
|
31
|
+
export * from './fetch.js';
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/pages routes — the single source of truth for
|
|
3
|
+
* request/response shapes on that endpoint.
|
|
4
|
+
*
|
|
5
|
+
* Shared across server (routes/pages.ts uses .parse() to validate
|
|
6
|
+
* incoming bodies) and client (apps/admin/src/client/api/client.ts
|
|
7
|
+
* derives types via z.infer) so drift between them is impossible:
|
|
8
|
+
* either one of them fails to compile, or the contract test in
|
|
9
|
+
* apps/admin/tests/api-contract.test.ts surfaces the mismatch.
|
|
10
|
+
*
|
|
11
|
+
* First slice — POST /api/pages only. The rest of the endpoints still
|
|
12
|
+
* use hand-rolled shape checks; migrating them is mechanical and
|
|
13
|
+
* tracked as a follow-up to testing-plan.md Priority 3.2.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
/** SEO metadata for a page — surfaced in <head> and used by sitemap generation. */
|
|
17
|
+
export declare const PageMetadataSchema: z.ZodOptional<z.ZodObject<{
|
|
18
|
+
title: z.ZodOptional<z.ZodString>;
|
|
19
|
+
description: z.ZodOptional<z.ZodString>;
|
|
20
|
+
ogImage: z.ZodOptional<z.ZodString>;
|
|
21
|
+
canonical: z.ZodOptional<z.ZodString>;
|
|
22
|
+
robots: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, z.core.$strip>>;
|
|
24
|
+
export type PageMetadata = z.infer<typeof PageMetadataSchema>;
|
|
25
|
+
/** Summary used in list responses (GET /api/pages). */
|
|
26
|
+
export declare const PageSummarySchema: z.ZodObject<{
|
|
27
|
+
name: z.ZodString;
|
|
28
|
+
route: z.ZodString;
|
|
29
|
+
template: z.ZodString;
|
|
30
|
+
locales: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export type PageSummary = z.infer<typeof PageSummarySchema>;
|
|
33
|
+
/** Body for POST /api/pages (create). */
|
|
34
|
+
export declare const CreatePageRequestSchema: z.ZodObject<{
|
|
35
|
+
name: z.ZodString;
|
|
36
|
+
template: z.ZodString;
|
|
37
|
+
content: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
export type CreatePageRequest = z.infer<typeof CreatePageRequestSchema>;
|
|
40
|
+
/** Response for POST /api/pages (create). */
|
|
41
|
+
export declare const CreatePageResponseSchema: z.ZodObject<{
|
|
42
|
+
ok: z.ZodBoolean;
|
|
43
|
+
name: z.ZodString;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
export type CreatePageResponse = z.infer<typeof CreatePageResponseSchema>;
|
|
46
|
+
//# sourceMappingURL=pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/admin-api/schemas/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,mFAAmF;AACnF,eAAO,MAAM,kBAAkB;;;;;;kBAQlB,CAAA;AACb,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,uDAAuD;AACvD,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAE3D,yCAAyC;AACzC,eAAO,MAAM,uBAAuB;;;;iBAOlC,CAAA;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,6CAA6C;AAC7C,eAAO,MAAM,wBAAwB;;;iBAGnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/pages routes — the single source of truth for
|
|
3
|
+
* request/response shapes on that endpoint.
|
|
4
|
+
*
|
|
5
|
+
* Shared across server (routes/pages.ts uses .parse() to validate
|
|
6
|
+
* incoming bodies) and client (apps/admin/src/client/api/client.ts
|
|
7
|
+
* derives types via z.infer) so drift between them is impossible:
|
|
8
|
+
* either one of them fails to compile, or the contract test in
|
|
9
|
+
* apps/admin/tests/api-contract.test.ts surfaces the mismatch.
|
|
10
|
+
*
|
|
11
|
+
* First slice — POST /api/pages only. The rest of the endpoints still
|
|
12
|
+
* use hand-rolled shape checks; migrating them is mechanical and
|
|
13
|
+
* tracked as a follow-up to testing-plan.md Priority 3.2.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from 'zod';
|
|
16
|
+
/** SEO metadata for a page — surfaced in <head> and used by sitemap generation. */
|
|
17
|
+
export const PageMetadataSchema = z
|
|
18
|
+
.object({
|
|
19
|
+
title: z.string().optional(),
|
|
20
|
+
description: z.string().optional(),
|
|
21
|
+
ogImage: z.string().optional(),
|
|
22
|
+
canonical: z.string().optional(),
|
|
23
|
+
robots: z.string().optional(),
|
|
24
|
+
})
|
|
25
|
+
.optional();
|
|
26
|
+
/** Summary used in list responses (GET /api/pages). */
|
|
27
|
+
export const PageSummarySchema = z.object({
|
|
28
|
+
name: z.string(),
|
|
29
|
+
route: z.string(),
|
|
30
|
+
template: z.string(),
|
|
31
|
+
locales: z.array(z.string()).optional(),
|
|
32
|
+
});
|
|
33
|
+
/** Body for POST /api/pages (create). */
|
|
34
|
+
export const CreatePageRequestSchema = z.object({
|
|
35
|
+
/** Page name — used as the directory name and identity. Must be non-empty. */
|
|
36
|
+
name: z.string().min(1),
|
|
37
|
+
/** Template name to bind. Must be non-empty. */
|
|
38
|
+
template: z.string().min(1),
|
|
39
|
+
/** Optional initial content; defaults to `{ title: name }` server-side. */
|
|
40
|
+
content: z.record(z.string(), z.unknown()).optional(),
|
|
41
|
+
});
|
|
42
|
+
/** Response for POST /api/pages (create). */
|
|
43
|
+
export const CreatePageResponseSchema = z.object({
|
|
44
|
+
ok: z.boolean(),
|
|
45
|
+
name: z.string(),
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,mFAAmF;AACnF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,QAAQ,EAAE,CAAA;AAGb,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAA;AAGF,yCAAyC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,8EAA8E;IAC9E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,gDAAgD;IAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,2EAA2E;IAC3E,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAA;AAGF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/publish and /api/publish/stream.
|
|
3
|
+
*
|
|
4
|
+
* PublishResult is the per-target terminal outcome. PublishProgress is
|
|
5
|
+
* the SSE event union streamed from /publish/stream — six discriminated
|
|
6
|
+
* variants keyed by `kind`. Shared with the client so the stream parser
|
|
7
|
+
* can derive its event type via z.infer rather than hand-maintaining a
|
|
8
|
+
* parallel TS union.
|
|
9
|
+
*
|
|
10
|
+
* Reuses InvalidTemplate from compare.ts — same shape in both endpoints.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
/** Per-target outcome of a publish action. */
|
|
14
|
+
export declare const PublishResultSchema: z.ZodObject<{
|
|
15
|
+
target: z.ZodString;
|
|
16
|
+
success: z.ZodBoolean;
|
|
17
|
+
error: z.ZodOptional<z.ZodString>;
|
|
18
|
+
copiedFiles: z.ZodNumber;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
export type PublishResult = z.infer<typeof PublishResultSchema>;
|
|
21
|
+
/**
|
|
22
|
+
* SSE event variants streamed by POST /api/publish/stream. The server
|
|
23
|
+
* emits events in this order:
|
|
24
|
+
* start → (target-start → progress* → target-result)+ → done
|
|
25
|
+
* or:
|
|
26
|
+
* fatal (error anywhere before `done`).
|
|
27
|
+
*/
|
|
28
|
+
export declare const PublishProgressSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
29
|
+
kind: z.ZodLiteral<"start">;
|
|
30
|
+
targets: z.ZodArray<z.ZodString>;
|
|
31
|
+
itemsPerTarget: z.ZodNumber;
|
|
32
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
33
|
+
kind: z.ZodLiteral<"target-start">;
|
|
34
|
+
target: z.ZodString;
|
|
35
|
+
total: z.ZodNumber;
|
|
36
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
37
|
+
kind: z.ZodLiteral<"progress">;
|
|
38
|
+
target: z.ZodString;
|
|
39
|
+
current: z.ZodNumber;
|
|
40
|
+
total: z.ZodNumber;
|
|
41
|
+
label: z.ZodString;
|
|
42
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
43
|
+
kind: z.ZodLiteral<"target-result">;
|
|
44
|
+
result: z.ZodObject<{
|
|
45
|
+
target: z.ZodString;
|
|
46
|
+
success: z.ZodBoolean;
|
|
47
|
+
error: z.ZodOptional<z.ZodString>;
|
|
48
|
+
copiedFiles: z.ZodNumber;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
51
|
+
kind: z.ZodLiteral<"done">;
|
|
52
|
+
results: z.ZodArray<z.ZodObject<{
|
|
53
|
+
target: z.ZodString;
|
|
54
|
+
success: z.ZodBoolean;
|
|
55
|
+
error: z.ZodOptional<z.ZodString>;
|
|
56
|
+
copiedFiles: z.ZodNumber;
|
|
57
|
+
}, z.core.$strip>>;
|
|
58
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
59
|
+
kind: z.ZodLiteral<"fatal">;
|
|
60
|
+
error: z.ZodString;
|
|
61
|
+
invalidTemplates: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
62
|
+
name: z.ZodString;
|
|
63
|
+
errors: z.ZodArray<z.ZodString>;
|
|
64
|
+
}, z.core.$strip>>>;
|
|
65
|
+
}, z.core.$strip>], "kind">;
|
|
66
|
+
export type PublishProgress = z.infer<typeof PublishProgressSchema>;
|
|
67
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/admin-api/schemas/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAA;AACF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA+BhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/publish and /api/publish/stream.
|
|
3
|
+
*
|
|
4
|
+
* PublishResult is the per-target terminal outcome. PublishProgress is
|
|
5
|
+
* the SSE event union streamed from /publish/stream — six discriminated
|
|
6
|
+
* variants keyed by `kind`. Shared with the client so the stream parser
|
|
7
|
+
* can derive its event type via z.infer rather than hand-maintaining a
|
|
8
|
+
* parallel TS union.
|
|
9
|
+
*
|
|
10
|
+
* Reuses InvalidTemplate from compare.ts — same shape in both endpoints.
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { InvalidTemplateSchema } from './compare.js';
|
|
14
|
+
/** Per-target outcome of a publish action. */
|
|
15
|
+
export const PublishResultSchema = z.object({
|
|
16
|
+
target: z.string(),
|
|
17
|
+
success: z.boolean(),
|
|
18
|
+
error: z.string().optional(),
|
|
19
|
+
copiedFiles: z.number(),
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* SSE event variants streamed by POST /api/publish/stream. The server
|
|
23
|
+
* emits events in this order:
|
|
24
|
+
* start → (target-start → progress* → target-result)+ → done
|
|
25
|
+
* or:
|
|
26
|
+
* fatal (error anywhere before `done`).
|
|
27
|
+
*/
|
|
28
|
+
export const PublishProgressSchema = z.discriminatedUnion('kind', [
|
|
29
|
+
z.object({
|
|
30
|
+
kind: z.literal('start'),
|
|
31
|
+
targets: z.array(z.string()),
|
|
32
|
+
itemsPerTarget: z.number(),
|
|
33
|
+
}),
|
|
34
|
+
z.object({
|
|
35
|
+
kind: z.literal('target-start'),
|
|
36
|
+
target: z.string(),
|
|
37
|
+
total: z.number(),
|
|
38
|
+
}),
|
|
39
|
+
z.object({
|
|
40
|
+
kind: z.literal('progress'),
|
|
41
|
+
target: z.string(),
|
|
42
|
+
current: z.number(),
|
|
43
|
+
total: z.number(),
|
|
44
|
+
label: z.string(),
|
|
45
|
+
}),
|
|
46
|
+
z.object({
|
|
47
|
+
kind: z.literal('target-result'),
|
|
48
|
+
result: PublishResultSchema,
|
|
49
|
+
}),
|
|
50
|
+
z.object({
|
|
51
|
+
kind: z.literal('done'),
|
|
52
|
+
results: z.array(PublishResultSchema),
|
|
53
|
+
}),
|
|
54
|
+
z.object({
|
|
55
|
+
kind: z.literal('fatal'),
|
|
56
|
+
error: z.string(),
|
|
57
|
+
invalidTemplates: z.array(InvalidTemplateSchema).optional(),
|
|
58
|
+
}),
|
|
59
|
+
]);
|
|
60
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAEpD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAA;AAGF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAChE,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;KAC3B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,MAAM,EAAE,mBAAmB;KAC5B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;KACtC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;KAC5D,CAAC;CACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/site — the site manifest shape as seen by the
|
|
3
|
+
* admin UI.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors what parseSiteManifest() emits plus the empty-target fallback
|
|
6
|
+
* (which includes an otherwise-absent `targets: {}` field).
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export declare const LocalesConfigSchema: z.ZodObject<{
|
|
10
|
+
supported: z.ZodArray<z.ZodString>;
|
|
11
|
+
fallbacks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
12
|
+
defaultPrefix: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
+
detection: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export declare const SiteManifestSchema: z.ZodObject<{
|
|
16
|
+
name: z.ZodString;
|
|
17
|
+
version: z.ZodOptional<z.ZodString>;
|
|
18
|
+
locale: z.ZodOptional<z.ZodString>;
|
|
19
|
+
locales: z.ZodOptional<z.ZodObject<{
|
|
20
|
+
supported: z.ZodArray<z.ZodString>;
|
|
21
|
+
fallbacks: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
22
|
+
defaultPrefix: z.ZodOptional<z.ZodBoolean>;
|
|
23
|
+
detection: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
systemPages: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
26
|
+
}, z.core.$loose>;
|
|
27
|
+
export type SiteManifest = z.infer<typeof SiteManifestSchema>;
|
|
28
|
+
//# sourceMappingURL=site.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/admin-api/schemas/site.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,mBAAmB;;;;;iBAK9B,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAQrB,CAAA;AACV,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/site — the site manifest shape as seen by the
|
|
3
|
+
* admin UI.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors what parseSiteManifest() emits plus the empty-target fallback
|
|
6
|
+
* (which includes an otherwise-absent `targets: {}` field).
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export const LocalesConfigSchema = z.object({
|
|
10
|
+
supported: z.array(z.string()),
|
|
11
|
+
fallbacks: z.record(z.string(), z.string()).optional(),
|
|
12
|
+
defaultPrefix: z.boolean().optional(),
|
|
13
|
+
detection: z.boolean().optional(),
|
|
14
|
+
});
|
|
15
|
+
export const SiteManifestSchema = z
|
|
16
|
+
.object({
|
|
17
|
+
name: z.string(),
|
|
18
|
+
version: z.string().optional(),
|
|
19
|
+
locale: z.string().optional(),
|
|
20
|
+
locales: LocalesConfigSchema.optional(),
|
|
21
|
+
systemPages: z.array(z.string()).optional(),
|
|
22
|
+
})
|
|
23
|
+
.loose();
|
|
24
|
+
//# sourceMappingURL=site.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/site.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC;KACD,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/targets list endpoint.
|
|
3
|
+
*
|
|
4
|
+
* The literal unions mirror `TargetEnvironment` and `TargetType` in
|
|
5
|
+
* types.ts — keeping them as z.enum here means the wire shape is the
|
|
6
|
+
* authoritative spec and types.ts just re-exports the inferred types.
|
|
7
|
+
* Don't duplicate the literals on the client.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
export declare const TargetEnvironmentSchema: z.ZodEnum<{
|
|
11
|
+
local: "local";
|
|
12
|
+
staging: "staging";
|
|
13
|
+
production: "production";
|
|
14
|
+
}>;
|
|
15
|
+
export type TargetEnvironment = z.infer<typeof TargetEnvironmentSchema>;
|
|
16
|
+
export declare const TargetTypeSchema: z.ZodEnum<{
|
|
17
|
+
static: "static";
|
|
18
|
+
dynamic: "dynamic";
|
|
19
|
+
}>;
|
|
20
|
+
export type TargetType = z.infer<typeof TargetTypeSchema>;
|
|
21
|
+
/** Entry in the list response for GET /api/targets. */
|
|
22
|
+
export declare const TargetInfoSchema: z.ZodObject<{
|
|
23
|
+
name: z.ZodString;
|
|
24
|
+
environment: z.ZodEnum<{
|
|
25
|
+
local: "local";
|
|
26
|
+
staging: "staging";
|
|
27
|
+
production: "production";
|
|
28
|
+
}>;
|
|
29
|
+
type: z.ZodEnum<{
|
|
30
|
+
static: "static";
|
|
31
|
+
dynamic: "dynamic";
|
|
32
|
+
}>;
|
|
33
|
+
editable: z.ZodBoolean;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export type TargetInfo = z.infer<typeof TargetInfoSchema>;
|
|
36
|
+
//# sourceMappingURL=targets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../../../src/admin-api/schemas/targets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,uBAAuB;;;;EAA6C,CAAA;AACjF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE,eAAO,MAAM,gBAAgB;;;EAAgC,CAAA;AAC7D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAEzD,uDAAuD;AACvD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAK3B,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/targets list endpoint.
|
|
3
|
+
*
|
|
4
|
+
* The literal unions mirror `TargetEnvironment` and `TargetType` in
|
|
5
|
+
* types.ts — keeping them as z.enum here means the wire shape is the
|
|
6
|
+
* authoritative spec and types.ts just re-exports the inferred types.
|
|
7
|
+
* Don't duplicate the literals on the client.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
export const TargetEnvironmentSchema = z.enum(['local', 'staging', 'production']);
|
|
11
|
+
export const TargetTypeSchema = z.enum(['static', 'dynamic']);
|
|
12
|
+
/** Entry in the list response for GET /api/targets. */
|
|
13
|
+
export const TargetInfoSchema = z.object({
|
|
14
|
+
name: z.string(),
|
|
15
|
+
environment: TargetEnvironmentSchema,
|
|
16
|
+
type: TargetTypeSchema,
|
|
17
|
+
editable: z.boolean(),
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/targets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAA;AAGjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;AAG7D,uDAAuD;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,uBAAuB;IACpC,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;CACtB,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/templates list endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Scope note: GET /api/templates/:name/schema returns a spread JSON
|
|
5
|
+
* Schema with `hasEditor`/`editorUrl`/`fieldsBaseUrl` siblings — that
|
|
6
|
+
* wire shape is awkward to validate against a static Zod schema
|
|
7
|
+
* because the JSON Schema payload is arbitrary. Migrating it is a
|
|
8
|
+
* separate slice that should come with reshaping the response into
|
|
9
|
+
* a proper `{ jsonSchema, ... }` envelope.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
/** Summary used in list responses (GET /api/templates). */
|
|
13
|
+
export declare const TemplateSummarySchema: z.ZodObject<{
|
|
14
|
+
name: z.ZodString;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
export type TemplateSummary = z.infer<typeof TemplateSummarySchema>;
|
|
17
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/admin-api/schemas/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,2DAA2D;AAC3D,eAAO,MAAM,qBAAqB;;iBAEhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for /api/templates list endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Scope note: GET /api/templates/:name/schema returns a spread JSON
|
|
5
|
+
* Schema with `hasEditor`/`editorUrl`/`fieldsBaseUrl` siblings — that
|
|
6
|
+
* wire shape is awkward to validate against a static Zod schema
|
|
7
|
+
* because the JSON Schema payload is arbitrary. Migrating it is a
|
|
8
|
+
* separate slice that should come with reshaping the response into
|
|
9
|
+
* a proper `{ jsonSchema, ... }` envelope.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
/** Summary used in list responses (GET /api/templates). */
|
|
13
|
+
export const TemplateSummarySchema = z.object({
|
|
14
|
+
name: z.string(),
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,2DAA2D;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SourceContext — everything an admin-api route needs to read or write
|
|
3
|
+
* source content. Bundles storage, site directory, content root, and the
|
|
4
|
+
* sidecar writer into one parameter so route factories depend on a single
|
|
5
|
+
* coherent concept instead of 3-4 positional arguments.
|
|
6
|
+
*
|
|
7
|
+
* This is the admin-api's "source" indirection. Today it wraps the ambient
|
|
8
|
+
* source storage + siteDir pair; tomorrow it can be built from a
|
|
9
|
+
* TargetRegistry's selected editable target with no changes to routes.
|
|
10
|
+
*/
|
|
11
|
+
import type { StorageProvider, SiteManifest } from '../types.js';
|
|
12
|
+
import { type ContentRoot } from '../content-root.js';
|
|
13
|
+
import { type Site, type LoadSiteOptions } from '../site-loader.js';
|
|
14
|
+
import type { SourceSidecarWriter } from '../source-sidecars.js';
|
|
15
|
+
import type { TargetRegistry } from '../targets.js';
|
|
16
|
+
import type { HistoryProvider } from '../history.js';
|
|
17
|
+
export interface SourceContext {
|
|
18
|
+
/** Storage provider for source reads and writes. */
|
|
19
|
+
readonly storage: StorageProvider;
|
|
20
|
+
/**
|
|
21
|
+
* Path prefix applied to storage operations — where content lives *under*
|
|
22
|
+
* the storage provider. Empty string when storage is already rooted at
|
|
23
|
+
* the content root (target-rooted), equal to `projectSiteDir` when storage
|
|
24
|
+
* is cwd-rooted (legacy).
|
|
25
|
+
* @deprecated Prefer `contentRoot.path(...)` for building content paths.
|
|
26
|
+
*/
|
|
27
|
+
readonly siteDir: string;
|
|
28
|
+
/**
|
|
29
|
+
* Absolute path to the project's site directory — where site.yaml lives,
|
|
30
|
+
* and the parent of `templates/` and `admin/`. Independent of storage
|
|
31
|
+
* rooting: always the on-disk project path, even when the content storage
|
|
32
|
+
* is target-rooted elsewhere.
|
|
33
|
+
*/
|
|
34
|
+
readonly projectSiteDir: string;
|
|
35
|
+
/** Content root (storage + rooting prefix paired for path construction). */
|
|
36
|
+
readonly contentRoot: ContentRoot;
|
|
37
|
+
/** Optional sidecar writer for write-through hash/dependency tracking. */
|
|
38
|
+
readonly sidecarWriter?: SourceSidecarWriter;
|
|
39
|
+
/**
|
|
40
|
+
* Name of the target this source resolves to, when known. Set by the
|
|
41
|
+
* registry resolver; undefined for the legacy static resolver (which has
|
|
42
|
+
* no named target). Routes use this to detect when a `?target=<name>`
|
|
43
|
+
* query refers to the same target as the source — in which case the
|
|
44
|
+
* source-side read path should be used (it can backfill sidecars).
|
|
45
|
+
*/
|
|
46
|
+
readonly targetName?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Optional history provider for recording revisions on save. Absent
|
|
49
|
+
* when history is disabled for this target (via
|
|
50
|
+
* `history.enabled: false` in site.yaml) or when history isn't
|
|
51
|
+
* wired at the caller (tests, legacy setups). Save routes check for
|
|
52
|
+
* presence before recording — no-op if absent.
|
|
53
|
+
*/
|
|
54
|
+
readonly history?: HistoryProvider;
|
|
55
|
+
/**
|
|
56
|
+
* Project-level site manifest — read once from sites/{name}/site.yaml
|
|
57
|
+
* at boot. Routes pass this to loadSite({ manifest }) so content
|
|
58
|
+
* discovery works without a target-level site.yaml.
|
|
59
|
+
*/
|
|
60
|
+
readonly manifest?: SiteManifest;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Load a site from a SourceContext. Passes the project-level manifest
|
|
64
|
+
* so loadSite doesn't need a target-level site.yaml.
|
|
65
|
+
*/
|
|
66
|
+
export declare function loadSiteFromSource(source: SourceContext, opts?: Partial<LoadSiteOptions>): Promise<Site>;
|
|
67
|
+
export interface CreateSourceContextOptions {
|
|
68
|
+
storage: StorageProvider;
|
|
69
|
+
/** Path prefix applied to storage — see SourceContext.siteDir. */
|
|
70
|
+
siteDir: string;
|
|
71
|
+
/** Absolute project site directory. Defaults to `siteDir` for backward compat. */
|
|
72
|
+
projectSiteDir?: string;
|
|
73
|
+
sidecarWriter?: SourceSidecarWriter;
|
|
74
|
+
history?: HistoryProvider;
|
|
75
|
+
/** Project-level site manifest — passed to loadSite so targets don't need site.yaml. */
|
|
76
|
+
manifest?: SiteManifest;
|
|
77
|
+
}
|
|
78
|
+
export declare function createSourceContext(opts: CreateSourceContextOptions): SourceContext;
|
|
79
|
+
/**
|
|
80
|
+
* Build a HistoryProvider for a resolved target. Returns `undefined`
|
|
81
|
+
* when history is disabled (via site.yaml `history.enabled: false`).
|
|
82
|
+
* Injected via `SourceContextFromRegistryOptions.buildHistory` so the
|
|
83
|
+
* source-context module stays agnostic of target-config parsing — the
|
|
84
|
+
* caller (admin-api boot) owns the enabled/retention decision.
|
|
85
|
+
*/
|
|
86
|
+
export type BuildHistory = (targetName: string, storage: StorageProvider) => HistoryProvider | undefined;
|
|
87
|
+
export interface SourceContextFromRegistryOptions {
|
|
88
|
+
registry: TargetRegistry;
|
|
89
|
+
/** Target name to use as the source. Defaults to `registry.defaultEditable()`. */
|
|
90
|
+
targetName?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Path prefix applied to the target's storage. Typically `''` — most
|
|
93
|
+
* registry-sourced targets are already content-rooted (filesystem provider
|
|
94
|
+
* at `<siteDir>/targets/<key>`, cloud provider at a bucket).
|
|
95
|
+
*/
|
|
96
|
+
siteDir?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Absolute project site directory — where site.yaml lives. Required.
|
|
99
|
+
* This is independent of the target's storage rooting.
|
|
100
|
+
*/
|
|
101
|
+
projectSiteDir: string;
|
|
102
|
+
sidecarWriter?: SourceSidecarWriter;
|
|
103
|
+
/** See BuildHistory — callable decides per-target history provider. */
|
|
104
|
+
buildHistory?: BuildHistory;
|
|
105
|
+
/** Project-level site manifest. */
|
|
106
|
+
manifest?: SiteManifest;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Construct a SourceContext from a TargetRegistry, picking the given target
|
|
110
|
+
* (or the default editable target) as the source. Throws if no editable
|
|
111
|
+
* target is configured and no explicit targetName is provided.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createSourceContextFromRegistry(opts: SourceContextFromRegistryOptions): SourceContext;
|
|
114
|
+
/**
|
|
115
|
+
* Resolve a source for a request. Per-request indirection that lets the
|
|
116
|
+
* admin API pick the content source based on the caller's requested target
|
|
117
|
+
* (via `?target=<name>` query string, typically driven client-side by the
|
|
118
|
+
* active-target store).
|
|
119
|
+
*
|
|
120
|
+
* Implementations:
|
|
121
|
+
* - Static: always returns the same SourceContext (single-target setups,
|
|
122
|
+
* tests, or the "source is target" legacy path)
|
|
123
|
+
* - Registry-backed: looks up `?target=<name>` in a TargetRegistry and
|
|
124
|
+
* builds a SourceContext from the matched target
|
|
125
|
+
*
|
|
126
|
+
* The resolver is called once per handler invocation; implementations can
|
|
127
|
+
* memoize where appropriate.
|
|
128
|
+
*/
|
|
129
|
+
export type SourceContextResolver = (targetName: string | undefined) => SourceContext | Promise<SourceContext>;
|
|
130
|
+
/** Static resolver — always returns the given SourceContext regardless of requested target. */
|
|
131
|
+
export declare function staticSourceResolver(source: SourceContext): SourceContextResolver;
|
|
132
|
+
export interface RegistrySourceResolverOptions {
|
|
133
|
+
registry: TargetRegistry;
|
|
134
|
+
/** Required — absolute project site directory for the returned context. */
|
|
135
|
+
projectSiteDir: string;
|
|
136
|
+
/** Optional sidecar writer attached to every resolved context. */
|
|
137
|
+
sidecarWriter?: SourceSidecarWriter;
|
|
138
|
+
/**
|
|
139
|
+
* Siteprefix to apply to the target's storage. Typically `''` since
|
|
140
|
+
* registry-sourced storage is already target-rooted.
|
|
141
|
+
*/
|
|
142
|
+
siteDir?: string;
|
|
143
|
+
/**
|
|
144
|
+
* Optional lazy-init hook. When the registry doesn't already have a
|
|
145
|
+
* provider for the requested target, the resolver calls this to build
|
|
146
|
+
* one (e.g., the dev bootstrap only pre-initializes the editable local
|
|
147
|
+
* target for speed; cross-target reads like `?target=staging` arrive
|
|
148
|
+
* lazily). The built provider is then retrieved via `registry.get` —
|
|
149
|
+
* implementations should insert it into the same provider map that
|
|
150
|
+
* backs the registry view.
|
|
151
|
+
*/
|
|
152
|
+
lazyInit?: (targetName: string) => Promise<void>;
|
|
153
|
+
/** See BuildHistory — callable decides per-target history provider. */
|
|
154
|
+
buildHistory?: BuildHistory;
|
|
155
|
+
/** Project-level site manifest. */
|
|
156
|
+
manifest?: SiteManifest;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Registry-backed resolver — picks the named target (or the registry's
|
|
160
|
+
* default editable when none is named) and wraps its storage in a
|
|
161
|
+
* SourceContext. Memoizes one context per target name so repeated
|
|
162
|
+
* requests for the same target share the same contentRoot instance.
|
|
163
|
+
*/
|
|
164
|
+
export declare function registrySourceResolver(opts: RegistrySourceResolverOptions): SourceContextResolver;
|
|
165
|
+
//# sourceMappingURL=source-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-context.d.ts","sourceRoot":"","sources":["../../src/admin-api/source-context.ts"],"names":[],"mappings":"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"}
|