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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,7 +9,7 @@ import { CacheSource, Ceems } from '@nakedcreativity/cee-ms-node';
9
9
  const ceems = new Ceems({
10
10
  assets: './src',
11
11
  cacheSource: CacheSource.S3,
12
- cacheBucket: 'my-site',
12
+ cacheBucket: 'my-site-bucket',
13
13
  viewsPath: './views/',
14
14
  customHandler: true,
15
15
  tags: [],
@@ -38,9 +38,18 @@ Link settings read as their address, like links in modules (`{{ settings.cta.kin
38
38
  the settings as edited; the published site shows them once they are published. A static global named `settings` in
39
39
  `config.globals` takes precedence, so a site that already uses that name keeps working.
40
40
 
41
- Published files are read from `ceems/` in the bucket or folder (`ceems/pages/site.json`, `ceems/pages/<id>.json`,
42
- and `ceems/data/<id>.json` through `loadS3File('data/<id>.json')`), where Cee.ms 2 publishes them. That lets it
43
- publish to the same bucket as Cee.ms 1 while a site moves over. Set `cachePrefix: ''` to read from the top instead.
41
+ ## Reading the published site
42
+
43
+ Cee.ms publishes each environment to its own folder in the site's bucket: `<environment>/pages/site.json`,
44
+ `<environment>/pages/<id>.json` and `<environment>/data/<id>.json` (read through `loadS3File('data/<id>.json')`).
45
+ The bucket is private, in the site owner's AWS account. `CacheSource.S3` reads it (`cacheBucket`, `cacheRegion`)
46
+ with the host's own AWS credentials: a Lambda or container role, OIDC from the host, or keys, as the site chooses. It
47
+ needs `s3:GetObject` on `<bucket>/*/pages/*` and `<bucket>/*/data/*`; Cee.ms's Settings → Storage screen shows the
48
+ statement. Set `CEEMS_ENVIRONMENT` (or `config.environment`) to the environment this server renders, such as
49
+ `live`; it defaults to `development`.
50
+
51
+ `CacheSource.Local` reads a folder (`cacheFolder`) laid out like the bucket. Set `cachePrefix` to read from somewhere
52
+ other than `<environment>/`.
44
53
 
45
54
  ## Structured data
46
55
 
@@ -58,15 +67,15 @@ It outputs the types the page has switched on in its settings, or the site's def
58
67
  page, blog or article), plus a node for the page's **entity**: what the page is about. Each is built from data
59
68
  Cee.ms already has:
60
69
 
61
- | Type | From |
62
- |---|---|
63
- | `website` (WebSite) | the site's name and URL |
64
- | `organisation` (Organization, or a business type such as RealEstateAgent) | the organisation on the Settings screen |
65
- | `webpage` (WebPage) | the page's SEO title, description and social image |
66
- | `breadcrumb` (BreadcrumbList) | home and the page's published ancestors |
67
- | `article` (BlogPosting) | an article's title, description, image, date and tags |
68
- | `faq` (FAQPage) | the questions in the page's modules whose type maps them |
69
- | `entity` (Product, Event, Person or Service) | the page's entity and the details entered for it |
70
+ | Type | From |
71
+ | ------------------------------------------------------------------------- | -------------------------------------------------------- |
72
+ | `website` (WebSite) | the site's name and URL |
73
+ | `organisation` (Organization, or a business type such as RealEstateAgent) | the organisation on the Settings screen |
74
+ | `webpage` (WebPage) | the page's SEO title, description and social image |
75
+ | `breadcrumb` (BreadcrumbList) | home and the page's published ancestors |
76
+ | `article` (BlogPosting) | an article's title, description, image, date and tags |
77
+ | `faq` (FAQPage) | the questions in the page's modules whose type maps them |
78
+ | `entity` (Product, Event, Person or Service) | the page's entity and the details entered for it |
70
79
 
71
80
  By default the site and organisation are described in full on the home page, and other pages refer to them with a
72
81
  short copy (name, URL, logo). A product or event page also gets the reviews in its modules whose type maps them,
@@ -77,12 +86,76 @@ A node missing what it needs (an event with no start date, a product with neithe
77
86
  rather than output invalid, and the tag outputs nothing when no node has data. Name parts to output only those, to
78
87
  place them separately: `{% structureddata 'article' 'faq' %}`, `{% structureddata 'entity' %}`.
79
88
 
80
- The entity is also in templates and modules as `page.entity` (`HOME`, `PAGE`, `PRODUCT`, `EVENT`, `PERSON` or
81
- `SERVICE`), e.g. `{% if page.entity == 'PRODUCT' %}`.
89
+ The entity is also in templates and modules as `page.entity` (`HOME`, `PAGE`, `ARTICLE`, `PERSON`, `PRODUCT`,
90
+ `EVENT` or `SERVICE`), e.g. `{% if page.entity == 'PRODUCT' %}`. A blog's articles are `ARTICLE` unless they choose
91
+ otherwise, and any other page can be one: an article uses the site's article defaults and has authors.
92
+
93
+ ## Link previews
94
+
95
+ Facebook, LinkedIn, WhatsApp, Slack and X don't read JSON-LD: they build link previews from Open Graph `<meta>`
96
+ tags. `{% socialmeta %}` outputs them from the same page data, so put it beside `{% structureddata %}`:
97
+
98
+ ```liquid
99
+ <head>
100
+ {% structureddata %}
101
+ {% socialmeta %}
102
+ </head>
103
+ ```
104
+
105
+ | Tag | From |
106
+ | ---------------------------------------------------------- | ------------------------------------------------------------ |
107
+ | `og:title`, `og:description` | the page's SEO title (else its name) and description |
108
+ | `og:url`, `og:site_name` | the site's URL and name |
109
+ | `og:image` (with its width, height and alt) | the page's social image |
110
+ | `og:type` | `article` for articles, `profile` for people, else `website` |
111
+ | `article:published_time`, `modified_time`, `tag`, `author` | an article's dates, tags and authors' profile pages |
112
+ | `twitter:card` | a large image card with a social image, else a small one |
113
+ | `twitter:site` | the organisation's X profile, among its profile links |
114
+
115
+ X reads the title, description and image from Open Graph, so they aren't repeated. Tags without data are left
116
+ out.
82
117
 
83
118
  The organisation is also in templates as `site.organisation`, e.g. `{{ site.organisation.telephone }}`. For custom
84
119
  tags or routes, `structuredDataGraph(site, page)` returns the graph as an object.
85
120
 
121
+ People feed the structured data too. A page whose entity is `PERSON` and that has its person chosen becomes a
122
+ `ProfilePage`, describing them in full. An article's byline becomes its `author`, with the organisation still the
123
+ publisher, and its reviewer becomes `reviewedBy`. People that a module features through a module type's people
124
+ mapping each get a `Person` node. A person has the same `@id` on every page: their profile page's, or, without one,
125
+ one of the site's.
126
+
127
+ ## Links, documents and rows
128
+
129
+ Links, documents and rows are read from what is published as the page renders, so a renamed page or a replaced
130
+ document is right on every page once that one change is published:
131
+
132
+ - **Page links** take their address from `site.json` `pageIndex`. A link to a page that isn't published reads as
133
+ `''` and has `broken` set, so `{% if link %}` leaves it out. Rich text links to it lose their `href`.
134
+ - **Document values and links** take their address from `site.json` `documents`. A document value prints as its
135
+ address, and keeps `url`, `thumbnail` and `info`: `{{ download }}`, `{{ download.url }}`.
136
+ - **Row fields** read as the row they point at, with its columns: `{{ author.name }}`,
137
+ `{% image person.photo 'square' %}`. A row prints as its `name`. Rows come from the collection's
138
+ `data/<id>.json`, which is read once and kept until `site.json` changes. A deleted row reads as nothing and is
139
+ left out of lists.
140
+
141
+ A site last published before Cee.ms published `pageIndex` keeps the addresses stored with its links, as before.
142
+
143
+ ## People and bylines
144
+
145
+ A site's People (name, job title, photo, bio, profile links, email, telephone, profile page) is published in
146
+ `site.json` `people`. An article's byline is `page.authors`, in order. Each author has a `kind` (`person`, `guest`
147
+ or `organisation`), a `name` and a `url`: a person's profile page, else their first profile link. A person
148
+ author also has all their People columns:
149
+
150
+ ```liquid
151
+ {% for author in page.authors %}
152
+ <a href="{{ author.url }}">{{ author.name }}</a>{% if author.jobTitle %}, {{ author.jobTitle }}{% endif %}
153
+ {% endfor %}
154
+ ```
155
+
156
+ On a profile page, `page.person` is the person. `{% blog news articles 10 author:page.person %}` lists the
157
+ articles they appear in the byline of. With none yet, the list is empty, not a 404.
158
+
86
159
  ## Draft previews
87
160
 
88
161
  The editor loads `GET /draft/{pageId}?token=…` in an iframe. The renderer verifies the token, fetches the draft from
@@ -105,6 +178,12 @@ Optional:
105
178
  Draft responses send `Cache-Control: no-store`, `X-Robots-Tag: noindex`, `frame-ancestors <editor origin>` and
106
179
  `Referrer-Policy: no-referrer` (the token is in the URL).
107
180
 
181
+ ## Upgrading to 2.0.0-beta.6
182
+
183
+ Upgrade the Cee.ms API first. Drafts now ask it for the data a page's rows come from, which earlier versions of
184
+ the API don't send. Before adding `row` fields to a site's module types, move the site to this version of the
185
+ package: older versions print a row reference as an object.
186
+
108
187
  ## Upgrading a site from 1.x
109
188
 
110
189
  2.0 ships with Cee.ms v2. Upgrade a site when it moves to v2: the 1.x `POST /draft` that the old editor uses is gone.
package/lib/draft.js CHANGED
@@ -37,7 +37,7 @@ exports.draftServiceFor = draftServiceFor;
37
37
  const links_1 = require("./links");
38
38
  const cheerio = __importStar(require("cheerio"));
39
39
  const preview_token_1 = require("./preview-token");
40
- const DRAFT_QUERY = 'query Draft($token: String!) { draftRenderPayload(token: $token) { page site } }';
40
+ const DRAFT_QUERY = 'query Draft($token: String!) { draftRenderPayload(token: $token) { page site data } }';
41
41
  /** The origin of an http(s) URL, or undefined. */
42
42
  function originOf(url) {
43
43
  if (!url)
@@ -99,9 +99,14 @@ function draftServiceFor(config = {}) {
99
99
  return { ok: false, status: 502 };
100
100
  }
101
101
  const site = JSON.parse(payload.site);
102
+ // links resolve against the draft site, and rows against the draft's data as it is now
103
+ const data = payload.data ? JSON.parse(payload.data) : {};
104
+ const context = (0, links_1.linkContextFor)(site, Object.values(data));
102
105
  if (site.settings)
103
- site.settings = (0, links_1.wrapLinks)(site.settings);
104
- return { ok: true, page: (0, links_1.wrapLinks)(JSON.parse(payload.page)), site, editorOrigin };
106
+ site.settings = (0, links_1.wrapLinks)(site.settings, context);
107
+ const page = (0, links_1.wrapLinks)(JSON.parse(payload.page), context);
108
+ page.authors = (0, links_1.bylineAuthors)(page, site, context);
109
+ return { ok: true, page, site, editorOrigin };
105
110
  },
106
111
  setHeaders(res, editorOrigin) {
107
112
  res.set({
package/lib/draft.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"draft.js","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,0CAoEC;AA3GD,mCAAmE;AAEnE,iDAAmC;AAEnC,mDAAqD;AAYrD,MAAM,WAAW,GAAG,uFAAuF,CAAC;AAE5G,kDAAkD;AAClD,SAAS,QAAQ,CAAC,GAAuB;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACnG,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,6DAA6D;AAC7D,SAAS,MAAM,CAAC,GAAuB;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,SAAwB,EAAE;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAEnE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO;QACH,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK;YACrB,MAAM,QAAQ,GAAG,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;YACzD,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC;YACpE,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAEhE,IAAI,IAAS,CAAC;YACd,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC9C,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;oBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;oBAClE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;iBACtC,CAAC,CAAC;gBACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC5F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YACtC,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;gBACjD,IAAI,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,WAAW;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;gBAC1F,IAAI,IAAI,KAAK,WAAW;oBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;gBAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YACtC,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,uFAAuF;YACvF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAA,sBAAc,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrE,MAAM,IAAI,GAAG,IAAA,iBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO,GAAG,IAAA,qBAAa,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAClD,CAAC;QAED,UAAU,CAAC,GAAG,EAAE,YAAY;YACxB,GAAG,CAAC,GAAG,CAAC;gBACJ,eAAe,EAAE,UAAU;gBAC3B,cAAc,EAAE,mBAAmB;gBACnC,yBAAyB,EAAE,mBAAmB,YAAY,IAAI,cAAc,IAAI,QAAQ,EAAE;gBAC1F,4EAA4E;gBAC5E,iBAAiB,EAAE,aAAa;gBAChC,wBAAwB,EAAE,SAAS;aACtC,CAAC,CAAC;QACP,CAAC;QAED,YAAY,CAAC,IAAI,EAAE,YAAY;YAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,CAAC,CAAC,yBAAyB,CAAC;iBACtC,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,GAAG,YAAY,YAAY,CAAC;iBACrD,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;YAC9C,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;KACJ,CAAC;AACN,CAAC"}
package/lib/index.d.ts CHANGED
@@ -5,8 +5,10 @@ import { Storage } from './storage';
5
5
  export * from './interfaces';
6
6
  export { signPreviewToken, verifyPreviewToken } from './preview-token';
7
7
  export { renderState } from './state';
8
- export { LinkDrop, wrapLinks } from './links';
8
+ export { DocumentDrop, LinkDrop, RowDrop, linkContextFor, wrapLinks } from './links';
9
+ export type { LinkContext } from './links';
9
10
  export { enabledTypes, entityOf, serialiseJsonLd, structuredDataGraph } from './structured-data';
11
+ export { socialMeta, renderSocialMeta, SocialMetaTag } from './social-meta';
10
12
  export type { StructuredDataPart } from './structured-data';
11
13
  /**
12
14
  * A Cee.ms site renderer: an Express app that renders published pages, and verified editor drafts, with the
@@ -23,10 +25,23 @@ export declare class Ceems {
23
25
  site: CeemsSite | undefined;
24
26
  storage: Storage;
25
27
  private drafts;
28
+ /** The `site.json` the data file cache was filled for: publishing rewrites it, which empties the cache. */
29
+ private siteSource;
30
+ private dataFiles;
26
31
  constructor(config: CeemsConfig);
32
+ private storageFor;
27
33
  private registerTags;
28
34
  /** Loads the published `site.json`, remembers it as `this.site`, and returns it. */
29
35
  loadSite(): Promise<CeemsSite>;
36
+ /** A published data file, read once until the site is next published. `null` if it isn't published. */
37
+ private dataFile;
38
+ /**
39
+ * What a page's references resolve against: the site's pages and documents, and the rows of the data
40
+ * collections it points at, and of those their rows point at.
41
+ */
42
+ private linkContext;
43
+ /** Wraps a page's references (see `wrapLinks`) and adds its byline as `page.authors`. */
44
+ private resolvePage;
30
45
  /**
31
46
  * Loads the published page for the request's path (or the `404` page), ready for `render`. With
32
47
  * `loadPage` false, returns `page` as given (for custom routes that build their own page object).
@@ -34,8 +49,11 @@ export declare class Ceems {
34
49
  load(req: CeemsRequest, res: express.Response, loadPage?: boolean, page?: CeemsPage): Promise<CeemsPage>;
35
50
  /** Reads a published file, under `cachePrefix`. */
36
51
  private readPublished;
37
- /** Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`). */
38
- loadPageFile(id: string): Promise<CeemsPage>;
52
+ /**
53
+ * Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`), resolved
54
+ * against `site` (by default the last site loaded), and row references read as their rows (`RowDrop`).
55
+ */
56
+ loadPageFile(id: string, site?: CeemsSite | undefined): Promise<CeemsPage>;
39
57
  /** Synchronous local read, kept for custom tags. `filename` is a full path. */
40
58
  loadLocalFile(filename: string): any;
41
59
  /**
package/lib/index.js CHANGED
@@ -39,7 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.Ceems = exports.structuredDataGraph = exports.serialiseJsonLd = exports.entityOf = exports.enabledTypes = exports.wrapLinks = exports.LinkDrop = exports.renderState = exports.verifyPreviewToken = exports.signPreviewToken = void 0;
42
+ exports.Ceems = exports.renderSocialMeta = exports.socialMeta = exports.structuredDataGraph = exports.serialiseJsonLd = exports.entityOf = exports.enabledTypes = exports.wrapLinks = exports.linkContextFor = exports.RowDrop = exports.LinkDrop = exports.DocumentDrop = exports.renderState = exports.verifyPreviewToken = exports.signPreviewToken = void 0;
43
43
  const express_1 = __importDefault(require("express"));
44
44
  const path_1 = __importDefault(require("path"));
45
45
  const fs_1 = __importDefault(require("fs"));
@@ -59,13 +59,19 @@ Object.defineProperty(exports, "verifyPreviewToken", { enumerable: true, get: fu
59
59
  var state_2 = require("./state");
60
60
  Object.defineProperty(exports, "renderState", { enumerable: true, get: function () { return state_2.renderState; } });
61
61
  var links_2 = require("./links");
62
+ Object.defineProperty(exports, "DocumentDrop", { enumerable: true, get: function () { return links_2.DocumentDrop; } });
62
63
  Object.defineProperty(exports, "LinkDrop", { enumerable: true, get: function () { return links_2.LinkDrop; } });
64
+ Object.defineProperty(exports, "RowDrop", { enumerable: true, get: function () { return links_2.RowDrop; } });
65
+ Object.defineProperty(exports, "linkContextFor", { enumerable: true, get: function () { return links_2.linkContextFor; } });
63
66
  Object.defineProperty(exports, "wrapLinks", { enumerable: true, get: function () { return links_2.wrapLinks; } });
64
67
  var structured_data_1 = require("./structured-data");
65
68
  Object.defineProperty(exports, "enabledTypes", { enumerable: true, get: function () { return structured_data_1.enabledTypes; } });
66
69
  Object.defineProperty(exports, "entityOf", { enumerable: true, get: function () { return structured_data_1.entityOf; } });
67
70
  Object.defineProperty(exports, "serialiseJsonLd", { enumerable: true, get: function () { return structured_data_1.serialiseJsonLd; } });
68
71
  Object.defineProperty(exports, "structuredDataGraph", { enumerable: true, get: function () { return structured_data_1.structuredDataGraph; } });
72
+ var social_meta_1 = require("./social-meta");
73
+ Object.defineProperty(exports, "socialMeta", { enumerable: true, get: function () { return social_meta_1.socialMeta; } });
74
+ Object.defineProperty(exports, "renderSocialMeta", { enumerable: true, get: function () { return social_meta_1.renderSocialMeta; } });
69
75
  /**
70
76
  * A Cee.ms site renderer: an Express app that renders published pages, and verified editor drafts, with the
71
77
  * site's Liquid templates.
@@ -81,6 +87,9 @@ class Ceems {
81
87
  site;
82
88
  storage;
83
89
  drafts;
90
+ /** The `site.json` the data file cache was filled for: publishing rewrites it, which empties the cache. */
91
+ siteSource;
92
+ dataFiles = new Map();
84
93
  constructor(config) {
85
94
  this.config = config;
86
95
  // set defaults
@@ -91,17 +100,15 @@ class Ceems {
91
100
  this.config.viewsPath = './views/';
92
101
  }
93
102
  if (this.config.cachePrefix === undefined) {
94
- this.config.cachePrefix = 'ceems/';
103
+ const environment = this.config.environment || process.env.CEEMS_ENVIRONMENT || 'development';
104
+ this.config.cachePrefix = environment + '/';
95
105
  }
96
106
  if (this.config.liquidCache === undefined) {
97
107
  this.config.liquidCache = true;
98
108
  }
99
109
  this.config.tags = this.config.tags || [];
100
110
  this.config.filters = this.config.filters || [];
101
- this.storage =
102
- this.config.cacheSource === interfaces_1.CacheSource.S3
103
- ? (0, storage_1.s3Storage)(this.config.cacheBucket || '', this.config.cacheRegion || process.env.AWS_REGION)
104
- : (0, storage_1.localStorage)(this.config.cacheFolder || './');
111
+ this.storage = this.storageFor(this.config);
105
112
  // One engine for the life of the process. Site data is passed per render, never through these options.
106
113
  this.engine = new liquidjs_1.Liquid({
107
114
  root: path_1.default.resolve(this.config.viewsPath),
@@ -145,6 +152,12 @@ class Ceems {
145
152
  });
146
153
  }
147
154
  }
155
+ storageFor(config) {
156
+ if (config.cacheSource === interfaces_1.CacheSource.S3) {
157
+ return (0, storage_1.s3Storage)(config.cacheBucket || '', config.cacheRegion || process.env.AWS_REGION);
158
+ }
159
+ return (0, storage_1.localStorage)(config.cacheFolder || './');
160
+ }
148
161
  registerTags() {
149
162
  (0, tags_1.registerRegionTag)(this.engine);
150
163
  (0, tags_1.registerModuleTag)(this.engine);
@@ -155,6 +168,7 @@ class Ceems {
155
168
  (0, tags_1.registerImageUrlTag)(this.engine);
156
169
  (0, tags_1.registerBreadcrumbTag)(this.engine);
157
170
  (0, tags_1.registerStructuredDataTag)(this.engine);
171
+ (0, tags_1.registerSocialMetaTag)(this.engine);
158
172
  (0, filters_1.registerActiveFilter)(this.engine);
159
173
  (0, filters_1.registerSlugifyFilter)(this.engine);
160
174
  // custom tags and filters
@@ -167,13 +181,47 @@ class Ceems {
167
181
  }
168
182
  /** Loads the published `site.json`, remembers it as `this.site`, and returns it. */
169
183
  async loadSite() {
170
- const site = JSON.parse(await this.readPublished('pages/site.json'));
184
+ const source = await this.readPublished('pages/site.json');
185
+ if (source !== this.siteSource) {
186
+ this.dataFiles.clear();
187
+ this.siteSource = source;
188
+ }
189
+ const site = JSON.parse(source);
171
190
  // stored links in settings read as their address, as in pages
172
191
  if (site.settings)
173
- site.settings = (0, links_1.wrapLinks)(site.settings);
192
+ site.settings = (0, links_1.wrapLinks)(site.settings, (0, links_1.linkContextFor)(site));
174
193
  this.site = site;
175
194
  return site;
176
195
  }
196
+ /** A published data file, read once until the site is next published. `null` if it isn't published. */
197
+ dataFile(id) {
198
+ let file = this.dataFiles.get(id);
199
+ if (!file) {
200
+ file = this.readPublished('data/' + id + '.json').then((source) => JSON.parse(source), () => null);
201
+ this.dataFiles.set(id, file);
202
+ }
203
+ return file;
204
+ }
205
+ /**
206
+ * What a page's references resolve against: the site's pages and documents, and the rows of the data
207
+ * collections it points at, and of those their rows point at.
208
+ */
209
+ async linkContext(site, value) {
210
+ // collections whose referenced rows aren't all people from site.json
211
+ const needed = (rows, skip = new Set()) => [...rows].flatMap(([id, ids]) => skip.has(id) || [...ids].every((row) => site?.people?.[row]) ? [] : [id]);
212
+ const first = needed((0, links_1.referencedRows)(value));
213
+ let files = await Promise.all(first.map((id) => this.dataFile(id)));
214
+ const further = needed((0, links_1.referencedRows)([...files.map((file) => file?.rows), ...Object.values(site?.people ?? {})]), new Set(first));
215
+ if (further.length)
216
+ files = [...files, ...(await Promise.all(further.map((id) => this.dataFile(id))))];
217
+ return (0, links_1.linkContextFor)(site, files);
218
+ }
219
+ /** Wraps a page's references (see `wrapLinks`) and adds its byline as `page.authors`. */
220
+ resolvePage(page, site, context) {
221
+ const wrapped = (0, links_1.wrapLinks)(page, context);
222
+ wrapped.authors = (0, links_1.bylineAuthors)(wrapped, site, context);
223
+ return wrapped;
224
+ }
177
225
  /**
178
226
  * Loads the published page for the request's path (or the `404` page), ready for `render`. With
179
227
  * `loadPage` false, returns `page` as given (for custom routes that build their own page object).
@@ -184,7 +232,7 @@ class Ceems {
184
232
  const { path, pagination } = this.parsePath(req);
185
233
  const entry = site.pages[path];
186
234
  if (entry) {
187
- page = await this.loadPageFile(entry._id);
235
+ page = await this.loadPageFile(entry._id, site);
188
236
  page.fullpath = entry.url == 'home' ? '' : entry.url;
189
237
  page.path = page.fullpath.split('/');
190
238
  if (pagination)
@@ -194,7 +242,7 @@ class Ceems {
194
242
  res.status(404);
195
243
  const notFound = site.pages['404'];
196
244
  if (notFound) {
197
- page = await this.loadPageFile(notFound._id);
245
+ page = await this.loadPageFile(notFound._id, site);
198
246
  }
199
247
  }
200
248
  }
@@ -207,20 +255,28 @@ class Ceems {
207
255
  readPublished(key) {
208
256
  return this.storage.read(this.config.cachePrefix + key);
209
257
  }
210
- /** Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`). */
211
- async loadPageFile(id) {
212
- return (0, links_1.wrapLinks)(JSON.parse(await this.readPublished('pages/' + id + '.json')));
258
+ /**
259
+ * Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`), resolved
260
+ * against `site` (by default the last site loaded), and row references read as their rows (`RowDrop`).
261
+ */
262
+ async loadPageFile(id, site = this.site) {
263
+ const page = JSON.parse(await this.readPublished('pages/' + id + '.json'));
264
+ return this.resolvePage(page, site, await this.linkContext(site, page));
213
265
  }
214
266
  /** Synchronous local read, kept for custom tags. `filename` is a full path. */
215
267
  loadLocalFile(filename) {
216
- return (0, links_1.wrapLinks)(JSON.parse(fs_1.default.readFileSync(filename, 'utf8')));
268
+ return (0, links_1.wrapLinks)(JSON.parse(fs_1.default.readFileSync(filename, 'utf8')), {
269
+ pageIndex: this.site?.pageIndex,
270
+ documents: this.site?.documents,
271
+ });
217
272
  }
218
273
  /**
219
274
  * Reads and parses a published JSON file, kept for custom tags. `filename` is as published, such as
220
275
  * `data/<id>.json`; it is read under `cachePrefix`.
221
276
  */
222
277
  async loadS3File(filename) {
223
- return (0, links_1.wrapLinks)(JSON.parse(await this.readPublished(filename)));
278
+ const value = JSON.parse(await this.readPublished(filename));
279
+ return (0, links_1.wrapLinks)(value, await this.linkContext(this.site, value));
224
280
  }
225
281
  /** The site path for a request (`home` for `/`), and the blog page number if the URL ends in one. */
226
282
  parsePath(req) {
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}