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.
- 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 +26 -5
- package/dist/admin-api/index.d.ts.map +1 -1
- package/dist/admin-api/index.js +175 -13
- package/dist/admin-api/index.js.map +1 -1
- package/dist/admin-api/routes/compare.d.ts +3 -1
- package/dist/admin-api/routes/compare.d.ts.map +1 -1
- package/dist/admin-api/routes/compare.js +34 -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 -2
- package/dist/admin-api/routes/fragments.d.ts.map +1 -1
- package/dist/admin-api/routes/fragments.js +94 -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 -2
- package/dist/admin-api/routes/pages.d.ts.map +1 -1
- package/dist/admin-api/routes/pages.js +120 -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 +3 -1
- package/dist/admin-api/routes/publish.d.ts.map +1 -1
- package/dist/admin-api/routes/publish.js +306 -65
- 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 +691 -113
- package/dist/cli/index.js.map +1 -1
- package/dist/compare.d.ts +15 -5
- package/dist/compare.d.ts.map +1 -1
- package/dist/compare.js +83 -45
- package/dist/compare.js.map +1 -1
- package/dist/concurrency.d.ts +63 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +134 -0
- package/dist/concurrency.js.map +1 -0
- 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 +47 -1
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js +107 -10
- 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 +17 -5
- package/dist/publish-rendered.d.ts.map +1 -1
- package/dist/publish-rendered.js +114 -66
- package/dist/publish-rendered.js.map +1 -1
- package/dist/publish.d.ts +39 -3
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +166 -17
- 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 +60 -0
- package/dist/sidecars.d.ts.map +1 -0
- package/dist/sidecars.js +231 -0
- package/dist/sidecars.js.map +1 -0
- package/dist/site-loader.d.ts +74 -6
- package/dist/site-loader.d.ts.map +1 -1
- package/dist/site-loader.js +149 -36
- 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 +32 -0
- package/dist/source-sidecars.d.ts.map +1 -0
- package/dist/source-sidecars.js +98 -0
- package/dist/source-sidecars.js.map +1 -0
- 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-Bh_y1d_l.css +0 -1
- package/admin-dist/assets/index-DjGNi6yy.js +0 -608
- package/admin-dist/assets/vendor-vue-DSjyxCX6.js +0 -1
|
@@ -1,31 +1,48 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { streamSSE } from 'hono/streaming';
|
|
3
|
-
import {
|
|
4
|
-
import { publishItems, resolveDependencies } from '../../publish.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { getType, getEnvironment, isEditable, isHistoryEnabled, getHistoryRetention } from '../../types.js';
|
|
4
|
+
import { publishItems, resolveDependencies, findFragmentDependents, findDependentsFromSidecars } from '../../publish.js';
|
|
5
|
+
import { mapLimitStream } from '../../concurrency.js';
|
|
6
|
+
import { publishPageStatic, publishSiteManifest, publishFragmentIndex, createCloudflarePurge, lookupCloudflareZoneId, } from '../../publish-rendered.js';
|
|
7
|
+
import { loadSiteFromSource } from '../source-context.js';
|
|
8
|
+
import { publishPageAllLocales, publishFragmentAllLocales } from '../../publish-locale.js';
|
|
7
9
|
import { resolveEnvVars } from '../../targets.js';
|
|
8
10
|
import { scanTemplates, templateHashesFrom } from '../../templates-scan.js';
|
|
9
11
|
import { hashManifest } from '../../hash.js';
|
|
10
|
-
|
|
12
|
+
import { createContentRoot } from '../../content-root.js';
|
|
13
|
+
import { createHistoryProvider } from '../../history-provider.js';
|
|
14
|
+
import { recordWrite } from '../../history-recorder.js';
|
|
15
|
+
export function publishRoutes(resolve, preInitTargets, targetConfigs, templatesDir,
|
|
16
|
+
// Optional injected scanner — the admin-api server memoizes it and
|
|
17
|
+
// clears the cache via its template file watcher. Default: fresh scan
|
|
18
|
+
// on every call (used by the CLI and tests).
|
|
19
|
+
scanTemplatesInjected) {
|
|
20
|
+
const scan = scanTemplatesInjected ?? scanTemplates;
|
|
11
21
|
const app = new Hono();
|
|
12
|
-
// Background target initialization
|
|
22
|
+
// Background target initialization — lazy, needs the resolved source's
|
|
23
|
+
// projectSiteDir to resolve filesystem target paths. We call resolve()
|
|
24
|
+
// once with undefined (→ default editable) to obtain projectSiteDir.
|
|
13
25
|
let targets = preInitTargets ?? null;
|
|
14
|
-
|
|
15
|
-
? Promise.resolve(preInitTargets)
|
|
16
|
-
: (!targetConfigs || Object.keys(targetConfigs).length === 0)
|
|
17
|
-
? Promise.resolve(new Map())
|
|
18
|
-
: (async () => {
|
|
19
|
-
const { createTargetRegistry } = await import('../../targets.js');
|
|
20
|
-
targets = await createTargetRegistry(targetConfigs, siteDir);
|
|
21
|
-
return targets;
|
|
22
|
-
})();
|
|
23
|
-
if (!preInitTargets) {
|
|
24
|
-
initPromise.then(t => { targets = t; }).catch(() => { targets = new Map(); });
|
|
25
|
-
}
|
|
26
|
+
let initPromise = null;
|
|
26
27
|
async function getTargets() {
|
|
27
28
|
if (targets)
|
|
28
29
|
return targets;
|
|
30
|
+
if (!targetConfigs || Object.keys(targetConfigs).length === 0) {
|
|
31
|
+
targets = new Map();
|
|
32
|
+
return targets;
|
|
33
|
+
}
|
|
34
|
+
if (!initPromise) {
|
|
35
|
+
initPromise = (async () => {
|
|
36
|
+
const { createTargetRegistry } = await import('../../targets.js');
|
|
37
|
+
const bootstrapSource = await resolve(undefined);
|
|
38
|
+
const t = await createTargetRegistry(targetConfigs, bootstrapSource.projectSiteDir);
|
|
39
|
+
targets = t;
|
|
40
|
+
return t;
|
|
41
|
+
})().catch(() => {
|
|
42
|
+
targets = new Map();
|
|
43
|
+
return targets;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
29
46
|
return initPromise;
|
|
30
47
|
}
|
|
31
48
|
function getTargetConfig(name) {
|
|
@@ -35,9 +52,76 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
35
52
|
const t = await getTargets();
|
|
36
53
|
return c.json([...t.keys()].map(name => {
|
|
37
54
|
const cfg = getTargetConfig(name);
|
|
38
|
-
return {
|
|
55
|
+
return {
|
|
56
|
+
name,
|
|
57
|
+
environment: cfg ? getEnvironment(cfg) : 'local',
|
|
58
|
+
type: cfg ? getType(cfg) : 'static',
|
|
59
|
+
editable: cfg ? isEditable(cfg) : true,
|
|
60
|
+
};
|
|
39
61
|
}));
|
|
40
62
|
});
|
|
63
|
+
/**
|
|
64
|
+
* Reverse-dependency lookup for publish UI impact preview.
|
|
65
|
+
* GET /api/dependents?item=fragments/header[&target=staging]
|
|
66
|
+
* → { pages: string[], fragments: string[] }
|
|
67
|
+
*
|
|
68
|
+
* Without `target`: scans local source manifests (authoritative for the
|
|
69
|
+
* current draft state — what's about to be published). Slow-ish on very
|
|
70
|
+
* large sites since it reads every manifest.
|
|
71
|
+
*
|
|
72
|
+
* With `target`: uses published .uses-* / .tpl-* sidecars on that target.
|
|
73
|
+
* Listings only, no content reads — scales to 10k+ items at the cost of
|
|
74
|
+
* reflecting only what's been published (not unsaved local changes).
|
|
75
|
+
* Useful for answering "what pages would need republish if this fragment
|
|
76
|
+
* changed" on large sites.
|
|
77
|
+
*/
|
|
78
|
+
app.get('/api/dependents', async (c) => {
|
|
79
|
+
const item = c.req.query('item');
|
|
80
|
+
if (!item || !item.startsWith('fragments/')) {
|
|
81
|
+
return c.json({ error: 'Missing or invalid "item" query (must be fragments/<name>)' }, 400);
|
|
82
|
+
}
|
|
83
|
+
const fragmentName = item.slice('fragments/'.length);
|
|
84
|
+
// `target` — specific published target's sidecars (read-only listing).
|
|
85
|
+
// Useful for "what would need republish on staging?" queries
|
|
86
|
+
// where sidecars reflect the last publish, not the draft.
|
|
87
|
+
// `source` — the editable source target (authoritative for the draft).
|
|
88
|
+
// When target === source (common case: client sends the
|
|
89
|
+
// active editable target), route through source so the
|
|
90
|
+
// sidecar writer can backfill missing entries.
|
|
91
|
+
const targetName = c.req.query('target');
|
|
92
|
+
const sourceName = c.req.query('source');
|
|
93
|
+
try {
|
|
94
|
+
const source = await resolve(sourceName);
|
|
95
|
+
// Treat `target=local` (the active editable target) the same as no
|
|
96
|
+
// target — the source path is the authoritative one for the draft,
|
|
97
|
+
// and it's the only path that knows how to backfill sidecars on a
|
|
98
|
+
// fresh dev server.
|
|
99
|
+
const isTargetTheSource = !targetName || targetName === source.targetName;
|
|
100
|
+
if (!isTargetTheSource) {
|
|
101
|
+
const t = await getTargets();
|
|
102
|
+
const targetStorage = t.get(targetName);
|
|
103
|
+
if (!targetStorage)
|
|
104
|
+
return c.json({ error: `Unknown target: ${targetName}` }, 400);
|
|
105
|
+
const result = await findDependentsFromSidecars(createContentRoot(targetStorage), { fragment: fragmentName });
|
|
106
|
+
return c.json(result);
|
|
107
|
+
}
|
|
108
|
+
// Source-side path: ensure every item has a sidecar before reading.
|
|
109
|
+
// The writer memoizes the backfill — concurrent tree badges on a
|
|
110
|
+
// fresh dev server share one pass instead of racing to an empty index.
|
|
111
|
+
const sidecarWriter = source.sidecarWriter;
|
|
112
|
+
if (sidecarWriter) {
|
|
113
|
+
await sidecarWriter.ensureBackfilled();
|
|
114
|
+
const result = await findDependentsFromSidecars(source.contentRoot, { fragment: fragmentName });
|
|
115
|
+
return c.json(result);
|
|
116
|
+
}
|
|
117
|
+
// No writer injected (legacy setup) — fall back to the manifest walker.
|
|
118
|
+
const result = await findFragmentDependents(source.contentRoot, fragmentName);
|
|
119
|
+
return c.json(result);
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
return c.json({ error: err.message }, 500);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
41
125
|
/**
|
|
42
126
|
* Run a publish, yielding progress events. Both the synchronous
|
|
43
127
|
* /api/publish route and the streaming /api/publish/stream route consume
|
|
@@ -48,7 +132,7 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
48
132
|
* Pre-flight validation (unknown targets, invalid templates) is reported as
|
|
49
133
|
* 'fatal' before any 'target-start' event so callers can map to a 4xx.
|
|
50
134
|
*/
|
|
51
|
-
async function* runPublish(items, targetNames) {
|
|
135
|
+
async function* runPublish(items, targetNames, sourceName) {
|
|
52
136
|
if (!items?.length) {
|
|
53
137
|
yield { kind: 'fatal', error: 'No items specified' };
|
|
54
138
|
return;
|
|
@@ -57,6 +141,16 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
57
141
|
yield { kind: 'fatal', error: 'No targets specified' };
|
|
58
142
|
return;
|
|
59
143
|
}
|
|
144
|
+
// Resolve the source editable target for this publish run.
|
|
145
|
+
let source;
|
|
146
|
+
try {
|
|
147
|
+
source = await resolve(sourceName);
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
yield { kind: 'fatal', error: err.message };
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const { projectSiteDir } = source;
|
|
60
154
|
const t = await getTargets();
|
|
61
155
|
for (const name of targetNames) {
|
|
62
156
|
if (!t.has(name)) {
|
|
@@ -64,13 +158,13 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
64
158
|
return;
|
|
65
159
|
}
|
|
66
160
|
}
|
|
67
|
-
const allItems = await resolveDependencies(
|
|
161
|
+
const allItems = await resolveDependencies(source.contentRoot, items);
|
|
68
162
|
console.log(` Publishing to ${targetNames.length} target(s):`);
|
|
69
163
|
console.log(` Items: ${items.join(', ')} (+ ${allItems.length - items.length} dependencies)`);
|
|
70
164
|
console.log(` Targets: ${targetNames.join(', ')}`);
|
|
71
|
-
const tdir = templatesDir ?? `${
|
|
72
|
-
const projectRoot =
|
|
73
|
-
const templateInfos = await
|
|
165
|
+
const tdir = templatesDir ?? `${projectSiteDir}/templates`;
|
|
166
|
+
const projectRoot = projectSiteDir.replace(/\/sites\/[^/]+$/, '');
|
|
167
|
+
const templateInfos = await scan(tdir, projectRoot);
|
|
74
168
|
const invalidTpls = templateInfos.filter(t => !t.valid);
|
|
75
169
|
if (invalidTpls.length) {
|
|
76
170
|
yield {
|
|
@@ -81,78 +175,181 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
81
175
|
return;
|
|
82
176
|
}
|
|
83
177
|
const templateHashes = templateHashesFrom(templateInfos);
|
|
84
|
-
const site = await
|
|
178
|
+
const site = await loadSiteFromSource(source, { templatesDir: tdir });
|
|
85
179
|
yield { kind: 'start', targets: targetNames, itemsPerTarget: allItems.length };
|
|
86
180
|
const results = [];
|
|
87
181
|
for (const targetName of targetNames) {
|
|
88
182
|
const targetStorage = t.get(targetName);
|
|
89
183
|
const config = getTargetConfig(targetName);
|
|
90
|
-
const isStatic = config ?
|
|
184
|
+
const isStatic = config ? getType(config) === 'static' : true;
|
|
91
185
|
const purgeConfig = config?.cache?.purge;
|
|
186
|
+
// Static mode bakes fragments into pages at publish time — if the user
|
|
187
|
+
// picked @header, we must also republish every page that uses it.
|
|
188
|
+
// Expand per-target so ESI targets still get the narrow item set.
|
|
189
|
+
let targetItems = allItems;
|
|
190
|
+
if (isStatic) {
|
|
191
|
+
const fragmentItems = items.filter(i => i.startsWith('fragments/'));
|
|
192
|
+
if (fragmentItems.length) {
|
|
193
|
+
const expanded = new Set(allItems);
|
|
194
|
+
for (const frag of fragmentItems) {
|
|
195
|
+
const name = frag.replace('fragments/', '');
|
|
196
|
+
const deps = await findFragmentDependents(source.contentRoot, name);
|
|
197
|
+
for (const p of deps.pages)
|
|
198
|
+
expanded.add(`pages/${p}`);
|
|
199
|
+
}
|
|
200
|
+
targetItems = [...expanded];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
92
203
|
// Step count: source-copy + per-item render + manifest+index + (purge?)
|
|
93
|
-
const total = 1 +
|
|
204
|
+
const total = 1 + targetItems.length + 1 + (purgeConfig?.type === 'cloudflare' ? 1 : 0);
|
|
94
205
|
yield { kind: 'target-start', target: targetName, total };
|
|
95
206
|
let current = 0;
|
|
96
207
|
try {
|
|
97
208
|
let totalFiles = 0;
|
|
209
|
+
const targetRoot = createContentRoot(targetStorage);
|
|
210
|
+
// History must record BEFORE the writes so the baseline
|
|
211
|
+
// revision (emitted automatically by recordWrite on the first
|
|
212
|
+
// call against this target) captures pre-publish state.
|
|
213
|
+
// Otherwise "undo this publish" would restore the post-
|
|
214
|
+
// publish state and no-op. See pages.ts save handler.
|
|
215
|
+
if (config && isHistoryEnabled(config)) {
|
|
216
|
+
try {
|
|
217
|
+
const history = createHistoryProvider({
|
|
218
|
+
storage: targetStorage,
|
|
219
|
+
retention: getHistoryRetention(config),
|
|
220
|
+
});
|
|
221
|
+
const items = await collectPublishedItemsForHistory(source.contentRoot, targetRoot, targetItems);
|
|
222
|
+
await recordWrite({
|
|
223
|
+
history,
|
|
224
|
+
contentRoot: targetRoot,
|
|
225
|
+
operation: 'publish',
|
|
226
|
+
source: sourceName,
|
|
227
|
+
items,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
// History is a best-effort audit layer — a write failure
|
|
232
|
+
// here must not break the publish itself.
|
|
233
|
+
console.warn(` ${targetName}: history record failed — ${err.message}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
98
236
|
// 1. Source copy
|
|
99
|
-
const { copiedFiles } = await publishItems(
|
|
237
|
+
const { copiedFiles } = await publishItems(source.contentRoot, targetRoot, targetItems);
|
|
100
238
|
totalFiles += copiedFiles;
|
|
101
239
|
current++;
|
|
102
240
|
yield { kind: 'progress', target: targetName, current, total, label: 'source files' };
|
|
103
|
-
// 2. Render
|
|
104
|
-
|
|
241
|
+
// 2. Render items in bounded parallel. Progress events are yielded
|
|
242
|
+
// in completion order — the UI shows X/N + whatever finished last,
|
|
243
|
+
// which stays meaningful without needing input-order. Preserves the
|
|
244
|
+
// event contract: one 'progress' per item between 'target-start'
|
|
245
|
+
// and 'target-result'.
|
|
246
|
+
// Static-mode page hashes must include fragment hashes (a fragment
|
|
247
|
+
// change invalidates every page that bakes it in). Matches the
|
|
248
|
+
// combination used by compareTargets.
|
|
249
|
+
const fragmentHashes = new Map();
|
|
250
|
+
if (isStatic) {
|
|
251
|
+
for (const [fragName, frag] of site.fragments) {
|
|
252
|
+
fragmentHashes.set(fragName, hashManifest(frag, { templateHashes }));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const pageHashOpts = isStatic ? { templateHashes, fragmentHashes } : { templateHashes };
|
|
256
|
+
// SEO context for this target — built once, shared across all page renders.
|
|
257
|
+
const seo = {
|
|
258
|
+
siteName: site.manifest.name,
|
|
259
|
+
siteUrl: config?.siteUrl,
|
|
260
|
+
locale: site.manifest.locale,
|
|
261
|
+
defaultOgImage: site.manifest.defaultOgImage,
|
|
262
|
+
};
|
|
263
|
+
const renderItem = async (item) => {
|
|
105
264
|
if (item.startsWith('pages/')) {
|
|
106
|
-
const
|
|
265
|
+
const raw = item.replace('pages/', '');
|
|
266
|
+
// Support locale-qualified items: pages/home:fr → publish only FR
|
|
267
|
+
const [pageName, itemLocale] = raw.includes(':') ? raw.split(':') : [raw, undefined];
|
|
107
268
|
const page = site.pages.get(pageName);
|
|
108
|
-
const manifestHash = page ? hashManifest(page,
|
|
269
|
+
const manifestHash = page ? hashManifest(page, pageHashOpts) : undefined;
|
|
109
270
|
if (isStatic) {
|
|
110
|
-
|
|
111
|
-
totalFiles += files;
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
const { files } = await publishPageRendered(pageName, sourceStorage, siteDir, targetStorage, config?.cache, tdir, manifestHash);
|
|
115
|
-
totalFiles += files;
|
|
271
|
+
return publishPageStatic(pageName, source.contentRoot, targetStorage, tdir, manifestHash, site, seo, itemLocale);
|
|
116
272
|
}
|
|
273
|
+
// When a specific locale is requested, only publish that one
|
|
274
|
+
const onlyLocales = itemLocale ? [itemLocale] : undefined;
|
|
275
|
+
const { files } = await publishPageAllLocales(pageName, source.contentRoot, targetStorage, site, pageHashOpts, { cache: config?.cache, templatesDir: tdir, seo, targetLocales: onlyLocales ?? config?.locales });
|
|
276
|
+
return { files };
|
|
117
277
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
totalFiles += files;
|
|
125
|
-
}
|
|
278
|
+
if (item.startsWith('fragments/') && !isStatic) {
|
|
279
|
+
const raw = item.replace('fragments/', '');
|
|
280
|
+
const [fragName, itemLocale] = raw.includes(':') ? raw.split(':') : [raw, undefined];
|
|
281
|
+
const onlyLocales = itemLocale ? [itemLocale] : undefined;
|
|
282
|
+
const { files } = await publishFragmentAllLocales(fragName, source.contentRoot, targetStorage, site, { templateHashes }, { templatesDir: tdir, targetLocales: onlyLocales ?? config?.locales });
|
|
283
|
+
return { files };
|
|
126
284
|
}
|
|
285
|
+
return { files: 0 }; // skipped (e.g. fragment on static target)
|
|
286
|
+
};
|
|
287
|
+
// Render concurrency is lower than listing concurrency — each render
|
|
288
|
+
// may do multiple writes, so 10 in flight is the safe default.
|
|
289
|
+
for await (const { item, result } of mapLimitStream(targetItems, renderItem, 10)) {
|
|
290
|
+
totalFiles += result.files;
|
|
127
291
|
current++;
|
|
128
292
|
yield { kind: 'progress', target: targetName, current, total, label: item };
|
|
129
293
|
}
|
|
130
294
|
// 3. Site manifest + fragment index
|
|
131
|
-
await publishSiteManifest(
|
|
132
|
-
await publishFragmentIndex(
|
|
295
|
+
await publishSiteManifest(source.contentRoot, targetStorage, site);
|
|
296
|
+
await publishFragmentIndex(source.contentRoot, targetStorage, site);
|
|
133
297
|
totalFiles += 2;
|
|
134
298
|
current++;
|
|
135
299
|
yield { kind: 'progress', target: targetName, current, total, label: 'site manifest' };
|
|
300
|
+
// 3b. Sitemap + robots.txt
|
|
301
|
+
const siteUrl = config?.siteUrl;
|
|
302
|
+
if (siteUrl) {
|
|
303
|
+
const { listSidecars } = await import('../../sidecars.js');
|
|
304
|
+
const { generateSitemap } = await import('../../sitemap.js');
|
|
305
|
+
const { generateRobotsTxt } = await import('../../robots.js');
|
|
306
|
+
const targetPageSidecars = await listSidecars(targetStorage, 'pages');
|
|
307
|
+
const sitemapXml = generateSitemap({
|
|
308
|
+
siteUrl,
|
|
309
|
+
pages: targetPageSidecars,
|
|
310
|
+
systemPages: site.manifest.systemPages,
|
|
311
|
+
});
|
|
312
|
+
if (sitemapXml) {
|
|
313
|
+
await targetStorage.writeFile('sitemap.xml', sitemapXml);
|
|
314
|
+
totalFiles++;
|
|
315
|
+
}
|
|
316
|
+
// robots.txt only at domain root — Google ignores it at subpaths.
|
|
317
|
+
const isRootDeploy = !new URL(siteUrl).pathname.replace(/\/+$/, '');
|
|
318
|
+
if (isRootDeploy) {
|
|
319
|
+
let robotsTxt;
|
|
320
|
+
try {
|
|
321
|
+
robotsTxt = await source.contentRoot.storage.readFile(source.contentRoot.path('robots.txt'));
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
robotsTxt = generateRobotsTxt({ siteUrl });
|
|
325
|
+
}
|
|
326
|
+
await targetStorage.writeFile('robots.txt', robotsTxt);
|
|
327
|
+
totalFiles++;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
136
330
|
// 4. Purge CDN cache
|
|
137
331
|
if (purgeConfig?.type === 'cloudflare') {
|
|
138
332
|
const apiToken = resolveEnvVars(purgeConfig.apiToken);
|
|
139
|
-
const zoneId = resolveEnvVars(purgeConfig.zoneId) ??
|
|
333
|
+
const zoneId = resolveEnvVars(purgeConfig.zoneId) ??
|
|
334
|
+
(config?.siteUrl && apiToken ? await lookupCloudflareZoneId(config.siteUrl, apiToken) : null);
|
|
140
335
|
if (apiToken && zoneId) {
|
|
141
336
|
const purge = createCloudflarePurge(zoneId, apiToken);
|
|
142
|
-
const hasFragments =
|
|
337
|
+
const hasFragments = targetItems.some(i => i.startsWith('fragments/'));
|
|
143
338
|
if (hasFragments) {
|
|
144
339
|
await purge.purgeAll();
|
|
145
340
|
console.log(` ${targetName}: cache purged (all)`);
|
|
146
341
|
}
|
|
147
342
|
else if (config?.siteUrl) {
|
|
148
|
-
const siteForUrls = await
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
343
|
+
const siteForUrls = await loadSiteFromSource(source, { templatesDir });
|
|
344
|
+
const publishedPageNames = new Set(targetItems.filter(i => i.startsWith('pages/')).map(i => i.replace('pages/', '')));
|
|
345
|
+
// Collect URLs for all published pages including locale variants
|
|
346
|
+
const urls = [];
|
|
347
|
+
const { allPageEntries } = await import('../../site-loader.js');
|
|
348
|
+
for (const { name, page } of allPageEntries(siteForUrls)) {
|
|
349
|
+
if (publishedPageNames.has(name)) {
|
|
350
|
+
urls.push(`${config.siteUrl}${page.route}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
156
353
|
if (urls.length > 0) {
|
|
157
354
|
await purge.purgeUrls(urls);
|
|
158
355
|
console.log(` ${targetName}: cache purged (${urls.join(', ')})`);
|
|
@@ -178,10 +375,10 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
178
375
|
yield { kind: 'done', results };
|
|
179
376
|
}
|
|
180
377
|
app.post('/api/publish', async (c) => {
|
|
181
|
-
const body = await c.req.json();
|
|
378
|
+
const body = (await c.req.json());
|
|
182
379
|
let results = [];
|
|
183
380
|
let fatal = null;
|
|
184
|
-
for await (const ev of runPublish(body.items, body.targets)) {
|
|
381
|
+
for await (const ev of runPublish(body.items, body.targets, body.source)) {
|
|
185
382
|
if (ev.kind === 'fatal')
|
|
186
383
|
fatal = ev;
|
|
187
384
|
else if (ev.kind === 'done')
|
|
@@ -195,10 +392,10 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
195
392
|
return c.json({ results }, allSuccess ? 200 : 207);
|
|
196
393
|
});
|
|
197
394
|
app.post('/api/publish/stream', async (c) => {
|
|
198
|
-
const body = await c.req.json();
|
|
395
|
+
const body = (await c.req.json());
|
|
199
396
|
return streamSSE(c, async (stream) => {
|
|
200
397
|
try {
|
|
201
|
-
for await (const ev of runPublish(body.items, body.targets)) {
|
|
398
|
+
for await (const ev of runPublish(body.items, body.targets, body.source)) {
|
|
202
399
|
if (stream.aborted)
|
|
203
400
|
return;
|
|
204
401
|
await stream.writeSSE({ event: ev.kind, data: JSON.stringify(ev) });
|
|
@@ -206,19 +403,33 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
206
403
|
}
|
|
207
404
|
catch (err) {
|
|
208
405
|
if (!stream.aborted) {
|
|
209
|
-
await stream.writeSSE({
|
|
406
|
+
await stream.writeSSE({
|
|
407
|
+
event: 'fatal',
|
|
408
|
+
data: JSON.stringify({ kind: 'fatal', error: err.message }),
|
|
409
|
+
});
|
|
210
410
|
}
|
|
211
411
|
}
|
|
212
412
|
});
|
|
213
413
|
});
|
|
214
414
|
app.post('/api/fetch', async (c) => {
|
|
215
|
-
|
|
415
|
+
// `source` (body) — target to fetch FROM (a published target)
|
|
416
|
+
// `destination` (body) — optional editable target to write INTO; defaults
|
|
417
|
+
// to the resolver's default editable target (the author's current source)
|
|
418
|
+
const body = (await c.req.json());
|
|
216
419
|
if (!body.source)
|
|
217
420
|
return c.json({ error: 'Missing "source" target name' }, 400);
|
|
218
421
|
const t = await getTargets();
|
|
219
422
|
const targetStorage = t.get(body.source);
|
|
220
423
|
if (!targetStorage)
|
|
221
424
|
return c.json({ error: `Unknown target: ${body.source}` }, 400);
|
|
425
|
+
// Resolve the destination editable target for this fetch.
|
|
426
|
+
let destination;
|
|
427
|
+
try {
|
|
428
|
+
destination = await resolve(body.destination);
|
|
429
|
+
}
|
|
430
|
+
catch (err) {
|
|
431
|
+
return c.json({ error: err.message }, 400);
|
|
432
|
+
}
|
|
222
433
|
let items;
|
|
223
434
|
if (body.items?.length) {
|
|
224
435
|
items = body.items;
|
|
@@ -257,7 +468,8 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
257
468
|
console.log(` Fetching ${items.length} items from "${body.source}":`);
|
|
258
469
|
console.log(` Items: ${items.join(', ')}`);
|
|
259
470
|
try {
|
|
260
|
-
const
|
|
471
|
+
const targetRoot = createContentRoot(targetStorage);
|
|
472
|
+
const { copiedFiles } = await publishItems(targetRoot, destination.contentRoot, items);
|
|
261
473
|
console.log(` ${copiedFiles} files copied to working copy`);
|
|
262
474
|
return c.json({ success: true, copiedFiles, items });
|
|
263
475
|
}
|
|
@@ -269,4 +481,33 @@ export function publishRoutes(siteDir, sourceStorage, preInitTargets, targetConf
|
|
|
269
481
|
});
|
|
270
482
|
return app;
|
|
271
483
|
}
|
|
484
|
+
/**
|
|
485
|
+
* Build the history `items` for a publish — one entry per published
|
|
486
|
+
* item, content = the source-side manifest. Records semantic authored
|
|
487
|
+
* state (JSON manifests) rather than target-side artifacts (static
|
|
488
|
+
* HTML, fragment indexes), so Restore is a content-level operation.
|
|
489
|
+
*
|
|
490
|
+
* `_targetRoot` is accepted for symmetry with `recordWrite`'s other
|
|
491
|
+
* path-building needs; it's unused today because we hash source
|
|
492
|
+
* content directly and let recordWrite overlay paths relative to the
|
|
493
|
+
* target's rootPath (which is `''` for target-rooted storage, the
|
|
494
|
+
* common case).
|
|
495
|
+
*/
|
|
496
|
+
async function collectPublishedItemsForHistory(sourceRoot, _targetRoot, publishedItems) {
|
|
497
|
+
const out = [];
|
|
498
|
+
for (const item of publishedItems) {
|
|
499
|
+
const manifestName = item.startsWith('pages/') ? 'page.json' : 'fragment.json';
|
|
500
|
+
const key = `${item}/${manifestName}`;
|
|
501
|
+
const sourcePath = sourceRoot.path(key);
|
|
502
|
+
try {
|
|
503
|
+
const content = await sourceRoot.storage.readFile(sourcePath);
|
|
504
|
+
out.push({ path: key, content });
|
|
505
|
+
}
|
|
506
|
+
catch {
|
|
507
|
+
// Item missing on source (unusual — publish normally reads from
|
|
508
|
+
// source manifests). Skip; snapshot stays as-was for this item.
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
return out;
|
|
512
|
+
}
|
|
272
513
|
//# sourceMappingURL=publish.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/admin-api/routes/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEpE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACrM,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAe5C,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,aAA8B,EAC9B,cAA6C,EAC7C,aAA4C,EAC5C,YAAqB;IAErB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;IAEtB,mCAAmC;IACnC,IAAI,OAAO,GAAwC,cAAc,IAAI,IAAI,CAAA;IACzE,MAAM,WAAW,GAA0C,cAAc;QACvE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;YAC3D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACV,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;gBACjE,OAAO,GAAG,MAAM,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;gBAC5D,OAAO,OAAO,CAAA;YAChB,CAAC,CAAC,EAAE,CAAA;IAEV,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,KAAK,UAAU,UAAU;QACvB,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;QAC3B,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,SAAS,eAAe,CAAC,IAAY;QACnC,OAAO,aAAa,EAAE,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,MAAM,UAAU,EAAE,CAAA;QAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACrC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;YACjC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACnE,CAAC,CAAC,CAAC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF;;;;;;;;;OASG;IACH,KAAK,SAAS,CAAC,CAAC,UAAU,CAAC,KAAe,EAAE,WAAqB;QAC/D,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;YAAC,OAAM;QAAC,CAAC;QACpF,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;YAAC,OAAM;QAAC,CAAC;QAE5F,MAAM,CAAC,GAAG,MAAM,UAAU,EAAE,CAAA;QAC5B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,IAAI,EAAE,EAAE,CAAC;gBAAC,OAAM;YAAC,CAAC;QACzF,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QAEzE,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,CAAC,MAAM,aAAa,CAAC,CAAA;QAC/D,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,gBAAgB,CAAC,CAAA;QAChG,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAErD,MAAM,IAAI,GAAG,YAAY,IAAI,GAAG,OAAO,YAAY,CAAA;QACnD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;QAC1D,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC5D,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;QACvD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,mCAAmC;gBAC1C,gBAAgB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAC7E,CAAA;YACD,OAAM;QACR,CAAC;QACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACxD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAA;QAEpF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;QAE9E,MAAM,OAAO,GAAoB,EAAE,CAAA;QACnC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAE,CAAA;YACxC,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;YACpE,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,CAAA;YACxC,wEAAwE;YACxE,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACpF,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;YAEzD,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,IAAI,CAAC;gBACH,IAAI,UAAU,GAAG,CAAC,CAAA;gBAElB,iBAAiB;gBACjB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;gBAC/F,UAAU,IAAI,WAAW,CAAA;gBACzB,OAAO,EAAE,CAAA;gBACT,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;gBAErF,sBAAsB;gBACtB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;oBAC5B,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;wBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;wBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;wBAC9E,IAAI,QAAQ,EAAE,CAAC;4BACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;4BAC9G,UAAU,IAAI,KAAK,CAAA;wBACrB,CAAC;6BAAM,CAAC;4BACN,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;4BAC/H,UAAU,IAAI,KAAK,CAAA;wBACrB,CAAC;oBACH,CAAC;yBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;wBACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;4BAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;4BACzC,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;4BAC9E,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;4BACpH,UAAU,IAAI,KAAK,CAAA;wBACrB,CAAC;oBACH,CAAC;oBACD,OAAO,EAAE,CAAA;oBACT,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;gBAC7E,CAAC;gBAED,oCAAoC;gBACpC,MAAM,mBAAmB,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;gBAChE,MAAM,oBAAoB,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,CAAA;gBACjE,UAAU,IAAI,CAAC,CAAA;gBACf,OAAO,EAAE,CAAA;gBACT,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;gBAEtF,qBAAqB;gBACrB,IAAI,WAAW,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;oBACrD,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,sBAAsB,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;oBAClJ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;wBACvB,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;wBACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;wBACnE,IAAI,YAAY,EAAE,CAAC;4BACjB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;4BACtB,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,sBAAsB,CAAC,CAAA;wBACtD,CAAC;6BAAM,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;4BAC3B,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAA;4BACrF,MAAM,IAAI,GAAG,QAAQ;iCAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iCACnC,GAAG,CAAC,CAAC,CAAC,EAAE;gCACP,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;gCAC3D,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;4BACvD,CAAC,CAAC;iCACD,MAAM,CAAC,OAAO,CAAa,CAAA;4BAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACpB,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gCAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,mBAAmB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;4BACrE,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,OAAO,EAAE,CAAA;oBACT,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;gBACtF,CAAC;gBAED,MAAM,MAAM,GAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA;gBAC5F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACpB,OAAO,CAAC,GAAG,CAAC,OAAO,UAAU,KAAK,UAAU,QAAQ,CAAC,CAAA;gBACrD,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,KAAK,GAAI,GAAa,CAAC,OAAO,CAAA;gBACpC,MAAM,MAAM,GAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;gBAC3F,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACpB,OAAO,CAAC,KAAK,CAAC,OAAO,UAAU,cAAc,KAAK,EAAE,CAAC,CAAA;gBACrD,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;YACzC,CAAC;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAA4C,CAAA;QACzE,IAAI,OAAO,GAAoB,EAAE,CAAA;QACjC,IAAI,KAAK,GAA2B,IAAI,CAAA;QACxC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5D,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;gBAAE,KAAK,GAAG,EAAE,CAAA;iBAC9B,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;gBAAE,OAAO,GAAG,EAAE,CAAC,OAAO,CAAA;QACnD,CAAC;QACD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;YACnE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QAChI,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAChD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAA4C,CAAA;QACzE,OAAO,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5D,IAAI,MAAM,CAAC,OAAO;wBAAE,OAAM;oBAC1B,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBACrE,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;gBACnH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAA0C,CAAA;QACvE,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8BAA8B,EAAE,EAAE,GAAG,CAAC,CAAA;QAE/E,MAAM,CAAC,GAAG,MAAM,UAAU,EAAE,CAAA;QAC5B,MAAM,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,aAAa;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAEnF,IAAI,KAAe,CAAA;QACnB,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACvB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACpB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,EAAE,CAAA;YACV,IAAI,CAAC;gBACH,IAAI,MAAM,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxC,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;oBAClD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACtB,IAAI,CAAC,CAAC,WAAW;4BAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;oBAClD,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;oBACtD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACtB,IAAI,CAAC,CAAC,WAAW;4BAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;oBACtD,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC5C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;oBACtD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACtB,IAAI,CAAC,CAAC,WAAW;4BAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;oBACtD,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mCAAoC,GAAa,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;YAC5F,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,GAAG,CAAC,CAAA;QAEnF,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,MAAM,gBAAgB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QACtE,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE7C,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;YAC5F,OAAO,CAAC,GAAG,CAAC,OAAO,WAAW,+BAA+B,CAAC,CAAA;YAC9D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAI,GAAa,CAAC,OAAO,CAAA;YACpC,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAA;YACtC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/admin-api/routes/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function siteRoutes(
|
|
2
|
+
import type { SourceContextResolver } from '../source-context.js';
|
|
3
|
+
export declare function siteRoutes(resolve: SourceContextResolver): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
4
4
|
//# sourceMappingURL=site.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/site.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/site.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAGjE,wBAAgB,UAAU,CAAC,OAAO,EAAE,qBAAqB,8EA2BxD"}
|
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { parseSiteManifest } from '../../manifest.js';
|
|
3
|
+
import { createFilesystemProvider } from '../../providers/filesystem.js';
|
|
4
|
+
import { loadSiteFromSource } from '../source-context.js';
|
|
5
|
+
export function siteRoutes(resolve) {
|
|
4
6
|
const app = new Hono();
|
|
5
7
|
app.get('/api/site', async (c) => {
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
+
const source = await resolve(c.req.query('target'));
|
|
9
|
+
// Return the project-level manifest if available on the source context.
|
|
10
|
+
if (source.manifest)
|
|
11
|
+
return c.json(source.manifest);
|
|
12
|
+
// Fallback: read from projectSiteDir filesystem.
|
|
13
|
+
try {
|
|
14
|
+
const projectStorage = createFilesystemProvider(source.projectSiteDir);
|
|
15
|
+
const manifest = await parseSiteManifest(projectStorage, 'site.yaml');
|
|
16
|
+
return c.json(manifest);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Last resort: read from target content root.
|
|
20
|
+
try {
|
|
21
|
+
const site = await loadSiteFromSource(source);
|
|
22
|
+
return c.json(site.manifest);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
if (err.message.includes('No site.yaml found')) {
|
|
26
|
+
return c.json({ name: '(empty)', targets: {} });
|
|
27
|
+
}
|
|
28
|
+
throw err;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
8
31
|
});
|
|
9
32
|
return app;
|
|
10
33
|
}
|