@nakedcreativity/cee-ms-node 2.0.0-beta.10 → 2.0.0-beta.2
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 +1 -174
- package/lib/draft.js +3 -8
- package/lib/draft.js.map +1 -1
- package/lib/index.d.ts +4 -31
- package/lib/index.js +18 -123
- package/lib/index.js.map +1 -1
- package/lib/interfaces.d.ts +2 -276
- package/lib/interfaces.js +0 -1
- package/lib/interfaces.js.map +1 -1
- package/lib/links.d.ts +2 -67
- package/lib/links.js +7 -201
- package/lib/links.js.map +1 -1
- package/lib/storage.d.ts +0 -1
- package/lib/storage.js +1 -3
- package/lib/storage.js.map +1 -1
- package/lib/tags/blog.d.ts +2 -3
- package/lib/tags/blog.js +5 -14
- package/lib/tags/blog.js.map +1 -1
- package/lib/tags/index.d.ts +0 -2
- package/lib/tags/index.js +0 -2
- package/lib/tags/index.js.map +1 -1
- package/package.json +1 -8
- package/lib/social-meta.d.ts +0 -15
- package/lib/social-meta.js +0 -74
- package/lib/social-meta.js.map +0 -1
- package/lib/structured-data.d.ts +0 -35
- package/lib/structured-data.js +0 -591
- package/lib/structured-data.js.map +0 -1
- package/lib/tags/social-meta.d.ts +0 -6
- package/lib/tags/social-meta.js +0 -19
- package/lib/tags/social-meta.js.map +0 -1
- package/lib/tags/structured-data.d.ts +0 -8
- package/lib/tags/structured-data.js +0 -36
- package/lib/tags/structured-data.js.map +0 -1
- package/lib/views.d.ts +0 -76
- package/lib/views.js +0 -426
- package/lib/views.js.map +0 -1
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',
|
|
13
13
|
viewsPath: './views/',
|
|
14
14
|
customHandler: true,
|
|
15
15
|
tags: [],
|
|
@@ -38,129 +38,6 @@ 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
|
-
## 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>/`.
|
|
53
|
-
|
|
54
|
-
## Structured data
|
|
55
|
-
|
|
56
|
-
`{% structureddata %}` outputs the page's [schema.org](https://schema.org) JSON-LD in one
|
|
57
|
-
`<script type="application/ld+json">`. Put it in the layout's `<head>`:
|
|
58
|
-
|
|
59
|
-
```liquid
|
|
60
|
-
<head>
|
|
61
|
-
<title>{{ page.title | default: page.name }} | {{ site.name }}</title>
|
|
62
|
-
{% structureddata %}
|
|
63
|
-
</head>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
It outputs the types the page has switched on in its settings, or the site's defaults for its kind of page (home,
|
|
67
|
-
page, blog or article), plus a node for the page's **entity**: what the page is about. Each is built from data
|
|
68
|
-
Cee.ms already has:
|
|
69
|
-
|
|
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 |
|
|
79
|
-
|
|
80
|
-
By default the site and organisation are described in full on the home page, and other pages refer to them with a
|
|
81
|
-
short copy (name, URL, logo). A product or event page also gets the reviews in its modules whose type maps them,
|
|
82
|
-
with a rating worked out from them, so the markup always matches what the page shows. Reviews on other pages are
|
|
83
|
-
left out: Google ignores reviews a business publishes about itself.
|
|
84
|
-
|
|
85
|
-
A node missing what it needs (an event with no start date, a product with neither a price nor reviews) is left out
|
|
86
|
-
rather than output invalid, and the tag outputs nothing when no node has data. Name parts to output only those, to
|
|
87
|
-
place them separately: `{% structureddata 'article' 'faq' %}`, `{% structureddata 'entity' %}`.
|
|
88
|
-
|
|
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.
|
|
117
|
-
|
|
118
|
-
The organisation is also in templates as `site.organisation`, e.g. `{{ site.organisation.telephone }}`. For custom
|
|
119
|
-
tags or routes, `structuredDataGraph(site, page)` returns the graph as an object.
|
|
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
|
-
A page set to redirect in Cee.ms (its settings' redirect, such as a section that goes to its first page) isn't
|
|
144
|
-
rendered: `render` sends the visitor on with a 302, so changing where it points takes effect at once. If the
|
|
145
|
-
page it points at isn't published, the page renders as usual. Draft previews always render it, so it can be
|
|
146
|
-
edited.
|
|
147
|
-
|
|
148
|
-
## People and bylines
|
|
149
|
-
|
|
150
|
-
A site's People (name, job title, photo, bio, profile links, email, telephone, profile page) is published in
|
|
151
|
-
`site.json` `people`. An article's byline is `page.authors`, in order. Each author has a `kind` (`person`, `guest`
|
|
152
|
-
or `organisation`), a `name` and a `url`: a person's profile page, else their first profile link. A person
|
|
153
|
-
author also has all their People columns:
|
|
154
|
-
|
|
155
|
-
```liquid
|
|
156
|
-
{% for author in page.authors %}
|
|
157
|
-
<a href="{{ author.url }}">{{ author.name }}</a>{% if author.jobTitle %}, {{ author.jobTitle }}{% endif %}
|
|
158
|
-
{% endfor %}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
On a profile page, `page.person` is the person. `{% blog news articles 10 author:page.person %}` lists the
|
|
162
|
-
articles they appear in the byline of. With none yet, the list is empty, not a 404.
|
|
163
|
-
|
|
164
41
|
## Draft previews
|
|
165
42
|
|
|
166
43
|
The editor loads `GET /draft/{pageId}?token=…` in an iframe. The renderer verifies the token, fetches the draft from
|
|
@@ -183,62 +60,12 @@ Optional:
|
|
|
183
60
|
Draft responses send `Cache-Control: no-store`, `X-Robots-Tag: noindex`, `frame-ancestors <editor origin>` and
|
|
184
61
|
`Referrer-Policy: no-referrer` (the token is in the URL).
|
|
185
62
|
|
|
186
|
-
## Views and the editor
|
|
187
|
-
|
|
188
|
-
A view is named by its file name alone: a module of type `text` renders `text.liquid`, a page from a template
|
|
189
|
-
with the layout `default` renders `default.liquid`. Views can be grouped in folders, which also tell the editor
|
|
190
|
-
what each one is:
|
|
191
|
-
|
|
192
|
-
```
|
|
193
|
-
views/
|
|
194
|
-
layouts/default.liquid templates: each {% region %} is somewhere modules go
|
|
195
|
-
modules/text.liquid module types: the values they print are their fields
|
|
196
|
-
partials/nav.liquid everything else (navigation, includes)
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Names are looked up in `views/`, then `layouts/`, `modules/` and `partials/`, so a site with every view at the
|
|
200
|
-
top of `views/` works as before.
|
|
201
|
-
|
|
202
|
-
When the preview secret is set, `GET /ceems/views?token=…` lists the views for the Cee.ms editor, which
|
|
203
|
-
suggests templates and module types from them: their regions, and for modules the values they read and how (an
|
|
204
|
-
image, a date, a link, a list of items). Run it again from the editor as the site grows. The token is one the
|
|
205
|
-
editor signs for this purpose, and only that editor may read the response, from the browser: that is how it
|
|
206
|
-
reaches a site running on `localhost` (the route answers Chrome's private network preflight). Without folders,
|
|
207
|
-
a view with a `{% region %}` is taken to be a layout, and the rest modules.
|
|
208
|
-
|
|
209
|
-
The guesses can be overridden in a comment at the top of a view:
|
|
210
|
-
|
|
211
|
-
```liquid
|
|
212
|
-
{% comment %}
|
|
213
|
-
@name Team members
|
|
214
|
-
@field intro RICH_TEXT Introduction
|
|
215
|
-
@field people.photo IMAGE Photo
|
|
216
|
-
{% endcomment %}
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
`@field <key> <kind> [label]` sets a field's kind (`TEXT`, `TEXTBOX`, `RICH_TEXT`, `SELECT`, `CHECKBOX`, `DATE`,
|
|
220
|
-
`IMAGE`, `DOCUMENT`, `LINK` or `CONTRIBUTOR`) and label; `people.photo` is the `photo` of each item looped over
|
|
221
|
-
in `people`. `scanViews(viewsPath)` returns the same list, for scripts.
|
|
222
|
-
|
|
223
|
-
## Upgrading to 2.0.0-beta.8
|
|
224
|
-
|
|
225
|
-
- **Views in folders** (`layouts/`, `modules/`, `partials/`), and **`GET /ceems/views`** for the editor's view
|
|
226
|
-
sync (above). Sites with flat views are unchanged.
|
|
227
|
-
|
|
228
|
-
## Upgrading to 2.0.0-beta.6
|
|
229
|
-
|
|
230
|
-
Upgrade the Cee.ms API first. Drafts now ask it for the data a page's rows come from, which earlier versions of
|
|
231
|
-
the API don't send. Before adding `row` fields to a site's module types, move the site to this version of the
|
|
232
|
-
package: older versions print a row reference as an object.
|
|
233
|
-
|
|
234
63
|
## Upgrading a site from 1.x
|
|
235
64
|
|
|
236
65
|
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.
|
|
237
66
|
|
|
238
67
|
- **Node 22 or later.** Update the Lambda runtime.
|
|
239
68
|
- **Set `CEEMS_PREVIEW_SECRET`** (above).
|
|
240
|
-
- **Published files are read from `ceems/`** in the bucket (above). Custom tags calling `loadS3File` keep passing
|
|
241
|
-
the same names (`data/<id>.json`).
|
|
242
69
|
- **No code changes are needed for the common pattern** (`ceems.load(req, res, true)` then `ceems.render(page, …)`,
|
|
243
70
|
`ceems.site`, `ceems.loadS3File`, `ceems.loadLocalFile`, `context.globals` in custom tags). `ceems.site` is now
|
|
244
71
|
always the published site; it never holds draft data.
|
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 } }';
|
|
41
41
|
/** The origin of an http(s) URL, or undefined. */
|
|
42
42
|
function originOf(url) {
|
|
43
43
|
if (!url)
|
|
@@ -99,14 +99,9 @@ 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));
|
|
105
102
|
if (site.settings)
|
|
106
|
-
site.settings = (0, links_1.wrapLinks)(site.settings
|
|
107
|
-
|
|
108
|
-
page.authors = (0, links_1.bylineAuthors)(page, site, context);
|
|
109
|
-
return { ok: true, page, site, editorOrigin };
|
|
103
|
+
site.settings = (0, links_1.wrapLinks)(site.settings);
|
|
104
|
+
return { ok: true, page: (0, links_1.wrapLinks)(JSON.parse(payload.page)), site, editorOrigin };
|
|
110
105
|
},
|
|
111
106
|
setHeaders(res, editorOrigin) {
|
|
112
107
|
res.set({
|
package/lib/draft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,
|
|
1
|
+
{"version":3,"file":"draft.js","sourceRoot":"","sources":["../src/draft.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -5,13 +5,7 @@ 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 {
|
|
9
|
-
export type { LinkContext } from './links';
|
|
10
|
-
export { enabledTypes, entityOf, serialiseJsonLd, structuredDataGraph } from './structured-data';
|
|
11
|
-
export { socialMeta, renderSocialMeta, SocialMetaTag } from './social-meta';
|
|
12
|
-
export type { StructuredDataPart } from './structured-data';
|
|
13
|
-
export { VIEW_FOLDERS, VIEWS_TOKEN_SUBJECT, scanViews, viewRoots } from './views';
|
|
14
|
-
export type { ScanOptions, ViewHint, ViewInfo, ViewManifest, ViewVariable } from './views';
|
|
8
|
+
export { LinkDrop, wrapLinks } from './links';
|
|
15
9
|
/**
|
|
16
10
|
* A Cee.ms site renderer: an Express app that renders published pages, and verified editor drafts, with the
|
|
17
11
|
* site's Liquid templates.
|
|
@@ -27,41 +21,20 @@ export declare class Ceems {
|
|
|
27
21
|
site: CeemsSite | undefined;
|
|
28
22
|
storage: Storage;
|
|
29
23
|
private drafts;
|
|
30
|
-
/** The `site.json` the data file cache was filled for: publishing rewrites it, which empties the cache. */
|
|
31
|
-
private siteSource;
|
|
32
|
-
private dataFiles;
|
|
33
24
|
constructor(config: CeemsConfig);
|
|
34
|
-
private storageFor;
|
|
35
25
|
private registerTags;
|
|
36
26
|
/** Loads the published `site.json`, remembers it as `this.site`, and returns it. */
|
|
37
27
|
loadSite(): Promise<CeemsSite>;
|
|
38
|
-
/** A published data file, read once until the site is next published. `null` if it isn't published. */
|
|
39
|
-
private dataFile;
|
|
40
|
-
/**
|
|
41
|
-
* What a page's references resolve against: the site's pages and documents, and the rows of the data
|
|
42
|
-
* collections it points at, and of those their rows point at.
|
|
43
|
-
*/
|
|
44
|
-
private linkContext;
|
|
45
|
-
/** Wraps a page's references (see `wrapLinks`) and adds its byline as `page.authors`. */
|
|
46
|
-
private resolvePage;
|
|
47
28
|
/**
|
|
48
29
|
* Loads the published page for the request's path (or the `404` page), ready for `render`. With
|
|
49
30
|
* `loadPage` false, returns `page` as given (for custom routes that build their own page object).
|
|
50
31
|
*/
|
|
51
32
|
load(req: CeemsRequest, res: express.Response, loadPage?: boolean, page?: CeemsPage): Promise<CeemsPage>;
|
|
52
|
-
/** Reads
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`), resolved
|
|
56
|
-
* against `site` (by default the last site loaded), and row references read as their rows (`RowDrop`).
|
|
57
|
-
*/
|
|
58
|
-
loadPageFile(id: string, site?: CeemsSite | undefined): Promise<CeemsPage>;
|
|
33
|
+
/** Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`). */
|
|
34
|
+
loadPageFile(id: string): Promise<CeemsPage>;
|
|
59
35
|
/** Synchronous local read, kept for custom tags. `filename` is a full path. */
|
|
60
36
|
loadLocalFile(filename: string): any;
|
|
61
|
-
/**
|
|
62
|
-
* Reads and parses a published JSON file, kept for custom tags. `filename` is as published, such as
|
|
63
|
-
* `data/<id>.json`; it is read under `cachePrefix`.
|
|
64
|
-
*/
|
|
37
|
+
/** Reads and parses a published JSON file, kept for custom tags. `filename` is relative to the bucket. */
|
|
65
38
|
loadS3File(filename: string): Promise<any>;
|
|
66
39
|
/** The site path for a request (`home` for `/`), and the blog page number if the URL ends in one. */
|
|
67
40
|
parsePath(req: CeemsRequest): {
|
package/lib/index.js
CHANGED
|
@@ -39,8 +39,9 @@ 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.
|
|
42
|
+
exports.Ceems = exports.wrapLinks = exports.LinkDrop = exports.renderState = exports.verifyPreviewToken = exports.signPreviewToken = void 0;
|
|
43
43
|
const express_1 = __importDefault(require("express"));
|
|
44
|
+
const path_1 = __importDefault(require("path"));
|
|
44
45
|
const fs_1 = __importDefault(require("fs"));
|
|
45
46
|
const liquidjs_1 = require("liquidjs");
|
|
46
47
|
const links_1 = require("./links");
|
|
@@ -51,7 +52,6 @@ const interfaces_1 = require("./interfaces");
|
|
|
51
52
|
const storage_1 = require("./storage");
|
|
52
53
|
const state_1 = require("./state");
|
|
53
54
|
const draft_1 = require("./draft");
|
|
54
|
-
const views_1 = require("./views");
|
|
55
55
|
__exportStar(require("./interfaces"), exports);
|
|
56
56
|
var preview_token_1 = require("./preview-token");
|
|
57
57
|
Object.defineProperty(exports, "signPreviewToken", { enumerable: true, get: function () { return preview_token_1.signPreviewToken; } });
|
|
@@ -59,24 +59,8 @@ 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; } });
|
|
63
62
|
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; } });
|
|
66
63
|
Object.defineProperty(exports, "wrapLinks", { enumerable: true, get: function () { return links_2.wrapLinks; } });
|
|
67
|
-
var structured_data_1 = require("./structured-data");
|
|
68
|
-
Object.defineProperty(exports, "enabledTypes", { enumerable: true, get: function () { return structured_data_1.enabledTypes; } });
|
|
69
|
-
Object.defineProperty(exports, "entityOf", { enumerable: true, get: function () { return structured_data_1.entityOf; } });
|
|
70
|
-
Object.defineProperty(exports, "serialiseJsonLd", { enumerable: true, get: function () { return structured_data_1.serialiseJsonLd; } });
|
|
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; } });
|
|
75
|
-
var views_2 = require("./views");
|
|
76
|
-
Object.defineProperty(exports, "VIEW_FOLDERS", { enumerable: true, get: function () { return views_2.VIEW_FOLDERS; } });
|
|
77
|
-
Object.defineProperty(exports, "VIEWS_TOKEN_SUBJECT", { enumerable: true, get: function () { return views_2.VIEWS_TOKEN_SUBJECT; } });
|
|
78
|
-
Object.defineProperty(exports, "scanViews", { enumerable: true, get: function () { return views_2.scanViews; } });
|
|
79
|
-
Object.defineProperty(exports, "viewRoots", { enumerable: true, get: function () { return views_2.viewRoots; } });
|
|
80
64
|
/**
|
|
81
65
|
* A Cee.ms site renderer: an Express app that renders published pages, and verified editor drafts, with the
|
|
82
66
|
* site's Liquid templates.
|
|
@@ -92,9 +76,6 @@ class Ceems {
|
|
|
92
76
|
site;
|
|
93
77
|
storage;
|
|
94
78
|
drafts;
|
|
95
|
-
/** The `site.json` the data file cache was filled for: publishing rewrites it, which empties the cache. */
|
|
96
|
-
siteSource;
|
|
97
|
-
dataFiles = new Map();
|
|
98
79
|
constructor(config) {
|
|
99
80
|
this.config = config;
|
|
100
81
|
// set defaults
|
|
@@ -104,21 +85,18 @@ class Ceems {
|
|
|
104
85
|
if (!this.config.viewsPath) {
|
|
105
86
|
this.config.viewsPath = './views/';
|
|
106
87
|
}
|
|
107
|
-
if (this.config.cachePrefix === undefined) {
|
|
108
|
-
const environment = this.config.environment || process.env.CEEMS_ENVIRONMENT || 'development';
|
|
109
|
-
this.config.cachePrefix = environment + '/';
|
|
110
|
-
}
|
|
111
88
|
if (this.config.liquidCache === undefined) {
|
|
112
89
|
this.config.liquidCache = true;
|
|
113
90
|
}
|
|
114
91
|
this.config.tags = this.config.tags || [];
|
|
115
92
|
this.config.filters = this.config.filters || [];
|
|
116
|
-
this.storage =
|
|
93
|
+
this.storage =
|
|
94
|
+
this.config.cacheSource === interfaces_1.CacheSource.S3
|
|
95
|
+
? (0, storage_1.s3Storage)(this.config.cacheBucket || '', this.config.cacheRegion || process.env.AWS_REGION)
|
|
96
|
+
: (0, storage_1.localStorage)(this.config.cacheFolder || './');
|
|
117
97
|
// One engine for the life of the process. Site data is passed per render, never through these options.
|
|
118
|
-
// Views can be grouped in `layouts/`, `modules/` and `partials/`, still named by file name alone.
|
|
119
|
-
const roots = (0, views_1.viewRoots)(this.config.viewsPath);
|
|
120
98
|
this.engine = new liquidjs_1.Liquid({
|
|
121
|
-
root:
|
|
99
|
+
root: path_1.default.resolve(this.config.viewsPath),
|
|
122
100
|
extname: '.liquid',
|
|
123
101
|
cache: this.config.liquidCache,
|
|
124
102
|
jsTruthy: true,
|
|
@@ -128,7 +106,7 @@ class Ceems {
|
|
|
128
106
|
this.app = (0, express_1.default)();
|
|
129
107
|
this.app.set('case sensitive routing', true);
|
|
130
108
|
this.app.engine('liquid', this.engine.express());
|
|
131
|
-
this.app.set('views',
|
|
109
|
+
this.app.set('views', this.config.viewsPath);
|
|
132
110
|
this.app.set('view engine', 'liquid');
|
|
133
111
|
this.app.use(express_1.default.static(this.config.assets));
|
|
134
112
|
this.app.use(express_1.default.json({ limit: this.config.parseLimit || '250kb' }));
|
|
@@ -136,15 +114,6 @@ class Ceems {
|
|
|
136
114
|
// Drafts are registered before the published-site middleware: they never read or replace `this.site`.
|
|
137
115
|
this.drafts = (0, draft_1.draftServiceFor)(this.config.preview);
|
|
138
116
|
this.app.get('/draft/:pageId', (req, res) => this.handleDraft(req, res));
|
|
139
|
-
// The views' manifest, for the editor to suggest templates and module types from. Also before the
|
|
140
|
-
// published site: a new site has nothing published yet.
|
|
141
|
-
const views = {
|
|
142
|
-
secret: this.config.preview?.secret || process.env.CEEMS_PREVIEW_SECRET,
|
|
143
|
-
viewsPath: this.config.viewsPath,
|
|
144
|
-
globals: Object.keys(this.config.globals || {}),
|
|
145
|
-
};
|
|
146
|
-
this.app.options('/ceems/views', (0, views_1.viewsPreflightHandler)());
|
|
147
|
-
this.app.get('/ceems/views', (0, views_1.viewsHandler)(views));
|
|
148
117
|
// load the published site map for every page request
|
|
149
118
|
this.app.use((req, res, next) => {
|
|
150
119
|
this.loadSite().then((site) => {
|
|
@@ -168,12 +137,6 @@ class Ceems {
|
|
|
168
137
|
});
|
|
169
138
|
}
|
|
170
139
|
}
|
|
171
|
-
storageFor(config) {
|
|
172
|
-
if (config.cacheSource === interfaces_1.CacheSource.S3) {
|
|
173
|
-
return (0, storage_1.s3Storage)(config.cacheBucket || '', config.cacheRegion || process.env.AWS_REGION);
|
|
174
|
-
}
|
|
175
|
-
return (0, storage_1.localStorage)(config.cacheFolder || './');
|
|
176
|
-
}
|
|
177
140
|
registerTags() {
|
|
178
141
|
(0, tags_1.registerRegionTag)(this.engine);
|
|
179
142
|
(0, tags_1.registerModuleTag)(this.engine);
|
|
@@ -183,8 +146,6 @@ class Ceems {
|
|
|
183
146
|
(0, tags_1.registerImageTag)(this.engine);
|
|
184
147
|
(0, tags_1.registerImageUrlTag)(this.engine);
|
|
185
148
|
(0, tags_1.registerBreadcrumbTag)(this.engine);
|
|
186
|
-
(0, tags_1.registerStructuredDataTag)(this.engine);
|
|
187
|
-
(0, tags_1.registerSocialMetaTag)(this.engine);
|
|
188
149
|
(0, filters_1.registerActiveFilter)(this.engine);
|
|
189
150
|
(0, filters_1.registerSlugifyFilter)(this.engine);
|
|
190
151
|
// custom tags and filters
|
|
@@ -197,47 +158,13 @@ class Ceems {
|
|
|
197
158
|
}
|
|
198
159
|
/** Loads the published `site.json`, remembers it as `this.site`, and returns it. */
|
|
199
160
|
async loadSite() {
|
|
200
|
-
const
|
|
201
|
-
if (source !== this.siteSource) {
|
|
202
|
-
this.dataFiles.clear();
|
|
203
|
-
this.siteSource = source;
|
|
204
|
-
}
|
|
205
|
-
const site = JSON.parse(source);
|
|
161
|
+
const site = JSON.parse(await this.storage.read('pages/site.json'));
|
|
206
162
|
// stored links in settings read as their address, as in pages
|
|
207
163
|
if (site.settings)
|
|
208
|
-
site.settings = (0, links_1.wrapLinks)(site.settings
|
|
164
|
+
site.settings = (0, links_1.wrapLinks)(site.settings);
|
|
209
165
|
this.site = site;
|
|
210
166
|
return site;
|
|
211
167
|
}
|
|
212
|
-
/** A published data file, read once until the site is next published. `null` if it isn't published. */
|
|
213
|
-
dataFile(id) {
|
|
214
|
-
let file = this.dataFiles.get(id);
|
|
215
|
-
if (!file) {
|
|
216
|
-
file = this.readPublished('data/' + id + '.json').then((source) => JSON.parse(source), () => null);
|
|
217
|
-
this.dataFiles.set(id, file);
|
|
218
|
-
}
|
|
219
|
-
return file;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* What a page's references resolve against: the site's pages and documents, and the rows of the data
|
|
223
|
-
* collections it points at, and of those their rows point at.
|
|
224
|
-
*/
|
|
225
|
-
async linkContext(site, value) {
|
|
226
|
-
// collections whose referenced rows aren't all people from site.json
|
|
227
|
-
const needed = (rows, skip = new Set()) => [...rows].flatMap(([id, ids]) => skip.has(id) || [...ids].every((row) => site?.people?.[row]) ? [] : [id]);
|
|
228
|
-
const first = needed((0, links_1.referencedRows)(value));
|
|
229
|
-
let files = await Promise.all(first.map((id) => this.dataFile(id)));
|
|
230
|
-
const further = needed((0, links_1.referencedRows)([...files.map((file) => file?.rows), ...Object.values(site?.people ?? {})]), new Set(first));
|
|
231
|
-
if (further.length)
|
|
232
|
-
files = [...files, ...(await Promise.all(further.map((id) => this.dataFile(id))))];
|
|
233
|
-
return (0, links_1.linkContextFor)(site, files);
|
|
234
|
-
}
|
|
235
|
-
/** Wraps a page's references (see `wrapLinks`) and adds its byline as `page.authors`. */
|
|
236
|
-
resolvePage(page, site, context) {
|
|
237
|
-
const wrapped = (0, links_1.wrapLinks)(page, context);
|
|
238
|
-
wrapped.authors = (0, links_1.bylineAuthors)(wrapped, site, context);
|
|
239
|
-
return wrapped;
|
|
240
|
-
}
|
|
241
168
|
/**
|
|
242
169
|
* Loads the published page for the request's path (or the `404` page), ready for `render`. With
|
|
243
170
|
* `loadPage` false, returns `page` as given (for custom routes that build their own page object).
|
|
@@ -248,7 +175,7 @@ class Ceems {
|
|
|
248
175
|
const { path, pagination } = this.parsePath(req);
|
|
249
176
|
const entry = site.pages[path];
|
|
250
177
|
if (entry) {
|
|
251
|
-
page = await this.loadPageFile(entry._id
|
|
178
|
+
page = await this.loadPageFile(entry._id);
|
|
252
179
|
page.fullpath = entry.url == 'home' ? '' : entry.url;
|
|
253
180
|
page.path = page.fullpath.split('/');
|
|
254
181
|
if (pagination)
|
|
@@ -258,7 +185,7 @@ class Ceems {
|
|
|
258
185
|
res.status(404);
|
|
259
186
|
const notFound = site.pages['404'];
|
|
260
187
|
if (notFound) {
|
|
261
|
-
page = await this.loadPageFile(notFound._id
|
|
188
|
+
page = await this.loadPageFile(notFound._id);
|
|
262
189
|
}
|
|
263
190
|
}
|
|
264
191
|
}
|
|
@@ -267,32 +194,17 @@ class Ceems {
|
|
|
267
194
|
}
|
|
268
195
|
return (0, state_1.attachState)(page, { site, page, edit: false });
|
|
269
196
|
}
|
|
270
|
-
/** Reads
|
|
271
|
-
|
|
272
|
-
return this.storage.read(
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`), resolved
|
|
276
|
-
* against `site` (by default the last site loaded), and row references read as their rows (`RowDrop`).
|
|
277
|
-
*/
|
|
278
|
-
async loadPageFile(id, site = this.site) {
|
|
279
|
-
const page = JSON.parse(await this.readPublished('pages/' + id + '.json'));
|
|
280
|
-
return this.resolvePage(page, site, await this.linkContext(site, page));
|
|
197
|
+
/** Reads `pages/<id>.json`. Stored links read as their address in templates (see `LinkDrop`). */
|
|
198
|
+
async loadPageFile(id) {
|
|
199
|
+
return (0, links_1.wrapLinks)(JSON.parse(await this.storage.read('pages/' + id + '.json')));
|
|
281
200
|
}
|
|
282
201
|
/** Synchronous local read, kept for custom tags. `filename` is a full path. */
|
|
283
202
|
loadLocalFile(filename) {
|
|
284
|
-
return (0, links_1.wrapLinks)(JSON.parse(fs_1.default.readFileSync(filename, 'utf8'))
|
|
285
|
-
pageIndex: this.site?.pageIndex,
|
|
286
|
-
documents: this.site?.documents,
|
|
287
|
-
});
|
|
203
|
+
return (0, links_1.wrapLinks)(JSON.parse(fs_1.default.readFileSync(filename, 'utf8')));
|
|
288
204
|
}
|
|
289
|
-
/**
|
|
290
|
-
* Reads and parses a published JSON file, kept for custom tags. `filename` is as published, such as
|
|
291
|
-
* `data/<id>.json`; it is read under `cachePrefix`.
|
|
292
|
-
*/
|
|
205
|
+
/** Reads and parses a published JSON file, kept for custom tags. `filename` is relative to the bucket. */
|
|
293
206
|
async loadS3File(filename) {
|
|
294
|
-
|
|
295
|
-
return (0, links_1.wrapLinks)(value, await this.linkContext(this.site, value));
|
|
207
|
+
return (0, links_1.wrapLinks)(JSON.parse(await this.storage.read(filename)));
|
|
296
208
|
}
|
|
297
209
|
/** The site path for a request (`home` for `/`), and the blog page number if the URL ends in one. */
|
|
298
210
|
parsePath(req) {
|
|
@@ -375,12 +287,6 @@ class Ceems {
|
|
|
375
287
|
*/
|
|
376
288
|
async render(page, req, res, send = true) {
|
|
377
289
|
const state = (0, state_1.stateOf)(page) || { site: this.site || (await this.loadSite()), page, edit: false };
|
|
378
|
-
// a published page set to redirect sends the visitor on; drafts still render it, to be edited
|
|
379
|
-
const redirect = state.edit ? '' : redirectOf(page);
|
|
380
|
-
if (send && redirect) {
|
|
381
|
-
res.redirect(302, redirect);
|
|
382
|
-
return;
|
|
383
|
-
}
|
|
384
290
|
try {
|
|
385
291
|
const html = await this.renderPage(state);
|
|
386
292
|
if (!send)
|
|
@@ -448,15 +354,4 @@ class Ceems {
|
|
|
448
354
|
}
|
|
449
355
|
}
|
|
450
356
|
exports.Ceems = Ceems;
|
|
451
|
-
/**
|
|
452
|
-
* Where a page set to redirect sends visitors: its stored link's address (a link to a page that isn't published
|
|
453
|
-
* reads as '', so it renders instead), or the path older sites stored.
|
|
454
|
-
*/
|
|
455
|
-
function redirectOf(page) {
|
|
456
|
-
const redirect = page.redirect;
|
|
457
|
-
const url = redirect && typeof redirect === 'object' ? redirect.url : redirect;
|
|
458
|
-
if (typeof url !== 'string' || !url)
|
|
459
|
-
return '';
|
|
460
|
-
return /^(https?:\/\/|\/)/.test(url) ? url : `/${url}`;
|
|
461
|
-
}
|
|
462
357
|
//# sourceMappingURL=index.js.map
|
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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"}
|