ochre-sdk 1.0.78 → 1.1.0
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 +31 -3
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/categories.d.mts +249 -0
- package/dist/categories.mjs +259 -0
- package/dist/constants.d.mts +14 -0
- package/dist/constants.mjs +18 -1
- package/dist/errors.d.mts +23 -0
- package/dist/{utilities.mjs → errors.mjs} +33 -84
- package/dist/fetchers/gallery.mjs +15 -51
- package/dist/fetchers/item-children.mjs +20 -66
- package/dist/fetchers/item-links.mjs +26 -79
- package/dist/fetchers/item-ocr-data.d.mts +2 -2
- package/dist/fetchers/item-ocr-data.mjs +11 -15
- package/dist/fetchers/item.d.mts +0 -15
- package/dist/fetchers/item.mjs +20 -72
- package/dist/fetchers/request.d.mts +70 -0
- package/dist/fetchers/request.mjs +100 -0
- package/dist/fetchers/set/items.mjs +27 -73
- package/dist/fetchers/set/property-values.d.mts +2 -3
- package/dist/fetchers/set/property-values.mjs +96 -130
- package/dist/fetchers/website-metadata.mjs +35 -57
- package/dist/fetchers/website.d.mts +2 -3
- package/dist/fetchers/website.mjs +22 -31
- package/dist/getters.d.mts +78 -148
- package/dist/getters.mjs +127 -208
- package/dist/helpers.d.mts +0 -4
- package/dist/helpers.mjs +19 -6
- package/dist/index.d.mts +8 -6
- package/dist/index.mjs +6 -4
- package/dist/ocr.d.mts +37 -0
- package/dist/ocr.mjs +52 -0
- package/dist/parsers/helpers.d.mts +21 -1
- package/dist/parsers/helpers.mjs +26 -6
- package/dist/parsers/index.d.mts +0 -8
- package/dist/parsers/index.mjs +118 -259
- package/dist/parsers/languages.d.mts +72 -0
- package/dist/parsers/languages.mjs +132 -0
- package/dist/parsers/multilingual.d.mts +49 -74
- package/dist/parsers/multilingual.mjs +88 -189
- package/dist/parsers/property-token.d.mts +34 -0
- package/dist/parsers/property-token.mjs +29 -0
- package/dist/parsers/string.d.mts +19 -0
- package/dist/parsers/string.mjs +45 -25
- package/dist/parsers/website/bounds.d.mts +10 -0
- package/dist/parsers/website/bounds.mjs +28 -0
- package/dist/parsers/website/components.d.mts +91 -0
- package/dist/parsers/website/components.mjs +681 -0
- package/dist/parsers/website/index.d.mts +0 -7
- package/dist/parsers/website/index.mjs +92 -1153
- package/dist/parsers/website/links.d.mts +36 -0
- package/dist/parsers/website/links.mjs +58 -0
- package/dist/parsers/website/messages.d.mts +24 -0
- package/dist/parsers/website/messages.mjs +31 -0
- package/dist/parsers/website/options.d.mts +6 -0
- package/dist/parsers/website/options.mjs +114 -0
- package/dist/parsers/website/properties.d.mts +12 -0
- package/dist/parsers/website/properties.mjs +158 -0
- package/dist/parsers/website/reader.d.mts +54 -4
- package/dist/parsers/website/reader.mjs +65 -20
- package/dist/parsers/website/slug.d.mts +64 -0
- package/dist/parsers/website/slug.mjs +82 -0
- package/dist/parsers/website/styles.d.mts +28 -0
- package/dist/parsers/website/styles.mjs +103 -0
- package/dist/parsers/website/walk.d.mts +68 -0
- package/dist/parsers/website/walk.mjs +116 -0
- package/dist/query.d.mts +66 -18
- package/dist/query.mjs +202 -48
- package/dist/reflection.d.mts +64 -0
- package/dist/reflection.mjs +79 -0
- package/dist/schemas.d.mts +7 -0
- package/dist/schemas.mjs +12 -3
- package/dist/types/index.d.mts +1 -31
- package/dist/types/utilities.d.mts +9 -0
- package/dist/types/utilities.mjs +1 -0
- package/dist/types/website.d.mts +49 -58
- package/dist/xml/metadata.d.mts +16 -0
- package/dist/xml/metadata.mjs +32 -11
- package/dist/xml/schemas.d.mts +5970 -3
- package/dist/xml/schemas.mjs +43 -45
- package/dist/xml/types.d.mts +13 -30
- package/dist/xquery.d.mts +46 -0
- package/dist/xquery.mjs +66 -0
- package/package.json +3 -3
- package/dist/utilities.d.mts +0 -54
package/dist/types/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MultilingualString } from "../parsers/multilingual.mjs";
|
|
2
|
+
import { Prettify } from "./utilities.mjs";
|
|
2
3
|
import { Webpage } from "./website.mjs";
|
|
3
4
|
//#region src/types/index.d.ts
|
|
4
|
-
export type Prettify<T> = { [K in keyof T]: T[K]; } & {};
|
|
5
5
|
/**
|
|
6
6
|
* Language-code tuple or array used by OCHRE multilingual fields.
|
|
7
7
|
*
|
|
@@ -38,10 +38,6 @@ export type ContainedItemCategoryFromOption<U extends ItemCategory = ItemCategor
|
|
|
38
38
|
* The category of items in a heading
|
|
39
39
|
*/
|
|
40
40
|
export type HeadingItemCategory = Exclude<ItemCategory, "tree" | "bibliography" | "spatialUnit" | "concept" | "period">;
|
|
41
|
-
/**
|
|
42
|
-
* The category of items that expose recursive subitem structures.
|
|
43
|
-
*/
|
|
44
|
-
export type RecursiveItemCategory = Exclude<ItemCategory, "tree" | "person" | "propertyVariable" | "propertyValue" | "set">;
|
|
45
41
|
/**
|
|
46
42
|
* The category names that can appear in OCHRE context paths
|
|
47
43
|
*/
|
|
@@ -365,7 +361,6 @@ export type SimplifiedProperty<T extends LanguageCodes = LanguageCodes> = {
|
|
|
365
361
|
export type SetItemProperty<T extends LanguageCodes = LanguageCodes> = Omit<Property<T>, "properties">;
|
|
366
362
|
export type SetItemSimplifiedProperty<T extends LanguageCodes = LanguageCodes> = Omit<SimplifiedProperty<T>, "properties">;
|
|
367
363
|
export type PropertyLike<T extends LanguageCodes = LanguageCodes> = Property<T> | SetItemProperty<T> | SimplifiedProperty<T> | SetItemSimplifiedProperty<T>;
|
|
368
|
-
export type ItemProperty<T extends LanguageCodes = LanguageCodes> = Property<T> | SetItemProperty<T>;
|
|
369
364
|
export type PropertyValueDataType = PropertyValueContent["dataType"];
|
|
370
365
|
export type QueryablePropertyValueDataType = Exclude<PropertyValueDataType, "coordinate">;
|
|
371
366
|
export type PropertyRelation = "related" | "inverse";
|
|
@@ -502,9 +497,6 @@ export type Item<U extends ItemCategory = ItemCategory, V extends ContainedItemC
|
|
|
502
497
|
* An item fetched without its embedded item hierarchy.
|
|
503
498
|
*/
|
|
504
499
|
export type ItemWithoutEmbeddedItems<U extends ItemCategoryWithEmbeddedItems = ItemCategoryWithEmbeddedItems, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes, W extends ItemPayloadKind = "topLevel"> = U extends ItemCategoryWithEmbeddedItems ? U extends "tree" ? Prettify<Omit<Tree<Extract<V, TreeItemCategory>, T, W>, "items">> : U extends "set" ? Prettify<Omit<Set<Extract<V, SetItemCategory>, T, W>, "items">> : U extends "bibliography" ? Prettify<Omit<Bibliography<T, W>, "items">> : U extends "concept" ? Prettify<Omit<Concept<T, W>, "items">> : U extends "spatialUnit" ? Prettify<Omit<SpatialUnit<T, W>, "items">> : U extends "period" ? Prettify<Omit<Period<T, W>, "items">> : U extends "resource" ? Prettify<Omit<Resource<T, W>, "items">> : never : never;
|
|
505
|
-
export type TopLevelItem<U extends ItemCategory = ItemCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes> = Item<U, V, T, "topLevel">;
|
|
506
|
-
export type EmbeddedItem<U extends ItemCategory = ItemCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes> = Item<U, V, T, "embedded">;
|
|
507
|
-
export type AnyItem<U extends ItemCategory = ItemCategory, V extends ContainedItemCategory<U> = ContainedItemCategory<U>, T extends LanguageCodes = LanguageCodes> = Item<U, V, T, ItemPayloadKind>;
|
|
508
500
|
/**
|
|
509
501
|
* Heading in OCHRE
|
|
510
502
|
*/
|
|
@@ -748,28 +740,6 @@ export type Section<T extends LanguageCodes = LanguageCodes> = {
|
|
|
748
740
|
identification: Identification<T>;
|
|
749
741
|
} | null;
|
|
750
742
|
};
|
|
751
|
-
export type EmbeddedTree<U extends TreeItemCategory = TreeItemCategory, T extends LanguageCodes = LanguageCodes> = Tree<U, T, "embedded">;
|
|
752
|
-
export type AnyTree<U extends TreeItemCategory = TreeItemCategory, T extends LanguageCodes = LanguageCodes> = Tree<U, T, ItemPayloadKind>;
|
|
753
|
-
export type EmbeddedSet<U extends SetItemCategory = SetItemCategory, T extends LanguageCodes = LanguageCodes> = Set<U, T, "embedded">;
|
|
754
|
-
export type AnySet<U extends SetItemCategory = SetItemCategory, T extends LanguageCodes = LanguageCodes> = Set<U, T, ItemPayloadKind>;
|
|
755
|
-
export type EmbeddedBibliography<T extends LanguageCodes = LanguageCodes> = Bibliography<T, "embedded">;
|
|
756
|
-
export type AnyBibliography<T extends LanguageCodes = LanguageCodes> = Bibliography<T, ItemPayloadKind>;
|
|
757
|
-
export type EmbeddedConcept<T extends LanguageCodes = LanguageCodes> = Concept<T, "embedded">;
|
|
758
|
-
export type AnyConcept<T extends LanguageCodes = LanguageCodes> = Concept<T, ItemPayloadKind>;
|
|
759
|
-
export type EmbeddedSpatialUnit<T extends LanguageCodes = LanguageCodes> = SpatialUnit<T, "embedded">;
|
|
760
|
-
export type AnySpatialUnit<T extends LanguageCodes = LanguageCodes> = SpatialUnit<T, ItemPayloadKind>;
|
|
761
|
-
export type EmbeddedPeriod<T extends LanguageCodes = LanguageCodes> = Period<T, "embedded">;
|
|
762
|
-
export type AnyPeriod<T extends LanguageCodes = LanguageCodes> = Period<T, ItemPayloadKind>;
|
|
763
|
-
export type EmbeddedPerson<T extends LanguageCodes = LanguageCodes> = Person<T, "embedded">;
|
|
764
|
-
export type AnyPerson<T extends LanguageCodes = LanguageCodes> = Person<T, ItemPayloadKind>;
|
|
765
|
-
export type EmbeddedPropertyVariable<T extends LanguageCodes = LanguageCodes> = PropertyVariable<T, "embedded">;
|
|
766
|
-
export type AnyPropertyVariable<T extends LanguageCodes = LanguageCodes> = PropertyVariable<T, ItemPayloadKind>;
|
|
767
|
-
export type EmbeddedPropertyValue<T extends LanguageCodes = LanguageCodes> = PropertyValue<T, "embedded">;
|
|
768
|
-
export type AnyPropertyValue<T extends LanguageCodes = LanguageCodes> = PropertyValue<T, ItemPayloadKind>;
|
|
769
|
-
export type EmbeddedResource<T extends LanguageCodes = LanguageCodes> = Resource<T, "embedded">;
|
|
770
|
-
export type AnyResource<T extends LanguageCodes = LanguageCodes> = Resource<T, ItemPayloadKind>;
|
|
771
|
-
export type EmbeddedText<T extends LanguageCodes = LanguageCodes> = Text<T, "embedded">;
|
|
772
|
-
export type AnyText<T extends LanguageCodes = LanguageCodes> = Text<T, ItemPayloadKind>;
|
|
773
743
|
/**
|
|
774
744
|
* Represents a gallery with its identification, project identification, resources and max length
|
|
775
745
|
*/
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/types/utilities.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Flatten an intersection so editors show one object instead of `A & B`
|
|
4
|
+
*
|
|
5
|
+
* Deliberately not re-exported from the package root: it is a TypeScript
|
|
6
|
+
* presentation detail, not part of the OCHRE model.
|
|
7
|
+
*/
|
|
8
|
+
export type Prettify<T> = { [K in keyof T]: T[K]; } & {};
|
|
9
|
+
//#endregion
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/types/website.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MultilingualString } from "../parsers/multilingual.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { Prettify } from "./utilities.mjs";
|
|
3
|
+
import { Bibliography, Identification, LanguageCodes, License, Metadata, Person, QueryablePropertyValueDataType } from "./index.mjs";
|
|
3
4
|
//#region src/types/website.d.ts
|
|
4
5
|
/**
|
|
5
6
|
* Represents a context tree level item with a variable and value
|
|
@@ -64,28 +65,47 @@ export type WebOptions<T extends LanguageCodes = LanguageCodes> = {
|
|
|
64
65
|
};
|
|
65
66
|
};
|
|
66
67
|
/**
|
|
67
|
-
*
|
|
68
|
+
* The style overrides for each viewport a website presentation targets
|
|
68
69
|
*/
|
|
69
|
-
export type
|
|
70
|
+
export type ResponsiveStyles = {
|
|
71
|
+
default: Array<Style>;
|
|
72
|
+
tablet: Array<Style>;
|
|
73
|
+
mobile: Array<Style>;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Whether an item page section and its header are shown
|
|
77
|
+
*/
|
|
78
|
+
export type WebSectionDisplay = {
|
|
79
|
+
isDisplayed: boolean;
|
|
80
|
+
isHeaderDisplayed: boolean;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* How a website indicates that content is loading
|
|
84
|
+
*/
|
|
85
|
+
export type WebLoadingVariant = "spinner" | "skeleton" | "animation" | "none";
|
|
86
|
+
/**
|
|
87
|
+
* How an item page groups a repeated section
|
|
88
|
+
*/
|
|
89
|
+
export type WebSectionVariant = "discrete" | "tabs-horizontal" | "tabs-vertical" | "tabular";
|
|
90
|
+
/**
|
|
91
|
+
* The IIIF viewer a website renders images with
|
|
92
|
+
*/
|
|
93
|
+
export type WebIiifViewer = "universal-viewer" | "clover";
|
|
94
|
+
/**
|
|
95
|
+
* How a website restricts access to its content
|
|
96
|
+
*/
|
|
97
|
+
export type WebsitePrivacy = "public" | "password" | "credentials-ochre";
|
|
70
98
|
export type StylesheetItem = {
|
|
71
99
|
uuid: string;
|
|
72
100
|
category: "propertyVariable";
|
|
73
101
|
icon: string | null;
|
|
74
|
-
styles:
|
|
75
|
-
default: Array<Style>;
|
|
76
|
-
tablet: Array<Style>;
|
|
77
|
-
mobile: Array<Style>;
|
|
78
|
-
};
|
|
102
|
+
styles: ResponsiveStyles;
|
|
79
103
|
} | {
|
|
80
104
|
uuid: string;
|
|
81
105
|
category: "propertyValue";
|
|
82
106
|
variableUuid: string;
|
|
83
107
|
icon: string | null;
|
|
84
|
-
styles:
|
|
85
|
-
default: Array<Style>;
|
|
86
|
-
tablet: Array<Style>;
|
|
87
|
-
mobile: Array<Style>;
|
|
88
|
-
};
|
|
108
|
+
styles: ResponsiveStyles;
|
|
89
109
|
};
|
|
90
110
|
export type WebsitePropertyQueryNode<T extends LanguageCodes = LanguageCodes> = {
|
|
91
111
|
target: "property";
|
|
@@ -113,11 +133,7 @@ export type WebSidebar<T extends LanguageCodes = LanguageCodes> = {
|
|
|
113
133
|
title: WebTitle<T>;
|
|
114
134
|
layout: "start" | "end";
|
|
115
135
|
mobileLayout: "default" | "inline";
|
|
116
|
-
cssStyles:
|
|
117
|
-
default: Array<Style>;
|
|
118
|
-
tablet: Array<Style>;
|
|
119
|
-
mobile: Array<Style>;
|
|
120
|
-
};
|
|
136
|
+
cssStyles: ResponsiveStyles;
|
|
121
137
|
};
|
|
122
138
|
/**
|
|
123
139
|
* Represents a website with its properties and items
|
|
@@ -139,12 +155,12 @@ export type Website<T extends LanguageCodes = LanguageCodes> = {
|
|
|
139
155
|
type: WebsiteType;
|
|
140
156
|
status: "development" | "preview" | "production";
|
|
141
157
|
versionLabel: "experimental" | "alpha" | "beta" | "test" | "staging" | "pre-release" | "release";
|
|
142
|
-
privacy:
|
|
158
|
+
privacy: WebsitePrivacy;
|
|
143
159
|
contact: {
|
|
144
160
|
name: string;
|
|
145
161
|
email: string | null;
|
|
146
162
|
} | null;
|
|
147
|
-
loadingVariant:
|
|
163
|
+
loadingVariant: WebLoadingVariant;
|
|
148
164
|
theme: {
|
|
149
165
|
isThemeToggleDisplayed: boolean;
|
|
150
166
|
defaultTheme: "light" | "dark" | "system";
|
|
@@ -170,37 +186,25 @@ export type Website<T extends LanguageCodes = LanguageCodes> = {
|
|
|
170
186
|
sidebar: WebSidebar<T> | null;
|
|
171
187
|
itemPage: {
|
|
172
188
|
isMainContentDisplayed: boolean;
|
|
173
|
-
description:
|
|
174
|
-
|
|
175
|
-
isHeaderDisplayed: boolean;
|
|
176
|
-
};
|
|
177
|
-
document: {
|
|
178
|
-
isDisplayed: boolean;
|
|
179
|
-
isHeaderDisplayed: boolean;
|
|
180
|
-
};
|
|
189
|
+
description: WebSectionDisplay;
|
|
190
|
+
document: WebSectionDisplay;
|
|
181
191
|
notes: {
|
|
182
192
|
isDisplayed: boolean;
|
|
183
193
|
isHeaderDisplayed: boolean;
|
|
184
|
-
variant:
|
|
194
|
+
variant: WebSectionVariant;
|
|
185
195
|
};
|
|
186
196
|
events: {
|
|
187
197
|
isDisplayed: boolean;
|
|
188
198
|
isHeaderDisplayed: boolean;
|
|
189
|
-
variant:
|
|
190
|
-
};
|
|
191
|
-
periods: {
|
|
192
|
-
isDisplayed: boolean;
|
|
193
|
-
isHeaderDisplayed: boolean;
|
|
199
|
+
variant: WebSectionVariant;
|
|
194
200
|
};
|
|
201
|
+
periods: WebSectionDisplay;
|
|
195
202
|
isPropertiesDisplayed: boolean;
|
|
196
|
-
bibliography:
|
|
197
|
-
isDisplayed: boolean;
|
|
198
|
-
isHeaderDisplayed: boolean;
|
|
199
|
-
};
|
|
203
|
+
bibliography: WebSectionDisplay;
|
|
200
204
|
isPropertyValuesGrouped: boolean;
|
|
201
205
|
isPublicationDateTimeDisplayed: boolean;
|
|
202
206
|
isPersistentIdentifierDisplayed: boolean;
|
|
203
|
-
iiifViewer:
|
|
207
|
+
iiifViewer: WebIiifViewer;
|
|
204
208
|
};
|
|
205
209
|
options: Prettify<WebOptions<T> & {
|
|
206
210
|
stylesheets: {
|
|
@@ -245,11 +249,7 @@ export type Webpage<T extends LanguageCodes = LanguageCodes> = {
|
|
|
245
249
|
} | null;
|
|
246
250
|
backgroundImage: WebImage<T> | null;
|
|
247
251
|
sidebar: WebSidebar<T> | null;
|
|
248
|
-
cssStyles:
|
|
249
|
-
default: Array<Style>;
|
|
250
|
-
tablet: Array<Style>;
|
|
251
|
-
mobile: Array<Style>;
|
|
252
|
-
};
|
|
252
|
+
cssStyles: ResponsiveStyles;
|
|
253
253
|
};
|
|
254
254
|
webpages: Array<Webpage<T>>;
|
|
255
255
|
};
|
|
@@ -275,11 +275,7 @@ export type WebElement<T extends LanguageCodes = LanguageCodes> = {
|
|
|
275
275
|
language: string | null;
|
|
276
276
|
type: "element";
|
|
277
277
|
title: WebTitle<T>;
|
|
278
|
-
cssStyles:
|
|
279
|
-
default: Array<Style>;
|
|
280
|
-
tablet: Array<Style>;
|
|
281
|
-
mobile: Array<Style>;
|
|
282
|
-
};
|
|
278
|
+
cssStyles: ResponsiveStyles;
|
|
283
279
|
} & WebElementComponent<T>;
|
|
284
280
|
/**
|
|
285
281
|
* Union type of all possible web element components
|
|
@@ -342,7 +338,7 @@ export type WebElementComponent<T extends LanguageCodes = LanguageCodes> = {
|
|
|
342
338
|
}> | null;
|
|
343
339
|
variant: "slide" | "table" | "card" | "tile" | "showcase";
|
|
344
340
|
paginationVariant: "default" | "numeric";
|
|
345
|
-
loadingVariant:
|
|
341
|
+
loadingVariant: WebLoadingVariant;
|
|
346
342
|
image: {
|
|
347
343
|
layout: "top" | "bottom" | "start" | "end" | null;
|
|
348
344
|
fit: "fill" | "fit";
|
|
@@ -377,7 +373,7 @@ export type WebElementComponent<T extends LanguageCodes = LanguageCodes> = {
|
|
|
377
373
|
} | {
|
|
378
374
|
component: "iiif-viewer";
|
|
379
375
|
linkUuid: string;
|
|
380
|
-
variant:
|
|
376
|
+
variant: WebIiifViewer;
|
|
381
377
|
} | {
|
|
382
378
|
component: "image";
|
|
383
379
|
images: Array<WebImage<T>>;
|
|
@@ -529,14 +525,9 @@ export type WebBlock<T extends LanguageCodes = LanguageCodes, U extends WebBlock
|
|
|
529
525
|
tablet: Partial<WebBlock<T>["properties"]["default"]> | null;
|
|
530
526
|
mobile: Partial<WebBlock<T>["properties"]["default"]> | null;
|
|
531
527
|
};
|
|
532
|
-
cssStyles:
|
|
533
|
-
default: Array<Style>;
|
|
534
|
-
tablet: Array<Style>;
|
|
535
|
-
mobile: Array<Style>;
|
|
536
|
-
};
|
|
528
|
+
cssStyles: ResponsiveStyles;
|
|
537
529
|
};
|
|
538
530
|
export type WebBlockByLayout<U extends WebBlockLayout = WebBlockLayout, T extends LanguageCodes = LanguageCodes> = WebBlock<T, U>;
|
|
539
|
-
export type AccordionWebBlock<T extends LanguageCodes = LanguageCodes> = WebBlock<T, "accordion">;
|
|
540
531
|
export type WebsiteMetadata<T extends LanguageCodes = LanguageCodes> = {
|
|
541
532
|
uuid: string;
|
|
542
533
|
belongsTo: {
|
|
@@ -547,7 +538,7 @@ export type WebsiteMetadata<T extends LanguageCodes = LanguageCodes> = {
|
|
|
547
538
|
description: string;
|
|
548
539
|
webpageTitle: MultilingualString<T> | null;
|
|
549
540
|
properties: {
|
|
550
|
-
privacy:
|
|
541
|
+
privacy: WebsitePrivacy;
|
|
551
542
|
icon: {
|
|
552
543
|
faviconUuid: string | null;
|
|
553
544
|
appleTouchIconUuid: string | null;
|
package/dist/xml/metadata.d.mts
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
//#region src/xml/metadata.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Read the offset a node started at in the source XML
|
|
4
|
+
* @param value - The parsed node
|
|
5
|
+
* @returns The offset, or null when the node carries no source metadata
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
2
8
|
export declare function getXMLSourceIndex(value: unknown): number | null;
|
|
9
|
+
/**
|
|
10
|
+
* Re-attach the source metadata validation dropped
|
|
11
|
+
*
|
|
12
|
+
* `v.safeParse` returns a fresh object graph and does not carry over the
|
|
13
|
+
* non-enumerable symbol `fast-xml-parser` records offsets under, so it is
|
|
14
|
+
* grafted back on by walking the validated output alongside the raw input.
|
|
15
|
+
* @param output - The validated output to graft onto
|
|
16
|
+
* @param input - The raw parsed input to read metadata from
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
3
19
|
export declare function restoreXMLMetadata(output: unknown, input: unknown): void;
|
|
4
20
|
//#endregion
|
package/dist/xml/metadata.mjs
CHANGED
|
@@ -1,21 +1,42 @@
|
|
|
1
|
+
import { isObject, readEntries, readProperty } from "../reflection.mjs";
|
|
1
2
|
import { XMLParser } from "fast-xml-parser";
|
|
2
3
|
//#region src/xml/metadata.ts
|
|
3
4
|
const XML_METADATA_SYMBOL = XMLParser.getMetaDataSymbol();
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Read the source metadata `fast-xml-parser` attaches under a symbol key
|
|
7
|
+
*
|
|
8
|
+
* Returned as `unknown`: nothing here needs to know its shape, only whether it
|
|
9
|
+
* is there, and {@link getXMLSourceIndex} narrows the one field it reads.
|
|
10
|
+
* @param value - The value to read from
|
|
11
|
+
* @returns The metadata, or undefined when there is none
|
|
12
|
+
*/
|
|
13
|
+
function readXMLMetadata(value) {
|
|
14
|
+
return readProperty(value, XML_METADATA_SYMBOL);
|
|
10
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Read the offset a node started at in the source XML
|
|
18
|
+
* @param value - The parsed node
|
|
19
|
+
* @returns The offset, or null when the node carries no source metadata
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
11
22
|
function getXMLSourceIndex(value) {
|
|
12
|
-
const startIndex =
|
|
23
|
+
const startIndex = readProperty(readXMLMetadata(value), "startIndex");
|
|
13
24
|
return typeof startIndex === "number" ? startIndex : null;
|
|
14
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Re-attach the source metadata validation dropped
|
|
28
|
+
*
|
|
29
|
+
* `v.safeParse` returns a fresh object graph and does not carry over the
|
|
30
|
+
* non-enumerable symbol `fast-xml-parser` records offsets under, so it is
|
|
31
|
+
* grafted back on by walking the validated output alongside the raw input.
|
|
32
|
+
* @param output - The validated output to graft onto
|
|
33
|
+
* @param input - The raw parsed input to read metadata from
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
15
36
|
function restoreXMLMetadata(output, input) {
|
|
16
|
-
if (!
|
|
17
|
-
const metadata =
|
|
18
|
-
if (metadata
|
|
37
|
+
if (!isObject(output) || !isObject(input)) return;
|
|
38
|
+
const metadata = readXMLMetadata(input);
|
|
39
|
+
if (metadata !== void 0) Object.defineProperty(output, XML_METADATA_SYMBOL, {
|
|
19
40
|
value: metadata,
|
|
20
41
|
enumerable: false,
|
|
21
42
|
configurable: true
|
|
@@ -24,7 +45,7 @@ function restoreXMLMetadata(output, input) {
|
|
|
24
45
|
for (const [index, outputValue] of output.entries()) restoreXMLMetadata(outputValue, input[index]);
|
|
25
46
|
return;
|
|
26
47
|
}
|
|
27
|
-
for (const [key, outputValue] of
|
|
48
|
+
for (const [key, outputValue] of readEntries(output)) restoreXMLMetadata(outputValue, readProperty(input, key));
|
|
28
49
|
}
|
|
29
50
|
//#endregion
|
|
30
51
|
export { getXMLSourceIndex, restoreXMLMetadata };
|