@masters-ws/react-seo 1.1.0 → 1.2.1
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 +21 -0
- package/dist/chunk-QD5UVA5B.mjs +357 -0
- package/dist/core/index.d.mts +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +129 -2
- package/dist/core/index.mjs +11 -1
- package/dist/index-BEY3UKjK.d.mts +538 -0
- package/dist/index-BEY3UKjK.d.ts +538 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +129 -2
- package/dist/index.mjs +11 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -38,14 +38,19 @@ __export(index_exports, {
|
|
|
38
38
|
SeoTag: () => SeoTag,
|
|
39
39
|
SeoVideo: () => SeoVideo,
|
|
40
40
|
generateArticleSchema: () => generateArticleSchema,
|
|
41
|
+
generateBookSchema: () => generateBookSchema,
|
|
41
42
|
generateBreadcrumbSchema: () => generateBreadcrumbSchema,
|
|
42
43
|
generateEventSchema: () => generateEventSchema,
|
|
43
44
|
generateFAQSchema: () => generateFAQSchema,
|
|
44
45
|
generateLocalBusinessSchema: () => generateLocalBusinessSchema,
|
|
46
|
+
generateMovieSchema: () => generateMovieSchema,
|
|
45
47
|
generateOrganizationSchema: () => generateOrganizationSchema,
|
|
46
48
|
generatePaginatedTitle: () => generatePaginatedTitle,
|
|
47
49
|
generatePaginationLinks: () => generatePaginationLinks,
|
|
50
|
+
generatePodcastEpisodeSchema: () => generatePodcastEpisodeSchema,
|
|
51
|
+
generatePodcastSchema: () => generatePodcastSchema,
|
|
48
52
|
generateProductSchema: () => generateProductSchema,
|
|
53
|
+
generateSoftwareSchema: () => generateSoftwareSchema,
|
|
49
54
|
generateVideoSchema: () => generateVideoSchema,
|
|
50
55
|
generateWebSiteSchema: () => generateWebSiteSchema,
|
|
51
56
|
toNextMetadata: () => toNextMetadata,
|
|
@@ -210,6 +215,115 @@ function generateLocalBusinessSchema(data) {
|
|
|
210
215
|
"priceRange": data.priceRange
|
|
211
216
|
};
|
|
212
217
|
}
|
|
218
|
+
function generateSoftwareSchema(data) {
|
|
219
|
+
return {
|
|
220
|
+
"@context": "https://schema.org",
|
|
221
|
+
"@type": "SoftwareApplication",
|
|
222
|
+
"name": data.name,
|
|
223
|
+
"description": data.description,
|
|
224
|
+
"operatingSystem": data.operatingSystem,
|
|
225
|
+
"applicationCategory": data.applicationCategory,
|
|
226
|
+
"offers": data.offers ? {
|
|
227
|
+
"@type": "Offer",
|
|
228
|
+
"price": data.offers.price,
|
|
229
|
+
"priceCurrency": data.offers.currency
|
|
230
|
+
} : void 0,
|
|
231
|
+
"aggregateRating": data.rating ? {
|
|
232
|
+
"@type": "AggregateRating",
|
|
233
|
+
"ratingValue": data.rating,
|
|
234
|
+
"reviewCount": data.reviewCount || 1
|
|
235
|
+
} : void 0,
|
|
236
|
+
"downloadUrl": data.downloadUrl,
|
|
237
|
+
"screenshot": data.screenshot
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
function generateBookSchema(data) {
|
|
241
|
+
return {
|
|
242
|
+
"@context": "https://schema.org",
|
|
243
|
+
"@type": "Book",
|
|
244
|
+
"name": data.name,
|
|
245
|
+
"author": typeof data.author === "string" ? {
|
|
246
|
+
"@type": "Person",
|
|
247
|
+
"name": data.author
|
|
248
|
+
} : {
|
|
249
|
+
"@type": "Person",
|
|
250
|
+
"name": data.author.name,
|
|
251
|
+
"url": data.author.url
|
|
252
|
+
},
|
|
253
|
+
"description": data.description,
|
|
254
|
+
"isbn": data.isbn,
|
|
255
|
+
"numberOfPages": data.numberOfPages,
|
|
256
|
+
"publisher": data.publisher ? {
|
|
257
|
+
"@type": "Organization",
|
|
258
|
+
"name": data.publisher
|
|
259
|
+
} : void 0,
|
|
260
|
+
"datePublished": data.datePublished,
|
|
261
|
+
"image": data.image,
|
|
262
|
+
"inLanguage": data.inLanguage,
|
|
263
|
+
"genre": data.genre
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function generateMovieSchema(data) {
|
|
267
|
+
return {
|
|
268
|
+
"@context": "https://schema.org",
|
|
269
|
+
"@type": "Movie",
|
|
270
|
+
"name": data.name,
|
|
271
|
+
"description": data.description,
|
|
272
|
+
"image": data.image,
|
|
273
|
+
"director": data.director ? {
|
|
274
|
+
"@type": "Person",
|
|
275
|
+
"name": data.director
|
|
276
|
+
} : void 0,
|
|
277
|
+
"actor": data.actor?.map((name) => ({
|
|
278
|
+
"@type": "Person",
|
|
279
|
+
"name": name
|
|
280
|
+
})),
|
|
281
|
+
"dateCreated": data.dateCreated,
|
|
282
|
+
"duration": data.duration,
|
|
283
|
+
"genre": data.genre,
|
|
284
|
+
"aggregateRating": data.rating ? {
|
|
285
|
+
"@type": "AggregateRating",
|
|
286
|
+
"ratingValue": data.rating,
|
|
287
|
+
"reviewCount": data.reviewCount || 1
|
|
288
|
+
} : void 0
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
function generatePodcastSchema(data) {
|
|
292
|
+
return {
|
|
293
|
+
"@context": "https://schema.org",
|
|
294
|
+
"@type": "PodcastSeries",
|
|
295
|
+
"name": data.name,
|
|
296
|
+
"description": data.description,
|
|
297
|
+
"image": data.image,
|
|
298
|
+
"author": data.author ? {
|
|
299
|
+
"@type": "Person",
|
|
300
|
+
"name": data.author
|
|
301
|
+
} : void 0,
|
|
302
|
+
"webFeed": data.webFeed,
|
|
303
|
+
"url": data.url,
|
|
304
|
+
"genre": data.genre
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
function generatePodcastEpisodeSchema(data) {
|
|
308
|
+
return {
|
|
309
|
+
"@context": "https://schema.org",
|
|
310
|
+
"@type": "PodcastEpisode",
|
|
311
|
+
"name": data.name,
|
|
312
|
+
"description": data.description,
|
|
313
|
+
"datePublished": data.datePublished,
|
|
314
|
+
"timeRequired": data.duration,
|
|
315
|
+
"url": data.url,
|
|
316
|
+
"associatedMedia": data.audio ? {
|
|
317
|
+
"@type": "AudioObject",
|
|
318
|
+
"contentUrl": data.audio
|
|
319
|
+
} : void 0,
|
|
320
|
+
"partOfSeries": data.partOfSeries ? {
|
|
321
|
+
"@type": "PodcastSeries",
|
|
322
|
+
"name": data.partOfSeries.name,
|
|
323
|
+
"url": data.partOfSeries.url
|
|
324
|
+
} : void 0
|
|
325
|
+
};
|
|
326
|
+
}
|
|
213
327
|
|
|
214
328
|
// src/core/metadata.ts
|
|
215
329
|
function toNextMetadata(props, config) {
|
|
@@ -230,7 +344,12 @@ function toNextMetadata(props, config) {
|
|
|
230
344
|
description: props.ogDescription || description,
|
|
231
345
|
url,
|
|
232
346
|
siteName: config.name,
|
|
233
|
-
images: props.ogImage || image ? [{
|
|
347
|
+
images: props.ogImage || image ? [{
|
|
348
|
+
url: props.ogImage || image,
|
|
349
|
+
width: props.ogImageWidth || 1200,
|
|
350
|
+
height: props.ogImageHeight || 630,
|
|
351
|
+
alt: props.ogImageAlt || title
|
|
352
|
+
}] : [],
|
|
234
353
|
type: props.ogType || (props.type === "article" ? "article" : "website"),
|
|
235
354
|
locale: props.ogLocale || config.language || "ar_SA"
|
|
236
355
|
},
|
|
@@ -238,7 +357,10 @@ function toNextMetadata(props, config) {
|
|
|
238
357
|
card: props.twitterCard || "summary_large_image",
|
|
239
358
|
title: props.twitterTitle || title,
|
|
240
359
|
description: props.twitterDescription || description,
|
|
241
|
-
images: props.twitterImage || image ? [
|
|
360
|
+
images: props.twitterImage || image ? [{
|
|
361
|
+
url: props.twitterImage || image,
|
|
362
|
+
alt: props.twitterImageAlt || title
|
|
363
|
+
}] : [],
|
|
242
364
|
site: config.twitterHandle,
|
|
243
365
|
creator: config.twitterHandle
|
|
244
366
|
},
|
|
@@ -872,14 +994,19 @@ var SeoJobPosting = ({ job }) => {
|
|
|
872
994
|
SeoTag,
|
|
873
995
|
SeoVideo,
|
|
874
996
|
generateArticleSchema,
|
|
997
|
+
generateBookSchema,
|
|
875
998
|
generateBreadcrumbSchema,
|
|
876
999
|
generateEventSchema,
|
|
877
1000
|
generateFAQSchema,
|
|
878
1001
|
generateLocalBusinessSchema,
|
|
1002
|
+
generateMovieSchema,
|
|
879
1003
|
generateOrganizationSchema,
|
|
880
1004
|
generatePaginatedTitle,
|
|
881
1005
|
generatePaginationLinks,
|
|
1006
|
+
generatePodcastEpisodeSchema,
|
|
1007
|
+
generatePodcastSchema,
|
|
882
1008
|
generateProductSchema,
|
|
1009
|
+
generateSoftwareSchema,
|
|
883
1010
|
generateVideoSchema,
|
|
884
1011
|
generateWebSiteSchema,
|
|
885
1012
|
toNextMetadata,
|
package/dist/index.mjs
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateArticleSchema,
|
|
3
|
+
generateBookSchema,
|
|
3
4
|
generateBreadcrumbSchema,
|
|
4
5
|
generateEventSchema,
|
|
5
6
|
generateFAQSchema,
|
|
6
7
|
generateLocalBusinessSchema,
|
|
8
|
+
generateMovieSchema,
|
|
7
9
|
generateOrganizationSchema,
|
|
8
10
|
generatePaginatedTitle,
|
|
9
11
|
generatePaginationLinks,
|
|
12
|
+
generatePodcastEpisodeSchema,
|
|
13
|
+
generatePodcastSchema,
|
|
10
14
|
generateProductSchema,
|
|
15
|
+
generateSoftwareSchema,
|
|
11
16
|
generateVideoSchema,
|
|
12
17
|
generateWebSiteSchema,
|
|
13
18
|
toNextMetadata
|
|
14
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-QD5UVA5B.mjs";
|
|
15
20
|
|
|
16
21
|
// src/components/SEOProvider.tsx
|
|
17
22
|
import { createContext, useContext } from "react";
|
|
@@ -610,14 +615,19 @@ export {
|
|
|
610
615
|
SeoTag,
|
|
611
616
|
SeoVideo,
|
|
612
617
|
generateArticleSchema,
|
|
618
|
+
generateBookSchema,
|
|
613
619
|
generateBreadcrumbSchema,
|
|
614
620
|
generateEventSchema,
|
|
615
621
|
generateFAQSchema,
|
|
616
622
|
generateLocalBusinessSchema,
|
|
623
|
+
generateMovieSchema,
|
|
617
624
|
generateOrganizationSchema,
|
|
618
625
|
generatePaginatedTitle,
|
|
619
626
|
generatePaginationLinks,
|
|
627
|
+
generatePodcastEpisodeSchema,
|
|
628
|
+
generatePodcastSchema,
|
|
620
629
|
generateProductSchema,
|
|
630
|
+
generateSoftwareSchema,
|
|
621
631
|
generateVideoSchema,
|
|
622
632
|
generateWebSiteSchema,
|
|
623
633
|
toNextMetadata,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masters-ws/react-seo",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Professional high-performance SEO package for React/Next.js. Zero-dependency core for Next.js App Router, optional Helmet components for React.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|