@nakedcreativity/cee-ms-node 2.0.0-beta.5 → 2.0.0-beta.9

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.
@@ -1,4 +1,4 @@
1
- import type { CeemsPage, CeemsSite, PageEntity, StructuredDataDefaults, StructuredDataType } from './interfaces';
1
+ import type { CeemsImage, CeemsPage, CeemsSite, PageEntity, StructuredDataDefaults, StructuredDataType } from './interfaces';
2
2
  /** The types a page or the site's defaults can switch on, in the order the tag outputs them. */
3
3
  export declare const STRUCTURED_DATA_TYPES: readonly StructuredDataType[];
4
4
  /** What `{% structureddata %}` can be limited to: the types, and the page's entity (its product, event…). */
@@ -25,4 +25,11 @@ export declare function structuredDataGraph(site: CeemsSite, page: CeemsPage, on
25
25
  };
26
26
  /** JSON for a `<script>`: `<`, `>` and `&` are escaped so content can't end the script. */
27
27
  export declare function serialiseJsonLd(value: unknown): string;
28
+ export declare function imageUrl(image?: CeemsImage | null): string | undefined;
29
+ /** A date published as an ISO string (or a `Date`, for custom pages) as an ISO string. */
30
+ export declare function isoDate(value: unknown): string | undefined;
31
+ /** A non-empty trimmed string, else `undefined`. Stored links (`LinkDrop`) read as their address. */
32
+ export declare function text(value: unknown): string | undefined;
33
+ /** Rich text as plain text, for properties that take no markup. */
34
+ export declare function plain(value: unknown): unknown;
28
35
  export {};
@@ -5,6 +5,10 @@ exports.entityOf = entityOf;
5
5
  exports.enabledTypes = enabledTypes;
6
6
  exports.structuredDataGraph = structuredDataGraph;
7
7
  exports.serialiseJsonLd = serialiseJsonLd;
8
+ exports.imageUrl = imageUrl;
9
+ exports.isoDate = isoDate;
10
+ exports.text = text;
11
+ exports.plain = plain;
8
12
  /** The types a page or the site's defaults can switch on, in the order the tag outputs them. */
9
13
  exports.STRUCTURED_DATA_TYPES = [
10
14
  'WEBSITE',
@@ -29,15 +33,20 @@ exports.DEFAULT_STRUCTURED_DATA = {
29
33
  const REVIEWED = ['PRODUCT', 'EVENT'];
30
34
  /** The page's entity, defaulting as Cee.ms publishes it, for pages published before entities. */
31
35
  function entityOf(page) {
32
- return page.entity ?? (page.fullpath ? 'PAGE' : 'HOME');
36
+ if (page.entity)
37
+ return page.entity;
38
+ if (page.type === 'article')
39
+ return 'ARTICLE';
40
+ return page.fullpath ? 'PAGE' : 'HOME';
33
41
  }
34
- /** Which of the site's defaults a page uses: blogs and articles by their type, else home or page. */
42
+ /** Which of the site's defaults a page uses: articles and home by their entity, blogs by their type. */
35
43
  function kindOf(page) {
36
- if (page.type === 'article')
44
+ const entity = entityOf(page);
45
+ if (entity === 'ARTICLE')
37
46
  return 'article';
38
47
  if (page.type === 'blog')
39
48
  return 'blog';
40
- return entityOf(page) === 'HOME' ? 'home' : 'page';
49
+ return entity === 'HOME' ? 'home' : 'page';
41
50
  }
42
51
  /** The types a page outputs: its own choice, else the site's defaults for its kind. */
43
52
  function enabledTypes(site, page) {
@@ -65,16 +74,23 @@ function structuredDataGraph(site, page, only) {
65
74
  if (node)
66
75
  graph.push(node);
67
76
  }
68
- if (entity && (!only || only.includes('ENTITY')))
69
- graph.push(entity);
77
+ if (!only || only.includes('ENTITY')) {
78
+ if (entity)
79
+ graph.push(entity);
80
+ // people the page's modules feature, each once
81
+ const ids = new Set(graph.map((n) => n['@id']));
82
+ for (const person of featuredPeople(b)) {
83
+ if (ids.has(person['@id']))
84
+ continue;
85
+ ids.add(person['@id']);
86
+ graph.push(person);
87
+ }
88
+ }
70
89
  return { '@context': 'https://schema.org', '@graph': graph };
71
90
  }
72
91
  /** JSON for a `<script>`: `<`, `>` and `&` are escaped so content can't end the script. */
73
92
  function serialiseJsonLd(value) {
74
- return JSON.stringify(value)
75
- .replace(/</g, '\\u003c')
76
- .replace(/>/g, '\\u003e')
77
- .replace(/&/g, '\\u0026');
93
+ return JSON.stringify(value).replace(/</g, '\\u003c').replace(/>/g, '\\u003e').replace(/&/g, '\\u0026');
78
94
  }
79
95
  /** The URLs and shared properties every builder needs. */
80
96
  class Builder {
@@ -122,6 +138,61 @@ class Builder {
122
138
  logo: imageUrl(org.logo),
123
139
  });
124
140
  }
141
+ /** An address on the site as an absolute URL; one that is already absolute is left alone. */
142
+ absolute(href) {
143
+ return /^https?:\/\//i.test(href) ? href : `${this.root}${href.startsWith('/') ? '' : '/'}${href}`;
144
+ }
145
+ /**
146
+ * A person from People. Every page uses the same `@id` for them: their profile page's when it is published,
147
+ * else one of the site's. The short copy names them; `full` describes them, as their profile page and the
148
+ * pages featuring them do.
149
+ */
150
+ person(person, full = false) {
151
+ const name = text(person.name);
152
+ if (!name)
153
+ return;
154
+ const profile = text(person.profile);
155
+ const sameAs = list(sameAsOf(person));
156
+ const short = compact({
157
+ '@type': 'Person',
158
+ '@id': profile ? `${this.absolute(profile)}#person` : this.id('', `person-${person._id}`),
159
+ name,
160
+ jobTitle: text(person.jobTitle),
161
+ url: profile ? this.absolute(profile) : sameAs?.[0],
162
+ });
163
+ if (!full)
164
+ return short;
165
+ return compact({
166
+ ...short,
167
+ image: imageUrl(person.photo),
168
+ description: text(plain(person.bio)),
169
+ sameAs,
170
+ worksFor: this.organisation,
171
+ });
172
+ }
173
+ /** An article's authors (`page.authors`), else the organisation. One author is a node; several, a list. */
174
+ get authors() {
175
+ const nodes = (this.page.authors ?? []).flatMap((author) => {
176
+ if (author.kind === 'person')
177
+ return list([this.person(author)]) ?? [];
178
+ if (author.kind === 'organisation')
179
+ return list([this.organisation]) ?? [];
180
+ const name = text(author.name);
181
+ return name
182
+ ? [compact({ '@type': 'Person', name, jobTitle: text(author.jobTitle), url: text(author.url) })]
183
+ : [];
184
+ });
185
+ if (!nodes.length)
186
+ return this.organisation;
187
+ return nodes.length === 1 ? nodes[0] : nodes;
188
+ }
189
+ /** The person from People whose profile page this is, once loaded (see `wrapLinks`). */
190
+ get profilePerson() {
191
+ const person = this.page.person;
192
+ return entityOf(this.page) === 'PERSON' && person && typeof person === 'object' && text(person.name)
193
+ ? person
194
+ : undefined;
195
+ }
125
196
  /** The website, by `@id` when this page carries it, else a short copy. */
126
197
  get website() {
127
198
  const ref = { '@id': this.id('', 'website') };
@@ -173,8 +244,11 @@ const BUILDERS = {
173
244
  WEBPAGE(b) {
174
245
  if (!b.root)
175
246
  return;
247
+ const profile = !!b.profilePerson;
248
+ const reviewer = b.page.byline?.reviewedBy;
176
249
  return compact({
177
- '@type': 'WebPage',
250
+ // a page about one person from People is their profile page
251
+ '@type': profile ? 'ProfilePage' : 'WebPage',
178
252
  '@id': b.id(b.page.fullpath, 'webpage'),
179
253
  url: b.pageUrl,
180
254
  name: b.pageName,
@@ -185,7 +259,9 @@ const BUILDERS = {
185
259
  ? { '@id': b.id(b.page.fullpath, 'breadcrumb') }
186
260
  : undefined,
187
261
  mainEntity: b.entityId ? { '@id': b.entityId } : undefined,
262
+ dateCreated: profile ? isoDate(b.page.createdAt) : undefined,
188
263
  dateModified: isoDate(b.page.updatedAt),
264
+ reviewedBy: reviewer && typeof reviewer === 'object' ? b.person(reviewer) : undefined,
189
265
  });
190
266
  },
191
267
  BREADCRUMB(b) {
@@ -205,7 +281,7 @@ const BUILDERS = {
205
281
  };
206
282
  },
207
283
  ARTICLE(b) {
208
- if (b.page.type !== 'article' || !b.pageName)
284
+ if (entityOf(b.page) !== 'ARTICLE' || !b.pageName)
209
285
  return;
210
286
  const published = isoDate(b.page.date) ?? isoDate(b.page.publishedAt);
211
287
  return compact({
@@ -217,7 +293,7 @@ const BUILDERS = {
217
293
  datePublished: published,
218
294
  dateModified: isoDate(b.page.updatedAt) ?? published,
219
295
  mainEntityOfPage: b.root ? { '@id': b.id(b.page.fullpath, 'webpage') } : undefined,
220
- author: b.organisation,
296
+ author: b.authors,
221
297
  publisher: b.organisation,
222
298
  keywords: list(b.page.tags)?.join(', '),
223
299
  });
@@ -273,11 +349,7 @@ const ENTITIES = {
273
349
  eventAttendanceMode: event.attendance
274
350
  ? `https://schema.org/${pascal(event.attendance)}EventAttendanceMode`
275
351
  : undefined,
276
- location: event.attendance === 'ONLINE'
277
- ? virtual
278
- : event.attendance === 'MIXED'
279
- ? list([place, virtual])
280
- : place,
352
+ location: event.attendance === 'ONLINE' ? virtual : event.attendance === 'MIXED' ? list([place, virtual]) : place,
281
353
  image: imageUrl(event.image) ?? imageUrl(b.page.social),
282
354
  offers: offer(event.offers, b.pageUrl),
283
355
  organizer: b.organisation,
@@ -307,6 +379,11 @@ const ENTITIES = {
307
379
  });
308
380
  },
309
381
  PERSON(b) {
382
+ // their full description, on their profile page
383
+ const chosen = b.profilePerson;
384
+ if (chosen)
385
+ return compact({ ...b.person(chosen, true), '@id': b.id(b.page.fullpath, 'person'), url: b.pageUrl });
386
+ // the details typed on the page, before People
310
387
  const person = b.page.structuredData?.person;
311
388
  if (!person?.name)
312
389
  return;
@@ -387,6 +464,36 @@ function reviews(b) {
387
464
  },
388
465
  };
389
466
  }
467
+ /** A person's profile addresses: `sameAs` from `site.json`, else their `links` column. */
468
+ function sameAsOf(person) {
469
+ if (Array.isArray(person.sameAs))
470
+ return person.sameAs.map(String);
471
+ const links = Array.isArray(person.links) ? person.links : [];
472
+ return links.flatMap((link) => {
473
+ const url = text(link?.url);
474
+ return url ? [url] : [];
475
+ });
476
+ }
477
+ /**
478
+ * The people the page's modules feature, from module types that map a row field to People: each described,
479
+ * and working for the organisation. A person merely mentioned in a module without the mapping isn't output.
480
+ */
481
+ function featuredPeople(b) {
482
+ const mappings = b.site.site?.structuredData?.peopleModules ?? {};
483
+ const nodes = [];
484
+ for (const module of pageModules(b.page)) {
485
+ const map = mappings[module.type];
486
+ const value = map && module.content?.[map.field];
487
+ for (const person of Array.isArray(value) ? value : value ? [value] : []) {
488
+ if (!person || typeof person !== 'object')
489
+ continue;
490
+ const node = b.person(person, true);
491
+ if (node)
492
+ nodes.push(node);
493
+ }
494
+ }
495
+ return nodes;
496
+ }
390
497
  /** Home, then the page's published ancestors, as `tags/breadcrumb.ts` walks them, ending at the page. */
391
498
  function crumbs(b) {
392
499
  const { site, page } = b;
@@ -1 +1 @@
1
- {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../src/structured-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../src/structured-data.ts"],"names":[],"mappings":";;;AA4CA,4BAIC;AAWD,oCAKC;AAOD,kDAsBC;AAGD,0CAEC;AA+cD,4BAEC;AAGD,0BAIC;AAGD,oBAIC;AAGD,sBAMC;AA9jBD,gGAAgG;AACnF,QAAA,qBAAqB,GAAkC;IAChE,SAAS;IACT,cAAc;IACd,SAAS;IACT,YAAY;IACZ,SAAS;IACT,KAAK;CACR,CAAC;AAKW,QAAA,qBAAqB,GAAkC,CAAC,GAAG,6BAAqB,EAAE,QAAQ,CAAC,CAAC;AAEzG;;;GAGG;AACU,QAAA,uBAAuB,GAA2B;IAC3D,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,CAAC;IACnD,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;IACtC,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;IACtC,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC;CACvD,CAAC;AAEF,mGAAmG;AACnG,MAAM,QAAQ,GAA0B,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAI7D,iGAAiG;AACjG,SAAgB,QAAQ,CAAC,IAAe;IACpC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,CAAC;IACpC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,wGAAwG;AACxG,SAAS,MAAM,CAAC,IAAe;IAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACxC,OAAO,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,uFAAuF;AACvF,SAAgB,YAAY,CAAC,IAAe,EAAE,IAAe;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,+BAAuB,CAAC,IAAI,CAAC,CAAC;AACxF,CAAC;AAED;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,IAAe,EAAE,IAAe,EAAE,IAA2B;IAC7F,MAAM,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAW,CAAC;IAEjD,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,6BAAqB,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAAE,SAAS;QACrE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,+CAA+C;QAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAE,SAAS;YACrC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACjE,CAAC;AAED,2FAA2F;AAC3F,SAAgB,eAAe,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC5G,CAAC;AAED,0DAA0D;AAC1D,MAAM,OAAO;IAOI;IACA;IAPJ,IAAI,CAAS;IACb,OAAO,CAA0B;IAC1C,4DAA4D;IAC5D,QAAQ,CAAU;IAElB,YACa,IAAe,EACf,IAAe,EACxB,OAA6B;QAFpB,SAAI,GAAJ,IAAI,CAAW;QACf,SAAI,GAAJ,IAAI,CAAW;QAGxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,iEAAiE;IACjE,GAAG,CAAC,IAAI,GAAG,EAAE;QACT,OAAO,IAAI,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC;IAC9E,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,EAAE,CAAC,IAAwB,EAAE,QAAgB;QACzC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACzC,IAAI,CAAC,GAAG,EAAE,IAAI;YAAE,OAAO;QACvB,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YAAE,OAAO,GAAG,CAAC;QACjD,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,cAAc;YACnC,GAAG,GAAG;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACP,CAAC;IAED,6FAA6F;IAC7F,QAAQ,CAAC,IAAY;QACjB,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC;IACvG,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAc,EAAE,IAAI,GAAG,KAAK;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC;YAClB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,MAAM,CAAC,GAAG,EAAE,CAAC;YACzF,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/B,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,OAAO,OAAO,CAAC;YACX,GAAG,KAAK;YACR,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAA+B,CAAC;YACvD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,YAAY;SAC9B,CAAC,CAAC;IACP,CAAC;IAED,2GAA2G;IAC3G,IAAI,OAAO;QACP,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAU,EAAE;YAC/D,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjF,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;gBAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO,IAAI;gBACP,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChG,CAAC,CAAC,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC5C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjD,CAAC;IAED,wFAAwF;IACxF,IAAI,aAAa;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAA4B,CAAC;QACtD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAChG,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;IAED,0EAA0E;IAC1E,IAAI,OAAO;QACP,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,GAAG,CAAC;QAC5C,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;CACJ;AAED,MAAM,QAAQ,GAAiE;IAC3E,OAAO,CAAC,CAAC;QACL,IAAI,CAAC,CAAC,CAAC,IAAI;YAAE,OAAO;QACpB,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC;YAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;YACZ,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;YAC7B,SAAS,EAAE,CAAC,CAAC,YAAY;SAC5B,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,CAAC;QACV,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,IAAI;YAAE,OAAO;QACvB,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,cAAc;YACnC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC;YAC/B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACpD,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,iEAAiE;YACjE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YAC/E,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YAC9B,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACxB,yBAAyB,EAAE,IAAI,CAC3B,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;iBACnB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;iBACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACT,OAAO,EAAE,2BAA2B;gBACpC,SAAS,EAAE,CAAC,CAAC,IAAI;gBACjB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,MAAM,EAAE,CAAC,CAAC,MAAM;aACnB,CAAC,CAAC,CACV;YACD,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;SACnC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,CAAC;QACL,IAAI,CAAC,CAAC,CAAC,IAAI;YAAE,OAAO;QACpB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAgC,CAAC;QACjE,OAAO,OAAO,CAAC;YACX,4DAA4D;YAC5D,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;YAC5C,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;YACvC,GAAG,EAAE,CAAC,CAAC,OAAO;YACd,IAAI,EAAE,CAAC,CAAC,QAAQ;YAChB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3C,QAAQ,EAAE,CAAC,CAAC,OAAO;YACnB,UAAU,EACN,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;gBAC/C,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;gBAChD,CAAC,CAAC,SAAS;YACnB,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;YAC1D,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5D,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACvC,UAAU,EAAE,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SACxF,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,CAAC;QACR,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,sDAAsD;QACtD,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QACxC,OAAO;YACH,OAAO,EAAE,gBAAgB;YACzB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;YAC1C,eAAe,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACrC,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,CAAC,GAAG,CAAC;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,GAAG;aACjB,CAAC,CAAC;SACN,CAAC;IACN,CAAC;IAED,OAAO,CAAC,CAAC;QACL,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ;YAAE,OAAO;QAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,aAAa;YACtB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;YACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAAS;YACpD,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAClF,MAAM,EAAE,CAAC,CAAC,OAAO;YACjB,SAAS,EAAE,CAAC,CAAC,YAAY;YACzB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;SAC1C,CAAC,CAAC;IACP,CAAC;IAED,GAAG,CAAC,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,IAAI,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAW,EAAE,CAAC;QAC7B,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,SAAS;YACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7C,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;oBAAE,SAAS;gBAC/B,SAAS,CAAC,IAAI,CAAC;oBACX,OAAO,EAAE,UAAU;oBACnB,IAAI;oBACJ,cAAc,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;iBACtD,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO;QAC9B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IAC9F,CAAC;CACJ,CAAC;AAEF,wFAAwF;AACxF,MAAM,QAAQ,GAAkE;IAC5E,KAAK,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC;YAClB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;YAChC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;SAClD,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1G,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YACrC,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YAChE,SAAS;YACT,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACzF,mBAAmB,EAAE,KAAK,CAAC,UAAU;gBACjC,CAAC,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,qBAAqB;gBACrE,CAAC,CAAC,SAAS;YACf,QAAQ,EACJ,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YAC3G,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACvD,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;YACtC,SAAS,EAAE,CAAC,CAAC,YAAY;YACzB,GAAG,OAAO,CAAC,CAAC,CAAC;SAChB,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,CAAC;QACL,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,8CAA8C;QAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QACrC,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;YACvC,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACnE,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAC1D,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC;YACvB,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;YAC7E,MAAM;YACN,GAAG,KAAK;SACX,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,CAAC;QACJ,gDAAgD;QAChD,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC;QAC/B,IAAI,MAAM;YACN,OAAO,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1G,+CAA+C;QAC/C,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,IAAI;YAAE,OAAO;QAC1B,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACtC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC/B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YACzD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YACxD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC3B,QAAQ,EAAE,CAAC,CAAC,YAAY;SAC3B,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,CAAC;QACL,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,OAAO,OAAO,CAAC;YACX,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;YACvC,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACnE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YACvC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;YACrC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAC1D,QAAQ,EAAE,CAAC,CAAC,YAAY;YACxB,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;SAC5C,CAAC,CAAC;IACP,CAAC;CACJ,CAAC;AAEF;;;;GAIG;AACH,SAAS,OAAO,CAAC,CAAU;IACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,IAAI,EAAE,CAAC;IAClE,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,IAAI,KAAkD,CAAC;IACvD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,KAAK,IAAI,MAAM,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK;gBAAE,SAAS;YAC/F,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAC1B,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YACxF,MAAM,CAAC,IAAI,CACP,OAAO,CAAC;gBACJ,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC3C,YAAY,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE;gBAC9F,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1E,aAAa,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aAC1F,CAAC,CACL,CAAC;QACN,CAAC;IACL,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO;QACH,MAAM;QACN,eAAe,EAAE;YACb,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;YAC1D,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,UAAU,EAAE,KAAK,CAAC,IAAI;YACtB,WAAW,EAAE,KAAK,CAAC,KAAK;SAC3B;KACJ,CAAC;AACN,CAAC;AAKD,0FAA0F;AAC1F,SAAS,QAAQ,CAAC,MAAc;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAE,IAA0B,EAAE,GAAG,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,CAAU;IAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,IAAI,EAAE,CAAC;IAClE,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACvE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,SAAS;YACpD,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,MAAgB,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,yGAAyG;AACzG,SAAS,MAAM,CAAC,CAAU;IACtB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACzB,MAAM,KAAK,GAAoC,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;IAC9B,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEjC,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,MAAM,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,IAAI,GAAG,CAAC;QAChB,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,IAAe;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC7F,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,KAAK,CAAC,CAAkC,EAAE,WAAmB;IAClE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ;QAAE,OAAO;IAC7D,OAAO,OAAO,CAAC;QACX,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,aAAa,EAAE,CAAC,CAAC,QAAQ;QACzB,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;QACzF,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,WAAW;KAClC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,aAAa,CAAC,OAA4B;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC;QACjB,OAAO,EAAE,eAAe;QACxB,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACvC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACpC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;KACxC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAyB;IAC9C,OAAO,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED,0FAA0F;AAC1F,SAAgB,OAAO,CAAC,KAAc;IAClC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED,qGAAqG;AACrG,SAAgB,IAAI,CAAC,KAAc;IAC/B,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO;IAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7B,CAAC;AAED,mEAAmE;AACnE,SAAgB,KAAK,CAAC,KAAc;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,KAAK;SACP,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,gEAAgE;AAChE,SAAS,MAAM,CAAC,KAAa;IACzB,OAAO,KAAK;SACP,WAAW,EAAE;SACb,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,IAAI,CAAI,MAA0C;IACvD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAU,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC;AAED,oCAAoC;AACpC,SAAS,OAAO,CAAC,IAAU;IACvB,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;AACvF,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Liquid } from 'liquidjs';
2
2
  /**
3
- * `{% blog <name> <template> [perPage] [tag] %}` renders one page of a blog's articles from `site.json` `blogs`,
4
- * optionally filtered by tag. The page number comes from the URL (`/news/2`).
3
+ * `{% blog <name> <template> [perPage] [tag] [author:<person>] %}` renders one page of a blog's articles from
4
+ * `site.json` `blogs`, optionally filtered by tag, or by a person from People in their byline (a person, such
5
+ * as `page.person` on their profile page, or a row id). The page number comes from the URL (`/news/2`).
5
6
  */
6
7
  export declare function registerBlogTag(engine: Liquid): void;
package/lib/tags/blog.js CHANGED
@@ -3,13 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerBlogTag = registerBlogTag;
4
4
  const state_1 = require("../state");
5
5
  /**
6
- * `{% blog <name> <template> [perPage] [tag] %}` renders one page of a blog's articles from `site.json` `blogs`,
7
- * optionally filtered by tag. The page number comes from the URL (`/news/2`).
6
+ * `{% blog <name> <template> [perPage] [tag] [author:<person>] %}` renders one page of a blog's articles from
7
+ * `site.json` `blogs`, optionally filtered by tag, or by a person from People in their byline (a person, such
8
+ * as `page.person` on their profile page, or a row id). The page number comes from the URL (`/news/2`).
8
9
  */
9
10
  function registerBlogTag(engine) {
10
11
  engine.registerTag('blog', {
11
12
  parse: function (tagToken) {
12
- this.match = tagToken.args.split(' ');
13
+ const args = tagToken.args.split(' ').filter(Boolean);
14
+ const author = args.find((a) => a.startsWith('author:'));
15
+ this.author = author?.slice('author:'.length);
16
+ this.match = args.filter((a) => a !== author);
13
17
  },
14
18
  render: function (context) {
15
19
  const { site, page } = (0, state_1.renderState)(context);
@@ -28,13 +32,18 @@ function registerBlogTag(engine) {
28
32
  else {
29
33
  articles = blog.articles;
30
34
  }
35
+ if (this.author) {
36
+ const person = engine.evalValueSync(this.author, context);
37
+ const id = person && typeof person === 'object' ? person._id : person;
38
+ articles = articles.filter((article) => (article.authors ?? []).map(String).includes(String(id)));
39
+ }
31
40
  const articlesPerPage = this.match[2] ? parseInt(this.match[2]) : 10;
32
41
  const pagination = page.pagination || 1;
33
42
  const start = articlesPerPage * (pagination - 1);
34
43
  const end = start + articlesPerPage;
35
44
  const lastPage = Math.ceil(articles.length / articlesPerPage);
36
- // a page number past the last article is a 404
37
- if (start >= articles.length) {
45
+ // a page number past the last article is a 404; the first page of none is just empty
46
+ if (start >= articles.length && pagination > 1) {
38
47
  throw new state_1.NotFoundError('This page does not exist');
39
48
  }
40
49
  let template = engine.evalValueSync(this.match[1], context);
@@ -1 +1 @@
1
- {"version":3,"file":"blog.js","sourceRoot":"","sources":["../../src/tags/blog.ts"],"names":[],"mappings":";;AAOA,0CAgDC;AAtDD,oCAA2E;AAE3E;;;GAGG;AACH,SAAgB,eAAe,CAAC,MAAc;IAC1C,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;QACvB,KAAK,EAAE,UAAU,QAAQ;YACrB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,MAAM,EAAE,UAAU,OAAO;YACrB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,gDAAgD;YAChD,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,IAAI,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvD,IAAI,CAAC,GAAG,EAAE,CAAC;oBACP,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,eAAe,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM,GAAG,GAAG,KAAK,GAAG,eAAe,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;YAE9D,+CAA+C;YAC/C,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,qBAAa,CAAC,0BAA0B,CAAC,CAAC;YACxD,CAAC;YAED,IAAI,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO,MAAM,CAAC,UAAU,CACpB,QAAQ,GAAG,SAAS,EACpB;gBACI,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;gBACpE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE;aACpB,EACD,IAAA,2BAAmB,EAAC,OAAO,CAAC,CAC/B,CAAC;QACN,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"blog.js","sourceRoot":"","sources":["../../src/tags/blog.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,4 @@ export * from './navigation';
6
6
  export * from './breadcrumb';
7
7
  export * from './blog';
8
8
  export * from './structured-data';
9
+ export * from './social-meta';
package/lib/tags/index.js CHANGED
@@ -22,4 +22,5 @@ __exportStar(require("./navigation"), exports);
22
22
  __exportStar(require("./breadcrumb"), exports);
23
23
  __exportStar(require("./blog"), exports);
24
24
  __exportStar(require("./structured-data"), exports);
25
+ __exportStar(require("./social-meta"), exports);
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tags/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,+CAA6B;AAC7B,+CAA6B;AAC7B,yCAAuB;AACvB,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tags/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB;AACzB,yCAAuB;AACvB,0CAAwB;AACxB,+CAA6B;AAC7B,+CAA6B;AAC7B,yCAAuB;AACvB,oDAAkC;AAClC,gDAA8B"}
@@ -0,0 +1,6 @@
1
+ import { Liquid } from 'liquidjs';
2
+ /**
3
+ * `{% socialmeta %}` outputs the page's link-preview `<meta>` tags: Open Graph for Facebook, LinkedIn,
4
+ * WhatsApp and the rest, and X's card. Place it in `<head>`, beside `{% structureddata %}`.
5
+ */
6
+ export declare function registerSocialMetaTag(engine: Liquid): void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerSocialMetaTag = registerSocialMetaTag;
4
+ const state_1 = require("../state");
5
+ const social_meta_1 = require("../social-meta");
6
+ /**
7
+ * `{% socialmeta %}` outputs the page's link-preview `<meta>` tags: Open Graph for Facebook, LinkedIn,
8
+ * WhatsApp and the rest, and X's card. Place it in `<head>`, beside `{% structureddata %}`.
9
+ */
10
+ function registerSocialMetaTag(engine) {
11
+ engine.registerTag('socialmeta', {
12
+ parse: function () { },
13
+ render: function (context) {
14
+ const { site, page } = (0, state_1.renderState)(context);
15
+ return (0, social_meta_1.renderSocialMeta)((0, social_meta_1.socialMeta)(site, page));
16
+ },
17
+ });
18
+ }
19
+ //# sourceMappingURL=social-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"social-meta.js","sourceRoot":"","sources":["../../src/tags/social-meta.ts"],"names":[],"mappings":";;AAQA,sDAQC;AAfD,oCAAuC;AACvC,gDAA8D;AAE9D;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,MAAc;IAChD,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE;QAC7B,KAAK,EAAE,cAAa,CAAC;QACrB,MAAM,EAAE,UAAU,OAAO;YACrB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC;YAC5C,OAAO,IAAA,8BAAgB,EAAC,IAAA,wBAAU,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACpD,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
package/lib/views.d.ts ADDED
@@ -0,0 +1,76 @@
1
+ import type express from 'express';
2
+ /**
3
+ * What a site's views need from the editor, read from their source: which are layouts (templates, with the
4
+ * regions they place) and which are modules (module types, with the values they read). Served to the Cee.ms
5
+ * editor at `GET /ceems/views`, which suggests templates and module types from it.
6
+ *
7
+ * Views can be grouped in folders, `layouts/`, `modules/` and `partials/`, which then decide what each one
8
+ * is. A site with none of them keeps every view at the top: a view with a `{% region %}` is a layout, and the
9
+ * rest are modules. Either way a view is named by its file name alone, as templates and modules refer to it.
10
+ */
11
+ /** The folders views can be grouped in, in the order a name is looked up. */
12
+ export declare const VIEW_FOLDERS: readonly ["layouts", "modules", "partials"];
13
+ /** The page id the Cee.ms API signs a preview token with to read the views. */
14
+ export declare const VIEWS_TOKEN_SUBJECT = "ceems:views";
15
+ export interface ViewManifest {
16
+ version: 1;
17
+ views: ViewInfo[];
18
+ warnings: string[];
19
+ }
20
+ export interface ViewInfo {
21
+ /** The file name without `.liquid`: what a module's `type` and a template's `layout` name. */
22
+ name: string;
23
+ /** Relative to the views folder, e.g. `modules/text.liquid`. */
24
+ path: string;
25
+ kind: 'layout' | 'module' | 'partial';
26
+ /** From an `@name` annotation. */
27
+ title?: string;
28
+ /** The keys of its `{% region %}` tags, in order. */
29
+ regions: string[];
30
+ variables: ViewVariable[];
31
+ }
32
+ export type ViewHint = 'output' | 'image' | 'date' | 'href' | 'condition' | 'case' | 'raw';
33
+ export interface ViewVariable {
34
+ key: string;
35
+ /**
36
+ * How the view uses it: printed (`{{ x }}`), in `{% image %}`, with a `date` filter, as a link's `href`, in
37
+ * a condition, in a `case`, as a block of HTML.
38
+ */
39
+ hints: ViewHint[];
40
+ /** What the view reads from it: `x.url` reads `url`. */
41
+ properties: string[];
42
+ /** The values `{% when %}` compares it with, under `{% case %}`. */
43
+ options: string[];
44
+ /** When the view loops over it: what each item reads (`p.name` reads `name`). */
45
+ items?: ViewVariable[];
46
+ /** From an `@field` annotation: TEXT, TEXTBOX, RICH_TEXT, SELECT, CHECKBOX, DATE, IMAGE, DOCUMENT, LINK or CONTRIBUTOR. */
47
+ kind?: string;
48
+ /** From an `@field` annotation. */
49
+ label?: string;
50
+ }
51
+ export interface ScanOptions {
52
+ /** Static globals the site's templates read, which aren't module values. */
53
+ globals?: string[];
54
+ }
55
+ /** The views folder and those of its subfolders that exist: the roots views are looked up in, in order. */
56
+ export declare function viewRoots(viewsPath: string): string[];
57
+ /** Reads every view in the folder (and its `layouts/`, `modules/` and `partials/`). */
58
+ export declare function scanViews(viewsPath: string, options?: ScanOptions): ViewManifest;
59
+ /** Where `GET /ceems/views` reads from, and the secret its tokens are signed with. */
60
+ export interface ViewsRouteConfig {
61
+ secret?: string;
62
+ viewsPath: string;
63
+ globals?: string[];
64
+ }
65
+ /**
66
+ * `GET /ceems/views?token=…`: the views' manifest, for the editor. The token is a preview token signed for
67
+ * `VIEWS_TOKEN_SUBJECT`; the editor it names may read the response from the browser, which is how it reaches
68
+ * a site running on `localhost`. 404 without a preview secret, like drafts.
69
+ */
70
+ export declare function viewsHandler(config: ViewsRouteConfig): express.RequestHandler;
71
+ /**
72
+ * `OPTIONS /ceems/views?token=…`: the browser's preflight. Chrome sends one before a public page (the editor)
73
+ * reads from a private address (`localhost`), and needs `Access-Control-Allow-Private-Network` back. Any page
74
+ * may make the request: only the editor a valid token names can read the views it returns.
75
+ */
76
+ export declare function viewsPreflightHandler(): express.RequestHandler;