@actuate-media/plugin-seo 0.0.11 → 0.0.13
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/CHANGELOG.md +117 -0
- package/README.md +29 -0
- package/dist/__tests__/index.test.js +5 -0
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/admin/GooglePreview.d.ts.map +1 -1
- package/dist/admin/GooglePreview.js +2 -1
- package/dist/admin/GooglePreview.js.map +1 -1
- package/dist/admin/SEOPanel.d.ts.map +1 -1
- package/dist/admin/SEOPanel.js +13 -2
- package/dist/admin/SEOPanel.js.map +1 -1
- package/dist/admin/SchemaPreview.d.ts.map +1 -1
- package/dist/admin/SchemaPreview.js +12 -2
- package/dist/admin/SchemaPreview.js.map +1 -1
- package/dist/canonical/index.d.ts.map +1 -1
- package/dist/canonical/index.js +8 -8
- package/dist/canonical/index.js.map +1 -1
- package/dist/collections.d.ts +1 -1
- package/dist/collections.d.ts.map +1 -1
- package/dist/collections.js.map +1 -1
- package/dist/fields.d.ts +1 -1
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +58 -58
- package/dist/fields.js.map +1 -1
- package/dist/hooks.d.ts +7 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +10 -16
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +23 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -21
- package/dist/index.js.map +1 -1
- package/dist/link-health/index.d.ts +1 -1
- package/dist/link-health/index.d.ts.map +1 -1
- package/dist/link-health/index.js +14 -14
- package/dist/link-health/index.js.map +1 -1
- package/dist/og-image/index.d.ts +1 -1
- package/dist/og-image/index.d.ts.map +1 -1
- package/dist/og-image/index.js +12 -12
- package/dist/og-image/index.js.map +1 -1
- package/dist/robots/index.d.ts.map +1 -1
- package/dist/robots/index.js +14 -16
- package/dist/robots/index.js.map +1 -1
- package/dist/schema/auto-detect.d.ts +2 -2
- package/dist/schema/auto-detect.d.ts.map +1 -1
- package/dist/schema/auto-detect.js +2 -27
- package/dist/schema/auto-detect.js.map +1 -1
- package/dist/schema/composer.d.ts.map +1 -1
- package/dist/schema/composer.js +20 -26
- package/dist/schema/composer.js.map +1 -1
- package/dist/schema/registry.d.ts +28 -28
- package/dist/schema/registry.d.ts.map +1 -1
- package/dist/schema/validator.d.ts +1 -1
- package/dist/schema/validator.d.ts.map +1 -1
- package/dist/schema/validator.js +52 -52
- package/dist/schema/validator.js.map +1 -1
- package/dist/sitemap/index.d.ts +3 -3
- package/dist/sitemap/index.d.ts.map +1 -1
- package/dist/sitemap/index.js +32 -31
- package/dist/sitemap/index.js.map +1 -1
- package/package.json +5 -3
package/dist/schema/composer.js
CHANGED
|
@@ -1,40 +1,34 @@
|
|
|
1
1
|
const NESTED_ENTITY_MAP = {
|
|
2
2
|
Article: [
|
|
3
|
-
{ field:
|
|
4
|
-
{ field:
|
|
3
|
+
{ field: 'author', type: 'Person' },
|
|
4
|
+
{ field: 'publisher', type: 'Organization' },
|
|
5
5
|
],
|
|
6
6
|
Event: [
|
|
7
|
-
{ field:
|
|
8
|
-
{ field:
|
|
7
|
+
{ field: 'organizer', type: 'Organization' },
|
|
8
|
+
{ field: 'location', type: 'Place' },
|
|
9
9
|
],
|
|
10
10
|
JobPosting: [
|
|
11
|
-
{ field:
|
|
12
|
-
{ field:
|
|
11
|
+
{ field: 'hiringOrganization', type: 'Organization' },
|
|
12
|
+
{ field: 'jobLocation', type: 'Place' },
|
|
13
13
|
],
|
|
14
14
|
Review: [
|
|
15
|
-
{ field:
|
|
16
|
-
{ field:
|
|
17
|
-
],
|
|
18
|
-
Product: [
|
|
19
|
-
{ field: "brand", type: "Organization" },
|
|
20
|
-
],
|
|
21
|
-
Service: [
|
|
22
|
-
{ field: "provider", type: "Organization" },
|
|
23
|
-
],
|
|
24
|
-
LocalBusiness: [
|
|
25
|
-
{ field: "address", type: "PostalAddress" },
|
|
15
|
+
{ field: 'author', type: 'Person' },
|
|
16
|
+
{ field: 'itemReviewed', type: 'Thing' },
|
|
26
17
|
],
|
|
18
|
+
Product: [{ field: 'brand', type: 'Organization' }],
|
|
19
|
+
Service: [{ field: 'provider', type: 'Organization' }],
|
|
20
|
+
LocalBusiness: [{ field: 'address', type: 'PostalAddress' }],
|
|
27
21
|
};
|
|
28
22
|
/** Builds a nested JSON-LD structure with @context, @type, and related entities. */
|
|
29
23
|
export function composeSchema(type, data, nested) {
|
|
30
24
|
const schema = {
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': type,
|
|
33
27
|
};
|
|
34
28
|
for (const [key, value] of Object.entries(data)) {
|
|
35
|
-
if (key.startsWith(
|
|
29
|
+
if (key.startsWith('@'))
|
|
36
30
|
continue;
|
|
37
|
-
if (value !== undefined && value !== null && value !==
|
|
31
|
+
if (value !== undefined && value !== null && value !== '') {
|
|
38
32
|
schema[key] = value;
|
|
39
33
|
}
|
|
40
34
|
}
|
|
@@ -43,13 +37,13 @@ export function composeSchema(type, data, nested) {
|
|
|
43
37
|
const nestedData = nested?.[def.field];
|
|
44
38
|
if (nestedData) {
|
|
45
39
|
schema[def.field] = {
|
|
46
|
-
|
|
40
|
+
'@type': def.type,
|
|
47
41
|
...nestedData,
|
|
48
42
|
};
|
|
49
43
|
}
|
|
50
|
-
else if (!schema[def.field] && data[def.field] && typeof data[def.field] ===
|
|
44
|
+
else if (!schema[def.field] && data[def.field] && typeof data[def.field] === 'string') {
|
|
51
45
|
schema[def.field] = {
|
|
52
|
-
|
|
46
|
+
'@type': def.type,
|
|
53
47
|
name: data[def.field],
|
|
54
48
|
};
|
|
55
49
|
}
|
|
@@ -58,10 +52,10 @@ export function composeSchema(type, data, nested) {
|
|
|
58
52
|
for (const [key, value] of Object.entries(nested)) {
|
|
59
53
|
if (nestedDefs.some((d) => d.field === key))
|
|
60
54
|
continue;
|
|
61
|
-
if (value && typeof value ===
|
|
55
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
62
56
|
const nestedObj = value;
|
|
63
57
|
schema[key] = {
|
|
64
|
-
|
|
58
|
+
'@type': nestedObj['@type'] ?? 'Thing',
|
|
65
59
|
...nestedObj,
|
|
66
60
|
};
|
|
67
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/schema/composer.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAA2D;IAChF,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACnC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE;KAC7C;IACD,KAAK,EAAE;QACL,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE;QAC5C,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;KACrC;IACD,UAAU,EAAE;QACV,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE;QACrD,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE;KACxC;IACD,MAAM,EAAE;QACN,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;QACnC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE;KACzC;IACD,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/schema/composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export interface SchemaOrgThing {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
'@context'?: string;
|
|
3
|
+
'@type': string;
|
|
4
4
|
name?: string;
|
|
5
5
|
description?: string;
|
|
6
6
|
url?: string;
|
|
@@ -8,7 +8,7 @@ export interface SchemaOrgThing {
|
|
|
8
8
|
sameAs?: string[];
|
|
9
9
|
}
|
|
10
10
|
export interface SchemaOrgArticle extends SchemaOrgThing {
|
|
11
|
-
|
|
11
|
+
'@type': 'Article';
|
|
12
12
|
headline: string;
|
|
13
13
|
author: SchemaOrgPerson | SchemaOrgOrganization;
|
|
14
14
|
publisher?: SchemaOrgOrganization;
|
|
@@ -21,7 +21,7 @@ export interface SchemaOrgArticle extends SchemaOrgThing {
|
|
|
21
21
|
thumbnailUrl?: string;
|
|
22
22
|
}
|
|
23
23
|
export interface SchemaOrgPerson extends SchemaOrgThing {
|
|
24
|
-
|
|
24
|
+
'@type': 'Person';
|
|
25
25
|
givenName?: string;
|
|
26
26
|
familyName?: string;
|
|
27
27
|
email?: string;
|
|
@@ -31,7 +31,7 @@ export interface SchemaOrgPerson extends SchemaOrgThing {
|
|
|
31
31
|
address?: SchemaOrgPostalAddress;
|
|
32
32
|
}
|
|
33
33
|
export interface SchemaOrgOrganization extends SchemaOrgThing {
|
|
34
|
-
|
|
34
|
+
'@type': 'Organization';
|
|
35
35
|
logo?: string;
|
|
36
36
|
email?: string;
|
|
37
37
|
telephone?: string;
|
|
@@ -40,7 +40,7 @@ export interface SchemaOrgOrganization extends SchemaOrgThing {
|
|
|
40
40
|
numberOfEmployees?: number;
|
|
41
41
|
}
|
|
42
42
|
export interface SchemaOrgWebPage extends SchemaOrgThing {
|
|
43
|
-
|
|
43
|
+
'@type': 'WebPage';
|
|
44
44
|
breadcrumb?: string;
|
|
45
45
|
mainEntity?: SchemaOrgThing;
|
|
46
46
|
lastReviewed?: string;
|
|
@@ -48,40 +48,40 @@ export interface SchemaOrgWebPage extends SchemaOrgThing {
|
|
|
48
48
|
significantLink?: string[];
|
|
49
49
|
}
|
|
50
50
|
export interface SchemaOrgEvent extends SchemaOrgThing {
|
|
51
|
-
|
|
51
|
+
'@type': 'Event';
|
|
52
52
|
startDate: string;
|
|
53
53
|
endDate?: string;
|
|
54
54
|
location?: SchemaOrgPlace | string;
|
|
55
55
|
organizer?: SchemaOrgOrganization | SchemaOrgPerson;
|
|
56
56
|
performer?: SchemaOrgPerson | SchemaOrgOrganization;
|
|
57
|
-
eventStatus?:
|
|
58
|
-
eventAttendanceMode?:
|
|
57
|
+
eventStatus?: 'EventScheduled' | 'EventCancelled' | 'EventPostponed' | 'EventRescheduled';
|
|
58
|
+
eventAttendanceMode?: 'OfflineEventAttendanceMode' | 'OnlineEventAttendanceMode' | 'MixedEventAttendanceMode';
|
|
59
59
|
offers?: SchemaOrgOffer[];
|
|
60
60
|
}
|
|
61
61
|
export interface SchemaOrgFAQPage extends SchemaOrgThing {
|
|
62
|
-
|
|
62
|
+
'@type': 'FAQPage';
|
|
63
63
|
mainEntity: Array<{
|
|
64
|
-
|
|
64
|
+
'@type': 'Question';
|
|
65
65
|
name: string;
|
|
66
66
|
acceptedAnswer: {
|
|
67
|
-
|
|
67
|
+
'@type': 'Answer';
|
|
68
68
|
text: string;
|
|
69
69
|
};
|
|
70
70
|
}>;
|
|
71
71
|
}
|
|
72
72
|
export interface SchemaOrgService extends SchemaOrgThing {
|
|
73
|
-
|
|
73
|
+
'@type': 'Service';
|
|
74
74
|
provider?: SchemaOrgOrganization | SchemaOrgPerson;
|
|
75
75
|
serviceType?: string;
|
|
76
76
|
areaServed?: string;
|
|
77
77
|
hasOfferCatalog?: {
|
|
78
|
-
|
|
78
|
+
'@type': 'OfferCatalog';
|
|
79
79
|
name: string;
|
|
80
80
|
itemListElement: SchemaOrgOffer[];
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
export interface SchemaOrgJobPosting extends SchemaOrgThing {
|
|
84
|
-
|
|
84
|
+
'@type': 'JobPosting';
|
|
85
85
|
title: string;
|
|
86
86
|
datePosted: string;
|
|
87
87
|
validThrough?: string;
|
|
@@ -89,22 +89,22 @@ export interface SchemaOrgJobPosting extends SchemaOrgThing {
|
|
|
89
89
|
jobLocation?: SchemaOrgPlace;
|
|
90
90
|
employmentType?: string | string[];
|
|
91
91
|
baseSalary?: {
|
|
92
|
-
|
|
92
|
+
'@type': 'MonetaryAmount';
|
|
93
93
|
currency: string;
|
|
94
94
|
value: number | {
|
|
95
|
-
|
|
95
|
+
'@type': 'QuantitativeValue';
|
|
96
96
|
minValue: number;
|
|
97
97
|
maxValue: number;
|
|
98
98
|
};
|
|
99
99
|
};
|
|
100
100
|
jobLocationType?: string;
|
|
101
101
|
}
|
|
102
|
-
export type SchemaOrgLocalBusiness = Omit<SchemaOrgOrganization,
|
|
103
|
-
|
|
102
|
+
export type SchemaOrgLocalBusiness = Omit<SchemaOrgOrganization, '@type'> & {
|
|
103
|
+
'@type': 'LocalBusiness';
|
|
104
104
|
priceRange?: string;
|
|
105
105
|
openingHours?: string[];
|
|
106
106
|
geo?: {
|
|
107
|
-
|
|
107
|
+
'@type': 'GeoCoordinates';
|
|
108
108
|
latitude: number;
|
|
109
109
|
longitude: number;
|
|
110
110
|
};
|
|
@@ -112,11 +112,11 @@ export type SchemaOrgLocalBusiness = Omit<SchemaOrgOrganization, "@type"> & {
|
|
|
112
112
|
servesCuisine?: string;
|
|
113
113
|
};
|
|
114
114
|
export interface SchemaOrgReview extends SchemaOrgThing {
|
|
115
|
-
|
|
115
|
+
'@type': 'Review';
|
|
116
116
|
itemReviewed: SchemaOrgThing;
|
|
117
117
|
author: SchemaOrgPerson | SchemaOrgOrganization;
|
|
118
118
|
reviewRating: {
|
|
119
|
-
|
|
119
|
+
'@type': 'Rating';
|
|
120
120
|
ratingValue: number;
|
|
121
121
|
bestRating?: number;
|
|
122
122
|
worstRating?: number;
|
|
@@ -125,9 +125,9 @@ export interface SchemaOrgReview extends SchemaOrgThing {
|
|
|
125
125
|
datePublished?: string;
|
|
126
126
|
}
|
|
127
127
|
export interface SchemaOrgProduct extends SchemaOrgThing {
|
|
128
|
-
|
|
128
|
+
'@type': 'Product';
|
|
129
129
|
brand?: SchemaOrgOrganization | {
|
|
130
|
-
|
|
130
|
+
'@type': 'Brand';
|
|
131
131
|
name: string;
|
|
132
132
|
};
|
|
133
133
|
sku?: string;
|
|
@@ -135,7 +135,7 @@ export interface SchemaOrgProduct extends SchemaOrgThing {
|
|
|
135
135
|
mpn?: string;
|
|
136
136
|
offers?: SchemaOrgOffer | SchemaOrgOffer[];
|
|
137
137
|
aggregateRating?: {
|
|
138
|
-
|
|
138
|
+
'@type': 'AggregateRating';
|
|
139
139
|
ratingValue: number;
|
|
140
140
|
reviewCount: number;
|
|
141
141
|
bestRating?: number;
|
|
@@ -146,7 +146,7 @@ export interface SchemaOrgProduct extends SchemaOrgThing {
|
|
|
146
146
|
weight?: string;
|
|
147
147
|
}
|
|
148
148
|
interface SchemaOrgPostalAddress {
|
|
149
|
-
|
|
149
|
+
'@type': 'PostalAddress';
|
|
150
150
|
streetAddress?: string;
|
|
151
151
|
addressLocality?: string;
|
|
152
152
|
addressRegion?: string;
|
|
@@ -154,12 +154,12 @@ interface SchemaOrgPostalAddress {
|
|
|
154
154
|
addressCountry?: string;
|
|
155
155
|
}
|
|
156
156
|
interface SchemaOrgPlace {
|
|
157
|
-
|
|
157
|
+
'@type': 'Place';
|
|
158
158
|
name?: string;
|
|
159
159
|
address?: SchemaOrgPostalAddress;
|
|
160
160
|
}
|
|
161
161
|
interface SchemaOrgOffer {
|
|
162
|
-
|
|
162
|
+
'@type': 'Offer';
|
|
163
163
|
price?: number | string;
|
|
164
164
|
priceCurrency?: string;
|
|
165
165
|
availability?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/schema/registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/schema/registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,eAAe,GAAG,qBAAqB,CAAA;IAC/C,SAAS,CAAC,EAAE,qBAAqB,CAAA;IACjC,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,OAAO,EAAE,QAAQ,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,qBAAqB,CAAA;IACnC,OAAO,CAAC,EAAE,sBAAsB,CAAA;CACjC;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,OAAO,EAAE,SAAS,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,cAAc,GAAG,MAAM,CAAA;IAClC,SAAS,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAAA;IACnD,SAAS,CAAC,EAAE,eAAe,GAAG,qBAAqB,CAAA;IACnD,WAAW,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,kBAAkB,CAAA;IACzF,mBAAmB,CAAC,EAChB,4BAA4B,GAC5B,2BAA2B,GAC3B,0BAA0B,CAAA;IAC9B,MAAM,CAAC,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,OAAO,EAAE,SAAS,CAAA;IAClB,UAAU,EAAE,KAAK,CAAC;QAChB,OAAO,EAAE,UAAU,CAAA;QACnB,IAAI,EAAE,MAAM,CAAA;QACZ,cAAc,EAAE;YACd,OAAO,EAAE,QAAQ,CAAA;YACjB,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;KACF,CAAC,CAAA;CACH;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAAA;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE;QAChB,OAAO,EAAE,cAAc,CAAA;QACvB,IAAI,EAAE,MAAM,CAAA;QACZ,eAAe,EAAE,cAAc,EAAE,CAAA;KAClC,CAAA;CACF;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,OAAO,EAAE,YAAY,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,EAAE,qBAAqB,CAAA;IACzC,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAClC,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,gBAAgB,CAAA;QACzB,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,mBAAmB,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KACrF,CAAA;IACD,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG;IAC1E,OAAO,EAAE,eAAe,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,GAAG,CAAC,EAAE;QACJ,OAAO,EAAE,gBAAgB,CAAA;QACzB,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,OAAO,EAAE,QAAQ,CAAA;IACjB,YAAY,EAAE,cAAc,CAAA;IAC5B,MAAM,EAAE,eAAe,GAAG,qBAAqB,CAAA;IAC/C,YAAY,EAAE;QACZ,OAAO,EAAE,QAAQ,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,OAAO,EAAE,SAAS,CAAA;IAClB,KAAK,CAAC,EAAE,qBAAqB,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAClE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAA;IAC1C,eAAe,CAAC,EAAE;QAChB,OAAO,EAAE,iBAAiB,CAAA;QAC1B,WAAW,EAAE,MAAM,CAAA;QACnB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,MAAM,CAAC,EAAE,eAAe,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,eAAe,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,sBAAsB,CAAA;CACjC;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAA;KAC9B,CAAC,CAAA;CACH;AA8BD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,CAqFhF"}
|
package/dist/schema/validator.js
CHANGED
|
@@ -1,107 +1,107 @@
|
|
|
1
1
|
const REQUIRED_FIELDS = {
|
|
2
|
-
Article: [
|
|
3
|
-
WebPage: [
|
|
4
|
-
Person: [
|
|
5
|
-
Organization: [
|
|
6
|
-
Event: [
|
|
7
|
-
FAQPage: [
|
|
8
|
-
Service: [
|
|
9
|
-
JobPosting: [
|
|
10
|
-
LocalBusiness: [
|
|
11
|
-
Review: [
|
|
12
|
-
Product: [
|
|
2
|
+
Article: ['headline', 'author', 'datePublished'],
|
|
3
|
+
WebPage: ['name'],
|
|
4
|
+
Person: ['name'],
|
|
5
|
+
Organization: ['name'],
|
|
6
|
+
Event: ['name', 'startDate'],
|
|
7
|
+
FAQPage: ['mainEntity'],
|
|
8
|
+
Service: ['name'],
|
|
9
|
+
JobPosting: ['title', 'datePosted', 'hiringOrganization'],
|
|
10
|
+
LocalBusiness: ['name', 'address'],
|
|
11
|
+
Review: ['itemReviewed', 'author', 'reviewRating'],
|
|
12
|
+
Product: ['name'],
|
|
13
13
|
};
|
|
14
14
|
const RECOMMENDED_FIELDS = {
|
|
15
|
-
Article: [
|
|
16
|
-
WebPage: [
|
|
17
|
-
Person: [
|
|
18
|
-
Organization: [
|
|
19
|
-
Event: [
|
|
15
|
+
Article: ['image', 'publisher', 'dateModified', 'description'],
|
|
16
|
+
WebPage: ['description', 'url'],
|
|
17
|
+
Person: ['image', 'url'],
|
|
18
|
+
Organization: ['logo', 'url'],
|
|
19
|
+
Event: ['endDate', 'location', 'description', 'image'],
|
|
20
20
|
FAQPage: [],
|
|
21
|
-
Service: [
|
|
22
|
-
JobPosting: [
|
|
23
|
-
LocalBusiness: [
|
|
24
|
-
Review: [
|
|
25
|
-
Product: [
|
|
21
|
+
Service: ['provider', 'description'],
|
|
22
|
+
JobPosting: ['description', 'employmentType', 'baseSalary', 'validThrough'],
|
|
23
|
+
LocalBusiness: ['telephone', 'openingHours', 'geo'],
|
|
24
|
+
Review: ['reviewBody', 'datePublished'],
|
|
25
|
+
Product: ['image', 'description', 'offers', 'brand'],
|
|
26
26
|
};
|
|
27
27
|
/** Validates a JSON-LD schema object against Schema.org requirements. */
|
|
28
28
|
export function validateSchema(schema) {
|
|
29
29
|
const errors = [];
|
|
30
|
-
const type = schema[
|
|
31
|
-
if (!schema[
|
|
30
|
+
const type = schema['@type'];
|
|
31
|
+
if (!schema['@context']) {
|
|
32
32
|
errors.push({
|
|
33
|
-
field:
|
|
34
|
-
message:
|
|
35
|
-
severity:
|
|
33
|
+
field: '@context',
|
|
34
|
+
message: 'Missing @context — should be "https://schema.org"',
|
|
35
|
+
severity: 'error',
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
if (!type) {
|
|
39
39
|
errors.push({
|
|
40
|
-
field:
|
|
41
|
-
message:
|
|
42
|
-
severity:
|
|
40
|
+
field: '@type',
|
|
41
|
+
message: 'Missing @type — every schema object must declare a type',
|
|
42
|
+
severity: 'error',
|
|
43
43
|
});
|
|
44
44
|
return { valid: false, errors };
|
|
45
45
|
}
|
|
46
46
|
const required = REQUIRED_FIELDS[type] ?? [];
|
|
47
47
|
for (const field of required) {
|
|
48
|
-
if (schema[field] === undefined || schema[field] === null || schema[field] ===
|
|
48
|
+
if (schema[field] === undefined || schema[field] === null || schema[field] === '') {
|
|
49
49
|
errors.push({
|
|
50
50
|
field,
|
|
51
51
|
message: `Required field "${field}" is missing for type ${type}`,
|
|
52
|
-
severity:
|
|
52
|
+
severity: 'error',
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
const recommended = RECOMMENDED_FIELDS[type] ?? [];
|
|
57
57
|
for (const field of recommended) {
|
|
58
|
-
if (schema[field] === undefined || schema[field] === null || schema[field] ===
|
|
58
|
+
if (schema[field] === undefined || schema[field] === null || schema[field] === '') {
|
|
59
59
|
errors.push({
|
|
60
60
|
field,
|
|
61
61
|
message: `Recommended field "${field}" is missing for type ${type}`,
|
|
62
|
-
severity:
|
|
62
|
+
severity: 'warning',
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
if (type ===
|
|
67
|
-
const headline = schema[
|
|
68
|
-
if (typeof headline ===
|
|
66
|
+
if (type === 'Article') {
|
|
67
|
+
const headline = schema['headline'];
|
|
68
|
+
if (typeof headline === 'string' && headline.length > 110) {
|
|
69
69
|
errors.push({
|
|
70
|
-
field:
|
|
71
|
-
message:
|
|
72
|
-
severity:
|
|
70
|
+
field: 'headline',
|
|
71
|
+
message: 'Headline exceeds 110 characters — may be truncated in search results',
|
|
72
|
+
severity: 'warning',
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
if (type ===
|
|
77
|
-
const questions = schema[
|
|
76
|
+
if (type === 'FAQPage' && Array.isArray(schema['mainEntity'])) {
|
|
77
|
+
const questions = schema['mainEntity'];
|
|
78
78
|
for (let i = 0; i < questions.length; i++) {
|
|
79
79
|
const q = questions[i];
|
|
80
|
-
if (q[
|
|
80
|
+
if (q['@type'] !== 'Question') {
|
|
81
81
|
errors.push({
|
|
82
82
|
field: `mainEntity[${i}].@type`,
|
|
83
|
-
message:
|
|
84
|
-
severity:
|
|
83
|
+
message: 'FAQ items must have @type "Question"',
|
|
84
|
+
severity: 'error',
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
|
-
if (!q[
|
|
87
|
+
if (!q['name']) {
|
|
88
88
|
errors.push({
|
|
89
89
|
field: `mainEntity[${i}].name`,
|
|
90
|
-
message:
|
|
91
|
-
severity:
|
|
90
|
+
message: 'FAQ question is missing the "name" field (the question text)',
|
|
91
|
+
severity: 'error',
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
|
-
const answer = q[
|
|
95
|
-
if (!answer?.[
|
|
94
|
+
const answer = q['acceptedAnswer'];
|
|
95
|
+
if (!answer?.['text']) {
|
|
96
96
|
errors.push({
|
|
97
97
|
field: `mainEntity[${i}].acceptedAnswer.text`,
|
|
98
|
-
message:
|
|
99
|
-
severity:
|
|
98
|
+
message: 'FAQ answer is missing the "text" field',
|
|
99
|
+
severity: 'error',
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
|
-
const hasErrors = errors.some((e) => e.severity ===
|
|
104
|
+
const hasErrors = errors.some((e) => e.severity === 'error');
|
|
105
105
|
return { valid: !hasErrors, errors };
|
|
106
106
|
}
|
|
107
107
|
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"AASA,MAAM,eAAe,GAA6B;IAChD,OAAO,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,eAAe,CAAC;IAChD,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,MAAM,CAAC;IACtB,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAAC;IACzD,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;IAClC,MAAM,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,cAAc,CAAC;IAClD,OAAO,EAAE,CAAC,MAAM,CAAC;CAClB,
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/schema/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/sitemap/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export interface SitemapEntry {
|
|
2
2
|
loc: string;
|
|
3
3
|
lastmod?: string;
|
|
4
|
-
changefreq?:
|
|
4
|
+
changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
|
|
5
5
|
priority?: number;
|
|
6
6
|
}
|
|
7
7
|
export interface ImageSitemapEntry {
|
|
@@ -47,9 +47,9 @@ export interface HreflangEntry {
|
|
|
47
47
|
export interface CollectionSitemapConfig {
|
|
48
48
|
slug: string;
|
|
49
49
|
urlPrefix?: string;
|
|
50
|
-
type?:
|
|
50
|
+
type?: 'page' | 'post';
|
|
51
51
|
sitemapPriority?: number;
|
|
52
|
-
sitemapChangeFreq?:
|
|
52
|
+
sitemapChangeFreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
|
|
53
53
|
excludeFromSitemap?: boolean;
|
|
54
54
|
archivePath?: string;
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sitemap/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sitemap/index.ts"],"names":[],"mappings":"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"}
|