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

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
@@ -42,6 +42,47 @@ Published files are read from `ceems/` in the bucket or folder (`ceems/pages/sit
42
42
  and `ceems/data/<id>.json` through `loadS3File('data/<id>.json')`), where Cee.ms 2 publishes them. That lets it
43
43
  publish to the same bucket as Cee.ms 1 while a site moves over. Set `cachePrefix: ''` to read from the top instead.
44
44
 
45
+ ## Structured data
46
+
47
+ `{% structureddata %}` outputs the page's [schema.org](https://schema.org) JSON-LD in one
48
+ `<script type="application/ld+json">`. Put it in the layout's `<head>`:
49
+
50
+ ```liquid
51
+ <head>
52
+ <title>{{ page.title | default: page.name }} | {{ site.name }}</title>
53
+ {% structureddata %}
54
+ </head>
55
+ ```
56
+
57
+ It outputs the types the page has switched on in its settings, or the site's defaults for its kind of page (home,
58
+ page, blog or article), plus a node for the page's **entity**: what the page is about. Each is built from data
59
+ Cee.ms already has:
60
+
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
+
71
+ By default the site and organisation are described in full on the home page, and other pages refer to them with a
72
+ short copy (name, URL, logo). A product or event page also gets the reviews in its modules whose type maps them,
73
+ with a rating worked out from them, so the markup always matches what the page shows. Reviews on other pages are
74
+ left out: Google ignores reviews a business publishes about itself.
75
+
76
+ A node missing what it needs (an event with no start date, a product with neither a price nor reviews) is left out
77
+ rather than output invalid, and the tag outputs nothing when no node has data. Name parts to output only those, to
78
+ place them separately: `{% structureddata 'article' 'faq' %}`, `{% structureddata 'entity' %}`.
79
+
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' %}`.
82
+
83
+ The organisation is also in templates as `site.organisation`, e.g. `{{ site.organisation.telephone }}`. For custom
84
+ tags or routes, `structuredDataGraph(site, page)` returns the graph as an object.
85
+
45
86
  ## Draft previews
46
87
 
47
88
  The editor loads `GET /draft/{pageId}?token=…` in an iframe. The renderer verifies the token, fetches the draft from
package/lib/index.d.ts CHANGED
@@ -6,6 +6,8 @@ export * from './interfaces';
6
6
  export { signPreviewToken, verifyPreviewToken } from './preview-token';
7
7
  export { renderState } from './state';
8
8
  export { LinkDrop, wrapLinks } from './links';
9
+ export { enabledTypes, entityOf, serialiseJsonLd, structuredDataGraph } from './structured-data';
10
+ export type { StructuredDataPart } from './structured-data';
9
11
  /**
10
12
  * A Cee.ms site renderer: an Express app that renders published pages, and verified editor drafts, with the
11
13
  * site's Liquid templates.
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.wrapLinks = exports.LinkDrop = exports.renderState = exports.verifyPreviewToken = exports.signPreviewToken = void 0;
42
+ exports.Ceems = exports.structuredDataGraph = exports.serialiseJsonLd = exports.entityOf = exports.enabledTypes = exports.wrapLinks = exports.LinkDrop = 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"));
@@ -61,6 +61,11 @@ Object.defineProperty(exports, "renderState", { enumerable: true, get: function
61
61
  var links_2 = require("./links");
62
62
  Object.defineProperty(exports, "LinkDrop", { enumerable: true, get: function () { return links_2.LinkDrop; } });
63
63
  Object.defineProperty(exports, "wrapLinks", { enumerable: true, get: function () { return links_2.wrapLinks; } });
64
+ var structured_data_1 = require("./structured-data");
65
+ Object.defineProperty(exports, "enabledTypes", { enumerable: true, get: function () { return structured_data_1.enabledTypes; } });
66
+ Object.defineProperty(exports, "entityOf", { enumerable: true, get: function () { return structured_data_1.entityOf; } });
67
+ Object.defineProperty(exports, "serialiseJsonLd", { enumerable: true, get: function () { return structured_data_1.serialiseJsonLd; } });
68
+ Object.defineProperty(exports, "structuredDataGraph", { enumerable: true, get: function () { return structured_data_1.structuredDataGraph; } });
64
69
  /**
65
70
  * A Cee.ms site renderer: an Express app that renders published pages, and verified editor drafts, with the
66
71
  * site's Liquid templates.
@@ -149,6 +154,7 @@ class Ceems {
149
154
  (0, tags_1.registerImageTag)(this.engine);
150
155
  (0, tags_1.registerImageUrlTag)(this.engine);
151
156
  (0, tags_1.registerBreadcrumbTag)(this.engine);
157
+ (0, tags_1.registerStructuredDataTag)(this.engine);
152
158
  (0, filters_1.registerActiveFilter)(this.engine);
153
159
  (0, filters_1.registerSlugifyFilter)(this.engine);
154
160
  // custom tags and filters
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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"}
@@ -69,7 +69,7 @@ export interface CeemsSite {
69
69
  navigation: any;
70
70
  blogs: any;
71
71
  pages: any;
72
- site: any;
72
+ site: CeemsSiteInfo;
73
73
  /**
74
74
  * Site settings by field key (from Cee.ms 2), as published; drafts carry them as edited. Templates
75
75
  * read them as `settings`, e.g. `{{ settings.phone }}`. Stored links read as their address.
@@ -77,6 +77,140 @@ export interface CeemsSite {
77
77
  settings?: Record<string, any>;
78
78
  collections?: any;
79
79
  }
80
+ /** The published `site.json` `site`. */
81
+ export interface CeemsSiteInfo {
82
+ name: string;
83
+ cdn: string;
84
+ url: string;
85
+ /** The site's organisation, for templates (`{{ site.organisation.telephone }}`) and structured data. */
86
+ organisation?: CeemsOrganisation;
87
+ structuredData?: {
88
+ defaults?: StructuredDataDefaults;
89
+ /** For module types holding questions and answers: where they are, by module config type. */
90
+ faqModules?: Record<string, FaqModuleMapping>;
91
+ /** For module types holding reviews, which attach to a product or event page. */
92
+ reviewModules?: Record<string, ReviewsModuleMapping>;
93
+ };
94
+ [key: string]: any;
95
+ }
96
+ /** A schema.org type a page or the site's defaults can switch on for `{% structureddata %}`. */
97
+ export type StructuredDataType = 'WEBSITE' | 'WEBPAGE' | 'BREADCRUMB' | 'ORGANISATION' | 'ARTICLE' | 'FAQ';
98
+ /**
99
+ * What a page is about. Products, events, people and services output their own node when they have the data;
100
+ * `HOME` is the site's front page, which by default carries the site and organisation. Templates and modules
101
+ * can read it, e.g. `{% if page.entity == 'PRODUCT' %}`.
102
+ */
103
+ export type PageEntity = 'HOME' | 'PAGE' | 'PRODUCT' | 'EVENT' | 'PERSON' | 'SERVICE';
104
+ /** The types each kind of page outputs unless it chooses its own. */
105
+ export interface StructuredDataDefaults {
106
+ home: StructuredDataType[];
107
+ page: StructuredDataType[];
108
+ blog: StructuredDataType[];
109
+ article: StructuredDataType[];
110
+ }
111
+ /** `itemsField` is a contributor field of the module; the others are fields of its items. */
112
+ export interface FaqModuleMapping {
113
+ itemsField: string;
114
+ questionField: string;
115
+ answerField: string;
116
+ }
117
+ /** `itemsField` is a contributor field of the module; the others are fields of its items. */
118
+ export interface ReviewsModuleMapping {
119
+ itemsField: string;
120
+ authorField: string;
121
+ /** A select of numbers, or text holding one. */
122
+ ratingField: string;
123
+ bodyField?: string;
124
+ dateField?: string;
125
+ bestRating: number;
126
+ worstRating: number;
127
+ }
128
+ /** An image value as published. */
129
+ export interface CeemsImage {
130
+ src: string;
131
+ variants?: Record<string, string>;
132
+ alt?: string;
133
+ width?: number;
134
+ height?: number;
135
+ }
136
+ export interface CeemsPostalAddress {
137
+ street?: string;
138
+ locality?: string;
139
+ region?: string;
140
+ postalCode?: string;
141
+ country?: string;
142
+ }
143
+ export interface CeemsOrganisation {
144
+ /** The schema.org type, from Cee.ms's business types: `Organization`, or one such as `RealEstateAgent`. */
145
+ type: string;
146
+ name: string;
147
+ legalName?: string;
148
+ logo?: CeemsImage;
149
+ url?: string;
150
+ email?: string;
151
+ telephone?: string;
152
+ address?: CeemsPostalAddress;
153
+ sameAs?: string[];
154
+ openingHours?: {
155
+ days: string[];
156
+ opens: string;
157
+ closes: string;
158
+ }[];
159
+ priceRange?: string;
160
+ }
161
+ export type CeemsAvailability = 'IN_STOCK' | 'OUT_OF_STOCK' | 'PRE_ORDER' | 'SOLD_OUT' | 'DISCONTINUED';
162
+ export interface CeemsOffer {
163
+ price: number;
164
+ currency: string;
165
+ url?: string;
166
+ availability?: CeemsAvailability;
167
+ }
168
+ /** A page's structured data choices, and the details of its entity. */
169
+ export interface CeemsPageStructuredData {
170
+ /** Absent: the site's defaults for the page's kind. */
171
+ types?: StructuredDataType[];
172
+ event?: {
173
+ name?: string;
174
+ description?: string;
175
+ startDate: string;
176
+ endDate?: string;
177
+ attendance?: 'OFFLINE' | 'ONLINE' | 'MIXED';
178
+ status?: 'SCHEDULED' | 'CANCELLED' | 'POSTPONED' | 'RESCHEDULED' | 'MOVED_ONLINE';
179
+ location?: {
180
+ name?: string;
181
+ address?: CeemsPostalAddress;
182
+ url?: string;
183
+ };
184
+ image?: CeemsImage;
185
+ offers?: CeemsOffer;
186
+ };
187
+ product?: {
188
+ name?: string;
189
+ description?: string;
190
+ brand?: string;
191
+ sku?: string;
192
+ image?: CeemsImage;
193
+ /** With `currency`; a product needs a price or reviews. */
194
+ price?: number;
195
+ currency?: string;
196
+ availability?: CeemsAvailability;
197
+ };
198
+ person?: {
199
+ name: string;
200
+ jobTitle?: string;
201
+ url?: string;
202
+ image?: CeemsImage;
203
+ sameAs?: string[];
204
+ };
205
+ service?: {
206
+ name?: string;
207
+ description?: string;
208
+ serviceType?: string;
209
+ areaServed?: string;
210
+ image?: CeemsImage;
211
+ offers?: CeemsOffer;
212
+ };
213
+ }
80
214
  export interface CeemsRequest extends express.Request {
81
215
  page: CeemsPage;
82
216
  query: any;
@@ -99,6 +233,23 @@ export interface CeemsPage {
99
233
  pagination: number;
100
234
  fullpath: string;
101
235
  handle: string;
236
+ /** The page's own name, for menus. */
237
+ name?: string;
238
+ /** SEO title. */
239
+ title?: string;
240
+ /** SEO description. */
241
+ description?: string;
242
+ /** Social sharing image. */
243
+ social?: CeemsImage;
244
+ type?: 'blog' | 'article';
245
+ /** Published from Cee.ms with the default resolved: `HOME` for the home page, else `PAGE`. */
246
+ entity?: PageEntity;
247
+ tags?: string[];
248
+ /** An article's date. */
249
+ date?: string;
250
+ publishedAt?: string;
251
+ updatedAt?: string;
252
+ structuredData?: CeemsPageStructuredData;
102
253
  [key: string]: any;
103
254
  }
104
255
  export interface CeemsRegion {
@@ -0,0 +1,28 @@
1
+ import type { CeemsPage, CeemsSite, PageEntity, StructuredDataDefaults, StructuredDataType } from './interfaces';
2
+ /** The types a page or the site's defaults can switch on, in the order the tag outputs them. */
3
+ export declare const STRUCTURED_DATA_TYPES: readonly StructuredDataType[];
4
+ /** What `{% structureddata %}` can be limited to: the types, and the page's entity (its product, event…). */
5
+ export type StructuredDataPart = StructuredDataType | 'ENTITY';
6
+ export declare const STRUCTURED_DATA_PARTS: readonly StructuredDataPart[];
7
+ /**
8
+ * Used when the site has published no defaults. The site and organisation are described once, on the home
9
+ * page; other pages refer to them by `@id` with a short copy.
10
+ */
11
+ export declare const DEFAULT_STRUCTURED_DATA: StructuredDataDefaults;
12
+ type Node = Record<string, unknown>;
13
+ /** The page's entity, defaulting as Cee.ms publishes it, for pages published before entities. */
14
+ export declare function entityOf(page: CeemsPage): PageEntity;
15
+ /** The types a page outputs: its own choice, else the site's defaults for its kind. */
16
+ export declare function enabledTypes(site: CeemsSite, page: CeemsPage): StructuredDataType[];
17
+ /**
18
+ * The page's schema.org graph: one node for each enabled type that has the data it needs, and one for its
19
+ * entity. A node missing a required property (an event with no start date, a product with neither price nor
20
+ * reviews) is left out rather than output invalid. `only` limits the graph to those parts.
21
+ */
22
+ export declare function structuredDataGraph(site: CeemsSite, page: CeemsPage, only?: StructuredDataPart[]): {
23
+ '@context': string;
24
+ '@graph': Node[];
25
+ };
26
+ /** JSON for a `<script>`: `<`, `>` and `&` are escaped so content can't end the script. */
27
+ export declare function serialiseJsonLd(value: unknown): string;
28
+ export {};
@@ -0,0 +1,484 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_STRUCTURED_DATA = exports.STRUCTURED_DATA_PARTS = exports.STRUCTURED_DATA_TYPES = void 0;
4
+ exports.entityOf = entityOf;
5
+ exports.enabledTypes = enabledTypes;
6
+ exports.structuredDataGraph = structuredDataGraph;
7
+ exports.serialiseJsonLd = serialiseJsonLd;
8
+ /** The types a page or the site's defaults can switch on, in the order the tag outputs them. */
9
+ exports.STRUCTURED_DATA_TYPES = [
10
+ 'WEBSITE',
11
+ 'ORGANISATION',
12
+ 'WEBPAGE',
13
+ 'BREADCRUMB',
14
+ 'ARTICLE',
15
+ 'FAQ',
16
+ ];
17
+ exports.STRUCTURED_DATA_PARTS = [...exports.STRUCTURED_DATA_TYPES, 'ENTITY'];
18
+ /**
19
+ * Used when the site has published no defaults. The site and organisation are described once, on the home
20
+ * page; other pages refer to them by `@id` with a short copy.
21
+ */
22
+ exports.DEFAULT_STRUCTURED_DATA = {
23
+ home: ['WEBSITE', 'WEBPAGE', 'ORGANISATION', 'FAQ'],
24
+ page: ['WEBPAGE', 'BREADCRUMB', 'FAQ'],
25
+ blog: ['WEBPAGE', 'BREADCRUMB', 'FAQ'],
26
+ article: ['WEBPAGE', 'BREADCRUMB', 'ARTICLE', 'FAQ'],
27
+ };
28
+ /** Entities whose node takes reviews. Google ignores reviews a business publishes about itself. */
29
+ const REVIEWED = ['PRODUCT', 'EVENT'];
30
+ /** The page's entity, defaulting as Cee.ms publishes it, for pages published before entities. */
31
+ function entityOf(page) {
32
+ return page.entity ?? (page.fullpath ? 'PAGE' : 'HOME');
33
+ }
34
+ /** Which of the site's defaults a page uses: blogs and articles by their type, else home or page. */
35
+ function kindOf(page) {
36
+ if (page.type === 'article')
37
+ return 'article';
38
+ if (page.type === 'blog')
39
+ return 'blog';
40
+ return entityOf(page) === 'HOME' ? 'home' : 'page';
41
+ }
42
+ /** The types a page outputs: its own choice, else the site's defaults for its kind. */
43
+ function enabledTypes(site, page) {
44
+ const own = page.structuredData?.types;
45
+ if (Array.isArray(own))
46
+ return own;
47
+ const kind = kindOf(page);
48
+ return site.site?.structuredData?.defaults?.[kind] ?? exports.DEFAULT_STRUCTURED_DATA[kind];
49
+ }
50
+ /**
51
+ * The page's schema.org graph: one node for each enabled type that has the data it needs, and one for its
52
+ * entity. A node missing a required property (an event with no start date, a product with neither price nor
53
+ * reviews) is left out rather than output invalid. `only` limits the graph to those parts.
54
+ */
55
+ function structuredDataGraph(site, page, only) {
56
+ const b = new Builder(site, page, enabledTypes(site, page));
57
+ const entity = ENTITIES[entityOf(page)]?.(b);
58
+ if (entity)
59
+ b.entityId = entity['@id'];
60
+ const graph = [];
61
+ for (const type of exports.STRUCTURED_DATA_TYPES) {
62
+ if (!b.enabled.has(type) || (only && !only.includes(type)))
63
+ continue;
64
+ const node = BUILDERS[type](b);
65
+ if (node)
66
+ graph.push(node);
67
+ }
68
+ if (entity && (!only || only.includes('ENTITY')))
69
+ graph.push(entity);
70
+ return { '@context': 'https://schema.org', '@graph': graph };
71
+ }
72
+ /** JSON for a `<script>`: `<`, `>` and `&` are escaped so content can't end the script. */
73
+ function serialiseJsonLd(value) {
74
+ return JSON.stringify(value)
75
+ .replace(/</g, '\\u003c')
76
+ .replace(/>/g, '\\u003e')
77
+ .replace(/&/g, '\\u0026');
78
+ }
79
+ /** The URLs and shared properties every builder needs. */
80
+ class Builder {
81
+ site;
82
+ page;
83
+ root;
84
+ enabled;
85
+ /** The `@id` of the page's entity node, when it has one. */
86
+ entityId;
87
+ constructor(site, page, enabled) {
88
+ this.site = site;
89
+ this.page = page;
90
+ this.root = String(site.site?.url ?? '').replace(/\/+$/, '');
91
+ this.enabled = new Set(enabled);
92
+ }
93
+ /** The absolute URL of a site path, `''` being the home page. */
94
+ url(path = '') {
95
+ return path && path !== 'home' ? `${this.root}/${path}` : `${this.root}/`;
96
+ }
97
+ get pageUrl() {
98
+ return this.url(this.page.fullpath);
99
+ }
100
+ id(path, fragment) {
101
+ return `${this.url(path)}#${fragment}`;
102
+ }
103
+ get pageName() {
104
+ return text(this.page.title) ?? text(this.page.name);
105
+ }
106
+ /**
107
+ * The organisation, for a publisher, organiser or provider: its `@id` when this page carries the full
108
+ * node, else a short copy, so the property still has a name where the full node isn't output.
109
+ */
110
+ get organisation() {
111
+ const org = this.site.site?.organisation;
112
+ if (!org?.name)
113
+ return;
114
+ const ref = { '@id': this.id('', 'organization') };
115
+ if (this.enabled.has('ORGANISATION'))
116
+ return ref;
117
+ return compact({
118
+ '@type': org.type || 'Organization',
119
+ ...ref,
120
+ name: org.name,
121
+ url: text(org.url) ?? (this.root ? this.url() : undefined),
122
+ logo: imageUrl(org.logo),
123
+ });
124
+ }
125
+ /** The website, by `@id` when this page carries it, else a short copy. */
126
+ get website() {
127
+ const ref = { '@id': this.id('', 'website') };
128
+ if (this.enabled.has('WEBSITE'))
129
+ return ref;
130
+ return compact({ '@type': 'WebSite', ...ref, url: this.url(), name: text(this.site.site?.name) });
131
+ }
132
+ }
133
+ const BUILDERS = {
134
+ WEBSITE(b) {
135
+ if (!b.root)
136
+ return;
137
+ return compact({
138
+ '@type': 'WebSite',
139
+ '@id': b.id('', 'website'),
140
+ url: b.url(),
141
+ name: text(b.site.site?.name),
142
+ publisher: b.organisation,
143
+ });
144
+ },
145
+ ORGANISATION(b) {
146
+ const org = b.site.site?.organisation;
147
+ if (!org?.name)
148
+ return;
149
+ return compact({
150
+ '@type': org.type || 'Organization',
151
+ '@id': b.id('', 'organization'),
152
+ name: org.name,
153
+ legalName: text(org.legalName),
154
+ url: text(org.url) ?? (b.root ? b.url() : undefined),
155
+ logo: imageUrl(org.logo),
156
+ // LocalBusiness wants an image too; the logo is the best we have
157
+ image: org.type && org.type !== 'Organization' ? imageUrl(org.logo) : undefined,
158
+ email: text(org.email),
159
+ telephone: text(org.telephone),
160
+ address: postalAddress(org.address),
161
+ sameAs: list(org.sameAs),
162
+ openingHoursSpecification: list((org.openingHours ?? [])
163
+ .filter((h) => h.days?.length && h.opens && h.closes)
164
+ .map((h) => ({
165
+ '@type': 'OpeningHoursSpecification',
166
+ dayOfWeek: h.days,
167
+ opens: h.opens,
168
+ closes: h.closes,
169
+ }))),
170
+ priceRange: text(org.priceRange),
171
+ });
172
+ },
173
+ WEBPAGE(b) {
174
+ if (!b.root)
175
+ return;
176
+ return compact({
177
+ '@type': 'WebPage',
178
+ '@id': b.id(b.page.fullpath, 'webpage'),
179
+ url: b.pageUrl,
180
+ name: b.pageName,
181
+ description: text(b.page.description),
182
+ primaryImageOfPage: imageUrl(b.page.social),
183
+ isPartOf: b.website,
184
+ breadcrumb: b.enabled.has('BREADCRUMB') && crumbs(b).length > 1
185
+ ? { '@id': b.id(b.page.fullpath, 'breadcrumb') }
186
+ : undefined,
187
+ mainEntity: b.entityId ? { '@id': b.entityId } : undefined,
188
+ dateModified: isoDate(b.page.updatedAt),
189
+ });
190
+ },
191
+ BREADCRUMB(b) {
192
+ const items = crumbs(b);
193
+ // a single crumb (the home page itself) isn't a trail
194
+ if (!b.root || items.length < 2)
195
+ return;
196
+ return {
197
+ '@type': 'BreadcrumbList',
198
+ '@id': b.id(b.page.fullpath, 'breadcrumb'),
199
+ itemListElement: items.map((item, i) => ({
200
+ '@type': 'ListItem',
201
+ position: i + 1,
202
+ name: item.name,
203
+ item: item.url,
204
+ })),
205
+ };
206
+ },
207
+ ARTICLE(b) {
208
+ if (b.page.type !== 'article' || !b.pageName)
209
+ return;
210
+ const published = isoDate(b.page.date) ?? isoDate(b.page.publishedAt);
211
+ return compact({
212
+ '@type': 'BlogPosting',
213
+ '@id': b.id(b.page.fullpath, 'article'),
214
+ headline: b.pageName,
215
+ description: text(b.page.description),
216
+ image: imageUrl(b.page.social),
217
+ datePublished: published,
218
+ dateModified: isoDate(b.page.updatedAt) ?? published,
219
+ mainEntityOfPage: b.root ? { '@id': b.id(b.page.fullpath, 'webpage') } : undefined,
220
+ author: b.organisation,
221
+ publisher: b.organisation,
222
+ keywords: list(b.page.tags)?.join(', '),
223
+ });
224
+ },
225
+ FAQ(b) {
226
+ const mappings = b.site.site?.structuredData?.faqModules ?? {};
227
+ const questions = [];
228
+ for (const module of pageModules(b.page)) {
229
+ const map = mappings[module.type];
230
+ const items = map && module.content?.[map.itemsField];
231
+ if (!Array.isArray(items))
232
+ continue;
233
+ for (const item of items) {
234
+ const name = text(plain(item?.[map.questionField]));
235
+ const answer = text(item?.[map.answerField]);
236
+ if (!name || !answer)
237
+ continue;
238
+ questions.push({
239
+ '@type': 'Question',
240
+ name,
241
+ acceptedAnswer: { '@type': 'Answer', text: answer },
242
+ });
243
+ }
244
+ }
245
+ if (!questions.length)
246
+ return;
247
+ return { '@type': 'FAQPage', '@id': b.id(b.page.fullpath, 'faq'), mainEntity: questions };
248
+ },
249
+ };
250
+ /** The node for what the page is about. Home and plain pages have none of their own. */
251
+ const ENTITIES = {
252
+ EVENT(b) {
253
+ const event = b.page.structuredData?.event;
254
+ const name = text(event?.name) ?? b.pageName;
255
+ const startDate = isoDate(event?.startDate);
256
+ if (!event || !name || !startDate)
257
+ return;
258
+ const venue = compact({
259
+ '@type': 'Place',
260
+ name: text(event.location?.name),
261
+ address: postalAddress(event.location?.address),
262
+ });
263
+ const place = Object.keys(venue).length > 1 ? venue : undefined;
264
+ const virtual = event.location?.url ? { '@type': 'VirtualLocation', url: event.location.url } : undefined;
265
+ return compact({
266
+ '@type': 'Event',
267
+ '@id': b.id(b.page.fullpath, 'event'),
268
+ name,
269
+ description: text(event.description) ?? text(b.page.description),
270
+ startDate,
271
+ endDate: isoDate(event.endDate),
272
+ eventStatus: event.status ? `https://schema.org/Event${pascal(event.status)}` : undefined,
273
+ eventAttendanceMode: event.attendance
274
+ ? `https://schema.org/${pascal(event.attendance)}EventAttendanceMode`
275
+ : undefined,
276
+ location: event.attendance === 'ONLINE'
277
+ ? virtual
278
+ : event.attendance === 'MIXED'
279
+ ? list([place, virtual])
280
+ : place,
281
+ image: imageUrl(event.image) ?? imageUrl(b.page.social),
282
+ offers: offer(event.offers, b.pageUrl),
283
+ organizer: b.organisation,
284
+ ...reviews(b),
285
+ });
286
+ },
287
+ PRODUCT(b) {
288
+ const product = b.page.structuredData?.product;
289
+ const name = text(product?.name) ?? b.pageName;
290
+ if (!name)
291
+ return;
292
+ const offers = product && offer(product, b.pageUrl);
293
+ const rated = reviews(b);
294
+ // Google needs an offer, a review or a rating
295
+ if (!offers && !rated.review)
296
+ return;
297
+ return compact({
298
+ '@type': 'Product',
299
+ '@id': b.id(b.page.fullpath, 'product'),
300
+ name,
301
+ description: text(product?.description) ?? text(b.page.description),
302
+ image: imageUrl(product?.image) ?? imageUrl(b.page.social),
303
+ sku: text(product?.sku),
304
+ brand: product?.brand ? { '@type': 'Brand', name: product.brand } : undefined,
305
+ offers,
306
+ ...rated,
307
+ });
308
+ },
309
+ PERSON(b) {
310
+ const person = b.page.structuredData?.person;
311
+ if (!person?.name)
312
+ return;
313
+ return compact({
314
+ '@type': 'Person',
315
+ '@id': b.id(b.page.fullpath, 'person'),
316
+ name: person.name,
317
+ jobTitle: text(person.jobTitle),
318
+ url: text(person.url) ?? (b.root ? b.pageUrl : undefined),
319
+ image: imageUrl(person.image) ?? imageUrl(b.page.social),
320
+ sameAs: list(person.sameAs),
321
+ worksFor: b.organisation,
322
+ });
323
+ },
324
+ SERVICE(b) {
325
+ const service = b.page.structuredData?.service;
326
+ const name = text(service?.name) ?? b.pageName;
327
+ if (!name)
328
+ return;
329
+ return compact({
330
+ '@type': 'Service',
331
+ '@id': b.id(b.page.fullpath, 'service'),
332
+ name,
333
+ description: text(service?.description) ?? text(b.page.description),
334
+ serviceType: text(service?.serviceType),
335
+ areaServed: text(service?.areaServed),
336
+ image: imageUrl(service?.image) ?? imageUrl(b.page.social),
337
+ provider: b.organisation,
338
+ offers: offer(service?.offers, b.pageUrl),
339
+ });
340
+ },
341
+ };
342
+ /**
343
+ * `review` and `aggregateRating` from the page's modules whose type maps reviews, for a product or event.
344
+ * The rating is worked out from the reviews, so it always matches what the page shows. Ratings on other
345
+ * scales are converted to the first module's.
346
+ */
347
+ function reviews(b) {
348
+ if (!REVIEWED.includes(entityOf(b.page)))
349
+ return {};
350
+ const mappings = b.site.site?.structuredData?.reviewModules ?? {};
351
+ const review = [];
352
+ let scale;
353
+ let total = 0;
354
+ for (const module of pageModules(b.page)) {
355
+ const map = mappings[module.type];
356
+ const items = map && module.content?.[map.itemsField];
357
+ if (!Array.isArray(items))
358
+ continue;
359
+ const best = map.bestRating ?? 5;
360
+ const worst = map.worstRating ?? 1;
361
+ for (const item of items) {
362
+ const author = text(plain(item?.[map.authorField]));
363
+ const rating = Number(text(item?.[map.ratingField]));
364
+ if (!author || !isFinite(rating) || rating < worst || rating > best || best <= worst)
365
+ continue;
366
+ scale ??= { best, worst };
367
+ total += scale.worst + ((rating - worst) / (best - worst)) * (scale.best - scale.worst);
368
+ review.push(compact({
369
+ '@type': 'Review',
370
+ author: { '@type': 'Person', name: author },
371
+ reviewRating: { '@type': 'Rating', ratingValue: rating, bestRating: best, worstRating: worst },
372
+ reviewBody: map.bodyField ? text(plain(item?.[map.bodyField])) : undefined,
373
+ datePublished: map.dateField ? isoDate(item?.[map.dateField])?.slice(0, 10) : undefined,
374
+ }));
375
+ }
376
+ }
377
+ if (!review.length || !scale)
378
+ return {};
379
+ return {
380
+ review,
381
+ aggregateRating: {
382
+ '@type': 'AggregateRating',
383
+ ratingValue: Math.round((total / review.length) * 10) / 10,
384
+ reviewCount: review.length,
385
+ bestRating: scale.best,
386
+ worstRating: scale.worst,
387
+ },
388
+ };
389
+ }
390
+ /** Home, then the page's published ancestors, as `tags/breadcrumb.ts` walks them, ending at the page. */
391
+ function crumbs(b) {
392
+ const { site, page } = b;
393
+ const items = [];
394
+ const home = site.pages?.home;
395
+ if (home)
396
+ items.push({ name: text(home.name) ?? 'Home', url: b.url() });
397
+ if (!page.fullpath)
398
+ return items;
399
+ let path = '';
400
+ for (const handle of page.path ?? []) {
401
+ path += handle;
402
+ const entry = site.pages?.[path];
403
+ if (entry) {
404
+ items.push({ name: text(entry.name) ?? handle, url: b.url(path) });
405
+ path += '/';
406
+ }
407
+ }
408
+ return items;
409
+ }
410
+ function pageModules(page) {
411
+ const modules = Object.values(page.regions ?? {}).flatMap((region) => region?.modules ?? []);
412
+ for (const module of Object.values(page.modules ?? {})) {
413
+ if (module && typeof module === 'object')
414
+ modules.push(module);
415
+ }
416
+ return modules;
417
+ }
418
+ function offer(o, fallbackUrl) {
419
+ if (!o || typeof o.price !== 'number' || !o.currency)
420
+ return;
421
+ return compact({
422
+ '@type': 'Offer',
423
+ price: o.price,
424
+ priceCurrency: o.currency,
425
+ availability: o.availability ? `https://schema.org/${pascal(o.availability)}` : undefined,
426
+ url: text(o.url) ?? fallbackUrl,
427
+ });
428
+ }
429
+ function postalAddress(address) {
430
+ if (!address)
431
+ return;
432
+ const node = compact({
433
+ '@type': 'PostalAddress',
434
+ streetAddress: text(address.street),
435
+ addressLocality: text(address.locality),
436
+ addressRegion: text(address.region),
437
+ postalCode: text(address.postalCode),
438
+ addressCountry: text(address.country),
439
+ });
440
+ return Object.keys(node).length > 1 ? node : undefined;
441
+ }
442
+ function imageUrl(image) {
443
+ return image && typeof image.src === 'string' && image.src ? image.src : undefined;
444
+ }
445
+ /** A date published as an ISO string (or a `Date`, for custom pages) as an ISO string. */
446
+ function isoDate(value) {
447
+ if (!value)
448
+ return;
449
+ const date = value instanceof Date ? value : new Date(String(value));
450
+ return isNaN(date.getTime()) ? undefined : date.toISOString();
451
+ }
452
+ /** A non-empty trimmed string, else `undefined`. Stored links (`LinkDrop`) read as their address. */
453
+ function text(value) {
454
+ if (value == null)
455
+ return;
456
+ const s = String(value).trim();
457
+ return s ? s : undefined;
458
+ }
459
+ /** Rich text as plain text, for properties that take no markup. */
460
+ function plain(value) {
461
+ if (typeof value !== 'string')
462
+ return value;
463
+ return value
464
+ .replace(/<[^>]*>/g, ' ')
465
+ .replace(/&nbsp;/g, ' ')
466
+ .replace(/\s+/g, ' ');
467
+ }
468
+ /** `IN_STOCK` as `InStock`, for schema.org enumeration URLs. */
469
+ function pascal(value) {
470
+ return value
471
+ .toLowerCase()
472
+ .split('_')
473
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
474
+ .join('');
475
+ }
476
+ function list(values) {
477
+ const kept = (values ?? []).filter((v) => v !== undefined && v !== null && v !== '');
478
+ return kept.length ? kept : undefined;
479
+ }
480
+ /** Drops `undefined` properties. */
481
+ function compact(node) {
482
+ return Object.fromEntries(Object.entries(node).filter(([, v]) => v !== undefined));
483
+ }
484
+ //# sourceMappingURL=structured-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../src/structured-data.ts"],"names":[],"mappings":"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"}
@@ -5,3 +5,4 @@ export * from './image';
5
5
  export * from './navigation';
6
6
  export * from './breadcrumb';
7
7
  export * from './blog';
8
+ export * from './structured-data';
package/lib/tags/index.js CHANGED
@@ -21,4 +21,5 @@ __exportStar(require("./image"), exports);
21
21
  __exportStar(require("./navigation"), exports);
22
22
  __exportStar(require("./breadcrumb"), exports);
23
23
  __exportStar(require("./blog"), exports);
24
+ __exportStar(require("./structured-data"), exports);
24
25
  //# 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"}
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"}
@@ -0,0 +1,8 @@
1
+ import { Liquid } from 'liquidjs';
2
+ /**
3
+ * `{% structureddata ['article' 'faq' 'entity' …] %}` outputs the page's schema.org JSON-LD: the types the page
4
+ * has switched on (or the site's defaults) and its entity (product, event…), built from the page, its modules
5
+ * and the site's organisation. Naming parts limits it to those, for templates that place them separately.
6
+ * Outputs nothing when there is nothing.
7
+ */
8
+ export declare function registerStructuredDataTag(engine: Liquid): void;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerStructuredDataTag = registerStructuredDataTag;
4
+ const state_1 = require("../state");
5
+ const structured_data_1 = require("../structured-data");
6
+ /**
7
+ * `{% structureddata ['article' 'faq' 'entity' …] %}` outputs the page's schema.org JSON-LD: the types the page
8
+ * has switched on (or the site's defaults) and its entity (product, event…), built from the page, its modules
9
+ * and the site's organisation. Naming parts limits it to those, for templates that place them separately.
10
+ * Outputs nothing when there is nothing.
11
+ */
12
+ function registerStructuredDataTag(engine) {
13
+ engine.registerTag('structureddata', {
14
+ parse: function (tagToken) {
15
+ const names = tagToken.args
16
+ .split(/[\s,]+/)
17
+ .map((arg) => arg.replace(/^['"]|['"]$/g, '').toUpperCase())
18
+ .filter(Boolean);
19
+ for (const name of names) {
20
+ if (!structured_data_1.STRUCTURED_DATA_PARTS.includes(name)) {
21
+ throw new Error(`structureddata: unknown part "${name}"`);
22
+ }
23
+ }
24
+ this.only = names.length ? names : undefined;
25
+ },
26
+ render: function (context) {
27
+ const { site, page } = (0, state_1.renderState)(context);
28
+ const graph = (0, structured_data_1.structuredDataGraph)(site, page, this.only);
29
+ if (!graph['@graph'].length) {
30
+ return '';
31
+ }
32
+ return '<script type="application/ld+json">' + (0, structured_data_1.serialiseJsonLd)(graph) + '</script>';
33
+ },
34
+ });
35
+ }
36
+ //# sourceMappingURL=structured-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-data.js","sourceRoot":"","sources":["../../src/tags/structured-data.ts"],"names":[],"mappings":";;AAUA,8DAuBC;AAhCD,oCAAuC;AACvC,wDAAqH;AAErH;;;;;GAKG;AACH,SAAgB,yBAAyB,CAAC,MAAc;IACpD,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE;QACjC,KAAK,EAAE,UAAU,QAAQ;YACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI;iBACtB,KAAK,CAAC,QAAQ,CAAC;iBACf,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;iBAC3D,MAAM,CAAC,OAAO,CAAC,CAAC;YACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,uCAAqB,CAAC,QAAQ,CAAC,IAA0B,CAAC,EAAE,CAAC;oBAC9D,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,GAAG,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,CAAC;QACD,MAAM,EAAE,UAAU,OAAO;YACrB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,IAAA,qCAAmB,EAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC1B,OAAO,EAAE,CAAC;YACd,CAAC;YACD,OAAO,qCAAqC,GAAG,IAAA,iCAAe,EAAC,KAAK,CAAC,GAAG,WAAW,CAAC;QACxF,CAAC;KACJ,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nakedcreativity/cee-ms-node",
3
- "version": "2.0.0-beta.3",
3
+ "version": "2.0.0-beta.5",
4
4
  "description": "Cee.ms for Node.js: renders Cee.ms sites from their published JSON with Liquid templates",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",