@kernhq/module-quire 0.12.0 → 0.13.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.
@@ -31,8 +31,10 @@ import { createHash, randomBytes, scrypt as scryptCb, timingSafeEqual } from 'no
31
31
  import { promisify } from 'node:util';
32
32
  import { KernError } from '@kernhq/kernel';
33
33
  import { and, desc, eq, inArray, sql } from 'drizzle-orm';
34
+ import { PUBLIC_ASSET_SEGMENT } from '../../contract/index.js';
34
35
  import { escapeHtml } from '../render.js';
35
36
  import { pages, pageVersions, publications } from '../schema.js';
37
+ import { ASSET_REFERENCE_PREFIX } from './versions.js';
36
38
  const scrypt = promisify(scryptCb);
37
39
  /** How deep a published site may nest before the walk stops descending. */
38
40
  const MAX_DEPTH = 32;
@@ -42,6 +44,56 @@ const MAX_BACKFILL = 200;
42
44
  const TOKEN_TTL_MS = 12 * 60 * 60_000;
43
45
  /** How much of a page's prose a search hit shows around the match. */
44
46
  const SNIPPET = 180;
47
+ /**
48
+ * The largest picture this surface will hand out, and how long a reader may keep one.
49
+ *
50
+ * The bytes come back through an anonymous procedure, so an object with no ceiling on it is a way
51
+ * to spend the server's memory from outside. Over the cap is the same 404 as a picture that is not
52
+ * there — an oversized image on a published page is a defect in the page rather than something to
53
+ * fail a request over. A version is immutable and its reference is sealed to one file, so the cache
54
+ * lifetime is as long as anything in Kern gets.
55
+ */
56
+ const MAX_ASSET_BYTES = 8 * 1024 * 1024;
57
+ const ASSET_MAX_AGE = 31_536_000;
58
+ /**
59
+ * What a picture is allowed to be, because the route layer serves these from the app's own origin.
60
+ *
61
+ * A stored content type is whatever an uploader declared, and a reference resolves on the same
62
+ * origin as the signed-in application — so anything the browser would treat as a document rather
63
+ * than as an image is a way to run script beside somebody's session. The node these references come
64
+ * from is an image node, so the list is the image types and nothing else, and an object claiming to
65
+ * be anything else is the same 404 as one that is not there.
66
+ *
67
+ * `image/svg+xml` is on the list and is the one that needs saying: an SVG *is* a document, and it
68
+ * can carry script. It is here because a diagram in a handbook is very often one, and it is safe
69
+ * only because the route layer is required to serve every one of these with `nosniff`, an inline
70
+ * disposition and a `default-src 'none'` policy — see the note on `PublicAsset` in the contract.
71
+ */
72
+ const ASSET_TYPES = new Set([
73
+ 'image/png',
74
+ 'image/jpeg',
75
+ 'image/gif',
76
+ 'image/webp',
77
+ 'image/avif',
78
+ 'image/svg+xml',
79
+ ]);
80
+ /**
81
+ * How many passwords one publication will weigh in a minute, and why the number is here.
82
+ *
83
+ * `public.unlock` is reachable by anyone on the internet with no account, and every attempt costs
84
+ * the server an scrypt at N=16384 — 600 of them measured at roughly a minute of single-thread work,
85
+ * bought with one unauthenticated burst. The platform's own limiter is a *shared* budget across the
86
+ * whole API rather than a password fence, so a publication needs one of its own.
87
+ *
88
+ * It is per process and therefore multiplied by however many copies of the host service are
89
+ * running, which is honest rather than ideal: a counter that has to be right across a cluster
90
+ * belongs in the platform limiter, and until it is there this is the difference between 864,000
91
+ * guesses a day from one address and 14,400.
92
+ */
93
+ const UNLOCK_ATTEMPTS = 10;
94
+ const UNLOCK_WINDOW_MS = 60_000;
95
+ /** Above this many publications tracked at once the window is dropped wholesale rather than grown. */
96
+ const UNLOCK_TRACKED_MAX = 5000;
45
97
  /**
46
98
  * A publication as a client sees it — with `hasPassword` in place of the hash.
47
99
  *
@@ -149,12 +201,61 @@ const normalisePath = (path) => path
149
201
  * text `id="x"` arrives as `id="x"` and is left alone. `publications.int.test.ts` holds
150
202
  * that with a code block written to look like markup.
151
203
  */
152
- export function publicHtml(html, publicPathOf, basePath) {
153
- const linked = html.replace(/href="\/quire\/[^"/]*\/([0-9a-fA-F-]{36})"/g, (_match, pageId) => {
154
- const path = publicPathOf(pageId);
204
+ const APP_LINK = /href="\/quire\/[^"]*"/g;
205
+ const APP_PAGE_LINK = /^href="\/quire\/[^"/]*\/([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})(?:[/?#][^"]*)?"$/;
206
+ /**
207
+ * Pictures, held to the same rule as links: a `src` this module cannot account for does not go out.
208
+ *
209
+ * `render.ts` escapes every attribute value, so `>` never appears inside one and `[^>]*` cannot run
210
+ * past the tag it is in — the same property that makes the link pass above safe.
211
+ *
212
+ * Three shapes reach here and only one of them is servable. A **reference** is what the public
213
+ * render writes and it resolves to an address on this site. An **absolute off-site URL** is an
214
+ * author's own picture hosted somewhere else, and it is left alone. Everything else is dropped
215
+ * together with its `<img>`, and that is deliberately wide: a root-relative `src` is a link into
216
+ * the private application, and a *signed storage URL* — which is what versions published by 0.12.0
217
+ * have stored in them — is the tenant's workspace uuid and a file uuid written into a page on the
218
+ * public internet, with an hour before it stops working. `0009_public_asset_references.sql` rewrites
219
+ * the ones already in the database; this is what covers a row the migration did not reach.
220
+ */
221
+ const IMG_TAG = /<img\b[^>]*>/g;
222
+ const ASSET_SRC = new RegExp(` src="${ASSET_REFERENCE_PREFIX}([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})"`);
223
+ const ANY_SRC = / src="([^"]*)"/;
224
+ const SIGNED_URL = /[?&](?:amp;)?X-Amz-(?:Signature|Credential)=/i;
225
+ export function publicHtml(html, basePath, resolve) {
226
+ /*
227
+ * Every link into the application, in one pass, and the page id is not anchored on the closing
228
+ * quote.
229
+ *
230
+ * A page mention is not the only thing that writes one of these. `safeHref` passes any
231
+ * root-relative path through — it has to, that is what an internal link is — so an author who
232
+ * pastes a page's address out of their own address bar gets `/quire/<space>/<id>#block-7` or
233
+ * `…?comment=1` or `…/history`, and a pattern that required `"` straight after the id matched
234
+ * none of them and left the whole href alone. That put a live deep link into the private
235
+ * application, carrying the uuid of a page this same API answers 404 for, on the public internet.
236
+ *
237
+ * So: match the whole href, then ask whether it names a page — and if the answer is no for any
238
+ * reason at all (no id in it, an id that is not public, an id with something glued to it), drop
239
+ * the href rather than keep it. One pass rather than two, because `basePath` may legally be
240
+ * `/quire/` and a second sweep would eat the links the first one had just written.
241
+ */
242
+ const linked = html.replace(APP_LINK, (match) => {
243
+ const pageId = APP_PAGE_LINK.exec(match)?.[1] ?? null;
244
+ const path = pageId === null ? null : resolve.pagePath(pageId);
155
245
  return path === null ? '' : `href="${escapeHtml(basePath + encodeURI(path))}"`;
156
246
  });
157
- return linked.replace(/ (?:data-)?id="[^"]*"/g, '');
247
+ const pictured = linked.replace(IMG_TAG, (tag) => {
248
+ const fileId = ASSET_SRC.exec(tag)?.[1] ?? null;
249
+ if (fileId === null) {
250
+ const src = ANY_SRC.exec(tag)?.[1] ?? '';
251
+ return /^https?:\/\//i.test(src) && !SIGNED_URL.test(src) ? tag : '';
252
+ }
253
+ const href = resolve.assetHref(fileId);
254
+ // A function replacement, because `$&` and friends mean something in a replacement string and
255
+ // a base64url token is not somewhere to find that out.
256
+ return href === null ? '' : tag.replace(ASSET_SRC, () => ` src="${escapeHtml(href)}"`);
257
+ });
258
+ return pictured.replace(/ (?:data-)?id="[^"]*"/g, '');
158
259
  }
159
260
  /** A plain-text window around the first match, for a search result. */
160
261
  export function snippetAround(text, query) {
@@ -179,6 +280,18 @@ export function quirePublications(kernel, access, versions) {
179
280
  * says who is holding it.
180
281
  */
181
282
  const aad = (workspaceId, publicationId) => `quire.publication.unlock:${workspaceId}:${publicationId}`;
283
+ /**
284
+ * The same mechanism, one scope wider, for a picture reference.
285
+ *
286
+ * Sealed to the **workspace** rather than to one publication, because a version is shared: the
287
+ * same page can be the root of two publications and its stored HTML is rendered once. Widening it
288
+ * costs nothing that matters — a reference only ever exists inside a page somebody has already
289
+ * been served, and resolving one still requires the file to be in the tree of the publication it
290
+ * is presented against.
291
+ */
292
+ const assetAad = (workspaceId) => `quire.publication.asset:${workspaceId.toLowerCase()}`;
293
+ /** Recent password attempts per publication, for the fence described at `UNLOCK_ATTEMPTS`. */
294
+ const unlockAttempts = new Map();
182
295
  async function hashPassword(plain) {
183
296
  const salt = randomBytes(16);
184
297
  const key = await scrypt(plain.normalize('NFC'), salt, 32, { N: 16384, r: 8, p: 1 });
@@ -280,7 +393,18 @@ export function quirePublications(kernel, access, versions) {
280
393
  * the first: the first is that every query below carries the publication.
281
394
  */
282
395
  read(workspaceId, fn) {
283
- return kernel.database.withWorkspace(workspaceId, async (tx) => {
396
+ /*
397
+ * Lower-cased before it is set, and that is not tidiness.
398
+ *
399
+ * `withWorkspace` writes the caller's string into `app.workspace_id` verbatim, and every RLS
400
+ * policy compares it as **text** against `workspace_id::text`, which Postgres renders in
401
+ * lower case. So an upper-case uuid in a public URL sets a GUC no policy can ever match: the
402
+ * whole surface returns nothing on a correctly locked-down instance and serves the site
403
+ * normally in development and CI, where the role is a superuser and bypasses the policies
404
+ * altogether. That is the direction that hides a bug rather than the one that shows it, and
405
+ * this is the only anonymous entry point, so it is normalised here.
406
+ */
407
+ return kernel.database.withWorkspace(workspaceId.toLowerCase(), async (tx) => {
284
408
  await tx.execute(sql `set transaction read only`);
285
409
  return fn(tx);
286
410
  }, { userId: null });
@@ -328,11 +452,99 @@ export function quirePublications(kernel, access, versions) {
328
452
  expiresAt: new Date(exp).toISOString(),
329
453
  };
330
454
  },
455
+ /**
456
+ * Weigh one password, and refuse to weigh too many.
457
+ *
458
+ * The counter is taken *before* the scrypt rather than after the answer, so a burst is stopped
459
+ * at the cost of a map lookup instead of buying the sender a key derivation each time. Only a
460
+ * publication that has a door is ever counted — a slug nobody has taken never reaches here, so
461
+ * the fence cannot be turned into a way of finding out which slugs exist.
462
+ */
331
463
  async checkPassword(pub, password) {
332
464
  if (!pub.passwordHash)
333
465
  return false;
466
+ const key = `${pub.workspaceId}:${pub.id}`;
467
+ const now = Date.now();
468
+ if (unlockAttempts.size > UNLOCK_TRACKED_MAX)
469
+ unlockAttempts.clear();
470
+ const recent = (unlockAttempts.get(key) ?? []).filter((at) => at > now - UNLOCK_WINDOW_MS);
471
+ if (recent.length >= UNLOCK_ATTEMPTS) {
472
+ unlockAttempts.set(key, recent);
473
+ throw new KernError('RATE_LIMITED', 'Too many attempts. Wait a minute and try again');
474
+ }
475
+ recent.push(now);
476
+ unlockAttempts.set(key, recent);
334
477
  return verifyPassword(password, pub.passwordHash);
335
478
  },
479
+ /** The reference a published page carries in place of a picture's address. */
480
+ assetReferenceFor(workspaceId, fileId) {
481
+ return kernel.secrets.encrypt(fileId, assetAad(workspaceId));
482
+ },
483
+ /**
484
+ * The bytes of one referenced picture, or `notFound` for every way of not having them.
485
+ *
486
+ * Two questions, and the second is the one that matters. The reference decrypts to a file id —
487
+ * authenticated, so it cannot be forged or moved between instances or workspaces — and then the
488
+ * file has to be *used by a page that is public in this publication right now*. Without that
489
+ * second half a reference lifted from one site would resolve against another in the same
490
+ * workspace, and a page opted out of publishing would keep serving its illustrations after its
491
+ * prose had gone.
492
+ *
493
+ * The containment question is asked of the stored HTML rather than of the document, because the
494
+ * stored HTML is what a reader is actually served: if the reference is not in it, no published
495
+ * page ever asked for this file.
496
+ */
497
+ async asset(tx, workspaceId, nodes, reference) {
498
+ const gone = () => new KernError('NOT_FOUND', 'There is no such picture on this site');
499
+ const versionIds = nodes.map((n) => n.version_id);
500
+ if (versionIds.length === 0)
501
+ throw gone();
502
+ let fileId;
503
+ try {
504
+ fileId = kernel.secrets.decrypt(reference, assetAad(workspaceId));
505
+ }
506
+ catch {
507
+ throw gone();
508
+ }
509
+ if (!/^[0-9a-fA-F-]{36}$/.test(fileId))
510
+ throw gone();
511
+ const [used] = await tx
512
+ .select({ id: pageVersions.id })
513
+ .from(pageVersions)
514
+ .where(and(eq(pageVersions.workspaceId, workspaceId), inArray(pageVersions.id, versionIds), sql `${pageVersions.html} like ${`%${ASSET_REFERENCE_PREFIX}${fileId}%`}`))
515
+ .limit(1);
516
+ if (!used)
517
+ throw gone();
518
+ const file = await kernel
519
+ .call('core.files.get', { id: fileId })
520
+ .catch(() => null);
521
+ if (!file?.key)
522
+ throw gone();
523
+ const contentType = (file.mimeType || '').split(';')[0]?.trim().toLowerCase() ?? '';
524
+ if (!ASSET_TYPES.has(contentType))
525
+ throw gone();
526
+ const head = await kernel.storage.head(file.key).catch(() => null);
527
+ if ((head?.contentLength ?? 0) > MAX_ASSET_BYTES) {
528
+ kernel.log.warn({ fileId, bytes: head?.contentLength, cap: MAX_ASSET_BYTES }, 'a published picture is over the public cap and was not served');
529
+ throw gone();
530
+ }
531
+ const object = await kernel.storage.get(file.key).catch(() => null);
532
+ if (!object)
533
+ throw gone();
534
+ const chunks = [];
535
+ let size = 0;
536
+ for await (const chunk of object.body) {
537
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
538
+ size += buf.length;
539
+ // `head` is the fast refusal; this is the one that holds when the store did not answer it.
540
+ if (size > MAX_ASSET_BYTES) {
541
+ object.body.destroy();
542
+ throw gone();
543
+ }
544
+ chunks.push(buf);
545
+ }
546
+ return { contentType, bytes: Buffer.concat(chunks).toString('base64'), maxAge: ASSET_MAX_AGE };
547
+ },
336
548
  /** Every publicly reachable page of this publication, addressed, root first. */
337
549
  async tree(tx, workspaceId, pub) {
338
550
  return withPaths(await walk(tx, workspaceId, pub, { requireHtml: true }));
@@ -363,7 +575,12 @@ export function quirePublications(kernel, access, versions) {
363
575
  if (!row || row.html === null)
364
576
  throw new KernError('NOT_FOUND', 'There is no published page at this address');
365
577
  const pathById = new Map(nodes.map((n) => [n.id, n.path]));
366
- return publicHtml(row.html, (id) => pathById.get(id) ?? null, basePath);
578
+ return publicHtml(row.html, basePath, {
579
+ pagePath: (id) => pathById.get(id) ?? null,
580
+ // Minted per read rather than stored, so the envelope can be re-keyed and so nothing
581
+ // durable in the database is a capability. `basePath` already ends in a slash.
582
+ assetHref: (fileId) => `${basePath}${PUBLIC_ASSET_SEGMENT}/${encodeURIComponent(this.assetReferenceFor(workspaceId, fileId))}`,
583
+ });
367
584
  },
368
585
  /**
369
586
  * Search the published text of this publication's pages.
@@ -523,7 +740,9 @@ export function quirePublications(kernel, access, versions) {
523
740
  .limit(1);
524
741
  if (!row || row.html !== null)
525
742
  return;
526
- const html = await versions.html(tx, workspaceId, row.state);
743
+ // `referenced`, never `signed`: this drawing is *stored*, and a signed URL is the object's
744
+ // key with an hour on it. See the note on `html` in `versions.ts`.
745
+ const html = await versions.html(tx, workspaceId, row.state, { pictures: 'referenced' });
527
746
  await tx
528
747
  .update(pageVersions)
529
748
  .set({ html })
@@ -1 +1 @@
1
- {"version":3,"file":"publications.js","sourceRoot":"","sources":["../../../src/server/services/publications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publications.js","sourceRoot":"","sources":["../../../src/server/services/publications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,SAAS,EAAwB,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhE,OAAO,EAAE,sBAAsB,EAAsB,MAAM,eAAe,CAAA;AAE1E,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAKb,CAAA;AAIpB,2EAA2E;AAC3E,MAAM,SAAS,GAAG,EAAE,CAAA;AACpB,8FAA8F;AAC9F,MAAM,YAAY,GAAG,GAAG,CAAA;AACxB,+FAA+F;AAC/F,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;AACrC,sEAAsE;AACtE,MAAM,OAAO,GAAG,GAAG,CAAA;AACnB;;;;;;;;GAQG;AACH,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AACvC,MAAM,aAAa,GAAG,UAAU,CAAA;AAChC;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,WAAW;IACX,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,eAAe;CAChB,CAAC,CAAA;AACF;;;;;;;;;;;;GAYG;AACH,MAAM,eAAe,GAAG,EAAE,CAAA;AAC1B,MAAM,gBAAgB,GAAG,MAAM,CAAA;AAC/B,sGAAsG;AACtG,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAE/B;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,GAAmB;IAC/C,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,WAAW,EAAE,GAAG,CAAC,WAAyC;QAC1D,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,kBAAkB,EAAE,GAAG,CAAC,kBAAkB;QAC1C,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,WAAW,EAAE,GAAG,CAAC,YAAY,KAAK,IAAI;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI;QAC/C,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAA6B;QACxC,SAAS,EAAE,GAAG,CAAC,SAAqC;QACpD,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE;KACvC,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,OAAO,GAAG,KAAK;SAClB,SAAS,CAAC,KAAK,CAAC;SAChB,WAAW,EAAE;SACb,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IACtB,OAAO,OAAO,IAAI,UAAU,CAAA;AAC9B,CAAC;AAiDD;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA8B,CAAA;IACxD,MAAM,GAAG,GAAiB,EAAE,CAAA;IAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAA;QACtF,yFAAyF;QACzF,oFAAoF;QACpF,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;YAAE,SAAQ;QAC3D,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YACtB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;YAChD,SAAQ;QACV,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;QAChE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACpC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,IAAI,GAAG,IAAI,CAAA;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;QAC3D,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACf,MAAM,IAAI,GAAG,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,CAAA;QAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACxB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,6FAA6F;AAC7F,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAC7C,IAAI;KACD,SAAS,CAAC,KAAK,CAAC;KAChB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;KACzB,WAAW,EAAE,CAAA;AAElB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,QAAQ,GAAG,wBAAwB,CAAA;AACzC,MAAM,aAAa,GACjB,wHAAwH,CAAA;AAE1H;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,GAAG,eAAe,CAAA;AAC/B,MAAM,SAAS,GAAG,IAAI,MAAM,CAC1B,SAAS,sBAAsB,gFAAgF,CAChH,CAAA;AACD,MAAM,OAAO,GAAG,gBAAgB,CAAA;AAChC,MAAM,UAAU,GAAG,+CAA+C,CAAA;AAElE,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,QAAgB,EAChB,OAKC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QACrD,MAAM,IAAI,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9D,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAA;IAChF,CAAC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;QAC/C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YACxC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACtE,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACtC,8FAA8F;QAC9F,uDAAuD;QACvD,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IACF,OAAO,QAAQ,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IAC1D,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACtF,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAEvF,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,MAAmB,EAAE,QAAuB;IAC5F;;;;;;;;OAQG;IACH,MAAM,GAAG,GAAG,CAAC,WAAmB,EAAE,aAAqB,EAAE,EAAE,CACzD,4BAA4B,WAAW,IAAI,aAAa,EAAE,CAAA;IAE5D;;;;;;;;OAQG;IACH,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE,CAAC,2BAA2B,WAAW,CAAC,WAAW,EAAE,EAAE,CAAA;IAEhG,8FAA8F;IAC9F,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoB,CAAA;IAElD,KAAK,UAAU,YAAY,CAAC,KAAa;QACvC,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;QAC5B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACpF,OAAO,2BAA2B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;IAC7F,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,GAAW;QACtD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7B,CAAC,CAAC,CACH,CAAA;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAA;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAA;QACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,OAAO,KAAK,CAAA;QACd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAC5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE;YACzE,CAAC,EAAE,MAAM,CAAC,CAAW;YACrB,CAAC,EAAE,MAAM,CAAC,CAAW;YACrB,CAAC,EAAE,MAAM,CAAC,CAAW;SACtB,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC/E,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,IAAI,CACjB,EAAM,EACN,WAAmB,EACnB,GAAmB,EACnB,IAA8B;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAA;QACjC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CAAa,GAAG,CAAA;;;;;;;;kCAQd,WAAW;wBACrB,GAAG,CAAC,UAAU;;;;;;kBAMpB,QAAQ;;;;;;;mCAOS,WAAW;kCACZ,WAAW;iBAC5B,GAAG,CAAC,kBAAkB;;;;;;8BAMT,SAAS;kBACrB,QAAQ;;;;;;KAMrB,CAAC,CAAA;QACF,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5B,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,YAAY,EAAE,GAAG,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;YAC9F,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI;YAC/B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;SACzB,CAAC,CAAC,CAAA;IACL,CAAC;IAED,OAAO;QACL;;;;;;;WAOG;QACH,IAAI,CAAI,WAAmB,EAAE,EAA0B;YACrD;;;;;;;;;;eAUG;YACH,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,CAClC,WAAW,CAAC,WAAW,EAAE,EACzB,KAAK,EAAE,EAAE,EAAE,EAAE;gBACX,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,2BAA2B,CAAC,CAAA;gBAChD,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;YACf,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAA;QACH,CAAC;QAED;;;;;;;WAOG;QACH,KAAK,CAAC,MAAM,CAAC,EAAM,EAAE,WAAmB,EAAE,IAAY;YACpD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;iBACnB,MAAM,EAAE;iBACR,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;iBAClF,KAAK,CAAC,CAAC,CAAC,CAAA;YACX,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,4CAA4C,CAAC,CAAA;YACxF,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;gBACxD,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,4CAA4C,CAAC,CAAA;YAChF,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,0DAA0D;QAC1D,KAAK,CAAC,QAAQ,CAAC,GAAmB,EAAE,KAAoB;YACtD,IAAI,CAAC,GAAG,CAAC,YAAY;gBAAE,OAAO,IAAI,CAAA;YAClC,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAA;YACxB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAEpF,CAAA;gBACD,OAAO,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAClE,CAAC;YAAC,MAAM,CAAC;gBACP,wFAAwF;gBACxF,kEAAkE;gBAClE,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,GAAmB;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAA;YACrC,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpF,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;aACvC,CAAA;QACH,CAAC;QAED;;;;;;;WAOG;QACH,KAAK,CAAC,aAAa,CAAC,GAAmB,EAAE,QAAgB;YACvD,IAAI,CAAC,GAAG,CAAC,YAAY;gBAAE,OAAO,KAAK,CAAA;YACnC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,EAAE,EAAE,CAAA;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,IAAI,cAAc,CAAC,IAAI,GAAG,kBAAkB;gBAAE,cAAc,CAAC,KAAK,EAAE,CAAA;YACpE,MAAM,MAAM,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,gBAAgB,CAAC,CAAA;YAC1F,IAAI,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;gBACrC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;gBAC/B,MAAM,IAAI,SAAS,CAAC,cAAc,EAAE,gDAAgD,CAAC,CAAA;YACvF,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAChB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAC/B,OAAO,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,8EAA8E;QAC9E,iBAAiB,CAAC,WAAmB,EAAE,MAAc;YACnD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;QAC9D,CAAC;QAED;;;;;;;;;;;;;WAaG;QACH,KAAK,CAAC,KAAK,CACT,EAAM,EACN,WAAmB,EACnB,KAAmB,EACnB,SAAiB;YAEjB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAA;YACtF,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;YACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,EAAE,CAAA;YAEzC,IAAI,MAAc,CAAA;YAClB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,EAAE,CAAA;YACd,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,EAAE,CAAA;YAEpD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;iBACpB,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC;iBAC/B,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EACzC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,EACpC,GAAG,CAAA,GAAG,YAAY,CAAC,IAAI,SAAS,IAAI,sBAAsB,GAAG,MAAM,GAAG,EAAE,CACzE,CACF;iBACA,KAAK,CAAC,CAAC,CAAC,CAAA;YACX,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,EAAE,CAAA;YAEvB,MAAM,IAAI,GAAG,MAAM,MAAM;iBACtB,IAAI,CAA2C,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;iBAChF,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YACpB,IAAI,CAAC,IAAI,EAAE,GAAG;gBAAE,MAAM,IAAI,EAAE,CAAA;YAC5B,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA;YACnF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;gBAAE,MAAM,IAAI,EAAE,CAAA;YAE/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YAClE,IAAI,CAAC,IAAI,EAAE,aAAa,IAAI,CAAC,CAAC,GAAG,eAAe,EAAE,CAAC;gBACjD,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,EAC5D,+DAA+D,CAChE,CAAA;gBACD,MAAM,IAAI,EAAE,CAAA;YACd,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;YACnE,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,EAAE,CAAA;YACzB,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,IAAI,IAAI,GAAG,CAAC,CAAA;YACZ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAmB,CAAC,CAAA;gBAC7E,IAAI,IAAI,GAAG,CAAC,MAAM,CAAA;gBAClB,2FAA2F;gBAC3F,IAAI,IAAI,GAAG,eAAe,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;oBACrB,MAAM,IAAI,EAAE,CAAA;gBACd,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAClB,CAAC;YACD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAA;QAChG,CAAC;QAED,gFAAgF;QAChF,KAAK,CAAC,IAAI,CAAC,EAAM,EAAE,WAAmB,EAAE,GAAmB;YACzD,OAAO,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;QAED,+FAA+F;QAC/F,IAAI,CAAC,KAAmB,EAAE,IAAY;YACpC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAA;YAChE,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,4CAA4C,CAAC,CAAA;YACzF,OAAO,IAAI,CAAA;QACb,CAAC;QAED,mEAAmE;QACnE,KAAK,CAAC,IAAI,CACR,EAAM,EACN,WAAmB,EACnB,IAAgB,EAChB,KAAmB,EACnB,QAAgB;YAEhB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;iBACnB,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;iBACnC,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC3F,KAAK,CAAC,CAAC,CAAC,CAAA;YACX;;;;;;;eAOG;YACH,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;gBAC3B,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,4CAA4C,CAAC,CAAA;YAChF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1D,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE;gBACpC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI;gBAC1C,qFAAqF;gBACrF,+EAA+E;gBAC/E,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CACpB,GAAG,QAAQ,GAAG,oBAAoB,IAAI,kBAAkB,CACtD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAC5C,EAAE;aACN,CAAC,CAAA;QACJ,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,MAAM,CACV,EAAM,EACN,WAAmB,EACnB,KAAmB,EACnB,KAAa,EACb,KAAa;YAEb,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;YACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YACtC,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAA;YAC/C,MAAM,IAAI,GAAG,MAAM,EAAE;iBAClB,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;iBACxD,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EACzC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,EACpC,GAAG,CAAA,GAAG,YAAY,CAAC,IAAI,UAAU,OAAO,EAAE,CAC3C,CACF;iBACA,KAAK,CAAC,KAAK,CAAC,CAAA;YACf,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9D,MAAM,IAAI,GAAiD,EAAE,CAAA;YAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAClC,IAAI,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;YACxE,CAAC;YACD,2FAA2F;YAC3F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;oBAAE,MAAK;gBAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;oBAAE,SAAQ;gBACrD,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;YACrG,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;QAED;;;;;WAKG;QACH,OAAO,CAAC,SAAiB;YACvB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACrG,CAAC;QAED,sFAAsF;QAEtF,sEAAsE;QACtE,KAAK,CAAC,IAAI,CAAC,EAAM,EAAE,WAAmB,EAAE,OAAe;YACrD,OAAO,EAAE;iBACN,MAAM,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;iBAC7B,IAAI,CAAC,YAAY,CAAC;iBAClB,SAAS,CACR,KAAK,EACL,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAC5F;iBACA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;iBACjF,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;iBACrC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC3C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,EAAM,EAAE,WAAmB,EAAE,aAAqB;YAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;iBACnB,MAAM,EAAE;iBACR,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;iBACzF,KAAK,CAAC,CAAC,CAAC,CAAA;YACX,IAAI,CAAC,GAAG;gBAAE,MAAM,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;YACjD,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,KAAK,CAAC,MAAM,CACV,EAAM,EACN,SAAoB,EACpB,WAAmB,EACnB,KAWC;YAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;YACpE,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBACtB,MAAM,SAAS,CAAC,UAAU,CAAC,gEAAgE,CAAC,CAAA;YAC9F,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;iBACnB,MAAM,CAAC,YAAY,CAAC;iBACpB,MAAM,CAAC;gBACN,WAAW;gBACX,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBACxE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC7D,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,cAAc,EAAE,KAAK,CAAC,cAAc;gBACpC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,SAAS,EAAE,SAAS,CAAC,MAAM;aAC5B,CAAC;iBACD,SAAS,EAAE;iBACX,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,IAAK,GAAyB,CAAC,IAAI,KAAK,OAAO;oBAC7C,MAAM,SAAS,CAAC,QAAQ,CAAC,iDAAiD,EAAE,kBAAkB,CAAC,CAAA;gBACjG,MAAM,GAAG,CAAA;YACX,CAAC,CAAC,CAAA;YACJ,OAAO,GAAI,CAAA;QACb,CAAC;QAED,KAAK,CAAC,MAAM,CACV,EAAM,EACN,WAAmB,EACnB,aAAqB,EACrB,KAUC;YAED,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;YAC9C,MAAM,MAAM,GAA8C,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAA;YACnF,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;gBAAE,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YACtD,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS;gBAAE,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAA;YAChG,sFAAsF;YACtF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAC9B,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC3F,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAC/B,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAChF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;YAClE,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;gBAAE,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAA;YACpF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;gBAAE,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;YACxE,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;YACrE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YACzD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;iBACnB,MAAM,CAAC,YAAY,CAAC;iBACpB,GAAG,CAAC,MAAM,CAAC;iBACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;iBACzF,SAAS,EAAE;iBACX,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACtB,IAAK,GAAyB,CAAC,IAAI,KAAK,OAAO;oBAC7C,MAAM,SAAS,CAAC,QAAQ,CAAC,iDAAiD,EAAE,kBAAkB,CAAC,CAAA;gBACjG,MAAM,GAAG,CAAA;YACX,CAAC,CAAC,CAAA;YACJ,OAAO,GAAI,CAAA;QACb,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAM,EAAE,WAAmB,EAAE,aAAqB;YAC7D,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAA;YAC9C,MAAM,EAAE;iBACL,MAAM,CAAC,YAAY,CAAC;iBACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;QAC9F,CAAC;QAED,sEAAsE;QACtE,KAAK,CAAC,WAAW,CAAC,EAAM,EAAE,WAAmB,EAAE,MAAc,EAAE,QAAiB;YAC9E,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;YAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;iBACnB,MAAM,CAAC,KAAK,CAAC;iBACb,GAAG,CAAC,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;iBAC5D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;iBACpE,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAA;YACpD,OAAO,GAAG,EAAE,QAAQ,IAAI,QAAQ,CAAA;QAClC,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,aAAa,CAAC,EAAM,EAAE,WAAmB,EAAE,SAAiB;YAChE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE;iBACnB,MAAM,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;iBACnF,IAAI,CAAC,YAAY,CAAC;iBAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;iBACrF,KAAK,CAAC,CAAC,CAAC,CAAA;YACX,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAM;YACrC,2FAA2F;YAC3F,mEAAmE;YACnE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;YACxF,MAAM,EAAE;iBACL,MAAM,CAAC,YAAY,CAAC;iBACpB,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;iBACb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;QAC1F,CAAC;QAED;;;;;;;;;WASG;QACH,KAAK,CAAC,QAAQ,CAAC,EAAM,EAAE,WAAmB,EAAE,GAAmB;YAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;YACpE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;gBAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,EACrE,wDAAwD,CACzD,CAAA;YACH,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;gBAC9C,MAAM,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;YAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC/C,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -4,6 +4,18 @@ import type { PageVersion } from '../../contract/index.js';
4
4
  import { pageVersions } from '../schema.js';
5
5
  import type { QuireAccess } from './access.js';
6
6
  type VersionRow = typeof pageVersions.$inferSelect;
7
+ /**
8
+ * What a picture looks like in HTML that is stored rather than shown.
9
+ *
10
+ * A signed storage URL cannot be stored: it is the object's key, which carries the tenant's
11
+ * workspace uuid and the file's own uuid, and it stops working an hour after it is written. So the
12
+ * public render leaves a root-relative reference the publication layer resolves at read time —
13
+ * `publicHtml` turns it into an address on the published site, and drops the picture outright if it
14
+ * cannot. It has to survive `safeHref`, which is why it is a path and not a scheme of its own, and
15
+ * it starts with `__` so no slug the server ever invents can collide with it.
16
+ */
17
+ export declare const ASSET_REFERENCE_PREFIX = "/__quire-asset/";
18
+ export declare const assetReference: (fileId: string) => string;
7
19
  export declare function toVersion(row: VersionRow, publishedId: string | null): PageVersion;
8
20
  export declare function quireVersions(kernel: Kernel, access: QuireAccess): {
9
21
  /**
@@ -146,8 +158,17 @@ export declare function quireVersions(kernel: Kernel, access: QuireAccess): {
146
158
  * string; a picture whose file has been deleted, or whose storage is not configured, is dropped
147
159
  * rather than drawn as a broken image; a mention of a purged page stays as its label. None of
148
160
  * those is worth turning a read of somebody's history into an error.
161
+ *
162
+ * **`pictures` is a security parameter, not a performance one.** `'signed'` is right for a
163
+ * person reading their own history over an authenticated request: the URL is theirs, it is
164
+ * short-lived, and it is never stored. `'referenced'` is the only thing that may be *written
165
+ * down*, because a signed URL is the storage key — the tenant's workspace uuid and the file's
166
+ * own uuid — and it expires an hour after it is minted. The publication render stores its
167
+ * output, so it uses `'referenced'` and `publicHtml` resolves the reference per read.
149
168
  */
150
- html(tx: Tx, workspaceId: string, state: Buffer | Uint8Array | null): Promise<string>;
169
+ html(tx: Tx, workspaceId: string, state: Buffer | Uint8Array | null, opts?: {
170
+ pictures?: "signed" | "referenced";
171
+ }): Promise<string>;
151
172
  };
152
173
  export type QuireVersions = ReturnType<typeof quireVersions>;
153
174
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../src/server/services/versions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,EAAE,EAAU,MAAM,gBAAgB,CAAA;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAG1D,OAAO,EAAS,YAAY,EAAU,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,KAAK,UAAU,GAAG,OAAO,YAAY,CAAC,YAAY,CAAA;AAKlD,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAalF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;IAS7D;;;;;;OAMG;gBAEG,EAAE,eACO,MAAM,UACX,MAAM,QACR;QAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACnF,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;aA0Cd,EAAE,eAAe,MAAM,UAAU,MAAM,SAAS,MAAM,UAAU,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;YAkB9E,EAAE,eAAe,MAAM,aAAa,MAAM;;;;;;;;;;;;;;IAUxD;;;;;;;OAOG;gBACe,EAAE,aAAa,SAAS,eAAe,MAAM,aAAa,MAAM;;;;;;;;;;;;;;IAsBlF,kEAAkE;gBAChD,EAAE,aAAa,SAAS,eAAe,MAAM,UAAU,MAAM,SAAS,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;IAyBrG,wEAAwE;eACvD,EAAE,aAAa,SAAS,eAAe,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;;;;;IAyB9E,2FAA2F;uBAClE,EAAE,eAAe,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAUvF,wFAAwF;+BAC7D,MAAM,UAAU,MAAM;;;;;;IAMjD;;;;;;;;;;;;;;;;;;OAkBG;aACY,EAAE,eAAe,MAAM,SAAS,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;EAwC9F;AACD,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA"}
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../src/server/services/versions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAuB,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,EAAE,EAAU,MAAM,gBAAgB,CAAA;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAG1D,OAAO,EAAS,YAAY,EAAU,MAAM,cAAc,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,KAAK,UAAU,GAAG,OAAO,YAAY,CAAC,YAAY,CAAA;AAKlD;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,oBAAoB,CAAA;AACvD,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAA8C,CAAA;AAE9F,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAalF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;IAS7D;;;;;;OAMG;gBAEG,EAAE,eACO,MAAM,UACX,MAAM,QACR;QAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACnF,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;aA0Cd,EAAE,eAAe,MAAM,UAAU,MAAM,SAAS,MAAM,UAAU,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;YAkB9E,EAAE,eAAe,MAAM,aAAa,MAAM;;;;;;;;;;;;;;IAUxD;;;;;;;OAOG;gBACe,EAAE,aAAa,SAAS,eAAe,MAAM,aAAa,MAAM;;;;;;;;;;;;;;IAsBlF,kEAAkE;gBAChD,EAAE,aAAa,SAAS,eAAe,MAAM,UAAU,MAAM,SAAS,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;IAyBrG,wEAAwE;eACvD,EAAE,aAAa,SAAS,eAAe,MAAM,UAAU,MAAM;;;;;;;;;;;;;;;;;;;;;;;;IAyB9E,2FAA2F;uBAClE,EAAE,eAAe,MAAM,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAUvF,wFAAwF;+BAC7D,MAAM,UAAU,MAAM;;;;;;IAMjD;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;aAEG,EAAE,eACO,MAAM,SACZ,MAAM,GAAG,UAAU,GAAG,IAAI,SAC3B;QAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAA;KAAE,GAC3C,OAAO,CAAC,MAAM,CAAC;EAgDrB;AACD,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA"}
@@ -6,6 +6,18 @@ import { pages, pageVersions, spaces } from '../schema.js';
6
6
  import { documentNameOf } from './pages.js';
7
7
  /** How much of the prose a version list shows without loading the document. */
8
8
  const PREVIEW = 160;
9
+ /**
10
+ * What a picture looks like in HTML that is stored rather than shown.
11
+ *
12
+ * A signed storage URL cannot be stored: it is the object's key, which carries the tenant's
13
+ * workspace uuid and the file's own uuid, and it stops working an hour after it is written. So the
14
+ * public render leaves a root-relative reference the publication layer resolves at read time —
15
+ * `publicHtml` turns it into an address on the published site, and drops the picture outright if it
16
+ * cannot. It has to survive `safeHref`, which is why it is a path and not a scheme of its own, and
17
+ * it starts with `__` so no slug the server ever invents can collide with it.
18
+ */
19
+ export const ASSET_REFERENCE_PREFIX = '/__quire-asset/';
20
+ export const assetReference = (fileId) => `${ASSET_REFERENCE_PREFIX}${fileId}`;
9
21
  export function toVersion(row, publishedId) {
10
22
  return {
11
23
  id: row.id,
@@ -207,8 +219,15 @@ export function quireVersions(kernel, access) {
207
219
  * string; a picture whose file has been deleted, or whose storage is not configured, is dropped
208
220
  * rather than drawn as a broken image; a mention of a purged page stays as its label. None of
209
221
  * those is worth turning a read of somebody's history into an error.
222
+ *
223
+ * **`pictures` is a security parameter, not a performance one.** `'signed'` is right for a
224
+ * person reading their own history over an authenticated request: the URL is theirs, it is
225
+ * short-lived, and it is never stored. `'referenced'` is the only thing that may be *written
226
+ * down*, because a signed URL is the storage key — the tenant's workspace uuid and the file's
227
+ * own uuid — and it expires an hour after it is minted. The publication render stores its
228
+ * output, so it uses `'referenced'` and `publicHtml` resolves the reference per read.
210
229
  */
211
- async html(tx, workspaceId, state) {
230
+ async html(tx, workspaceId, state, opts = {}) {
212
231
  const doc = pageDocFromState(state);
213
232
  if (!doc)
214
233
  return '';
@@ -224,20 +243,30 @@ export function quireVersions(kernel, access) {
224
243
  hrefs.set(row.id, `/quire/${row.key}/${row.id}`);
225
244
  }
226
245
  const sources = new Map();
227
- await Promise.all(fileIds.map(async (id) => {
228
- try {
229
- const file = await kernel.call('core.files.get', { id });
230
- if (!file?.key)
231
- return;
232
- sources.set(id, await kernel.storage.presignGet(file.key, {
233
- disposition: 'inline',
234
- contentType: file.mimeType,
235
- }));
236
- }
237
- catch (err) {
238
- kernel.log.warn({ err: String(err), fileId: id }, 'could not sign a picture for a version');
239
- }
240
- }));
246
+ if (opts.pictures === 'referenced') {
247
+ // No storage round trip at all: the reference is the file id, and whether the object is
248
+ // still there is a question for the read that serves it rather than for the render.
249
+ for (const id of fileIds)
250
+ sources.set(id, assetReference(id));
251
+ }
252
+ else {
253
+ await Promise.all(fileIds.map(async (id) => {
254
+ try {
255
+ const file = await kernel.call('core.files.get', {
256
+ id,
257
+ });
258
+ if (!file?.key)
259
+ return;
260
+ sources.set(id, await kernel.storage.presignGet(file.key, {
261
+ disposition: 'inline',
262
+ contentType: file.mimeType,
263
+ }));
264
+ }
265
+ catch (err) {
266
+ kernel.log.warn({ err: String(err), fileId: id }, 'could not sign a picture for a version');
267
+ }
268
+ }));
269
+ }
241
270
  return renderPageDoc(doc, {
242
271
  fileSrc: (id) => sources.get(id) ?? null,
243
272
  pageHref: (id) => hrefs.get(id) ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/server/services/versions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/server/services/versions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ -- Take the storage keys back out of the HTML that is already published.
2
+ --
3
+ -- 0.12.0 drew a published version's pictures as presigned storage URLs and stored the result, so
4
+ -- every published page carrying an image also carried `ws/<workspaceId>/<module>/<yyyy>/<mm>/
5
+ -- <fileId>/<name>` — the tenant's workspace uuid and a file uuid — to anyone on the internet, on the
6
+ -- one surface whose whole rule is that no response contains an id. The same URL is a presigned GET
7
+ -- with an hour on it, so the picture stopped loading sixty minutes after it was published.
8
+ --
9
+ -- The renderer writes `/__quire-asset/<fileId>` now and the read path resolves it per request. This
10
+ -- rewrites the rows that were drawn before that, in place, because a version's HTML is what the
11
+ -- walk requires to serve a page at all: nulling it would take every illustrated page off its
12
+ -- published site until somebody happened to publish it again.
13
+ --
14
+ -- The file id is recovered from the key rather than from a join, because it is in the key — that is
15
+ -- exactly the leak. Idempotent by its `where`: after the first run nothing carries a signature, and
16
+ -- a row that has already been rewritten cannot match the pattern again.
17
+
18
+ update mod_quire.page_versions
19
+ set html = regexp_replace(
20
+ html,
21
+ 'src="[^"]*/ws/[0-9a-fA-F-]{36}/[a-z0-9_]+/[0-9]{4}/[0-9]{2}/([0-9a-fA-F-]{36})/[^"]*"',
22
+ 'src="/__quire-asset/\1"',
23
+ 'g'
24
+ )
25
+ where html is not null
26
+ and html like '%X-Amz-Signature%';
27
+ --> statement-breakpoint
28
+
29
+ -- Anything still holding a signature after that rewrite is a shape this pattern does not know, and
30
+ -- it must not go out either: drop the picture and leave the rest of the page. `publicHtml` refuses
31
+ -- the same thing on the way out, so this is the durable half of a fence that has two.
32
+ update mod_quire.page_versions
33
+ set html = regexp_replace(html, '<img[^>]*X-Amz-Signature[^>]*>', '', 'g')
34
+ where html is not null
35
+ and html like '%X-Amz-Signature%';
@@ -64,6 +64,13 @@
64
64
  "when": 1787867827617,
65
65
  "tag": "0008_publications",
66
66
  "breakpoints": true
67
+ },
68
+ {
69
+ "idx": 9,
70
+ "version": "7",
71
+ "when": 1787954227617,
72
+ "tag": "0009_public_asset_references",
73
+ "breakpoints": true
67
74
  }
68
75
  ]
69
76
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kernhq/module-quire",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Kern Quire: collaborative documents, spaces and page trees",
5
5
  "homepage": "https://github.com/KernAIO/module-quire#readme",
6
6
  "license": "AGPL-3.0-only",