@mdwrk/structured-data 0.1.3

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.
@@ -0,0 +1,374 @@
1
+ import { imageValue, node, personOrOrganizationRef, requireText } from "./core.js";
2
+ import { articleNode, aggregateRatingNode, imageObjectSchema, productNode, softwareApplicationNode, softwareSourceCodeNode, webApplicationNode, webPageSchema, webSiteSchema, organizationNode, techArticleNode, itemListNode, faqPageSchema, breadcrumbListSchema, howToNode, } from "./builders-primary.js";
3
+ import { canonicalHref, stableId } from "./core.js";
4
+ export function courseNode(input) {
5
+ return node("Course", {
6
+ "@id": input.id,
7
+ name: requireText(input.name, "name"),
8
+ description: input.description,
9
+ url: input.url,
10
+ image: imageValue(input.image, imageObjectSchema),
11
+ provider: personOrOrganizationRef(input.provider),
12
+ courseCode: input.courseCode,
13
+ coursePrerequisites: input.coursePrerequisites,
14
+ hasCourseInstance: input.hasCourseInstance,
15
+ });
16
+ }
17
+ export function courseInstanceNode(input) {
18
+ return node("CourseInstance", {
19
+ "@id": input.id,
20
+ name: requireText(input.name, "name"),
21
+ description: input.description,
22
+ url: input.url,
23
+ courseMode: input.courseMode,
24
+ startDate: input.startDate,
25
+ endDate: input.endDate,
26
+ location: input.location,
27
+ instructor: personOrOrganizationRef(input.instructor),
28
+ });
29
+ }
30
+ export function discussionForumPostingNode(input) {
31
+ return node("DiscussionForumPosting", {
32
+ "@id": input.id,
33
+ headline: input.headline ?? input.name,
34
+ name: requireText(input.name, "name"),
35
+ description: input.description,
36
+ url: input.url,
37
+ image: imageValue(input.image, imageObjectSchema),
38
+ author: personOrOrganizationRef(input.author),
39
+ datePublished: input.datePublished,
40
+ dateModified: input.dateModified,
41
+ articleBody: input.articleBody,
42
+ });
43
+ }
44
+ export function bookNode(input) {
45
+ return node("Book", {
46
+ "@id": input.id,
47
+ name: requireText(input.name, "name"),
48
+ description: input.description,
49
+ url: input.url,
50
+ image: imageValue(input.image, imageObjectSchema),
51
+ author: personOrOrganizationRef(input.author),
52
+ isbn: input.isbn,
53
+ potentialAction: input.readAction,
54
+ });
55
+ }
56
+ export function readActionNode(target) {
57
+ return node("ReadAction", { target });
58
+ }
59
+ export function claimReviewNode(input) {
60
+ return node("ClaimReview", {
61
+ "@id": input.id,
62
+ name: requireText(input.name, "name"),
63
+ description: input.description,
64
+ url: input.url,
65
+ claimReviewed: requireText(input.claimReviewed, "claimReviewed"),
66
+ itemReviewed: input.itemReviewed,
67
+ author: personOrOrganizationRef(input.author),
68
+ reviewRating: input.reviewRating,
69
+ datePublished: input.datePublished,
70
+ });
71
+ }
72
+ export function employerAggregateRatingNode(input) {
73
+ return { ...aggregateRatingNode(input), "@type": "EmployerAggregateRating" };
74
+ }
75
+ export function estimatedSalaryNode(input) {
76
+ return node("MonetaryAmountDistribution", {
77
+ name: input.name,
78
+ currency: input.currency,
79
+ duration: input.unitText,
80
+ percentile10: input.minValue,
81
+ percentile90: input.maxValue,
82
+ });
83
+ }
84
+ export function jobPostingNode(input) {
85
+ return node("JobPosting", {
86
+ "@id": input.id,
87
+ title: requireText(input.title, "title"),
88
+ name: input.name || input.title,
89
+ description: input.description,
90
+ url: input.url,
91
+ datePosted: requireText(input.datePosted, "datePosted"),
92
+ validThrough: input.validThrough,
93
+ employmentType: input.employmentType,
94
+ hiringOrganization: personOrOrganizationRef(input.hiringOrganization),
95
+ jobLocation: input.jobLocation,
96
+ baseSalary: input.baseSalary,
97
+ });
98
+ }
99
+ export function localBusinessNode(input) {
100
+ return node("LocalBusiness", {
101
+ "@id": input.id,
102
+ name: requireText(input.name, "name"),
103
+ description: input.description,
104
+ url: input.url,
105
+ image: imageValue(input.image, imageObjectSchema),
106
+ logo: imageValue(input.logo, imageObjectSchema),
107
+ sameAs: input.sameAs,
108
+ address: input.address,
109
+ telephone: input.telephone,
110
+ priceRange: input.priceRange,
111
+ openingHours: input.openingHours,
112
+ });
113
+ }
114
+ export function loyaltyProgramNode(input) {
115
+ return node("MemberProgram", {
116
+ "@id": input.id,
117
+ name: requireText(input.name, "name"),
118
+ description: input.description,
119
+ url: input.url,
120
+ provider: personOrOrganizationRef(input.provider),
121
+ });
122
+ }
123
+ export function mathSolverNode(input) {
124
+ return node("MathSolver", {
125
+ "@id": input.id,
126
+ name: requireText(input.name, "name"),
127
+ description: input.description,
128
+ url: input.url,
129
+ mathExpression: input.mathExpression,
130
+ });
131
+ }
132
+ export function merchantReturnPolicyNode(input) {
133
+ return node("MerchantReturnPolicy", {
134
+ "@id": input.id,
135
+ name: requireText(input.name, "name"),
136
+ description: input.description,
137
+ url: input.url,
138
+ merchantReturnDays: input.merchantReturnDays,
139
+ returnPolicyCategory: input.returnPolicyCategory,
140
+ });
141
+ }
142
+ export function offerShippingDetailsNode(input) {
143
+ return node("OfferShippingDetails", {
144
+ "@id": input.id,
145
+ name: requireText(input.name, "name"),
146
+ description: input.description,
147
+ shippingDestination: input.shippingDestination,
148
+ shippingRate: input.shippingRate,
149
+ });
150
+ }
151
+ export function movieNode(input) {
152
+ return node("Movie", {
153
+ "@id": input.id,
154
+ name: requireText(input.name, "name"),
155
+ description: input.description,
156
+ url: input.url,
157
+ image: imageValue(input.image, imageObjectSchema),
158
+ director: personOrOrganizationRef(input.director),
159
+ actor: Array.isArray(input.actor) ? input.actor.map(personOrOrganizationRef) : personOrOrganizationRef(input.actor),
160
+ datePublished: input.datePublished,
161
+ });
162
+ }
163
+ export function productGroupNode(input) {
164
+ return {
165
+ ...productNode(input),
166
+ "@type": "ProductGroup",
167
+ hasVariant: input.hasVariant,
168
+ variesBy: input.variesBy,
169
+ };
170
+ }
171
+ export function recipeNode(input) {
172
+ return node("Recipe", {
173
+ "@id": input.id,
174
+ name: requireText(input.name, "name"),
175
+ description: input.description,
176
+ url: input.url,
177
+ image: imageValue(input.image, imageObjectSchema),
178
+ author: personOrOrganizationRef(input.author),
179
+ datePublished: input.datePublished,
180
+ recipeIngredient: input.recipeIngredient,
181
+ recipeInstructions: Array.isArray(input.recipeInstructions)
182
+ ? input.recipeInstructions.map((step, index) => ({
183
+ "@type": "HowToStep",
184
+ position: index + 1,
185
+ name: requireText(step.name, "Recipe step name"),
186
+ text: requireText(step.text, "Recipe step text"),
187
+ }))
188
+ : input.recipeInstructions,
189
+ prepTime: input.prepTime,
190
+ cookTime: input.cookTime,
191
+ totalTime: input.totalTime,
192
+ });
193
+ }
194
+ export function speakableSpecificationNode(input) {
195
+ return node("SpeakableSpecification", {
196
+ cssSelector: input.cssSelector,
197
+ xpath: input.xpath,
198
+ });
199
+ }
200
+ export function paywalledContentSchema(input) {
201
+ return {
202
+ ...webPageSchema(input),
203
+ isAccessibleForFree: false,
204
+ hasPart: input.cssSelector?.map((selector) => ({
205
+ "@type": "WebPageElement",
206
+ isAccessibleForFree: false,
207
+ cssSelector: selector,
208
+ })),
209
+ };
210
+ }
211
+ export function vacationRentalNode(input) {
212
+ return node("VacationRental", {
213
+ "@id": input.id,
214
+ name: requireText(input.name, "name"),
215
+ description: input.description,
216
+ url: input.url,
217
+ image: imageValue(input.image, imageObjectSchema),
218
+ address: input.address,
219
+ containsPlace: input.containsPlace,
220
+ });
221
+ }
222
+ export function vehicleListingNode(input) {
223
+ return node("Vehicle", {
224
+ "@id": input.id,
225
+ name: requireText(input.name, "name"),
226
+ description: input.description,
227
+ url: input.url,
228
+ image: imageValue(input.image, imageObjectSchema),
229
+ brand: input.brand,
230
+ offers: input.offers,
231
+ vehicleIdentificationNumber: input.vehicleIdentificationNumber,
232
+ vehicleModelDate: input.vehicleModelDate,
233
+ mileageFromOdometer: input.mileageFromOdometer,
234
+ });
235
+ }
236
+ export function organizationSchema(site) {
237
+ return organizationNode({
238
+ id: stableId(site.product.canonicalUrl, "organization"),
239
+ name: site.product.name,
240
+ description: site.product.description,
241
+ url: site.product.canonicalUrl,
242
+ logo: site.product.logo,
243
+ sameAs: site.product.sameAs,
244
+ });
245
+ }
246
+ export function websiteSchema(site) {
247
+ return webSiteSchema({
248
+ id: stableId(site.product.canonicalUrl, "website"),
249
+ name: site.product.name,
250
+ description: site.product.description,
251
+ url: site.product.canonicalUrl,
252
+ });
253
+ }
254
+ export function softwareApplicationSchema(site) {
255
+ return softwareApplicationNode({
256
+ id: stableId(site.product.canonicalUrl, "software-application"),
257
+ name: site.product.name,
258
+ description: site.product.description,
259
+ url: site.product.canonicalUrl,
260
+ image: site.product.logo,
261
+ applicationCategory: site.product.category,
262
+ });
263
+ }
264
+ export function webApplicationSchema(site) {
265
+ return webApplicationNode({
266
+ id: stableId(site.product.canonicalUrl, "web-application"),
267
+ name: site.product.name,
268
+ description: site.product.description,
269
+ url: site.product.canonicalUrl,
270
+ image: site.product.logo,
271
+ applicationCategory: site.product.category,
272
+ });
273
+ }
274
+ export function softwareSourceCodeSchema(page) {
275
+ return softwareSourceCodeNode({
276
+ id: stableId(page.canonicalUrl, "software-source-code"),
277
+ name: page.h1,
278
+ description: page.description,
279
+ url: page.canonicalUrl,
280
+ });
281
+ }
282
+ export function techArticleSchema(page) {
283
+ return techArticleNode({
284
+ id: stableId(page.canonicalUrl, "tech-article"),
285
+ name: page.h1,
286
+ headline: page.title,
287
+ description: page.description,
288
+ url: page.canonicalUrl,
289
+ image: page.image,
290
+ datePublished: page.datePublished,
291
+ dateModified: page.dateModified,
292
+ author: page.authorName,
293
+ });
294
+ }
295
+ export function articleSchema(page) {
296
+ return articleNode({
297
+ id: stableId(page.canonicalUrl, "article"),
298
+ name: page.h1,
299
+ headline: page.title,
300
+ description: page.description,
301
+ url: page.canonicalUrl,
302
+ image: page.image,
303
+ datePublished: page.datePublished,
304
+ dateModified: page.dateModified,
305
+ author: page.authorName,
306
+ });
307
+ }
308
+ export function breadcrumbSchema(items) {
309
+ return breadcrumbListSchema({ items });
310
+ }
311
+ export function faqSchema(items) {
312
+ return faqPageSchema({ items });
313
+ }
314
+ export function itemListSchema(name, items) {
315
+ return itemListNode({ name, items });
316
+ }
317
+ export function howToSchema(page) {
318
+ return howToNode({
319
+ id: stableId(page.canonicalUrl, "how-to"),
320
+ name: page.h1,
321
+ description: page.description,
322
+ url: page.canonicalUrl,
323
+ steps: [{ name: page.h1, text: page.description ?? page.title, url: page.canonicalUrl }],
324
+ });
325
+ }
326
+ export function buildJsonLdGraph(site, page) {
327
+ const canonicalRoot = site.product.canonicalUrl;
328
+ const organization = organizationSchema(site);
329
+ const website = websiteSchema(site);
330
+ const breadcrumb = breadcrumbListSchema({
331
+ id: stableId(page.canonicalUrl, "breadcrumb"),
332
+ items: page.breadcrumbs.map((item) => ({ ...item, href: canonicalHref(canonicalRoot, item.href) })),
333
+ });
334
+ const graph = [
335
+ organization,
336
+ website,
337
+ softwareApplicationSchema(site),
338
+ webPageSchema({
339
+ id: stableId(page.canonicalUrl, "web-page"),
340
+ name: page.h1,
341
+ description: page.description,
342
+ url: page.canonicalUrl,
343
+ image: page.image,
344
+ breadcrumb,
345
+ isPartOf: website,
346
+ datePublished: page.datePublished,
347
+ dateModified: page.dateModified,
348
+ }),
349
+ breadcrumb,
350
+ ];
351
+ if (page.kind === "answer" || page.kind === "feature" || page.kind === "docs_bridge")
352
+ graph.push(techArticleSchema(page));
353
+ if (page.faq?.length)
354
+ graph.push(faqSchema(page.faq));
355
+ if (page.kind === "package")
356
+ graph.push(softwareSourceCodeSchema(page));
357
+ if (page.kind === "blog" || page.kind === "update") {
358
+ graph.push(articleNode({
359
+ id: stableId(page.canonicalUrl, "blog-posting"),
360
+ name: page.h1,
361
+ headline: page.title,
362
+ description: page.description,
363
+ url: page.canonicalUrl,
364
+ image: page.image,
365
+ datePublished: page.datePublished,
366
+ dateModified: page.dateModified,
367
+ author: page.authorName ?? organization,
368
+ publisher: organization,
369
+ }));
370
+ graph[graph.length - 1]["@type"] = "BlogPosting";
371
+ }
372
+ return graph;
373
+ }
374
+ //# sourceMappingURL=builders-secondary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders-secondary.js","sourceRoot":"","sources":["../src/builders-secondary.ts"],"names":[],"mappings":"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"}
package/dist/core.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import type { JsonLd, JsonLdNodeType, StructuredDataImage } from "./types.js";
2
+ export declare const SCHEMA_CONTEXT = "https://schema.org";
3
+ export declare const SUPPORTED_SCHEMA_ORG_TYPES: readonly ["AggregateRating", "Article", "BlogPosting", "Book", "BreadcrumbList", "ClaimReview", "Course", "CourseInstance", "Dataset", "DiscussionForumPosting", "EmployerAggregateRating", "Event", "FAQPage", "HowTo", "ImageObject", "ItemList", "JobPosting", "LocalBusiness", "MathSolver", "MemberProgram", "MerchantReturnPolicy", "MonetaryAmountDistribution", "Movie", "OfferShippingDetails", "Organization", "Product", "ProductGroup", "ProfilePage", "QAPage", "ReadAction", "Recipe", "Review", "SoftwareApplication", "SoftwareSourceCode", "SpeakableSpecification", "TechArticle", "VacationRental", "Vehicle", "VideoObject", "WebApplication", "WebPage", "WebSite"];
4
+ export declare const isSupportedSchemaOrgType: (value: unknown) => value is JsonLdNodeType;
5
+ export declare const isAbsoluteSchemaUrl: (value: unknown) => value is string;
6
+ export declare const assertSupportedSchemaOrgType: (value: unknown, field?: string) => JsonLdNodeType;
7
+ export declare const compact: (value: unknown) => unknown;
8
+ export declare const requireText: (value: string | undefined, field: string) => string;
9
+ export declare const node: (type: JsonLdNodeType, value: Record<string, unknown>) => JsonLd;
10
+ export declare const stableId: (canonicalUrl: string, fragment: string) => string;
11
+ export declare const personOrOrganizationRef: (value: JsonLd | string | undefined) => JsonLd | string | undefined;
12
+ export declare function jsonLdGraph(nodes: JsonLd[], id?: string): JsonLd;
13
+ export declare const canonicalHref: (baseUrl: string, href: string) => string;
14
+ export type ImageObjectBuilder = (input: {
15
+ name: string;
16
+ url?: string;
17
+ contentUrl?: string;
18
+ width?: number;
19
+ height?: number;
20
+ caption?: string;
21
+ }) => JsonLd;
22
+ export declare const imageValue: (image: string | StructuredDataImage | undefined, buildImageObject: ImageObjectBuilder) => string | JsonLd | undefined;
23
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE9E,eAAO,MAAM,cAAc,uBAAuB,CAAC;AACnD,eAAO,MAAM,0BAA0B,0pBA2C5B,CAAC;AAEZ,eAAO,MAAM,wBAAwB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAC6B,CAAC;AAEjG,eAAO,MAAM,mBAAmB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,MAQ7D,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,EAAE,cAAe,KAAG,cAK9E,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,OAAO,OAAO,KAAG,OAcxC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,GAAG,SAAS,EAAE,OAAO,MAAM,KAAG,MAGtE,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,MAAM,cAAc,EAAE,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAO3E,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,cAAc,MAAM,EAAE,UAAU,MAAM,KAAG,MACM,CAAC;AAEzE,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,MAAM,GAAG,SACpB,CAAC;AAE5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,MACgD,CAAC;AAE/G,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,KAAK,MAAM,CAAC;AAEb,eAAO,MAAM,UAAU,GACrB,OAAO,MAAM,GAAG,mBAAmB,GAAG,SAAS,EAC/C,kBAAkB,kBAAkB,KACnC,MAAM,GAAG,MAAM,GAAG,SAapB,CAAC"}
package/dist/core.js ADDED
@@ -0,0 +1,122 @@
1
+ export const SCHEMA_CONTEXT = "https://schema.org";
2
+ export const SUPPORTED_SCHEMA_ORG_TYPES = Object.freeze([
3
+ "AggregateRating",
4
+ "Article",
5
+ "BlogPosting",
6
+ "Book",
7
+ "BreadcrumbList",
8
+ "ClaimReview",
9
+ "Course",
10
+ "CourseInstance",
11
+ "Dataset",
12
+ "DiscussionForumPosting",
13
+ "EmployerAggregateRating",
14
+ "Event",
15
+ "FAQPage",
16
+ "HowTo",
17
+ "ImageObject",
18
+ "ItemList",
19
+ "JobPosting",
20
+ "LocalBusiness",
21
+ "MathSolver",
22
+ "MemberProgram",
23
+ "MerchantReturnPolicy",
24
+ "MonetaryAmountDistribution",
25
+ "Movie",
26
+ "OfferShippingDetails",
27
+ "Organization",
28
+ "Product",
29
+ "ProductGroup",
30
+ "ProfilePage",
31
+ "QAPage",
32
+ "ReadAction",
33
+ "Recipe",
34
+ "Review",
35
+ "SoftwareApplication",
36
+ "SoftwareSourceCode",
37
+ "SpeakableSpecification",
38
+ "TechArticle",
39
+ "VacationRental",
40
+ "Vehicle",
41
+ "VideoObject",
42
+ "WebApplication",
43
+ "WebPage",
44
+ "WebSite",
45
+ ]);
46
+ export const isSupportedSchemaOrgType = (value) => typeof value === "string" && SUPPORTED_SCHEMA_ORG_TYPES.includes(value);
47
+ export const isAbsoluteSchemaUrl = (value) => {
48
+ if (typeof value !== "string" || !value.trim())
49
+ return false;
50
+ try {
51
+ const parsed = new URL(value);
52
+ return parsed.protocol === "https:" || parsed.protocol === "http:";
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ };
58
+ export const assertSupportedSchemaOrgType = (value, field = "@type") => {
59
+ if (!isSupportedSchemaOrgType(value)) {
60
+ throw new Error(`Unsupported Schema.org ${field}: ${String(value ?? "")}`);
61
+ }
62
+ return value;
63
+ };
64
+ export const compact = (value) => {
65
+ if (Array.isArray(value)) {
66
+ const entries = value.map(compact).filter((entry) => entry !== undefined);
67
+ return entries.length ? entries : undefined;
68
+ }
69
+ if (value && typeof value === "object") {
70
+ const entries = Object.entries(value).reduce((acc, [key, entry]) => {
71
+ const compacted = compact(entry);
72
+ if (compacted !== undefined && compacted !== null && compacted !== "")
73
+ acc[key] = compacted;
74
+ return acc;
75
+ }, {});
76
+ return Object.keys(entries).length ? entries : undefined;
77
+ }
78
+ return value;
79
+ };
80
+ export const requireText = (value, field) => {
81
+ if (!value?.trim())
82
+ throw new Error(`Missing required structured data field: ${field}`);
83
+ return value;
84
+ };
85
+ export const node = (type, value) => {
86
+ assertSupportedSchemaOrgType(type);
87
+ return compact({
88
+ "@context": SCHEMA_CONTEXT,
89
+ "@type": type,
90
+ ...value,
91
+ });
92
+ };
93
+ export const stableId = (canonicalUrl, fragment) => `${canonicalUrl.replace(/[#/]+$/, "")}#${fragment.replace(/^#+/, "")}`;
94
+ export const personOrOrganizationRef = (value) => typeof value === "string" ? node("Organization", { name: value }) : value;
95
+ export function jsonLdGraph(nodes, id) {
96
+ if (!nodes.length)
97
+ throw new Error("JSON-LD graph requires at least one node");
98
+ return compact({
99
+ "@context": SCHEMA_CONTEXT,
100
+ "@id": id,
101
+ "@graph": nodes,
102
+ });
103
+ }
104
+ export const canonicalHref = (baseUrl, href) => href.startsWith("http") ? href : `${baseUrl.replace(/\/+$/, "")}${href.startsWith("/") ? href : `/${href}`}`;
105
+ export const imageValue = (image, buildImageObject) => {
106
+ if (!image)
107
+ return undefined;
108
+ if (typeof image === "string")
109
+ return image;
110
+ const url = image.url ?? image.src;
111
+ if (!url)
112
+ return undefined;
113
+ return buildImageObject({
114
+ name: image.alt ?? image.caption ?? "Image",
115
+ url,
116
+ contentUrl: url,
117
+ width: image.width,
118
+ height: image.height,
119
+ caption: image.caption,
120
+ });
121
+ };
122
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { LANDER_SCHEMA_VERSION, STRUCTURED_DATA_VERSION } from "./version.js";
2
+ export { LANDER_SCHEMA_VERSION, STRUCTURED_DATA_VERSION };
3
+ export * from "./types.js";
4
+ export * from "./core.js";
5
+ export * from "./builders-primary.js";
6
+ export * from "./builders-secondary.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;AAE1D,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ import { LANDER_SCHEMA_VERSION, STRUCTURED_DATA_VERSION } from "./version.js";
2
+ export { LANDER_SCHEMA_VERSION, STRUCTURED_DATA_VERSION };
3
+ export * from "./types.js";
4
+ export * from "./core.js";
5
+ export * from "./builders-primary.js";
6
+ export * from "./builders-secondary.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;AAE1D,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}